[Speex-dev] Stream Synchronization for Echo Cancellation

Aymeric Moizard
Wed, 01 Nov 2006 07:26:35 -0000

This paper is very interesting. Just to add my own opinion on this:

My main problem concerning those elements is to synchronize
different soundcard on different PC!

The aec is working on both outgoing (mic) and incomnig (RTP) stream.
The problem most show up with USB wich appear to have very different
clock than "classic" soundcard hardware.

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?

Tks,
Aymeric MOIZARD / ANTISIP
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@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@xiph.org
>> http://lists.xiph.org/mailman/listinfo/speex-dev
>
> _______________________________________________
> Speex-dev mailing list
> Speex-dev@xiph.org
> http://lists.xiph.org/mailman/listinfo/speex-dev
>
>