[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