Acoustic echo cancellation
Daniel K <[email protected]>
| Newsgroups | gmane.comp.audio.compression.speex.devel |
|---|---|
| Message-ID | <[email protected]> |
>>* Hi, *>>* *>>* I have a scenario in a mobile VoIP app that requires echo cancellation but *>>* is somewhat different from what's described in the docs. *>>* *>>* Audio is received from and sent to the network at 8000Hz. Each packet *>>* contains 160 samples worth a playback of 20ms. *>>* *>>* But the hardware requires aggregation for both playback and capture. So for *>>* playback, I coalesce 4 packets in a buffer and queue them as a larger buffer *>>* for playback. *>>* On the send side, I read a large buffer (worth 4 packets) and send them out *>>* over time 20ms apart. *>>* *>>* I tried using speex_echo_playback just when a 160-sample packet arrives from *>>* the network, before coalescing and speex_echo_capture just before a packet *>>* is sent out to the network but that doesn't seem to work properly (doesn't *>>* cancel any echo). *> The most likely reason is that you didn't align the far-end and near-end samples.> So the filter can not converge. Thanks for your response. Can you please explain what you mean by align samples from near-end and far-end? And how is that usually accomplished? >>* So, in this scenario above, please recommend a good place to insert *>>* speex_echo_playback and speex_echo_capture. Should I be just before the read *>>* and write to hardware? In that case, should I use a larger "frame size" of *>>* 160 samples x 4? *> Of course you can set frame size to 160*4. Otherwise you can feed samples 4 times> to the AEC if you don't want to modify the frame size. >* *>* Thanks in advance, *>* Daniel.** * _______________________________________________ Speex-dev mailing list [email protected] http://lists.xiph.org/mailman/listinfo/speex-dev