Wiener Filtering for Audio Noise Reduction: Principles and Practical Applications

Wiener filtering is one of the most important classical techniques in audio noise reduction and speech enhancement.

Unlike simple frequency-domain noise suppression methods, Wiener filtering attempts to estimate the relationship between the desired signal and unwanted noise and then calculates an optimal filter response based on their estimated power spectra.

This makes Wiener filtering particularly useful when designing practical DSP-based audio enhancement systems, including speech communication devices, hearing-related audio systems, embedded voice interfaces, MEMS microphone systems, and microphone arrays.

In this article, we explain how Wiener filtering works, how the Wiener gain is calculated, how it differs from spectral subtraction, and what engineers need to consider when implementing it in real-time audio systems.


1. What Is Wiener Filtering?

Wiener filtering is a statistical signal-processing method used to estimate a desired signal from a noisy observation.

A common audio model is:

y(t) = x(t) + n(t)

where:

  • y(t) = observed noisy audio signal
  • x(t) = desired clean signal
  • n(t) = unwanted noise

The objective is to design a filter that produces an estimate of the original signal:

x̂(t) = h(t) * y(t)

where:

  • h(t) = Wiener filter
  • * = convolution
  • x̂(t) = estimated clean signal

In audio applications, Wiener filtering is often implemented in the frequency domain because speech and noise have different spectral characteristics.

A simplified frequency-domain model is:

Y(k) = X(k) + N(k)

The Wiener filter then calculates a frequency-dependent gain that determines how much each frequency component should be retained or attenuated.


2. Why Use Wiener Filtering for Audio Noise Reduction?

Real-world audio signals contain both useful information and unwanted components.

For example, a voice microphone may capture:

  • Human speech
  • Air-conditioning noise
  • Computer fans
  • Traffic noise
  • Mechanical vibration
  • Background conversations
  • Electronic noise
  • Broadband environmental noise

Simply reducing the entire signal level is not useful because speech and noise occupy overlapping frequency ranges.

The key question is:

Which frequency components are dominated by speech, and which are dominated by noise?

Wiener filtering addresses this problem by estimating the relative power of the desired signal and noise at each frequency.

The resulting filter can therefore provide frequency-dependent noise attenuation rather than applying the same amount of reduction everywhere.


3. The Basic Principle of a Wiener Filter

The classical Wiener filter is derived from a minimum mean-square error objective.

Conceptually, the filter attempts to minimize:

E{|x(t) − x̂(t)|²}

where:

  • E{·} represents the expected value
  • x(t) is the original signal
  • x̂(t) is the estimated signal

In practical audio processing, the ideal Wiener gain can be expressed in terms of the power spectral densities of the desired signal and noise.

A commonly used form is:

H(k) = Px(k) / [Px(k) + Pn(k)]

where:

  • H(k) = Wiener gain at frequency bin k
  • Px(k) = estimated power of the desired signal
  • Pn(k) = estimated noise power

Because:

Py(k) ≈ Px(k) + Pn(k)

the Wiener gain can also be expressed using the estimated noisy-signal spectrum and noise spectrum.

The important concept is simple:

When the desired signal dominates a frequency region, the gain approaches 1. When noise dominates, the gain becomes smaller.


4. Understanding the Wiener Gain

The Wiener gain is the core of the algorithm.

Consider three simplified situations.

Case 1: Speech-dominated frequency

If:

Px(k) >> Pn(k)

then:

H(k) ≈ 1

The filter preserves most of the signal energy.

Case 2: Noise-dominated frequency

If:

Px(k) << Pn(k)

then:

H(k) ≈ 0

The filter strongly attenuates that frequency component.

Case 3: Mixed signal and noise

If speech and noise have comparable power:

Px(k) ≈ Pn(k)

then:

H(k) ≈ 0.5

The filter applies partial attenuation.

This frequency-dependent behavior is what makes Wiener filtering effective for many speech-enhancement applications.


5. Wiener Filtering in the STFT Domain

Modern audio implementations commonly combine Wiener filtering with the Short-Time Fourier Transform (STFT).

The basic processing chain is:

Noisy Audio → Framing → Windowing → STFT → Noise Estimation → Wiener Gain → Spectral Filtering → iSTFT → Enhanced Audio

Each step has an important role.


Step 1: Divide the Audio into Frames

