回聲消除 AEC 原理

2022-06-07 04:45:07 字數 3234 閱讀 8505

一、前言

因為工作的關係,筆者從2023年開始接觸回聲消除(echo cancellation)技術,而後一直在某大型通訊企業從事與回聲消除技術相關的工作,對回聲消除這個看似神秘、高階和難以理解的技術領域可謂知之甚詳。

要了解回聲消除技術的來龍去脈,不得不提及作為現代通訊技術的理論基礎——數字訊號處理理論。首先,數字訊號處理理論裡面有一門重要的分支,叫做自適應訊號處理。而在經典的教材裡面,回聲消除問題從來都是作為乙個經典的自適應訊號處理案例來討論的。既然回聲消除在教科書上都作為一種經典的具體的應用,也就是說在理論角度是沒有什麼神秘和新鮮的,那麼回聲消除的難度在**?為什麼提供回聲消除技術(不管是晶元還是演算法)的公司都是來自國外?回聲消除技術的神秘性在**?

二、回聲消除原理

從通訊回音產生的原因看,可以分為聲學回音(acoustic echo)和線路回音(line echo),相應的回聲消除技術就叫聲學回聲消除(acoustic echo cancellation,aec)和線路回聲消除(line echo cancellation, lec)。聲學回音是由於在擴音或者會議應用中,揚聲器的聲音多次反饋到麥克風引起的(比較好理解);線路回音是由於物理電子線路的二四線匹配耦合引起的(比較難理解)。

回音的產生主要有兩種原因:

1.  由於空間聲學反射產生的聲學回音(見下圖):

圖中的男子說話,語音頻號(speech1)傳到女士所在的房間,由於空間的反射,形成回音speech1(echo)重新從麥克風輸入,同時疊加了女士的語音頻號(speech2)。此時男子將會聽到女士的聲音疊加了自己的聲音,影響了正常的通話質量。此時在女士所在房間應用回音抵消模組,可以抵消掉男子的回音,讓男子只聽到女士的聲音。

2.  由於2-4線轉換引入的線路回音(見下圖):

在adsl modem和交換機上都存在2-4線轉換的電路,由於電路存在不匹配的問題,會有一部分的訊號被反饋回來,形成了回音。如果在交換機側不加回音抵消功能,打**的人就會自己聽到自己的聲音。

不管產生的原因如何,對語音通訊終端或者語音中繼交換機需要做的事情都一樣:在傳送時,把不需要的回音從語音流中間去掉。

試想一下,對乙個至少混合了兩個聲音的語音流,要把它們分開,然後去掉其中乙個,難度何其之大。就像一瓶藍墨水和一瓶紅墨水倒在一起,然後需要把紅墨水提取出來,這恐怕不可能了。所以回聲消除被認為是神秘和難以理解的技術也就不奇怪了。誠然,如果僅僅單獨拿來一段混合了回音的語音頻號,要去掉回音也是不可能的(就算是最先進的盲訊號分離技術也做不到)。但是,實際上,除了這個混合訊號,我們是可以得到產生回音的原始訊號的,雖然不同於回音訊號。

我們看下面的aec聲學回聲消除框圖(本**)。

figure  acoustic echo cancellation in a voice communication terminal

其中,我們可以得到兩個訊號:乙個是藍色和紅色混合的訊號1,也就是實際需要傳送的speech和實際不需要的echo混合而成的語音流;另乙個就是虛線的訊號2,也就是原始的引起回音的語音。那大家會說,哦,原來回聲消除這麼簡單,直接從混合訊號1裡面把把這個虛線的2減掉不就行了?請注意,拿到的這個虛線訊號2和回音echo是有差異的,直接相減會使語音面目全非。我們把混合訊號1叫做近端訊號ne,虛線訊號2叫做遠端參考訊號fe,如果沒有fe這個訊號,回聲消除就是不可能完成的任務,就像「巧婦難為無公尺之炊」。

儘管回聲消除是非常複雜的技術,但我們可以簡單的描述這種處理方法:

1、房間a的音訊會議系統接收到房間b中的聲音

2、聲音被取樣,這一取樣被稱為回聲消除參考

3、隨後聲音被送到房間a的音箱和聲學回聲消除器中

4、房間b的聲音和房間a的聲音一起被房間a的話筒拾取

5、聲音被送到聲學回聲消除器中,與原始的取樣進行比較,移除房間b的聲音

求解回音路徑函式f的過程恐怕就是比較難以表達的數學公式了。鑑於通俗表達數學公式的難度比發現數學公式還難,筆者就不費力解釋了。下面這段表達了利用自適應濾波器原理求解函式f的過程。(以下可以跳過)

