diff --git a/sherpa-onnx/rust/sherpa-onnx/src/lib.rs b/sherpa-onnx/rust/sherpa-onnx/src/lib.rs index 5fd9be9e11..11df4a1a2f 100644 --- a/sherpa-onnx/rust/sherpa-onnx/src/lib.rs +++ b/sherpa-onnx/rust/sherpa-onnx/src/lib.rs @@ -7,7 +7,6 @@ mod online_asr; mod online_punctuation; mod online_speech_denoiser; mod speaker_embedding; -mod speech_denoiser; mod tts; mod utils; mod vad; @@ -22,7 +21,6 @@ pub use online_asr::*; pub use online_punctuation::*; pub use online_speech_denoiser::*; pub use speaker_embedding::*; -pub use speech_denoiser::*; pub use tts::*; pub use utils::*; pub use vad::*; diff --git a/sherpa-onnx/rust/sherpa-onnx/src/offline_speech_denoiser.rs b/sherpa-onnx/rust/sherpa-onnx/src/offline_speech_denoiser.rs index cb409ceae6..e60f4564f0 100644 --- a/sherpa-onnx/rust/sherpa-onnx/src/offline_speech_denoiser.rs +++ b/sherpa-onnx/rust/sherpa-onnx/src/offline_speech_denoiser.rs @@ -1,7 +1,105 @@ -use crate::speech_denoiser::{DenoisedAudio, OfflineSpeechDenoiserModelConfig}; +use crate::utils::to_c_ptr; use sherpa_onnx_sys as sys; use std::ffi::CString; use std::ptr; +use std::slice; + +#[derive(Clone, Debug, Default)] +pub struct OfflineSpeechDenoiserGtcrnModelConfig { + pub model: Option, +} + +impl OfflineSpeechDenoiserGtcrnModelConfig { + pub(crate) fn to_sys( + &self, + cstrings: &mut Vec, + ) -> sys::OfflineSpeechDenoiserGtcrnModelConfig { + sys::OfflineSpeechDenoiserGtcrnModelConfig { + model: to_c_ptr(&self.model, cstrings), + } + } +} + +#[derive(Clone, Debug, Default)] +pub struct OfflineSpeechDenoiserDpdfNetModelConfig { + pub model: Option, +} + +impl OfflineSpeechDenoiserDpdfNetModelConfig { + pub(crate) fn to_sys( + &self, + cstrings: &mut Vec, + ) -> sys::OfflineSpeechDenoiserDpdfNetModelConfig { + sys::OfflineSpeechDenoiserDpdfNetModelConfig { + model: to_c_ptr(&self.model, cstrings), + } + } +} + +#[derive(Clone, Debug)] +pub struct OfflineSpeechDenoiserModelConfig { + pub gtcrn: OfflineSpeechDenoiserGtcrnModelConfig, + pub dpdfnet: OfflineSpeechDenoiserDpdfNetModelConfig, + pub num_threads: i32, + pub debug: bool, + pub provider: Option, +} + +impl Default for OfflineSpeechDenoiserModelConfig { + fn default() -> Self { + Self { + gtcrn: Default::default(), + dpdfnet: Default::default(), + num_threads: 1, + debug: false, + provider: Some("cpu".to_string()), + } + } +} + +impl OfflineSpeechDenoiserModelConfig { + pub(crate) fn to_sys( + &self, + cstrings: &mut Vec, + ) -> sys::OfflineSpeechDenoiserModelConfig { + sys::OfflineSpeechDenoiserModelConfig { + gtcrn: self.gtcrn.to_sys(cstrings), + num_threads: self.num_threads, + debug: self.debug as i32, + provider: to_c_ptr(&self.provider, cstrings), + dpdfnet: self.dpdfnet.to_sys(cstrings), + } + } +} + +#[derive(Clone, Debug, Default)] +pub struct DenoisedAudio { + pub samples: Vec, + pub sample_rate: i32, +} + +impl DenoisedAudio { + pub(crate) fn from_ptr(ptr: *const sys::DenoisedAudio) -> Self { + if ptr.is_null() { + return Self::default(); + } + + unsafe { + let n = (*ptr).n.max(0) as usize; + let samples = if (*ptr).samples.is_null() || n == 0 { + vec![] + } else { + slice::from_raw_parts((*ptr).samples, n).to_vec() + }; + let sample_rate = (*ptr).sample_rate; + sys::SherpaOnnxDestroyDenoisedAudio(ptr); + Self { + samples, + sample_rate, + } + } + } +} #[derive(Clone, Debug, Default)] pub struct OfflineSpeechDenoiserConfig { diff --git a/sherpa-onnx/rust/sherpa-onnx/src/online_speech_denoiser.rs b/sherpa-onnx/rust/sherpa-onnx/src/online_speech_denoiser.rs index ba6b88223b..edebab26cf 100644 --- a/sherpa-onnx/rust/sherpa-onnx/src/online_speech_denoiser.rs +++ b/sherpa-onnx/rust/sherpa-onnx/src/online_speech_denoiser.rs @@ -1,4 +1,4 @@ -use crate::speech_denoiser::{DenoisedAudio, OfflineSpeechDenoiserModelConfig}; +use crate::offline_speech_denoiser::{DenoisedAudio, OfflineSpeechDenoiserModelConfig}; use sherpa_onnx_sys as sys; use std::ffi::CString; use std::ptr; diff --git a/sherpa-onnx/rust/sherpa-onnx/src/speech_denoiser.rs b/sherpa-onnx/rust/sherpa-onnx/src/speech_denoiser.rs deleted file mode 100644 index c8793bfd84..0000000000 --- a/sherpa-onnx/rust/sherpa-onnx/src/speech_denoiser.rs +++ /dev/null @@ -1,98 +0,0 @@ -use crate::utils::to_c_ptr; -use sherpa_onnx_sys as sys; -use std::ffi::CString; -use std::slice; - -#[derive(Clone, Debug, Default)] -pub struct OfflineSpeechDenoiserGtcrnModelConfig { - pub model: Option, -} - -impl OfflineSpeechDenoiserGtcrnModelConfig { - pub(crate) fn to_sys( - &self, - cstrings: &mut Vec, - ) -> sys::OfflineSpeechDenoiserGtcrnModelConfig { - sys::OfflineSpeechDenoiserGtcrnModelConfig { - model: to_c_ptr(&self.model, cstrings), - } - } -} - -#[derive(Clone, Debug, Default)] -pub struct OfflineSpeechDenoiserDpdfNetModelConfig { - pub model: Option, -} - -impl OfflineSpeechDenoiserDpdfNetModelConfig { - pub(crate) fn to_sys( - &self, - cstrings: &mut Vec, - ) -> sys::OfflineSpeechDenoiserDpdfNetModelConfig { - sys::OfflineSpeechDenoiserDpdfNetModelConfig { - model: to_c_ptr(&self.model, cstrings), - } - } -} - -#[derive(Clone, Debug)] -pub struct OfflineSpeechDenoiserModelConfig { - pub gtcrn: OfflineSpeechDenoiserGtcrnModelConfig, - pub dpdfnet: OfflineSpeechDenoiserDpdfNetModelConfig, - pub num_threads: i32, - pub debug: bool, - pub provider: Option, -} - -impl Default for OfflineSpeechDenoiserModelConfig { - fn default() -> Self { - Self { - gtcrn: Default::default(), - dpdfnet: Default::default(), - num_threads: 1, - debug: false, - provider: Some("cpu".to_string()), - } - } -} - -impl OfflineSpeechDenoiserModelConfig { - pub(crate) fn to_sys(&self, cstrings: &mut Vec) -> sys::OfflineSpeechDenoiserModelConfig { - sys::OfflineSpeechDenoiserModelConfig { - gtcrn: self.gtcrn.to_sys(cstrings), - num_threads: self.num_threads, - debug: self.debug as i32, - provider: to_c_ptr(&self.provider, cstrings), - dpdfnet: self.dpdfnet.to_sys(cstrings), - } - } -} - -#[derive(Clone, Debug, Default)] -pub struct DenoisedAudio { - pub samples: Vec, - pub sample_rate: i32, -} - -impl DenoisedAudio { - pub(crate) fn from_ptr(ptr: *const sys::DenoisedAudio) -> Self { - if ptr.is_null() { - return Self::default(); - } - - unsafe { - let n = (*ptr).n.max(0) as usize; - let samples = if (*ptr).samples.is_null() || n == 0 { - vec![] - } else { - slice::from_raw_parts((*ptr).samples, n).to_vec() - }; - let sample_rate = (*ptr).sample_rate; - sys::SherpaOnnxDestroyDenoisedAudio(ptr); - Self { - samples, - sample_rate, - } - } - } -}