WEBRTC's echo Cancellation algorithm (AEC,AECM) has several important modules:
1. Echo Delay estimation
2.NLMS
3.NLP
4.CNG
5. Double-ended detection (DT)
The following are respectively described:
(1) Echo delay estimation
echo Delay Length: Based on correlated time delay estimation algorithm (including: Based on the speech signal autocorrelation pitch period): Echo cancellation site, time delay search range is large.
WEBRTC's echo delay estimation, which is based on the algorithm of Gips chief scientist Bastiaan
(2) NLMS (normalized mean square minimum adaptive algorithm)
Lms/nlms/ap/rls is a classic adaptive filtering algorithm,
The NLMs algorithm used in WEBRTC is briefly introduced:
The remote signal is x (n), the proximal signal is D (n), and W (n) is the weight, then the error signal E (n) =d (n)-W ' (n) x (n) (here ' represents the rank of turn),
NLMs the coefficients of the filter are updated using the variable step method,
That is, step u=u0/(Gamma+x ' (n) *x (n)), where u0 is the update step factor, gamma is the stabilizing factor,
Then the filter coefficients update equation is W (n+1) =w (n) +u*e (n) *x (n);
NLMs is slightly more complex than the traditional LMS algorithm, but the convergence speed is obviously faster. Lms/nlms performance is inferior to AP and RLS algorithms.
It is also worth mentioning that WEBRTC uses the segmented block frequency domain adaptive filtering (PBFDAF) algorithm, which is also a common algorithm for adaptive filters. More information on adaptive filtering can be found in Simon Haykin's Adaptive filter principle.
(3) NLP (nonlinear filtering)
The WEBRTC uses a Wiener filter.
The power spectrum of the estimated speech signal is PS (W), and the power spectrum of the noise signal is PN (W),
The transfer function of the filter is: H (w) =ps (w)/(Ps (W) +pn (W)).
(4) CNG (Comfort noise generation)
The comfortable noise generator used by the WEBRTC is relatively simple, first generating a random noise matrix evenly distributed on [0, 1],
The amplitude of the noise is modulated after the power spectrum of the noise is used.
The AEC algorithm in WEBRTC has been studied recently because of the need for work. According to the FULLAEC.M file inside the source code, in general, I think the AEC algorithm belongs to the segmented fast frequency domain adaptive filtering algorithm , partioned block Frequeney domain adaPtive filter (PBFDAF). Refer to Paez Borrallo J m and Otero m G for details
There are two points to note when using the AEC algorithm:
1) Delay to small , because the algorithm default filter length is divided into 12 blocks, 64 points per block, according to 8000 sampling rate, that is, 12*8ms=96ms data, and beyond this length is not processed.
2) The delay jitter is small , because the algorithm is the default 10 block also calculates the position of the reference data (that is, the filter energy the largest piece), so if the jitter is very large, if the reference data is not accurate, so that the echo can not be removed.
Transferred from: http://www.cnblogs.com/mod109/p/5829470.html
WEBRTC Echo Cancellation (2)