Noise Reduction Two Stage MelWarped Weiner Filter Approach
































- Slides: 32
Noise Reduction Two Stage Mel-Warped Weiner Filter Approach
Intellectual Property • Advanced front-end feature extraction algorithm • ETSI ES 202 050 V 1. 1. 3 (2003 -11) • European Telecommunications Standards Institute • ETSI Technical Committee Speech Processing, Transmission and Quality Aspects (STQ).
Noise Reduction • Based on Weiner filter theory • Noise reduction is performed in two stages • Input signal is de-noised in the first stage. • Second stage – dynamic noise reduction based on SNR of processed signal
First Stage PSD Mean Spectrum WF Mel Apply Estimation Design Filter-Bank IDCT Filter VADNest To Second Stage
Second Stage From First Stage PSD Mean Spectrum WF Mel Gain Mel Apply Estimation Design Filter-Bank Factorization IDCT Filter OFF Output
Buffering Buffer 1 • 1 frame = 80 samples • 1 buffer = 4 frames Buffer 2 0 1 2 3 A B C D E F G H A De-noised (1 st Stage) (output) B C D new F De-noised (output)
Spectrum Estimation • Input signal is divided into overlapping frames of Nin = 200 samples. • A 25 ms frame length and 10 ms frame shift (80 samples) are used. • Each frame Sw(n) is windowed with a Hanning window of length Nin.
Spectrum Estimation where Padding from Nin up to NFFT-1, NFFT = 256
Spectrum Estimation • Frequency representation: • Power spectrum: • Smoothing:
Power Spectral Density Mean • Compute for each Pin(bin) the mean over the last TPSD = 2 frames.
Wiener Filter Design • A forgetting factor (weight) is computed for each frame, λNSE. If (t < 100 frames) λNSE = 1 – 1/t else λNSE = 0. 99
Wiener Filter Design First stage noise spectrum estimate is updated based on VAD flag: If flag = 0 P 1/2 noise(bin, tn) = min(λNSE ● P 1/2 noise(bin, tn-1)+(1λNSE)●PSDmean, exp(-10)) If flag = 1 P 1/2 noise(bin, t) = P 1/2 noise(bin, tn) (last non speech frame)
Wiener Filter Design Second stage is updated permanently: If (t < 11) Pnoise(bin, t) = λNSE ● Pnoise(bin, tn-1)+(1 - λNSE)●PSDmean else update = 0. 9 + 0. 1×Pin. PSD(bin, t)/(Pin. PSD(bin, t)+ Pnoise(bin, t-1) ) ×(1+1/(1+0. 1×Pin. PSD(bin, t) /(Pin. PSD(bin, t-1))) Pnoise(bin, t) = Pnoise(bin, t-1)×update
Wiener Filter Design Noiseless spectrum is estimated: P 1/2 den(bin, t) = 0. 98×P 1/2 den(bin, t-1)+(1 -0. 98)×T[PSDmean -P 1/2 noise(bin, t) ] where threshold function T is
Wiener Filter Design The priori SNR is calculated: The filter transfer function is
Wiener Filter Design The filter transfer function is used to improve noiseless signal estimation: The improved priori SNR is:
Voice Activity Detection • VAD is used to detect noise frames • Find frame energy: If frame threshold < 10 long term energy factor ( LTE) = 1 - 1/t Else LTE = 0. 97; Calculate frame energy:
Voice Activity Detection • Use frame energy to update mean energy: If frame energy - mean energy < 20 (SNR threshold) or t < 10 Then if (frame. En < mean. En) or (t < 10) mean. En = mean. En + (1 - LTE ) * (frame. En - mean. En) Else mean. En = mean. En+(1 - 0. 99) * (frame. En - mean. En) If (mean. En < 80) mean. En = 80
Voice Activity Detection • Is the current frame speech? If t > 4 if (frame. En - mean. En) > 15 IT IS SPEECH nb. Speech. Frame++ else if nb. Speech. Frame > 4 hangover = 15, nb. Speech. Frame = 0 if (hangover != 0) IT IS SPEECH else IT IS NOT SPEECH
Mel Filter Bank • The linear frequency Weiner filter coefficients are smoothed and transformed to the Melfrequency scale. • The mel scale is a scale of pitches judged by listeners to be equal in distance one from another.
Mel IDCT • The time-domain impulse response of the Wiener filter is computed from the Mel-Wiener filter coefficients by using Mel-warped inverse Discrete Cosine Transform:
Gain Factorization • Factorization of the Wiener filter Mel-warped coefficients is performed to control the aggression of noise reduction in the second stage. • The de-noised frame signal energy is calculated as:
Gain Factorization • The noise energy of the current frame is estimated as:
Gain Factorization • The smoothed SNR is evaluated using 3 denoised frame energies and the noise energy If (Ratio > 0. 0001) Then SNRavg(t) = 6. 67 × log 10 (Ratio) Else SNRavg(t) = -33. 3
Gain Factorization • To decide the degree of aggression, the SNR is tracked: If {(SNRavg(t) – SNRlow-track(t-1)) < 10 or t < 10} calculate λSNR(t) SNRlow-track(t) = λSNR(t)× SNRlow-track(t -1)+(1 - λSNR(t))×SNRavg(t) Else SNRlow-track(t) = SNRlow-track(t -1)
Gain Factorization • Gain factorization applies more aggressive noise reduction to purely noisy frames and less to frames containing speech. • The aggression coefficient takes on a value of 10% for speech + noise frames and 80% for noise frames.
Apply Filter • The causal impulse response is obtained, truncated and weighted by a Hanning window. • The input signal is filtered with the filter impulse response to produce the noise-reduced signal.
Offset Compensation • A filter is used to remove the DC offset over the frame length interval (80 samples). Where Snr is the noise reduced signal
Results Noisy test file: After de-noise:
Results Footloose: Not Footloose:
Results: why didn’t this work? Hair dryer: Still there? !? !:
Results Hair dryer: Gone:
































