Files
zed/crates/denoise
David Kleingeld 4cef8743b1 Changes samplerate to 44100 + denoiser now handles resampling
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>
2025-10-16 19:16:10 +02:00
..

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.