cutcutcodec.core.filter.audio.wiener
Implement the denoising winer filter.
Classes
|
Denoised a signal for a given stationary noise spectral density estimation. |
Details
- class cutcutcodec.core.filter.audio.wiener.FilterAudioWiener(in_streams: Iterable[StreamAudio], level: Real = 1.0, band: Real | None = None)[source]
Denoised a signal for a given stationary noise spectral density estimation.
Attributes
- levelfloat
The denoising level in [0, 1] (readonly).
- bandfloat or None
The frequency resolution in Hz (readonly).
Examples
>>> import torch >>> from cutcutcodec.core.filter.audio.add import FilterAudioAdd >>> from cutcutcodec.core.filter.audio.equation import FilterAudioEquation >>> from cutcutcodec.core.filter.audio.subclip import FilterAudioSubclip >>> from cutcutcodec.core.filter.audio.wiener import FilterAudioWiener >>> from cutcutcodec.core.generation.audio.equation import GeneratorAudioEquation >>> from cutcutcodec.core.generation.audio.noise import GeneratorAudioNoise >>> _ = torch.manual_seed(0) >>> (noise,) = FilterAudioEquation( ... GeneratorAudioNoise(0).out_streams, ... "0.5*fl_0 + 0.2*sin(2*pi*100*t) + 0.1*sin(2*pi*200*t) + 0.1*sin(2*pi*400*t)", ... "0.5*fr_0 + 0.2*cos(2*pi*100*t) + 0.1*cos(2*pi*200*t) + 0.1*cos(2*pi*400*t)", ... ).out_streams >>> (signal,) = GeneratorAudioEquation("0.5*sin(2*pi*440*t)", "0.5*cos(2*pi*440*t)").out_streams >>> (real_signal,) = FilterAudioAdd([signal, noise]).out_streams >>> (noise_slice,) = FilterAudioSubclip([noise], 0, 10).out_streams # select the 10 first sec >>> (denoised,) = FilterAudioWiener([noise_slice, real_signal]).out_streams >>> frame_denoised = denoised.snapshot(10, 48000, 768000) >>> frame_signal = signal.snapshot(10, 48000, 768000) >>> torch.mean((frame_signal - real_signal.snapshot(10, 48000, 768000))**2) tensor(0.1134) >>> torch.mean((frame_signal - frame_denoised)**2) tensor(0.0173) >>>
Initialise and create the class.
Parameters
- in_streamstyping.Iterable[StreamAudio]
The concatenation of the noise stream and the audio streams to be denoised. Transmitted to
cutcutcodec.core.classes.filter.Filter.- levelfloat, default = 1.0
The denoised level, 0 for the minimum and 1 for the optimal denoised ratio.
- bandfloat, optional
The absolute frequency resolution (in Hz) for the estimation of the psd, normalized then transmitted to
cutcutcodec.core.signal.psd.welch.