1、前言git
由於工做的關係,筆者從2004年開始接觸回聲消除(Echo Cancellation)技術,然後一直在某大型通信企業從事與回聲消除技術相關的工做,對回聲消除這個看似神祕、高端和難以理解的技術領域可謂知之甚詳。算法
要了解回聲消除技術的前因後果,不得不說起做爲現代通信技術的理論基礎——數字信號處理理論。首先,數字信號處理理論裏面有一門重要的分支,叫作自適應信號處理。而在經典的教材裏面,回聲消除問題歷來都是做爲一個經典的自適應信號處理案例來討論的。既然回聲消除在教科書上都做爲一種經典的具體的應用,也就是說在理論角度是沒有什麼神祕和新鮮的,那麼回聲消除的難度在哪裏?爲何提供回聲消除技術(無論是芯片仍是算法)的公司都是來自國外?回聲消除技術的神祕性在哪裏?網絡
2、回聲消除原理cors
從通信迴音產生的緣由看,能夠分爲聲學回音(Acoustic Echo)和線路迴音(Line Echo),相應的回聲消除技術就叫聲學回聲消除(Acoustic Echo Cancellation,AEC)和線路回聲消除(Line Echo Cancellation, LEC)。聲學回音是因爲在免提或者會議應用中,揚聲器的聲音屢次反饋到麥克風引發的(比較好理解);線路迴音是因爲物理電子線路的二四線匹配耦合引發的(比較難理解)。函數
迴音的產生主要有兩種緣由:性能
1. 因爲空間聲學反射產生的聲學回音(見下圖):學習
圖中的男子說話,語音信號(speech1)傳到女士所在的房間,因爲空間的反射,造成迴音speech1(Echo)從新從麥克風輸入,同時疊加了女士的語音信號(speech2)。此時男子將會聽到女士的聲音疊加了本身的聲音,影響了正常的通話質量。此時在女士所在房間應用迴音抵消模塊,能夠抵消掉男子的迴音,讓男子只聽到女士的聲音。測試
2. 因爲2-4線轉換引入的線路迴音(見下圖):優化
在ADSL Modem和交換機上都存在2-4線轉換的電路,因爲電路存在不匹配的問題,會有一部分的信號被反饋回來,造成了迴音。若是在交換機側不加回音抵消功能,打電話的人就會本身聽到本身的聲音。spa
無論產生的緣由如何,對語音通信終端或者語音中繼交換機須要作的事情都同樣:在發送時,把不須要的迴音從語音流中間去掉。
試想一下,對一個至少混合了兩個聲音的語音流,要把它們分開,而後去掉其中一個,難度何其之大。就像一瓶藍墨水和一瓶紅墨水倒在一塊兒,而後須要把紅墨水提取出來,這恐怕不可能了。因此回聲消除被認爲是神祕和難以理解的技術也就不奇怪了。誠然,若是僅僅單獨拿來一段混合了迴音的語音信號,要去掉迴音也是不可能的(就算是最早進的盲信號分離技術也作不到)。可是,實際上,除了這個混合信號,咱們是能夠獲得產生迴音的原始信號的,雖然不一樣於迴音信號。
咱們看下面的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就實現了回聲消除。
儘管回聲消除是很是複雜的技術,但咱們能夠簡單的描述這種處理方法:
一、房間A的音頻會議系統接收到房間B中的聲音
二、聲音被採樣,這一採樣被稱爲回聲消除參考
三、隨後聲音被送到房間A的音箱和聲學回聲消除器中
四、房間B的聲音和房間A的聲音一塊兒被房間A的話筒拾取
五、聲音被送到聲學回聲消除器中,與原始的採樣進行比較,移除房間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,完成回聲消除任務。
值得注意的兩點:
一、 自適應濾波器收斂階段,指望信號是徹底的echo,不能混雜有speech。由於speech和fe是沒有關係的,會擾亂W(n)的收斂過程。也就是說要求回聲消除算法開始運轉後收斂要很是快,最好對方還來不及說話,你一說就收斂好了;收斂好以後,若是對方開始說話,也就是有speech混合過來,這個W(n)係數就不要變化了,須要穩定下來。
二、 迴音路徑多是變化的,一旦出現變化,回聲消除算法要能判斷出來,由於自適應濾波器學習要從新開始,也就是W(n)須要一個新的收斂過程,以逼近新的迴音路徑函數F。
基本上來講,上面這兩點是兩難的,一個須要自適應濾波器收斂後保持係數穩定,以保證不受speech說話干擾,另外一個須要自適應濾波器隨時保持更新狀態,以保證可以追蹤變化的迴音路徑。這樣一來,僅從數學算法層面,回聲消除已是難上加難!簡單地說,回聲消除自適應濾波器的設計具備兩個互相矛盾的特性,也就是快速收斂和高度的穩定性,如何同時實現這兩項特性,正是設計上的主要挑戰。
通過上面的分析,相信你們對回聲消除的原理和技術有了深入的理解,這是一門即容易理解又難以實現的技術。
從應用平臺來看,根據筆者多年的經驗,能夠把回聲消除分爲兩大類:基於DSP等實時平臺的回聲消除技術和基於Windows等非實時平臺的回聲消除技術。二者的技術難度和重點是不同的。
3、基於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赫茲。
4、基於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的效果較差。