Continuous audio is divided into short overlapping frames.

For example:

  • Sampling rate: 16 kHz
  • Frame duration: 20–32 ms
  • FFT size: 512 or 1024
  • Overlap: commonly 50–75%

These are engineering starting points rather than universal specifications.

Short frames allow the algorithm to assume that the signal characteristics are approximately stable within each frame.


Step 2: Apply a Window Function

A window such as the Hann window is applied before the FFT.

This reduces spectral leakage caused by abruptly cutting the continuous signal into individual frames.

Without appropriate windowing, energy from one frequency can spread into neighboring frequency bins and reduce the accuracy of subsequent spectral estimation.


Step 3: Calculate the STFT

The FFT converts each frame from the time domain into the frequency domain.

The result provides:

  • Frequency information
  • Magnitude
  • Phase

The magnitude or power spectrum is then used for noise and signal estimation.

For background information on FFT and STFT, see our technical guide:

[FFT and STFT in Audio Signal Processing: A Practical Engineering Guide]

Suggested internal link:

/fft-stft-audio-signal-processing/


6. Noise Power Estimation

Noise estimation is one of the most important parts of a practical Wiener filter.

If the estimated noise spectrum is inaccurate, the resulting Wiener gain will also be inaccurate.

A common approach is to estimate noise during periods when the desired speech is absent.

For example:

Microphone Input → Voice Activity Detection → Non-Speech Frames → Noise Spectrum Estimate

During detected non-speech periods, the system updates:

P̂n(k)

where:

P̂n(k) = estimated noise power at frequency bin k.

The noise estimate can then be continuously updated as environmental conditions change.


7. Estimating the Clean Signal Spectrum

Once the noise power is estimated, the system needs an estimate of the desired signal power.

A simplified relationship is:

P̂x(k) ≈ max[Py(k) − P̂n(k), 0]

where:

  • Py(k) = noisy signal power
  • P̂n(k) = estimated noise power
  • P̂x(k) = estimated desired signal power

This estimate can then be used to calculate the Wiener gain:

H(k) = P̂x(k) / [P̂x(k) + P̂n(k)]

The resulting gain is applied to the noisy spectrum.


8. Applying the Wiener Gain

For each frequency bin:

X̂(k) = H(k)Y(k)

where:

  • Y(k) = noisy input spectrum
  • H(k) = Wiener gain
  • X̂(k) = enhanced spectrum

The phase information from the input signal is normally retained in many practical implementations.

The enhanced spectrum is then converted back into the time domain using the inverse FFT.


9. Complete Wiener Filtering Pipeline

A practical STFT-based Wiener filter can therefore be summarized as:

1. Microphone input

Capture the noisy audio signal.

2. Frame segmentation

Divide the signal into short overlapping frames.

3. Windowing

Apply a suitable window function.

4. FFT

Convert each frame into the frequency domain.

5. Noise estimation

Estimate the noise power spectrum.

6. Signal estimation

Estimate the desired signal power spectrum.

7. Wiener gain calculation

Calculate:

H(k) = P̂x(k) / [P̂x(k) + P̂n(k)]

8. Spectral filtering

Apply the gain:

X̂(k) = H(k)Y(k)

9. Inverse FFT

Convert the enhanced spectrum back into the time domain.

10. Overlap-add

Reconstruct the continuous output waveform.

This process is repeated continuously for real-time audio.


10. Wiener Filtering vs. Spectral Subtraction

Wiener filtering and spectral subtraction are closely related classical approaches to audio noise reduction, but their filtering mechanisms are different.

FeatureSpectral SubtractionWiener Filtering
Basic principleEstimate and subtract noise spectrumEstimate signal/noise power and calculate optimal gain
Main operationSpectral subtractionFrequency-dependent gain
Noise estimate requiredYesYes
Signal estimateRelatively directBased on statistical power estimates
Speech distortionCan occurUsually controlled by gain behavior
Musical noisePossibleCan also occur
Parameter sensitivityRelatively highDepends strongly on estimation quality
Real-time implementationPracticalPractical
Computational complexityLow to moderateLow to moderate
Common applicationClassical speech enhancementSpeech enhancement and statistical filtering

The important point is that neither method eliminates the fundamental challenge of noise estimation.

If the noise estimate is wrong, both algorithms can produce undesirable results.

