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 2

Functional Description
Broad-band noise removal based on non-linear spectral subtraction of a reference noise spectrum imported from a template file.
Algorithm
This component is an implementation of the technique described in detail in [Va] chapter 9. 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 (imported from a template file) 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. 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 assumes that such a template file is already available. Note that these templates files can be produced off-line, or by the Broadband De-Noiser 1 or Broadband De-Noiser 3 components which incorporate noise spectrum estimators derived from reference noise inputs.

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. A further improvement can often be realised by performing some averaging of the noisy signal spectrum before carrying out the subtraction (in order to reduce the distortion due to variations in the noisy contribution to the mixed spectrum that are absent from the averaged noise spectrum and therefore are not removed by the subtraction). This signal averaging feature is also 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
"Load noise spectrum from file" dialog The average noise spectrum is imported from an ASCII file, and displayed in the plot window. 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).

The data window length and FFT buffer size are 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. 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.
"Imported noise spectrum: Gain" slider Adjusts the overall magnitude of the imported 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 (implemented by scaling the noise spectrum by the slider value before performing the spectral subtraction This slider corresponds to the "alpha" variable as used in [Va] eq. 9.5 p. 244).
"Noise attenuation controls: Threshold" slider Adjusts the threshold at which the spectral subtraction is supressed in order to avoid negative magnitudes as a result of the subtraction. If the resultant spectral magnitude (at a given frequency) is below the value of this slider multiplied by the noisy signal spectrum magnitude (the threshold magnitude), then the spectral subtraction is replaced by the threshold magnitude at this frequency. (This slider corresponds to the "beta" variable as used in [Va] eq. 9.10 p. 246).
"Signal averaging" slider Sets the averaging time for the noisy signal spectrum estimation process. The averaging is implemented point-by-point in the frequency domain using a first-order low-pass filter. As discussed in [Va] section 9.2.2, averaging the noisy signal can lead to reduction of the distortion resulting from spectral subtraction (due to variations of the noise spectrum).
"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 (corresponds to the "gamma" variable as used 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.

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 mono-mono n/a De-noising of the mono input using an imported noise spectrum from a template file
Single input single output mono-stereo n/a De-noising of the mono input using an imported noise spectrum from a template file. The de-noised signal is sent (in duplicate) to both stereo output channels.
Single input single output stereo-mono n/a De-noising of the stereo input using an imported noise spectrum from a template file (same noise spectrum for each channel). The de-noised stereo signal is averaged across the channels and sent to the mono output.
Single input single output stereo-stereo n/a De-noising of the stereo input using an imported noise spectrum from a template file (same noise spectrum for each channel). The de-noised stereo channels are 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