天天看點

回聲消除技術

1 引 言

      在語音通信中,有一個很影響通話品質的因素就是回聲。回聲就是指說話者通過通信裝置發送給其他人的語音又重新又回到自己的聽筒裡的現象。回聲會對說話者産生嚴重的幹擾,必須想辦法消除。一般,回聲分為兩種,即“電路回聲”和“聲學回聲”。“電路回聲”可以通過硬體裝置的合理設計而消除,在此不作讨論。最複雜和最難消除的應該是所謂的“聲學回聲”。“聲學回聲”是指遠端使用者的聲音從聽筒出來以後,經過空氣或其他的傳播媒介傳到近端使用者的話筒,再通過話筒錄音後又重新傳到遠端使用者的聽筒中形成的回聲。當近端使用者的放音音量比較大而錄音裝置和放音裝置距離比較近時回聲尤其明顯。“聲學回聲”受近端使用者環境的影響,可能産生多路回聲,包括直接回聲和反射回聲,各個回聲的路徑不同,延遲也就不同,因而難以消除。

2 聲學回聲消除器

      對于聲學回聲消除,常見的消除算法有2類,即回聲抑制(acoustic echo suppression)算法和聲學回聲消除(acoustic echo cancellation)算法。

      回聲抑制算法是較早的一種回聲控制算法。回聲抑制是一acoustic echo suppression種非線性的回聲消除。它通過簡單的比較器将準備由揚聲器播放的聲音與目前話筒拾取的聲音的電平進行比較,如果前者高于某個門檻值,那麼就允許傳至揚聲器,而且話筒被關閉,以阻止它拾取揚聲器播放的聲音而引起遠端回聲。如果話筒拾取的聲音電平高于某個門檻值,揚聲器被禁止,以達到消除回聲的目的。由于回聲抑制是一種非線性的回聲控制方法,會引起揚聲器播放的不連續,影響回聲消除的效果,随着高性能的回聲消除器的出現,回聲抑制已經很少有人使用了。

      聲學回聲消除算法(AEC)是對揚聲器信号與由它産生的多路徑回聲的相關性為基礎,建立遠端信号(s(n))的語音模型,利用它對回聲進行估計(e`(n)),并不斷地修改濾波器的系數,使得估計值更加逼近真實的回聲(e(n))。然後,将回聲估計值從話筒的輸入信号中減去,進而達到消除回聲的目的,如圖2所示。

3 聲學回聲消除器設計

      一般,回聲消除器的初始化需要兩個參數:一次處理的資料量(幀長)和估計的錄音中回聲相對于錄音開頭的偏移量,即回聲相對于錄音的延遲的最大值(尾長)。回聲消除接口的一般形式為:AecFunction(input frame, playback frame, out frame),對錄音資料進行回聲消除需要等量的播放資料輸入作為建立回聲模型的參考資料。要達到良好的回聲消除效果,必須保證以下3點:

(1) 播放資料的産生速度要和錄音資料的産生速度達到動态平衡,為此如果錄放音資料的采樣率不同,那麼需要把他們統一成同一采樣率下的資料以後再進行回聲消除。如果是實時的語音處理,由于網絡的不穩定性,資料包可能在網絡上丢失或者由于過大的延遲而被其他的處理環節丢棄,那麼來自遠端的資料量可能會少于近端錄音産生的資料量,對于這種情況我們必須補充播放資料,以保證放音資料的量和錄音資料量達到平衡。

(2) 播放資料帶有的聲音資訊先于錄音資料中帶有的對應的回聲資訊送給回聲消除接口。這個先後順序是回聲消除的前提,回聲消除器不可能消除自己沒有“見過”的回聲。

(3) 播放資料的聲音對應的回聲在錄音資料中出現的位置相對于錄音的開頭的偏移量(即延遲)不能太大,因為所有的回聲消除器支援的尾長都有一個範圍,延遲超過了這個範圍回聲就無法消除了。

      為了滿足第一條,我們需要對放音線程資料産生的速度進行控制,控制拿給聲霸卡播放的資料量和從聲霸卡獲得的錄音資料量總是保持一緻。由于錄音資料産生的速度總是均勻的,是以放音資料的産生也必須均勻,也就是說從伺服器得到的放音資料沒有及時達到時,我們需要“創造”放音資料給系統播放,同時将這些資料緩存到放音資料隊列裡。創造的方式有很多,比如填充靜音資料或是通過Wsola算法來模拟連續語音資料。

4 回聲延遲估計

      在第一次獲得放音資料時,我們開始對錄音資料進行回聲消除。開始回聲消除之後,從系統錄音接口得到的錄音資料裡可能含有回聲消除開始前錄到的資料。而從開始回聲消除那一刻起到放音幀真正從聲霸卡放出來被錄音裝置捕獲可能也需要等待一段時間(我們假設聲音一放出來立即被錄到錄音資料裡,忽略其在媒介中的傳播時間,因為實際中最突出的回聲是直接回聲,即聲音從播放裝置出來,通過空氣或手機本身直接傳輸到錄音裝置,而不是經過反射回到錄音裝置,一般直接回聲從放音裝置出來再回到錄音裝置的時間是很短的,一般不到1毫秒,可以忽略),這個時間跟聲霸卡放音的緩沖區的長度和我們的放音幀長度有關。放音資料和錄音資料的時序關系如圖所示。

(以AEC開始後取得的第一個錄音幀的起始錄音時間為起點t0 )

粗虛線圈表示一個放音幀時長,實線圈表示錄音緩沖區對應的時長,淺虛線圈表示錄音幀時長。

      為了保證所有播放的聲音一定會在錄音資料中重制,應先啟動錄音線程,然後再啟動放音線程。回聲的延遲決定了回聲消除器需要的“尾長”,“尾長”越小,同樣長度的資料回聲消除器的處理時間越短,回聲消除算法的收斂也越快,即消除回聲起效越快。為了使回聲的延遲盡量小,我們需要從裝置支援的采樣率中選擇最合适的錄放音采樣率。這個選擇的過程是移動裝置上回聲消除處理的關鍵。

如上所述,延遲可分為兩部分,一部分是由錄音時産生的,另一部分是由放音産生的。

      先說放音,移動裝置支援的放音采樣率有多種,每種采樣率下都有一個最小放音緩沖區長度,放音的緩沖區隻能設定得比這個長度長。我們每次給放音API播放的資料會去填充緩沖區,隻有當緩沖區被填滿以後才會真正拿到聲霸卡去播放。如果放音幀比放音緩沖區長,那麼放音的延遲就隻是聲霸卡固有的放音延遲。如果放音幀比放音緩沖區短,那麼就要等若幹個放音幀來填充放音緩沖區,直到填滿以後才送給聲霸卡去播放。而聲霸卡收到放音資料到放音資料開始播放,這之間可能還有一個間隔,這是由于聲霸卡總是一段資料一段資料地播放,如果送到聲霸卡的時候前一段資料還沒播放完,那麼聲霸卡會等到前一段資料播放完了才開始播放送來的這段資料,這個“資料段”的長度一般對應的就是“最小放音緩沖區長度”。所有上述的時間内産生的錄音資料也會被送到回聲消除器裡去處理,是以這段時間内造成的資料延遲為(用時長表示):

      放音延遲 = - 1 ・ 放音幀時長 + 聲霸卡延遲 (1)

      其中[ ]表示向上取整,即取不小于該數的最小整數。“聲霸卡延遲”即資料包送到聲霸卡後到其播放出來之間的間隔。如果有多個采樣率下的放音延遲都達到最小,那麼我們選取最接近編解碼采樣率的那個采樣率,因為越相近的采樣率重采樣時造成的失真越小。而放音緩沖區長度也就設定為(大于或等于最小放音緩沖區長度的)重采樣為放音采樣率後的放音幀長度的最小倍數。

      再說錄音,錄音稍微複雜一些。錄音也和放音一樣,在每種錄音采樣率下都有一個最小錄音緩沖區長度,錄音的緩沖區隻能設定得比這個長度長。當錄音資料填滿第一個緩沖區以後,我們才能從錄音API中獲得第一個錄音塊,由于回聲消除的原因,我們每次都要從錄音資料裡取得和放音幀“等長”(這裡的“等長”是指播放時長相等)的錄音幀來進行處理。在放音線程得到第一個放音幀、開始回聲消除這個時刻之後,我們從錄音API裡得到的錄音資料裡可能有一部分是在回聲消除開始之前就錄到的,這個資料有多少跟錄音幀長度以及錄音緩沖區的長度都有關。如果錄音緩沖區的長度不是錄音幀長度的整數倍,錄音資料裡錄到的回聲消除前的聲音資料的時長的最大值是一個錄音幀時長加上填滿一個錄音緩沖區需要的資料對應的播放時長之和。而如果錄音緩沖區長度是錄音幀長度的整數倍,那麼錄到的回聲消除前的聲音的最大時長就是填滿一個錄音緩沖區需要的資料對應的播放時長。

      錄音延遲 < (2)

      是以我們選擇使錄音延遲最大值最小的錄音采樣率,而存在多個同時達到最小值的錄音采樣率時,我們選擇最接近錄音編碼采樣率的采樣率。錄音緩沖區長度就設為(大于或等于最小錄音緩沖區長度的)換算到錄音采樣率下的錄音幀長度的最小倍數。由于放音延遲除去“聲霸卡延遲”的部分以外,剩下的那部分是固定的(見式(1)),作為一種優化,我們可以把錄音資料從頭部先丢掉一部分資料,這部分資料對應的時長就等于這部分延遲,這樣将縮短回聲的延遲,可以降低回聲消除器的“尾長”。

5 結 論

    本文通過仔細地分析移動裝置的錄放音系統的各個環節對回聲消除器得到的資料産生的影響,精确地估算出了回聲延遲可能的範圍,通過精确估計延遲的下限值,給回聲消除器的優化提供了可能,提高了回聲消除器的處理效率和效果。

一、前言

      因為工作的關系,筆者從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說話幹擾,另一個需要自适應濾波器随時保持更新狀态,以保證能夠追蹤變化的回音路徑。這樣一來,僅從數學算法層面,回聲消除已經是難上加難!簡單地說,回聲消除自适應濾波器的設計具有兩個互相沖突的特性,也就是快速收斂和高度的穩定性,如何同時實作這兩項特性,正是設計上的主要挑戰。

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

      從應用平台來看,根據筆者多年的經驗,可以把回聲消除分為兩大類:基于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 QQ 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 QQ Conatus Spirit Speex SoftAcoustic GH I

可以看出,Skype、 Conatus和 QQ(GIPS)的效果最好, MSN和Spirit的效果還不錯,而GH Innovation、Soft Acoustic效果一般,Speex的效果較差。