We did some testing and found out that our voices sound quite bad if you cut off frequencies above 8k. We might want to retrain the denoiser so it can deal with 44100 as that would save 2 resample passes which are quite expensive. Co-authored-by: Nia <nia@zed.dev>
Real time streaming audio denoising using a Dual-Signal Transformation LSTM Network for Real-Time Noise Suppression.
Trivial to build as it uses the native rust Candle crate for inference. Easy to integrate into any Rodio pipeline.
# use rodio::{nz, source::UniformSourceIterator, wav_to_file};
let file = std::fs::File::open("clips_airconditioning.wav")?;
let decoder = rodio::Decoder::try_from(file)?;
let resampled = UniformSourceIterator::new(decoder, nz!(1), nz!(16_000));
let mut denoised = denoise::Denoiser::try_new(resampled)?;
wav_to_file(&mut denoised, "denoised.wav")?;
Result::Ok<(), Box<dyn std::error::Error>>
Acknowledgements & License
The trained models in this repo are optimized versions of the models in the breizhn/DTLN. These are licensed under MIT.
The FFT code was adapted from Datadog's dtln-rs Repo also licensed under MIT.