For a deeper explanation of spectral subtraction, see:

[Spectral Subtraction for Audio Noise Reduction: How It Works]


11. Wiener Filtering and Signal-to-Noise Ratio

The Wiener gain can also be expressed using an estimated signal-to-noise ratio.

Define the a priori SNR as:

ξ(k) = Px(k) / Pn(k)

Then:

H(k) = ξ(k) / [1 + ξ(k)]

This form makes the behavior of the filter easier to understand.

If:

ξ(k) → ∞

then:

H(k) → 1

If:

ξ(k) → 0

then:

H(k) → 0

Therefore, the Wiener filter can be interpreted as an SNR-dependent spectral gain.

This is an important concept because many modern speech-enhancement algorithms also estimate some form of frequency-dependent speech-to-noise relationship before applying suppression.


12. A Priori and A Posteriori SNR

In practical Wiener filtering, two SNR concepts are particularly important.

A Posteriori SNR

The a posteriori SNR can be estimated from the observed noisy signal and noise estimate:

γ(k) = Py(k) / Pn(k)

It describes the observed signal-plus-noise power relative to the estimated noise power.


A Priori SNR

The a priori SNR describes the estimated clean-signal power relative to noise power:

ξ(k) = Px(k) / Pn(k)

However, the clean speech signal is unknown.

Therefore, practical algorithms need to estimate ξ(k) from previous frames, current observations, or statistical assumptions.

This is one reason why practical Wiener filters are more complicated than the basic mathematical equation suggests.


13. Decision-Directed SNR Estimation

One widely used approach for estimating the a priori SNR is the decision-directed method.

Instead of estimating the clean signal entirely from the current frame, the algorithm combines:

  • Previous enhanced signal information
  • Current noisy signal information
  • Estimated noise power

Conceptually:

ξ̂(k,m) = α · [|X̂(k,m−1)|² / P̂n(k,m)] + (1−α) · max[γ(k,m)−1, 0]

where:

  • m = current frame
  • α = smoothing factor
  • X̂(k,m−1) = previous enhanced spectrum

This temporal smoothing helps stabilize the gain and reduce rapid fluctuations.

The exact implementation can vary considerably depending on the application.


14. Why Musical Noise Can Still Occur

Spectral noise reduction can create artificial tonal artifacts commonly known as musical noise.

These artifacts can appear when isolated time-frequency regions are aggressively attenuated.

Instead of producing smooth background noise, the remaining residual components can sound like:

  • Random tones
  • Warbling
  • Metallic artifacts
  • Artificial buzzing

Wiener filtering can reduce some of these effects through its smoother gain behavior, but it does not automatically eliminate them.

Practical mitigation techniques include:

  • Temporal smoothing
  • Frequency smoothing
  • Gain flooring
  • Conservative attenuation
  • More stable noise estimation
  • Voice activity detection
  • Psychoacoustic post-filtering

The engineering goal is not simply to maximize noise attenuation.

It is to achieve an appropriate balance between:

Noise Reduction + Speech Preservation + Natural Sound


15. Gain Flooring in Practical Wiener Filters

A practical implementation often limits the minimum gain.

Instead of allowing:

H(k) = 0

the system may use:

H'(k) = max[H(k), Gmin]

where:

Gmin = minimum allowed gain.

For example, an implementation might allow a frequency component to be attenuated by a defined maximum amount rather than completely eliminating it.

This can help preserve natural background sound and reduce aggressive processing artifacts.

The correct value depends on the application and should be determined through listening tests and objective evaluation.


16. Adaptive Wiener Filtering for Changing Noise

Real-world noise is rarely perfectly stationary.

Consider a microphone used in an office.

The background may change from:

Air conditioner → Keyboard → Conversation → Door closing → Fan

A fixed noise spectrum will quickly become inaccurate.

Therefore, practical systems often continuously update the noise estimate.

A simplified adaptive process is:

Current Frame → Noise Detection → Update Noise Spectrum → Recalculate Wiener Gain

The update rate should be carefully controlled.

If the system updates too slowly:

The noise estimate becomes outdated.

If it updates too aggressively:

Speech components may be incorrectly classified as noise.

This tradeoff is one of the most important practical considerations in real-time speech enhancement.


17. Wiener Filtering for Real-Time Audio

