|
| WaveWarp 2.0 Example DrawingBoard

NoiseReductionBySpectralSubtraction4
Description
Noise Reduction by Spectral Subtraction 4
Illustrates the use of the "Broadband De-Noiser 1" block for removing broad-band noise from an audio signal. The
de-noiser works by subtracting an estimate of the noise spectrum from the measured noisy signal spectrum, thereby yielding
an approximation of the noise-free signal spectrum (which is converted back to the time domain at the output to give the
"cleaned-up" signal). The first input of the de-noiser is the noisy signal (produced artificially in this example by adding
random noise to an audio track). The second input would ideally be a direct measurement of the noise alone. This is rarely
-- if ever -- available (if it were then the noise could simply be subtracted in the time domain yielding a perfect noise
cancellation!) . Rather, it is common practice to use a signal-free noise-only portion of the audio track as the "noise
reference" from which to model its spectrum. However, in the example here, a completely independent noise generator is
used as the noise reference. As long as the broad spectral characteristics of this second noise source are similar to the
broad spectral characteristics of the noise corrupting the signal, then the spectral subtraction will be effective.
You can appreciate the effectiveness of the noise reduction by momentarily clicking the "Bypass" checkbox in the
de-noiser parameter window. Noise reduction is to some extent a heuristic procedure whose success depends considerably
on the relative spectral, temporal, and amplitude characteristics of the signal and noise components in a given track.
Experiment with all parameters in the de-noiser to investigate its behaviour, and try with different audio tracks (preferably
actual noisy ones rather than artificially noisy ones).
The average noise spectrum estimate is continuously updated as time goes by. If the noise spectrum does not vary
significantly in time, then the estimate will converge to an approximately constant (non time-varying) profile. You can see this
in the current example by running the DrawingBoard in loop mode for, say, 10 seconds or so then hitting the "stop" button.
After hitting "stop", the current average noise spectrum estimate will be displayed in the plot window. It will appear rather
smooth. If you hit "play" for a few more seconds then "stop" again, the plot will hardly change, thus revealing that the
average noise spectrum is essentially fixed in time. This spectrum can then be stored as a "template" for future use via the
"Save noise spectrum to file" dialog box. Thereafter, this "template" spectrum can be loaded via the "Load noise spectrum
from file" option. When selected, the real-time noise spectrum estimator is disabled, and the imported fixed spectrum is used
in the noise cancellation. In most situations, this mode of operation i.e. using a fixed average noise spectrum gives
adequate performance. For this reason, Wavewarp also has a de-noise component which operates only from imported
"template" spectra. This component, "Broadband De-Noiser 2", has the same underlying noise attenuation algorithm as
"Broadband De-Noiser 1" but does not have the real-time spectrum estimator. It is more computationally efficient and does
not require a separate "noise" input channel. Consequently, this component should be used in those situations where
real-time spectrum estimation is not required. The "NoiseReductionBySpectralSubtraction2.dwb" example
DrawingBoard demonstrates the use of this component.
A suggested mode of operation for cleaning up a set of noisy audio tracks with broadly similar noise characteristics is to
initially use "Broadband De-Noiser 1" to estimate the average noise spectrum (as demonstrated in this DrawingBoard),
save this spectrum to a "template" file, then use "Broadband De-Noiser 2" thereafter for processing the remaining tracks in
an efficient manner based on the same "template" noise file.
In addition to creating noise "template" spectra from within Wavewarp, you may create them externally in MATLAB using
the m-files bundled with Wavewarp, or by hand using a text editor.
See also the "NoiseReductionBySpectralSubtraction1.dwb" and "NoiseReductionBySpectralSubtraction3.dwb"
example DrawingBoards for different implementations involving "Broadband De-Noiser 1". Also see the
"NoiseReductionBySpectralSubtraction5.dwb" example DrawingBoard which uses an alternative variant of the non-linear
spectral subtraction algorithm (as embodied in the "Broadband De-Noiser 3" block).
[Ref: "Advanced Signal Processing and Digital Nosie Reduction", Saeed V. Vaseghi, Wiley-Teubner, 1996, chapter 9.]
Components used:

|
|