[Asterisk-Dev] Echo Canceller assistence (SteveU?)

Steve Underwood steveu at coppice.org
Fri Apr 8 02:37:57 MST 2005


The current echo cancelers have no protection against serious drift on 
narrow band (e.g. single or dual tone). The current cancelers fail 
almost every test in G.168.

No amount of minor tweaking will deal with this. If requires a proper 
narrow band detector to fix it. Several possibilities for this exist - 
Autocorrelation, AMDF/ASDF, Teager-Kaiser energy operator, etc. In 
spandsp there is an unfinished canceler using autocorrelation to detect 
narrow band energy. Something based on Teager-Kaiser should be the most 
compute efficient, and probably the fastest to respond at the onset of 
the tone. I think the most effective trick is to regularly save good 
coefficient sets for the FIR. If tone is detected you step back to the 
last known good set, and freeze adaption until the tones go away.

Suppressing adaption as you suggest helps a bit, but if someone presses 
a DTMF key at the wrong time things still fall apart. A narrow band 
detector is an essential element of a robust detector. It does increase 
the compute requirements, though.

Regards,
Steve


Richard Scobie wrote:

> I have filed a bug, 3813 which briefly, illustrates a case where I 
> believe the echo canceller rapidly diverges to a point that renders 
> busydetect inoperable.
>
> Unfortunately I am not a developer, but having spent quite a bit of 
> time researching echo cancellers, I wanted to check something with 
> those more knowledgable, before posting a bugnote.
>
> The situation per bug 3813 seems to to contain two elements that are 
> causing problems - pure tones and significant periods of doubletalk.
>
> Having spent a large amount of time tweaking the mec2_const file 
> without any real improvement, I wondered if it would be feasable to 
> inhibit coefficient updates immediately following the FXO echo 
> training, until the called channel (FXS in this case), goes off hook?
>
> Thanks for assistence.
>
> Regards,
>
> Richard





More information about the asterisk-dev mailing list