Sounds Logical
home

WaveWarp 2.0 Example DrawingBoard

Index Current Example DrawingBoard Group Previous Example DrawingBoard Group Next Example DrawingBoard Group Previous Example DrawingBoard Next Example DrawingBoard Bottom of Page

Description | Components Used

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:

Index Current Example DrawingBoard Group Previous Example DrawingBoard Group Next Example DrawingBoard Group Previous Example DrawingBoard Next Example DrawingBoard Top of Page

home - news - products - store - support - site map - company info
© 2007 Sounds Logical. All rights reserved.
Sounds Logical
legal notice - privacy statement