Maris Engineering
2009-Nov-20 07:25 UTC
[Speex-dev] AEC initial convergence (Mark Pietras)
> 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