Sounds Logical
home

WaveWarp 2.0 Component

IndexCurrent GroupPrevious GroupNext GroupPrevious ComponentNext ComponentBottom of Page

Functional Description | Algorithm | Signal Implementations | Related Components | Example DWBs usage

Noise Reduction:

Broadband De-Noiser 3

Functional Description
Broad-band noise removal based on non-linear spectral subtraction of the measured noise spectrum (derived from a reference noise input via a separate channel). See also the Broadband De-Noiser 1 component for a different spectral subtraction algorithm.

For the single stereo input implementation, the left channel must contain the (noisy) signal, and the right, the reference noise measurement. For the double input implementation, the first channel must contain the (noisy) signal, and the second channel, the reference noise measurement. (See the "Signal Implementations" table below for a detailed summary of all implementations for this component).

Algorithm
This component implements a variation of the technique described in detail in [Va] chapter 9 (the Broadband De-Noiser 1 component implements, verbatim, the technique in the reference). It works as follows: a sequence of input samples of the noisy signal is converted to the frequency domain (using the FFT). The resulting mixed spectrum consists of the clean signal spectrum plus the noise spectrum (assuming additive noise). The key step is to subtract the noise spectrum from the mixed spectrum (point-by-point in the frequency domain), thereby yielding the noise-free spectrum which can be converted back to the time domain (via the inverse FFT), and sent out as the "cleaned" signal. The process is then repeated for the next sequence of input samples.

For the method to be successful, it is essential to use an accurate estimate of the noise spectrum when performing the spectral subtraction. The ideal situation would be to have an independent measurement of the noise (if this were a perfect measurement, it could be subtracted sample-by-sample from the noisy signal in the time-domain, thereby eliminating the noise without any further processing!). However, this is rarely available in practical situations. Instead, the noise spectrum has to be estimated from, for example, quiet sections of the audio material containing mostly noise and no signal (e.g. the gaps between successive tracks in a recording). In many audio applications, the noise characteristics do not vary significantly over the duration of the material (since the noise typically originates from the same source throughout a recording or a live setting). Under such circumstances, the noise spectrum can be accurately estimated by averaging across successive spectral snapshots. This noise spectrum averaging is an essential part of the algorithm implemented in this component. Furthermore, in many practical situations, the noise spectrum is similar for a range of different audio material (e.g. if it originates from "tape hiss" etc.) The spectrum can then be estimated once, saved off-line (in a "template" file), and used "as is" in a variety of other de-noising applications, without having to perform further estimation. This component includes a file I/O interface for precisely this purpose. See also the Broadband De-Noiser 2 which performs the de-noising based only on an imported noise spectrum.

The simplest form of spectral subtraction is to, literally, subtract the averaged noise spectrum from the noisy signal spectrum, on a point-by-point basis in the frequency domain. However, the performance can be improved by applying a non-linear weighting to the noise spectrum (on a point-by-point basis in the frequency domain) to account for frequency-dependent variations in the signal-to-noise-ratio. This non-linear spectral subtraction technique has been implemented in this component.

The performance of the de-noiser depends on a variety of parameters which are adjustable via the Parameter Window, as summarised in the following table.

