[Speex-dev] AEC initial convergence (Mark Pietras)

Maris Engineering mail at maris-ee.eu
Thu Nov 19 23:25:24 PST 2009


> I'm wondering if there's a way to speed up the initial convergence  
> time.  Maybe I'm completely off base here, but specifically I was  
> wondering if the code starts the search assuming the echo is near to  
> zero, and works longer to find the adapted point.  If so, is there a way  
> to have it reverse the search, that is, start with the assumption that  
> the echo is furthest from zero?  In my case, the echo will almost  
> certainly always be pretty far out in the window... I'm sure my  
> terminology isn't right, but does my question make sense?  Thanks, Mark.

Mark,

Regardless which starting point is taken, there is always a big  
probability of slow convergence. To be precise: when started from the  
"long echo" point: it can even make it worse. Why?
The echo canceller tries to cancel out every incoming frequency that is  
originated from the loudspeaker with the correct amplitude, correct delay  
time and phase. It is this latter property that is very, very crucial. An  
"initial long echo" state as you'd like it could have a totally false  
phase, thus doubling echo effect or so.

There is only one way out of this problem: having a sort of "reference  
echo session", where you would decide if an echo canceller is convergered  
well enough, and then save this echo cancellation state into a file or so,  
and recover it upon start of a normal session. This however requires  
(probably minor) changes in the speex source, but more important: an  
exactly stable delay of the digital signal path from echo canceller  
reference input to echo canceller microphone input is stringently  
required. In practice it points out that every unique session does not  
have the same delay. This is true for Windows as well as Linux targets.

Rob


More information about the Speex-dev mailing list