一、前言
因為工作的關系,筆者從2004年開始接觸回聲消除(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這個信號,回聲消除就是不可能完成的任務,就像“巧婦難為無米之炊”。
雖然參考信號fe和echo不完全一樣,存在差異,但是二者是高度相關的,這也是echo稱之為回音的原因。至少,回音的語義和參考信號是一樣的,也還聽得懂,但是如果你說一句,馬上又聽到自己的話回來一句,那是比較難受的。既然fe和echo高度相關,echo又是fe引起的,我們可以把echo表示為fe的數學函數:echo=F(fe)。函數F被稱之為回音路徑。在聲學回聲消除里面,函數F表示聲音在牆壁,天花板等表面多次反射的物理過程;在線路回聲消除里面,函數F表示電子線路的二四線匹配耦合過程。很顯然,我們下面要做的工作就是求解函數F。得到函數F就可以從fe計算得到echo,然后從混合信號1里面減掉echo就實現了回聲消除。
盡管回聲消除是非常復雜的技術,但我們可以簡單的描述這種處理方法:
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說話干擾,另一個需要自適應濾波器隨時保持更新狀態,以保證能夠追蹤變化的回音路徑。這樣一來,僅從數學算法層面,回聲消除已經是難上加難!簡單地說,回聲消除自適應濾波器的設計具有兩個互相矛盾的特性,也就是快速收斂和高度的穩定性,如何同時實現這兩項特性,正是設計上的主要挑戰。
經過上面的分析,相信大家對回聲消除的原理和技術有了深刻的理解,這是一門即容易理解又難以實現的技術。