1. 程式人生 > >Speex 迴音消除 在android 平臺上 初見成效

Speex 迴音消除 在android 平臺上 初見成效

參考API,又嘗試了迴音消除,發現最新版還提供了用於在多執行緒中的playback()和capture(),有了這兩個函式,就可以避免線上程中不能同步的問題。

結果,發現雖然進行了迴音有了部分消除,但是,還是會一點嘯叫以及回聲,想來還是要做一點處理,譬如去噪,減小播放或者來音的增益。

在使用了speex提供的 preprocessor 函式後 ,原以為會更好的消除噪聲,可視發現也沒什麼變化,反而可能會更弱,這是為什麼

Update:5//12

在使用了Speex回聲消除之後,以及添加了預處理的一些Api,並且優化了程式的結構,例如在接收資料然後用來播放的過程中,使用了Ringbuffer來保證資料包處理質量。

最後的結果:

1兩個手機都開啟揚聲器 且放到最大,在不同的房間裡,能夠聽到一聲回聲,即喂……喂

2兩個手機不開揚聲器,正常通話音量,在不同的房間裡,沒有回聲。

因為最近比較忙,在做android上,Sip的實現內容,所以沒時間貼出具體的語音處理傳送專案的實現原理和步驟,等過段時間一定補上,如果有疑問,我也儘量回答

Update: 3/11

前幾天,試了一下,把預處理裡面的幾個語音預處理功能都打開了,譬如去噪,VAD,結果發現確實效果不錯,在沒有人音的時候,確實噪聲被去掉了,不過,

以前沒有延時,因為加了很多處理,所以增加了開銷,所以有了500ms的延時(或許吧)。 迴音還是會有一點,可能還是引數設定和同步佇列的問題。期待解決