回聲消除概述

在通常的VOIP軟件或視頻會議系統中,假設咱們只有A和B兩我的在通話,
首先,A的聲音傳給B,B而後用喇叭放出來,
而這時B的MIC則會採集到喇叭放出來的聲音,而後傳回給A,
若是這個傳輸的過程當中時延足夠大,A就會聽到本身剛纔說的話,這就是回聲。


回聲消除器的做用就是在B端對B採集到的聲音進行處理,把採集到的聲音中包含的A的聲音去掉以後在傳給A,
這樣A就不會聽到本身說過的話了。


傳給回聲消除器的兩個聲音信號,必須同步得很是好,
就是說在B端接收到A說的話之後,要把這些聲音數據傳給回聲消除器作參考,而後再傳給聲卡,聲卡播放出來,
這裏有一段延時,這時B再採集,而後傳給回聲消除器,與那個參考數據比較,從採集到的數據中把頻率和參考數據相同的部分消除掉。


若是傳給消除器的兩個信號同步得很差,即兩個信號找不到頻率相同的部分,就沒有辦法進行消除了。


在通常的VOIP軟件中,接收對方的聲音並傳到聲卡中播放是在一個線程中進行的,
而採集本地的聲音並傳送到對方又是在另外一個線程中進行的,
而聲學回聲消除器在對採集到的聲音進行回聲消除的同時,還須要播放線程中的數據做爲參考,
而要同步這兩個線程中的數據是很是困難的,由於稍稍有些不一樣步,聲學回聲消除器中的自適應濾波器就會發散,
不但消除不了回聲,還會破壞採集到的原始聲音,使被破壞的聲音難以分辨。


聲學回聲主要又分紅如下兩種:
一、直接回聲:由揚聲器產生的聲音未經任何反射直接進入麥克風
二、間接回聲:由揚聲器發出的聲音通過屢次反射後,再進入Mic
對於第二種回聲,擁有多路徑、時變性的特色,是比較難處理的。


回聲消除有兩種方式:
第一種:經過硬件實現,
        有不少手機就是這麼作的,也有專業的芯片,可是隻支持8khz的,
        若是要求高質量的音質的話,基本實現不了。
第二種:經過軟件實現,
        qq,msn,skype不少具備通話功能的軟件,如今都具備回聲消除的功能(需是比較高版本的,低版本的可能沒有),
        可是實現代碼是不對外的,開源的回聲消除代碼只有speex和webrtc。


通常經常使用的開源的AEC有兩個:Speex 和 webrtc


webrtc相對比Speex強的多,緣由以下:
1,webrtc有回聲時延估計算法模塊
2,webrtc有neteq模塊
3,webrtc核心就是gips,緣由你懂的web

相關文章
相關標籤/搜索