A Wiener filter can be implemented efficiently enough for many embedded audio applications.

However, real-time performance depends on the complete system rather than the filter equation alone.

Important factors include:

Processing latency

Longer frames can improve frequency resolution but increase latency.

FFT size

Larger FFT sizes provide more frequency bins but require more computation and buffering.

Overlap

Higher overlap can improve reconstruction quality but increases processing load.

Noise estimation

Continuous noise estimation requires additional processing.

Memory

The system needs buffers for:

  • Input audio
  • FFT data
  • Noise estimates
  • Previous enhanced frames
  • Filter coefficients

Hardware resources

The available:

  • MCU/DSP performance
  • RAM
  • Flash
  • Power budget

all affect implementation choices.

For battery-powered devices, computational efficiency can be just as important as noise reduction performance.


18. Wiener Filtering with MEMS Microphones

Wiener filtering is particularly relevant to modern MEMS microphone systems.

A MEMS microphone provides the acoustic input, while the signal-processing system performs noise estimation and spectral filtering.

A simplified architecture is:

Acoustic Environment

MEMS Microphone

Analog / Digital Front End

ADC / Digital Microphone Interface

FFT / STFT

Noise Estimation

Wiener Filtering

Speech Enhancement

Application Processor

The final performance depends on the entire signal chain.

A high-performance algorithm cannot completely compensate for poor microphone placement, acoustic leakage, excessive self-noise, clipping, or severe reverberation.

This is why audio system design should consider:

Microphone + Acoustic Design + Signal Processing + AI

as an integrated system.


19. Wiener Filtering with Microphone Arrays

Wiener filtering can also be combined with multi-microphone processing.

A microphone array provides spatial information in addition to the spectral information available from a single microphone.

For example:

Multiple MEMS Microphones → Time Alignment → Beamforming → Noise Estimation → Wiener Filtering

Beamforming can increase the relative level of the target sound source before the Wiener filter performs further spectral suppression.

This creates a complementary processing structure:

Spatial Filtering + Spectral Filtering

For example:

  • Beamforming determines where the sound comes from
  • Wiener filtering determines which frequency components should be preserved

This combination is especially useful for:

  • Far-field voice pickup
  • Conference systems
  • Smart speakers
  • Voice-controlled devices
  • AI audio interfaces
  • Classroom recording
  • Professional network audio

20. Wiener Filtering vs. Microphone Array Processing

These technologies should not be treated as competing alternatives.

They operate at different levels.

TechnologyPrimary Function
Single MEMS microphoneAcoustic signal capture
Spectral subtractionFrequency-domain noise suppression
Wiener filteringStatistical spectral filtering
BeamformingSpatial signal enhancement
Acoustic echo cancellationRemoves acoustic echo
AI speech enhancementLearned signal separation/enhancement
Multi-microphone processingUses spatial information

A practical system may combine several of them.

For example:

MEMS Microphone Array → Beamforming → Wiener Filter → AI Enhancement → Voice Output

The actual architecture depends on processing resources, latency requirements, acoustic conditions, and application objectives.


21. Wiener Filtering vs. AI Noise Reduction

Wiener filtering is based primarily on mathematical and statistical models.

Modern AI noise reduction systems can learn complex relationships between noisy and clean speech from training data.

Wiener filtering

Advantages include:

  • Relatively low computational complexity
  • Explainable processing
  • No large training dataset required
  • Suitable for embedded DSP
  • Predictable algorithm structure
  • Easy parameter adjustment

Limitations include:

  • Dependence on noise estimation
  • Difficulty handling complex non-stationary noise
  • Potential speech distortion
  • Limited ability to model highly nonlinear environments

AI noise reduction

AI-based methods can potentially learn more complex noise and speech characteristics.

However, they may require:

  • Training data
  • Model optimization
  • More computing resources
  • Memory
  • Careful latency management
  • Model validation across different acoustic environments

For this reason, many practical audio systems use a hybrid DSP + AI architecture rather than relying exclusively on one method.


22. A Practical Hybrid Noise Reduction Architecture

A modern embedded voice system might use a processing chain such as:

MEMS Microphone

Pre-processing

Beamforming

Noise Estimation

Wiener / Statistical Filtering

AI Speech Enhancement

AEC / AGC / Post-processing

Voice Recognition / Communication / Recording

