2010-10-20 65 views
5

有誰知道如何使用Android設備內置的聲學回聲消除?它位於硅片的某處,用於GSM/CDMA揚聲器電話呼叫。我們真的很想爲VoIP應用程序使用它,而不是滾動我們自己的應用程序。使用Android的內置的聲學回聲消除

+0

運氣好嗎?我正在看同樣的東西... – 2011-01-27 04:59:05

回答

0

我一直在同一個地方,成功移植的Speex AEC Android和2個不同的Android VoIP客戶使用它。當揚聲器處於全音量時,大多數回聲都會被取消 - 在各種設備上進行測試。 Speex官方文檔和Google搜索應該足以讓它起作用。

+0

嗨,你可以指導我如何使它工作。當兩個設備都處於揚聲器模式時,我正努力取消回聲。 – 2012-05-14 07:16:11

+0

嗨,你是否在你的本地代碼中使用了抖動緩衝器 – 2012-07-10 05:18:11

4

我終於能得到迴音消除對我的Arm5(WM8650)處理器(Android 2.2的)工作。以下是我採取的步驟。

  1. 我包裹的Speex與JNI和發送PCM幀到編碼器之前被調用的回波處理例程。無論我嘗試過哪些Speex設置,都不會取消回聲。

  2. 由於Speex的是重放和回波幀之間的延遲非常敏感我實現了一個隊列並排隊發送到AudioTrack所有數據包。隊列的大小應該大致等於內部AudioTrack緩衝區的大小。大致在AudioTrack從其內部緩衝區向聲卡發送數據包時,這種方式發送到echo_playback。這種方法消除了延遲,但回聲仍未取消

  3. 我用JNI封裝了WebRtc回聲消除部分,並在將數據包發送到編碼器之前調用了它的方法。回聲仍然存在,但圖書館顯然試圖取消它。

  4. 我應用於P2所描述的緩衝技術,它終於開始工作。雖然需要爲每個設備調整延遲。另請注意,WebRtc具有移動和完整版本的迴音消除功能。完整版顯着降低了處理器速度,應該只能在ARM7上運行。移動版本工作,但質量較差

我希望這會幫助某人。

+0

Speex已被Opus代替http://opus-codec.org/。 – 2013-02-14 01:28:37

+0

隊列是否需要與AudioTrack的內部緩衝區大小相同?加上AudioRecord內部緩衝區的大小? – 2015-09-22 16:36:08

0

由於API等級11,有一個MediaRecorder.AudioSource一個新的價值,它是VOICE_COMMUNICATION。機器人文檔say:「麥克風音頻源調諧用於語音通信(如VoIP)將例如採用回波消除或者如果可用自動增益控制的優點,否則它的行爲就像DEFAULT如果沒有應用語音處理。」我嘗試過,但無法使其工作。問題可能是我用過的設備,這是索尼平板電腦S.值得嘗試,但。

+0

這確實如此,但是自從API級別11以來,這對於我迄今爲止使用的大多數設備來說並不真正起作用。它只是,沒有,沒有.... – PKlumpp 2016-06-15 09:21:10