Files
zed/crates/denoise
Julia Ryan ef5b8c6fed Remove workspace-hack (#40216)
We've been considering removing workspace-hack for a couple reasons:
- Lukas ran into a situation where its build script seemed to be causing
spurious rebuilds. This seems more likely to be a cargo bug than an
issue with workspace-hack itself (given that it has an empty build
script), but we don't necessarily want to take the time to hunt that
down right now.
- Marshall mentioned hakari interacts poorly with automated crate
updates (in our case provided by rennovate) because you'd need to have
`cargo hakari generate && cargo hakari manage-deps` after their changes
and we prefer to not have actions that make commits.

Currently removing workspace-hack causes our workspace to grow from
~1700 to ~2000 crates being built (depending on platform), which is
mainly a problem when you're building the whole workspace or running
tests across the the normal and remote binaries (which is where
feature-unification nets us the most sharing). It doesn't impact
incremental times noticeably when you're just iterating on `-p zed`, and
we'll hopefully get these savings back in the future when
rust-lang/cargo#14774 (which re-implements the functionality of hakari)
is finished.

Release Notes:

- N/A
2025-10-17 18:58:14 +00:00
..
2025-10-17 18:58:14 +00: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.