This architecture allows classical DSP algorithms to handle predictable signal-processing tasks while AI models address more complex residual noise.

The exact processing order depends on the system architecture.


23. Example: Office Speech Enhancement

Consider a conference-room microphone system.

The microphone captures:

  • Target speaker
  • Air conditioning
  • Computer fan
  • Keyboard sounds
  • Room reverberation

The system first performs STFT analysis.

During non-speech periods, it estimates the background noise spectrum.

When speech begins, the algorithm calculates the frequency-dependent Wiener gain.

For example:

Frequency RegionEstimated ConditionWiener Behavior
Speech-dominantHigh SNRHigh gain
Mixed speech/noiseMedium SNRModerate gain
Noise-dominantLow SNRLow gain

The enhanced spectrum is then reconstructed into the time domain.

If the system also uses a microphone array, beamforming can provide additional spatial separation before or alongside the spectral enhancement stage.


24. Basic Python Example

The following example illustrates the basic concept of Wiener-style spectral processing using STFT data.

import numpy as np
from scipy import signal

# Example noisy signal
fs = 16000
y = noisy_audio

# STFT
f, t, Y = signal.stft(
    y,
    fs=fs,
    window="hann",
    nperseg=512,
    noverlap=256
)

# Estimate noise power
noise_power = np.mean(
    np.abs(Y[:, :10]) ** 2,
    axis=1,
    keepdims=True
)

# Estimate signal power
signal_power = np.maximum(
    np.abs(Y) ** 2 - noise_power,
    0
)

# Wiener gain
gain = signal_power / (
    signal_power + noise_power + 1e-12
)

# Apply gain
X_hat = gain * Y

# Reconstruct enhanced signal
_, enhanced_audio = signal.istft(
    X_hat,
    fs=fs,
    window="hann",
    nperseg=512,
    noverlap=256
)

This is a simplified educational example rather than a production-ready speech-enhancement implementation.

A production system normally requires more sophisticated:

  • Noise estimation
  • Voice activity detection
  • SNR estimation
  • Temporal smoothing
  • Gain constraints
  • Buffer management
  • Latency control
  • Audio quality evaluation

25. Common Engineering Mistakes

Mistake 1: Assuming the noise is always stationary

Real environments change.

A noise model that works for an air conditioner may fail when someone starts speaking nearby.


Mistake 2: Using overly aggressive suppression

Maximum attenuation does not necessarily produce maximum perceived quality.

Excessive suppression can remove speech components and create unnatural artifacts.


Mistake 3: Ignoring noise-estimation errors

The Wiener filter depends heavily on its estimates.

Poor noise estimation can result in:

  • Insufficient suppression
  • Speech distortion
  • Residual noise
  • Gain fluctuations

Mistake 4: Choosing FFT parameters without considering latency

A larger FFT may improve frequency resolution, but it also increases buffering requirements and potentially system latency.


Mistake 5: Evaluating only with SNR

SNR is useful, but it does not completely describe perceived speech quality.

Practical evaluation can include:

  • SNR
  • STOI
  • PESQ where appropriate for legacy/comparative studies
  • POLQA where applicable
  • Listening tests
  • Speech recognition performance
  • End-to-end latency

The evaluation metric should match the application.


26. How to Improve a Basic Wiener Filter

A basic Wiener filter can be extended in several directions.

1. Better noise tracking

Use adaptive noise estimation instead of a fixed noise profile.

2. Voice Activity Detection

Prevent speech frames from contaminating the noise estimate.

3. Temporal smoothing

Reduce rapid gain fluctuations between frames.

4. Frequency smoothing

Reduce isolated spectral gain changes.

5. Gain flooring

Prevent excessive attenuation.

6. Better SNR estimation

Use a priori and a posteriori SNR estimation.

7. Microphone array processing

Use spatial information before spectral enhancement.

8. AI post-processing

Use a neural network to handle residual or highly non-stationary noise.

These improvements gradually transform a basic statistical filter into a more sophisticated audio enhancement pipeline.


27. When Should Engineers Use Wiener Filtering?

Wiener filtering can be a practical choice when:

  • The system requires low computational complexity
  • Noise can be estimated reasonably well
  • Real-time operation is important
  • An interpretable DSP algorithm is preferred
  • Processing resources are limited
  • The application needs controlled spectral attenuation

