EchoCanceller soundcards drift

534 views
Skip to first unread message

Strap

unread,
Oct 25, 2011, 8:12:14 AM10/25/11
to discuss...@googlegroups.com
Hi all,

I'm currently using the WebRtc echo canceller and
it works perfectly except when i'm using an USB microphone.
It's probably due to a drift and can be solved with the skew parameter of
WebRtcAec_Process.
But the problem is : I don't know how to get the right skew value to get the
echo canceller works properly.
Do you know a way to get the right skew value for my configuration ?

Regards

Andrew MacDonald

unread,
Oct 26, 2011, 11:20:19 AM10/26/11
to discuss...@googlegroups.com

That will depend on the platform. We only use drift compensation with
the Windows Wave interface. Have a look at:
http://code.google.com/p/webrtc/source/browse/trunk/src/modules/audio_device/main/source/win/audio_device_wave_win.cc

particularly GetClockDrift().

At first it appears that we're using it in the Windows Core Audio
interface as well, but we're really just compensating for a mismatch
between 44.1 and 44 kHz sampling rates.

Strap

unread,
Oct 27, 2011, 8:23:44 AM10/27/11
to discuss-webrtc
Thanks for your answer.
So just to be sure. There is no higher level function than
WebRtcAec_Process
that can handle drift under linux ?


On Oct 26, 5:20 pm, Andrew MacDonald <and...@webrtc.org> wrote:
> On Tue, Oct 25, 2011 at 5:12 AM, Strap <len...@gostai.com> wrote:
> > Hi all,
> > I'm currently using the WebRtc echo canceller and
> > it works perfectly except when i'm using an USB microphone.
> > It's probably due to a drift and can be solved with theskewparameter of
> > WebRtcAec_Process.
> > But the problem is : I don't know how to get the rightskewvalue to get the
> > echo canceller works properly.
> > Do you know a way to get the rightskewvalue for my configuration ?
>
> That will depend on the platform. We only use drift compensation with
> the Windows Wave interface. Have a look at:http://code.google.com/p/webrtc/source/browse/trunk/src/modules/audio...

Arun Raghavan

unread,
Oct 28, 2011, 12:20:18 PM10/28/11
to discuss...@googlegroups.com
On 27 October 2011 14:23, Strap <len...@gostai.com> wrote:
> Thanks for your answer.
> So just to be sure. There is no higher level function than
> WebRtcAec_Process
> that can handle drift under linux ?

I've been adding some code in PulseAudio (where we're using the webrtc
canceller implementation as an option) to do drift estimation.
Currently, it fails at >100ms latency (which shouldn't be a big
constraint), and there should be room for improvement, but if it
helps, you could take a look at what I've done at --
http://cgit.collabora.com/git/user/arun/pulseaudio.git/commit/?h=webrtc&id=a0e467da585da0aaaffdb7bd4ec863da05f71942

Also, possibly offtopic for this list, but for whatever it's worth,
I've tried running the PulseAudio canceller module using the webrtc
engine between my internal speakers and a couple of USB capture
devices I have. This was without using drift compensation I linked to
above. The drift triggers our resync code (which drops some samples to
bring us withing some "acceptable" delta between the playback and
capture streams) every few seconds (which means it's really small
amounts of drift). There isn't any noticeable glitch at resync time
(which we have seen with the speex canceller). I'm still looking for a
device with large enough drift to be actually problematic.

Cheers,
--
Arun Raghavan
http://arunraghavan.net/
(Ford_Prefect | Gentoo) & (arunsr | GNOME)

Chebil Marwen

unread,
Jun 2, 2014, 4:55:25 PM6/2/14
to discuss...@googlegroups.com
Hello, I'm using ubuntu 13.04 and pulseaudio 3.0, i tried to use echo cancellation of WebRTC :
pactl load-module module-echo-cancel aec_method=WebRTC
but it return :
Failure: Failed to initialize module
Do you have any idea how to fix this?
Thanks
Reply all
Reply to author
Forward
0 new messages