使用Android的内置的声学回声消除 [英] Using Android's build-in acoustic echo cancellation

查看:2289
本文介绍了使用Android的内置的声学回声消除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有谁知道如何使用Android设备内置的声学回声消除?它位于某处硅和用于GSM / CDMA免提通话。我们真的很想打入其用于VoIP应用,而不是滚动我们自己的。

Does anyone know how to use Android device's built-in acoustic echo cancellation? It is located somewhere in silicon and is used for GSM/CDMA speakerphone calls. We'd really like to tap into it for a VoIP application instead of rolling our own.

推荐答案

我终于能够得到回音消除对我的ARM5(WM8650)处理器工作(Android 2.2的)。下面是我采取的步骤。

I was finally able to get echo cancellation to work on my Arm5 (WM8650) processor (Android 2.2). Below are the steps I took.


  1. 我包的Speex用JNI和发送PCM帧EN codeR之前调用回波处理例程。无回声不管什么取消的Speex设置我试过了。

  1. I wrapped Speex with JNI and called echo processing routines before sending PCM frames to encoder. No echo was canceled no matter what Speex settings I tried.

由于Speex语音是非常敏感的播放和回声帧之间的延迟我实现了一个队列,排队发送到AudioTrack所有数据包。队列的大小应大致等于内部AudioTrack缓冲区的大小。这样,数据包被送到当时的大致echo_playback时AudioTrack从其内部缓冲区数据包发送给声卡。用这种方法去除的延迟,但回声仍然没有取消

Because Speex is very sensitive to delay between playback and echo frames I implemented a queue and queued all packets sent to AudioTrack. The size of the queue should be roughly equal to the size of internal AudioTrack buffer. This way packet were sent to echo_playback roughly at the time when AudioTrack send packets to the sound card from its internal buffer. The delay was removed with this approach but echo was still not cancelled

我裹着JNI WebRTC技术回声消除部分和发送数据包恩codeR之前调用它的方法。回声还在present但库显然是试图将其取消。

I wrapped WebRtc echo cancellation part with JNI and called its methods before sending packets to encoder. The echo was still present but the library obviously was trying to cancel it.

我应用了P2描述的缓冲区技术,它终于开始工作。延迟需要为每个设备虽然调整。还需要注意的是WebRTC技术具有回音消除和手机完整版。完整版大幅减慢处理器和可能应该在ARM7上运行。移动版本的作品,但质量较低

I applied the buffer technique described in P2 and it finally started to work. The delay needs to be adjusted for each device though. Note also that WebRtc has mobile and full version of echo cancellation. The full version substantially slows the processor and should probably be run on ARM7 only. The mobile version works but with lower quality

我希望这会帮助别人。

这篇关于使用Android的内置的声学回声消除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