It can be particularly useful as one stage of a larger audio-processing system.

It may be less effective when the acoustic environment contains highly dynamic competing speech, severe reverberation, or complex nonlinear interference.

In such cases, microphone arrays, beamforming, adaptive filtering, or AI-based speech enhancement may provide additional capabilities.


28. Wiener Filtering in Modern Audio Systems

Although Wiener filtering is a classical signal-processing technique, its underlying concepts remain highly relevant.

Modern speech-enhancement systems still rely on ideas such as:

  • Spectral estimation
  • Noise power estimation
  • SNR estimation
  • Frequency-dependent gain
  • Temporal smoothing
  • Statistical signal modeling

The difference is that modern systems can combine these concepts with:

  • Multi-microphone arrays
  • Beamforming
  • Adaptive filtering
  • Neural networks
  • Acoustic echo cancellation
  • AI-based speech enhancement

This creates a progression from traditional DSP toward integrated DSP + AI audio processing.


29. From Wiener Filtering to Modern Speech Enhancement

The evolution of audio noise reduction can be viewed as a progression:

Basic Filtering

Spectral Subtraction

Wiener Filtering

Adaptive Filtering

Microphone Array + Beamforming

Statistical Speech Enhancement

Deep Learning

Hybrid DSP + AI

Each generation addresses limitations of previous approaches, but classical methods remain important because they provide efficient, interpretable building blocks for modern systems.

The next important topic in this technical series is adaptive noise cancellation, where the system uses an adaptive filter to continuously model and suppress unwanted interference.


30. Frequently Asked Questions

What is Wiener filtering in audio?

Wiener filtering is a statistical signal-processing technique that estimates a clean audio signal from a noisy observation by calculating a frequency-dependent filter based on estimated signal and noise power.

How does a Wiener filter reduce noise?

It calculates a gain for each frequency component. Frequency regions with high estimated signal-to-noise ratios receive higher gain, while noise-dominated regions receive lower gain.

Is Wiener filtering better than spectral subtraction?

They use different approaches to spectral noise reduction. Wiener filtering calculates a statistical gain based on estimated signal and noise power, while spectral subtraction attempts to subtract estimated noise from the observed spectrum. Practical performance depends strongly on noise conditions, estimation accuracy, parameters, and the overall audio system.

Can Wiener filtering work in real time?

Yes. STFT-based Wiener filtering can be implemented for real-time audio applications when the FFT size, frame overlap, processing load, memory, and latency are appropriately designed.

Can Wiener filtering be used with MEMS microphones?

Yes. MEMS microphones provide the acoustic input, while Wiener filtering can be implemented in a DSP, MCU, codec, or application processor as part of the audio signal-processing chain.

Can Wiener filtering work with microphone arrays?

Yes. Wiener filtering can be combined with microphone-array processing and beamforming. The array provides spatial information, while Wiener filtering provides frequency-dependent spectral enhancement.

Does Wiener filtering remove all background noise?

No. Its performance depends on the accuracy of noise estimation and the acoustic environment. Highly dynamic noise, competing speech, reverberation, and nonlinear interference may require additional processing.

Is Wiener filtering still relevant with AI noise reduction?

Yes. Wiener filtering remains useful as a low-complexity statistical processing method and can also be combined with microphone arrays, adaptive DSP, and AI speech-enhancement models.


Conclusion

Wiener filtering is a fundamental technique in audio noise reduction and speech enhancement.

Its key idea is straightforward:

Estimate the relative power of the desired signal and noise, then apply a frequency-dependent gain that preserves signal-dominated components and attenuates noise-dominated components.

In practical systems, however, the quality of Wiener filtering depends heavily on:

  • Noise estimation
  • SNR estimation
  • STFT parameters
  • Temporal and frequency smoothing
  • Gain constraints
  • Real-time implementation
  • Microphone and acoustic design

For modern audio products, Wiener filtering should not necessarily be viewed as a standalone solution.

It can serve as one component within a larger architecture combining MEMS microphones, microphone arrays, beamforming, adaptive DSP, and AI-based speech enhancement.

This system-level approach is particularly important for applications such as far-field voice pickup, conference audio, smart devices, professional audio equipment, and AI-enabled acoustic sensing.

滚动至顶部
SILICON SOURCE
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.