Open Source Echo Canceller Part 4 – First Phone Calls

I fired up the echo canceller in real time today, and tried a few calls on my home phone line. I used an Asterisk 1.2 system running a Digium TDM400 card, and integrated the new echo canceller into Zaptel. I had previously tried this same phone line with one of the Zaptel 1.2 built-in echo cancellers with poor results – it didn’t really converge. To be fair, I haven’t tried the latest Zaptel 1.4 echo cancellers, I will try that soon.

The new echo can worked OK, definitely an improvement. I could hear a little echo on about 3 occasions in about 10 minutes of talking, but it quickly reconverged each time.

There were a few little problems – the crude Non-Linear Processor (NLP) used simply mutes the near end and I can hear the background noise being switched on and off when I talk. I really need a better approach like comfort noise or variable gain here (thanks Jean-Marc Valin for your suggestions here). Plus from the simulation I am aware of a few other weaknesses, e.g. some G168 test fails that need looking into.

Obviously, the echo canceller also needs much wider testing, so this is just a very preliminary result.

Anyway, I am pretty happy with this. One big reason for this work was so I could use my Embedded Asterisk system on this FXO line, and I am now pretty close – just need to port to the Blackfin.

The echo canceller code and a short README that describes how to use it on your Asterisk system is checked into SVN if anyone would like to try it.

Please send me an email and tell me how well it works for you. If it doesn’t work please use the sampling system to send me a few samples from your phone line. I can use that information to improve the echo canceller.

Overall this is an encouraging start. Thanks to all those who have helped me over the past month.

Reading Further

Oslec Home Page
Part 1 – Introduction
Part 2 – How Echo Cancellers Work
Part 3 – Two Prototypes
Part 4 – First Calls
Part 5 – Ready for Beta Testing
ringtones to sidekick adding slideringtones adp1200 sprint pcs lg ringtonefree ringtone scp sanyo 8100arrington adleralf ringtonespolyphonic free nec 525 ringtoneadvocate in good barrington shepherd Map9nu sw1x sloane street 17 londonsloane a-trans systemsloan all-in-one michigan constructionthe fifties sloan during alfred palgebra amortized loanp box address o ameriloanalla actual property loan macdonaldloan forbearance americorp Mapkey casino mobile allaccount merchant high risk offshore casinobuffalo a casino aroundbest affiliate gamblingcasino account offshore merchant risk high4bears casino lounge in newtown andakwasanee hogansburg ny casinocasino affiliate aaa programs Mapmovie amatuer home pornhousewife videos amatuer pornclips amatuer porn milfseattle amatuer pornporn amatuer trailersamatuer porn video clipsamatuer pornotube porn videosamatuer porn websites Map

4 thoughts on “Open Source Echo Canceller Part 4 – First Phone Calls”

  1. Hi David,
    I read your series of interesting blogs on echo cancellation trying to understand something more on the subject. I have some assumptions, taken from some other docs I read, I’d like you to comment on the blog:

    1) Echo canceller (EC) could actually cancel only locally generated echo, i.e. echo generated by FXO or FXS hybrid unbalancing.
    2) Nothing could be done for echo generated on the far side of a VoIP call due to huge delays VoIP itself introduces on echo-ed signal.
    3) Balancing carefully all FXS hybrids available on the PBX could possibly solve echo problems almost completely: only FXOs should be provided with EC.
    4) ISDN TE should give no local echo problems (no hybrid, no problems).

    Thank You,

  2. I was involved on research and developing line echo canceller for UK company Tecteon Plc. Team of 11 engineers worked two years. New solution for echo canceller is not project when you can see results for one month. Only subjective testing taking more than one month for high skilled voice specialist.

    Testing in developing phase is time consuming process too. You can get PASS for particular G.168 test, but that does not mean everything is OK. You have to test for different delays in response, different gain of hybrid, different energy levels etc.

    To execute good adaptive algorithm you have to sacrifice lot of MIPS in your DSP. When you add other needs, energy computations,comfort noise, double talk detector and so on, MIPS increasing rapidly.

    Your DSP running also Linux and Asterisk. Calculate peek MIPS for Linux and Asterisk and rest divide with number of channels in your board. If result is more than MIPS for echo canceller that mean echo canceller has chance to work for you, If not, it is time to think for separate DSP which will run just echo canceller.

  3. I found answers to my questions in G.131 Reccomendation, par. 4.1, where it is recommended that:
    1) the echo canceller shall be deployed on all connections which exceed the total one-way talker echo transmission path time of 25ms.
    2) In specific cases such as interconnections between public and other networks (private networks) the public network may not provide sufficient echo control, so EC (Echo Cancellation) shall be provided in the connection segment attached to the public network (i.e. FXO _and_ ISDN TE lines).

    In other words, if a PBX, attached to public network by means of FXO and/or ISDN TE has some VoIP terminals, EC must be deployed on all public network connections.

    Not sure, if EC should be provided on local FXS hybrids: I will check ERL (Echo Return Loss) of properly impedance and audio level matched FXSs and see.


Comments are closed.