[Speex-dev] Stream Synchronization for Echo Cancellation

Jean-Marc Valin jean-marc.valin at usherbrooke.ca
Fri Nov 10 19:44:38 PST 2006

> For estimating the delay, what do you think of the idea of using
> cross-correlation?

That would surely work fine. What I prefer though is to simply *know*
what the delay is based on the soundcard settings.


> -mjc
> -----Original Message-----
> From: Jean-Marc Valin [mailto:jean-marc.valin at usherbrooke.ca] 
> Sent: Wednesday, November 01, 2006 7:51 AM
> To: Aymeric Moizard
> Cc: Tom Grandgent; Coffey, Michael; speex-dev at xiph.org
> Subject: Re: [Speex-dev] Stream Synchronization for Echo Cancellation
>> In those cases, when you get let's say 1000 packets of 20ms from the
> mic
>> you may have only 990 packets of 20ms from RTP incoming stream.
>> Thus, before sending outgoing mic/RTP stream, you would wait for 1000
>> incoming packets: where last packet in fact arrive 10*20ms = 200ms
>> after it was supposed to. I have from my experience already seen 4s
>> of clock deviation each minutes between one USB headset and other
>> sound card....
>> In this case, synchronisation is a nightmare. It seems to be similar
>> issue than the one described in your link, but the difference is
> really
>> unpredictable and the resolution does not seems as simple...
>> Anybody that wish to share experience on this?
> Actually, the jitter buffer in Speex tends to cope relatively well with
> non-synchronised clocks. The only that that really doesn't like it is
> the echo canceller. Even a drift by one sample means that the echo
> canceller needs to re-adapt. So as soon as the (local) clocks aren't
> *perfectly* synchronised, the echo cancellation performance goes down to
> a point where it's mainly unusable.
> 	Jean-Marc
>> Tks,
>> amsip - http://www.antisip.com
>> osip2 - http://www.osip.org
>> eXosip2 - http://savannah.nongnu.org/projects/exosip/
>> On Wed, 1 Nov 2006, Tom Grandgent wrote:
>>> Isn't this the same problem described starting at the bottom of
>>> this page?
>>> http://www.embeddedstar.com/articles/2003/7/article20030720-11.html
>>> Jean-Marc Valin <jean-marc.valin at usherbrooke.ca> wrote:
>>>>> As it says in 5.4.1 of the good book "Using a different soundcard
> to do
>>>>> the capture and playback will *not* work, regardless of what you
> may
>>>>> think. The only exception to that is if the two cards can be made
> to
>>>>> have their sampling clock 'locked' on the same clock source."
>>>>> It seems to me that it should be possible to achieve
> synchronization
>>>>> using some combination of cross-correlation, clock skew estimation,
> and
>>>>> sample interpolation. But there are so many details to consider, I
> bet
>>>>> it would take a long time to get right.
>>>> When you get that to work, please let me know and we'll publish some
>>>> papers about it. Until then, your best hope is in echo *suppression*
>>>> (i.e. frequency-dependent gain), although even that could be a bit
>>>> tricky.
>>>>     Jean-Marc
>>>> _______________________________________________
>>>> Speex-dev mailing list
>>>> Speex-dev at xiph.org
>>>> http://lists.xiph.org/mailman/listinfo/speex-dev
>>> _______________________________________________
>>> Speex-dev mailing list
>>> Speex-dev at xiph.org
>>> http://lists.xiph.org/mailman/listinfo/speex-dev

More information about the Speex-dev mailing list