WaveWarp 2.0 Component
      

Noise Reduction:
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:

      
|