自適應濾波器

自適應濾波器是以輸入和輸出訊號的統計特性的估計為依據,採取特定演算法自動地調整濾波器係數,使其達到最佳濾波特性的一種演算法或裝置。自適應濾波器可以是連續域的或是離散域的。離散域自適應濾波器由一組抽頭延遲線、可變加權係數和自動調整係數的機構組成。附圖表示乙個離散域自適應濾波器用於模擬未知離散系統的訊號流圖。自適應濾波器對輸入訊號序列x(n)的每乙個樣值,按特定的演算法,更新、調整加權係數,使輸出訊號序列y(n)與期望輸出訊號序列d(n)相比較的均方誤差為最小,即輸出訊號序列y(n)逼近期望訊號序列d(n)。

以最小均方誤差為準則設計的自適應濾波器的係數可以由維納-霍甫夫方程解得。

b.維德羅提出的一種方法,能實時求解自適應濾波器係數,其結果接近維納-霍甫夫方程近似解。這種演算法稱為最小均方演算法或簡稱 lms法。這一演算法利用最陡下降法,由均方誤差的梯度估計從現時刻濾波器係數向量迭代計算下乙個時刻的係數向量

式中ks為一負數,它的取值決定演算法的收斂性,v【ε2(n)】為均方誤差梯度估計,

自適應濾波器應用於通訊領域的自動均衡、回聲消除、天線陣波束形成,以及其他有關領域訊號處理的引數識別、雜訊消除、譜估計等方面。對於不同的應用,只是所加輸入訊號和期望訊號不同,基本原理則是相同的。(以上部分可以跳過)

上面這段話表明,需要求解的回音路徑函式f就是乙個自適應濾波器w(n)收斂的過程。所加輸入訊號x(n)是fe,期望訊號是echo,自適應濾波器收斂後的w(n)就是回音路徑函式f。 收斂之後,當實際回音發生,我們把fe通過函式w(n),就可以得到乙個很準確的echo,把混合訊號直接減去echo,得到實際需要傳送的語音speech,完成回聲消除任務。

值得注意的兩點:

1、           自適應濾波器收斂階段,期望訊號是完全的echo,不能混雜有speech。因為speech和fe是沒有關係的,會擾亂w(n)的收斂過程。也就是說要求回聲消除演算法開始運轉後收斂要非常快,最好對方還來不及說話,你一說就收斂好了;收斂好之後,如果對方開始說話,也就是有speech混合過來,這個w(n)係數就不要變化了,需要穩定下來。

2、            回音路徑可能是變化的,一旦出現變化,回聲消除演算法要能判斷出來,因為自適應濾波器學習要重新開始,也就是w(n)需要乙個新的收斂過程,以逼近新的回音路徑函式f。

基本上來說,上面這兩點是兩難的,乙個需要自適應濾波器收斂後保持係數穩定,以保證不受speech說話干擾,另乙個需要自適應濾波器隨時保持更新狀態,以保證能夠追蹤變化的回音路徑。這樣一來,僅從數學演算法層面,回聲消除已經是難上加難!簡單地說,回聲消除自適應濾波器的設計具有兩個互相矛盾的特性,也就是快速收斂和高度的穩定性,如何同時實現這兩項特性,正是設計上的主要挑戰。

經過上面的分析,相信大家對回聲消除的原理和技術有了深刻的理解,這是一門即容易理解又難以實現的技術。

回聲消除aec 效果評測

目前比較通用的評測方法 1 erle 麥克風訊號能量 回聲消除剩餘能量的比值 erle 10log e r n 2 e r n r1 n 2 db r n 表示麥克風採集取樣數值。r1 n 表示回聲消除的取樣數值 r n r1 n 即為回聲消除輸出取樣數值。2 dist 失調 數字越小,表示收斂越好...

回聲消除概述

回聲消除概述 2016 02 21 23 00 00 分類 android平台 首先,a的聲音傳給b,b然後用喇叭放出來,而這時b的mic則會採集到喇叭放出來的聲音,然後傳回給a,如果這個傳輸的過程中時延足夠大,a就會聽到自己剛才說的話,這就是回聲。回聲消除器的作用就是在b端對b採集到的聲音進行處理...

回聲消除答疑

0 問 為什麼使用回聲消除?答 比較常見的應用場景,a與b打 a端手機開啟擴音,這時bb 端就會聽到自己的聲音從a 1 問 回聲消除有什麼開源 答 主要有 webrtc 的aec aecm aec3 還有speex。2 問 回聲消除需要用到什麼演算法?答 線性回聲消除用 nlms,pbfdaf,md...