Parameter Purpose
"Window length" slider Adjusts the length of the input data buffers (for both the noisy signal input and the reference noise input), which also defines the "Latency" (overall delay) of the process. The FFT buffer size is computed from the window length rounded up to the nearest power of 2 (for efficient FFT computation). Each input data buffer is windowed (using a selected profile), then extended to the length of the FFT buffer by padding with zeros (on either side). The input data streams are overlapped by a factor of 2, and the ouputs of the overlapped inverse transformed buffers are summed, in order to avoid discontinuities at the window boundaries. (Note: this slider is disabled when "Load noise spectrum from file" is selected. The window length and FFT length are then automatically adjusted according to the length of the imported spectrum).
"Windowing method" selection buttons Selects the profile of the windowing function applied to the input data. Separate selections are provided for the noisy signal and the reference noise channels. (Note: windowing for the noise channel is disabled when "Load noise spectrum from file" is selected).
"Noise spectrum estimation controls: Averaging" slider Sets the averaging time for the noise spectrum estimation process. The averaging is implemented point-by-point in the frequency domain using a first-order low-pass filter. The plot window displays the averaged spectrum estimate, but is only refreshed whenever the "stop" button is pressed, in order not to consume CPU resources during the real-time processing. (Note: when "Load noise spectrum from file" is selected, the plot displays the imported noise spectrum.)
"Noise spectrum estimation controls: Gain" slider Adjusts the overall magnitude of the noise spectrum estimate, before performing the spectral subtraction.
"Noise attenuation controls: Cut" slider Adjusts the "aggressiveness" of the noise attenuation. Higher slider values implies more severe suppression (a variation on the use of the "alpha" variable in [Va] eq. 9.5 p. 244).
"Noise attenuation controls: Threshold" slider Adjusts the threshold at which the spectral subtraction is activated (a variation on the use of the "beta" variable in [Va] eq. 9.10 p. 246).
"SNR" slider Adjusts the weighting of the frequency-dependent signal-to-noise ratio in the non-linear spectral subtraction process. As the slider value is increased, the extent of the spectral subtraction is suppressed for high signal-to-noise ratios (a variation on the use of the "gamma" variable in [Va] eq. 9.3 p. 254).
"Output gain" slider Adjusts the overall gain of the output signal, after the de-noising has been applied.
"Load noise spectrum from file" dialog Activated when "Load from file" is selected. The average noise spectrum is imported from an ASCII file. The ASCII file format is described in the WaveWarp Users' Guide. This simple file structure enables files to be written by hand (e.g. via a text editor). For MATLAB® users, the process of creating noise "template" spectra is particularly straightforward. The "wwmatlab" sub-directory of the WaveWarp root directory contains the necessary function m-files (plus example scripts) for exporting spectra from MATLAB, thereby providing ready access to MATLAB's powerful mathematical tools for creating customised spectra. (Refer to the WaveWarp Users' Guide for a summary of all bundled m-files for working with MATLAB in a variety of areas in addition to noise spectrum design).
"Save noise spectrum to file" dialog Exports the current averaged noise spectrum to an ASCII file for use as a "template" for future de-noising applications (or for off-line analysis of the noise spectrum).

For an introduction to the Discrete Fourier Transform and the FFT, see, for example, [St] sections 4.1 and 4.2. For further introductory information (with emphasis on audio applications), and for discussions on spectral measurements, zero-padding, windowing, the overlap-add re-synthesis method, and the Short Time Fourier Transform (STFT) for audio applications, see [Roa] p. 1084-1112 and [Moore] p. 61-111.

Signal Implementations
Audio signals Control signals Description
Single input single output stereo-mono n/a De-noising of the left input channel assuming the right input channel contains a reference noise signal.
Single input single output stereo-stereo n/a De-noising of the left input channel assuming the right input channel contains a reference noise signal. The de-noised signal is sent (in duplicate) to both stereo output channels.
Double input single output mono-mono n/a De-noising of the first input assuming the second input contains a reference noise signal.
Double input single output mono-stereo n/a De-noising of the first input assuming the second input contains a reference noise signal. The de-noised signal is sent (in duplicate) to both stereo output channels.
Double input single output stereo-mono n/a De-noising of each channel of the first stereo input assuming the second input contains a reference stereo noise signal. The noise spectrum is estimated from the average of the left and right channels of the second input. The de-noised stereo signal is averaged across the channels and sent to the mono output.
Double input single output stereo-stereo n/a De-noising of each channel of the first stereo input assuming the second input contains a reference stereo noise signal. The noise spectrum is estimated from the average of the left and right channels of the second input. The de-noised stereo signal is sent to the respective stereo output channels.
Related components:
Example DrawingBoards illustrating usage:

IndexCurrent GroupPrevious GroupNext GroupPrevious ComponentNext ComponentTop of Page

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