一、回聲消除原理
從通訊迴音產生的原因看,可以分爲聲學回音(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說話干擾,另一個需要自適應濾波器隨時保持更新狀態,以保證能夠追蹤變化的迴音路徑。這樣一來,僅從數學算法層面,回聲消除已經是難上加難!簡單地說,回聲消除自適應濾波器的設計具有兩個互相矛盾的特性,也就是快速收斂和高度的穩定性,如何同時實現這兩項特性,正是設計上的主要挑戰。
經過上面的分析,相信大家對回聲消除的原理和技術有了深刻的理解,這是一門即容易理解又難以實現的技術。
從應用平臺來看,根據筆者多年的經驗,可以把回聲消除分爲兩大類:基於DSP等實時平臺的回聲消除技術和基於Windows等非實時平臺的回聲消除技術。兩者的技術難度和重點是不一樣的。
二、基於DSP平臺的回聲消除技術
回聲消除技術傳統的應用領域是各種嵌入式設備,包括各種電信網絡設備和終端設備。網絡設備比如交換機,網關等等,終端則包括移動電話終端,視頻會議終端等。現代通訊產品裏面大量應用了回聲消除技術,包括在我們看得到的終端產品(比如手機)和看不到的局端產品(比如交換機)。這種嵌入式設備的共同點就是採用各種型號的DSP芯片作爲回聲消除的載體。一個有效的回聲消除算法需要持續的在一顆DSP芯片上面運行,會遇到以下方面的難點:
實時性與高效性,因爲DSP芯片資源有限。雖然自從二十世紀七十年代DSP應用以來,日新月異的硬件芯片技術使許多沉睡在教科書上的信號處理理論算法大規模應用,但是回聲消除算法需要的資源還是大得驚人。以視頻會議系統,大規模的會議室可以產生超過512ms的迴音,要消除這麼長延時的迴音,即使按照8k赫茲採樣率計算,自適應濾波器W(n)的長度都會達到4096個點,這樣一方面需要非常大的存儲空間來存儲W(n),另一方面,W(n)的更新需要的計算量也是成倍增長,同時,W(n)的收斂難度也在加大,傳統自適應濾波器的效率很難保證。對於電信設備中的應用,雖然回聲消除不需要這麼長的延時,但是在交換機等設備中,成本和效率就是生命,所有的處理算法都是按路或按線計算的,對算法的優化效率提出了無止境的要求。相對而言,只有像車載免提這種應用對效率要求不那麼高,因爲車內空間小,迴音延時有限,又不要求多路應用。
傳統的回聲消除技術是從國外二十世紀七十年代的早期算法發展而來,這類技術的採用一直相當昂貴,提供電信級回聲消除硬件應用(包括芯片或者設備)的廠家都是國外的。對於移動網絡用戶來說,語音品質一直是他們最關切的議題,對電信業者來說,語音也仍是他們最能獲利的服務項目,因此語音的品質是不容妥協的。爲了滿足今日與未來的網路需求,回聲消除技術的挑戰正在於如何有效地降低成本並持續改善語音品質。
算法級的DSP軟件解決方案,也是解決嵌入式設備迴音問題的一種途徑,對用戶也有一定的靈活性,用戶只需要把回聲消除模塊集成到自己的DSP軟件中,再簡單調整幾個相關參數,就能達到較好的回聲消除效果。
目前基於DSP的回聲消除算法已經比較成熟,市場上也有一批專門的算法/芯片公司的能夠對外提供已經優化好的基於DSP的軟件回聲消除模塊:如俄羅斯Spririt DSP、加拿大Octastic Semiconductor、瑞典GIPS、國內科萊特斯科技Conatus Technologies以及美國Adaptive Digital、和GAO Research、英國CSR等等,另外還有美國Fortemedia、Acoustic Technologies和日本OKI等可以提供專用的回聲消除DSP芯片。其中性能較好的有Octastic、Conatus、和Spririt這三家,Octastic可以提供完整的從專用芯片、板卡到DSP算法的完整方案,而Conatus和Spririt的回聲消除效果更好,值得一提的是Conatus公司是目前市面上唯一提供針對專業視訊會議應用寬帶回聲消除模塊的公司,其音頻採樣率可以達到48k赫茲。
三、基於Windows平臺的回聲消除技術
回聲消除技術最新的應用領域是基於Windows平臺的各種VoIP應用,比如軟件視頻會議,VoIP軟件電話等。當回聲消除算法應用到Windows平臺,相對於傳統的DSP平臺,既帶來優勢,也帶來了新的難點。高效性在Windows平臺已經不是問題,現在的pc機,擁有豐富的cpu資源和海量的內存資源,再複雜的回聲消除算法都可以運行自如。但是,新增加的麻煩比帶來的好處要多。
首先,Windows平臺是一個非實時的平臺,音頻的採集和播放對回聲消除算法而言,也是非實時的。和DSP平臺不一樣,DSP平臺可以直接控制AD/DA芯片的採集播放,獲得實時的音頻流(不存在同步問題),但是Windows平臺下,應用程序很難在底層直接控制聲卡的採集播放,獲得的是非實時的音頻流,從而帶來了採集和播放音頻流的同步問題。
實際應用時,傳給回聲消除算法的兩個聲音信號(採集的迴音信號ne和播放的參考信號fe),必須同步得非常的好。就是說,本地接收到遠端說的話以後,要把這些話音數據傳給回聲消除算法做參考,這是一個算法需要的輸入信號;然後再傳給聲卡,聲卡放出來後經過迴音路徑,這時,本地再採集,然後傳給回聲消除算法,這是算法需要的另一個輸入信號。這裏的同步是指:兩個信號雖然存在延時,但這個延時必須固定,在時序上要保持連貫,不能一個信號多來幾個幀,另外一個信號少來幾個幀。如果傳給回聲消除算法的兩個信號同步得不好,即兩個信號發生幀錯位,就沒有辦法進行消除了。因爲這時系統會變成了非因果系統,比如期望信號收到了,參考信號還沒來,時間上都沒有因果關係,肯定是沒有辦法消除的。
實際情況是,在一般的VoIP軟件中,接收對方的聲音並傳到聲卡中播放是在一個線程中進行的,而採集本地的聲音並傳送到對方又是在另一個線程中進行的,而聲學回聲消除算法在對採集到的聲音進行回聲消除的同時,還需要播放線程中的數據作爲參考,而要同步這兩個線程中的數據是非常重要的,因爲稍稍有些不同步,聲學回聲消除算法中的自適應濾波器就會發散,不但消除不了迴音,還會破壞原始採集到的聲音,使聲音難以分辨。
另外,pc機器的聲卡種類繁多,各種各樣的聲卡特性進一步加劇了同步問題的複雜性。所以,同步和聲卡等問題對回聲消除算法的內部特性提出了更多苛刻的要求。
從上面分析來看,由於Windows平臺的非實時性,基於Windows平臺的回聲消除技術比DSP平臺要難得多。
在PC平臺語音通訊領域,目前公認音質做得比較好的國外軟件是Skype,記得幾年前Skype一直是在用瑞典一家叫GIPS(Global IP Sound)公司的語音引擎技術。GIPS是最早介入PC平臺語音通訊領域的廠商之一,在改領域具有一定的權威性,其主要優勢表現在對IP網絡的延時、抖動和丟包等處理較好,基於Windows平臺的迴音消除也做得不錯,不過最近的新版本Skype上已經看不到GIPS的標誌了,據說是因爲Skype自己研發了一套新的更好的語音引擎的緣故。 目前大家接觸最多的採用了GIPS語音引擎技術的通訊軟件就是騰訊QQ了,其超級語音的效果普遍評價都還不錯。另外微軟經過多年的研發,其最新版本的MSN語音特別是迴音消除效果終於有了質的提升,目前網上評價也還不錯。另外還有一些專業廠商也對外提供包含迴音消除功能的語音引擎,如俄羅斯的Spirit DSP、美國的GH Innovation和國內的科萊特斯科技(Conatus Technologies)以及賽聲科技(Soft Acoustic)等等。除此之外,網絡上還可以下載到一個很好的開源的語音軟件Speex也提供了迴音消除功能。爲了進一步瞭解目前PC Windows平臺迴音消除技術的業界水平,筆者對各家的迴音消除技術做一個詳細的橫向對比測試(所有測試都是免提狀態)
爲了對比,各家語音引擎的版本信息列舉如下:
國外廠商:
Skype V3.8.4.182
Spirit DSP(廠家DEMO)
GIPS(QQ 2009beta)
Micorsoft (Windows Live Messenger 2009 V14.0.8064.2006)
GH Innovation(廠家DEMO)
國內廠商:
Conatus Technologies(廠家DEMO)
Soft Acoustic(廠家DEMO)
開源算法:
Speex(V1.2RC1 自己寫了測試軟件)
測試結果:
測試項目
|
Skype |
MSN |
|
Conatus |
Spirit |
Speex |
SoftAcoustic |
GH I |
筆記本免提模式,外接麥克風和音箱應用模式的適應性 |
兩種模式都無迴音 |
筆記本免提模式有時一直有較小回音 |
筆記本免提模式偶爾有較小回音 |
兩種模式都無迴音 |
筆記本免提模式有時一直有較小回音 |
兩種模式都有一直較小回音 |
兩種模式有時都會出現較大回音 |
筆記本免提模式一直有很小回音 |
單方講話效果 |
無迴音,效果很好 |
基本無迴音,效果好 |
基本無迴音,效果好 |
無迴音,效果很好 |
基本無迴音,效果好 |
一直有較小回音,效果差 |
有時有很大回音,效果差 |
基本無迴音,效果好 |
雙方同時講話效果 |
雙方交流流暢無迴音,對方聲音偶爾有輕微斷續 |
雙方交流流暢,但對方聲音中會夾雜着輕微迴音 |
雙方交流流暢,但對方聲音中會夾雜着一些迴音 |
雙方交流流暢無迴音,對方聲音偶爾有輕微斷續 |
雙方交流流暢,但對方聲音中間會夾雜着一些迴音 |
雙方交流比較流暢,但一直聽到一個較小的迴音 |
雙方交流不流暢,對方聲音經常會斷續 |
雙方交流無迴音,但對方聲音很小很難聽清楚 |
麥克風和揚聲器相對的位置改變等 |
收斂比較快,基本沒有迴音出現。 |
收斂比較快,基本沒有迴音出現。 |
收斂比較快,基本沒有迴音出現。 |
收斂比較快,基本沒有迴音出現。 |
收斂比較快,基本沒有迴音出現。 |
收斂速度慢,有好幾句迴音 |
收斂速度慢,有好幾句迴音 |
收斂比較快,基本沒有迴音出現。 |
CPU重載(CPU負載達到100%)時效果 |
XP和Vista下聲音都流暢,基本不會出現迴音和聲音斷續現象 |
XP和Vista下聲音都流暢,基本不會出現迴音和聲音斷續現象 |
XP下聲音流暢,基本不會出現迴音;Vista下聲音斷續,偶爾會出現迴音 |
XP和Vista下聲音都流暢,基本不會出現迴音和聲音斷續現象 |
XP下聲音流暢,基本不會出現迴音;Vista下聲音斷續,偶爾會出現迴音 |
此項未測 |
XP下聲音流暢,基本不會出現迴音;Vista下聲音斷續,偶爾會出現迴音 |
XP下聲音流暢,基本不會出現迴音;Vista下不加負載聲音都是斷續的 |
PC和聲卡適應性 |
穩定,基本都能消除迴音 |
穩定,基本都能消除迴音 |
比較穩定,偶爾有些筆記本免提時有迴音 |
穩定,基本都能消除迴音 |
穩定,基本都能消除迴音 |
不穩定,有時無法消除迴音 |
不穩定,經常無法消除迴音 |
穩定,基本都能消除迴音 |
噪聲抑制
|
噪聲抑制效果弱 |
噪聲抑制效果一般 |
噪聲抑制效果弱 |
噪聲抑制效果強 |
噪聲抑制效果一般 |
噪聲抑制效果強 |
噪聲抑制效果強 |
噪聲抑制效果強 |
自動硬件增益控制和免提時能達到的最大播放音量 |
支持,音量較大 |
支持,音量較小 |
支持,音量適中 |
支持,音量適中 |
支持,音量較小 |
不支持 |
支持,音量較小 |
支持,音量非常小 |
整體效果評價(0-10分評分) |
很好,基本沒有迴音,雙方交流很順暢,9分 |
較好,有的筆記本免提時偶爾有迴音且音量較小,雙方交流比較順暢,7.5分 |
較好,有的筆記本免提時偶爾有迴音,雙方交流順暢,8分 |
很好,基本沒有迴音,音量比skype略小,雙方交流很順暢,8.5分 |
較好,有的筆記本免提效果稍差且音量比較小,vista效果稍差,7分 |
不好,一直有個較小的殘餘迴音,雙方交流困難,3分 |
不好,經常有完整的迴音,感覺不穩定,雙方交流比較困難,5分 |
一般,沒有迴音,但是音量太小,雙方交流困難,且VISTA下聲音斷續,5.5分 |
測試項目
|
Skype |
MSN |
|
Conatus |
Spirit |
Speex |
SoftAcoustic |
GH I |
可以看出,Skype、 Conatus和 QQ(GIPS)的效果最好, MSN和Spirit的效果還不錯,而GH Innovation、Soft Acoustic效果一般,Speex的效果較差。