1use std::time::Duration;
2
3use rodio::Source;
4use rodio::wav_to_file;
5use rodio::{nz, source::UniformSourceIterator};
6
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let file = std::fs::File::open("clips_airconditioning.wav")?;
9 let decoder = rodio::Decoder::try_from(file)?;
10 let resampled = UniformSourceIterator::new(decoder, nz!(1), nz!(16_000));
11
12 let mut enabled = true;
13 let denoised = denoise::Denoiser::try_new(resampled)?.periodic_access(
14 Duration::from_secs(2),
15 |denoised| {
16 enabled = !enabled;
17 denoised.set_enabled(enabled);
18 },
19 );
20
21 wav_to_file(denoised, "processed.wav")?;
22 Ok(())
23}