回聲消除(Acoustic Echo Cancellation)中遇到的幾個常見問題思考


什么才是好的回聲消除效果

  個人的理解:好的回聲消除算法,要滿足兩個條件:一個是回聲確實被消除了,另外一個是麥克風采集到音頻信號不能被消除,常見的就是人的聲音信號。這個算法只是提供了一種方法,具體的產品,要根據產品的外形,使用場景和做參數調試的。同樣使用一種算法,筆者對比過市面上不少產品,性能差距的不是一點的大啊。

 

回聲消除的基本流程

  回聲消除的流程一般是這樣的:獲取遠端的信號能量信息,獲取近端的信號能量信息,兩者信號做一個決策,當近端信號的能量大於一定閥值的情況下,默認是需要采集音頻信號,這個時候要把回聲消除的因子降到最低,同樣,當近端信號能量小於一定的閥值的情況下,默認是采集的是回聲信號,這個時候要加大回聲信號的消除。后面就是使用NLP來估算 最后針對消除回聲后的信號,產生默認噪聲,讓信號聽覺上比較舒服一些。

 

回聲消除中的吞音問題

 吞音問題也是回聲消除中常見的問題,這個問題產生的根源是參考信號和輸入信號的幅值不同導致算法參數不匹配造成的。想要做把這個調試好,需要調試算法的震盪因子和信號的閥值大小。這個問題,筆者也是花費了不少精力做了系統性的研究,具體的要做到什么水平,還要根據產品的場景需求進行細節的優化的。

 

回聲消除中的時延問題

  做回聲消除的時候,參考信號一般和錄音信號之間有一個時間差的,回聲消除就是依靠這個時間差來進行回聲消除的,所以,這個時延的計算特別好重要。這個時延,是有三個部分組成的,一個是獲取的參考信號到輸出的時間,另外一個是空氣中傳播的時間,還有一個是錄入到軟件計算的時間。這三個時間,一般是空氣中傳播的時間最長,其它兩個時間的延時稍微在空氣中傳播的時間加一些時間就行了。嚴格的就使用時間戳測一下,這個是比較科學的。現在的算法對延時的處理,一般包含兩種,一個是需要用戶填寫的固定延時,另外一個是算法可以自動計算出來的延時。筆者兩個 都用過,具體的哪種好壞,這個要和你的使用場景有關系的,要根據你的使用場景做選擇的。

 

回聲消除中的遠端信號檢測機制

  回聲消除中一個重要的因子就是對遠端參考信號的采集。這里面有兩種方法:一種是通過軟件直接采集播放的音頻數據,作為參考音頻。另外一種是把播放的聲音通過麥克風采集進來做比對,通過可調電阻,把兩個信號的大小調節的誤差在一定范圍呢。這兩種效果,筆者測試出來是第二種的效果好好一些,因為這樣可以把參考信號調節的和輸入信號幅度差距很小,回聲消除的效果自然會很好了。

 

回聲消除問題總結

  回聲消除是一個非常古老的課題,也是一個非常難纏的問題。因為,它涉及到的東西非常多,有聲學的,有算法,有結構的,還有芯片的。想要把它參數調試好,除了有先進的算法,還需要針對具體的產品做參數調優和系統優化。這條路漫漫啊,一點一滴的死磕吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM