1 引 言
在語音通信中,有一個(gè)很影響通話質(zhì)量的因素就是回聲。回聲就是指說話者通過通信設(shè)備發(fā)送給其他人的語音又重新又回到自己的聽筒里的現(xiàn)象?;芈晻?huì)對(duì)說話者產(chǎn)生嚴(yán)重的干擾,必須想辦法消除。一般,回聲分為兩種,即“電路回聲”和“聲學(xué)回聲”?!半娐坊芈暋笨梢酝ㄟ^硬件設(shè)備的合理設(shè)計(jì)而消除,在此不作討論。最復(fù)雜和最難消除的應(yīng)該是所謂的“聲學(xué)回聲”。“聲學(xué)回聲”是指遠(yuǎn)端用戶的聲音從聽筒出來以后,經(jīng)過空氣或其他的傳播媒介傳到近端用戶的話筒,再通過話筒錄音后又重新傳到遠(yuǎn)端用戶的聽筒中形成的回聲。當(dāng)近端用戶的放音音量比較大而錄音設(shè)備和放音設(shè)備距離比較近時(shí)回聲尤其明顯?!奥晫W(xué)回聲”受近端用戶環(huán)境的影響,可能產(chǎn)生多路回聲,包括直接回聲和反射回聲,各個(gè)回聲的路徑不同,延遲也就不同,因而難以消除。
2 聲學(xué)回聲消除器
對(duì)于聲學(xué)回聲消除,常見的消除算法有2類,即回聲抑制(acoustic echo suppression)算法和聲學(xué)回聲消除(acoustic echo cancellation)算法。
回聲抑制算法是較早的一種回聲控制算法。回聲抑制是一acoustic echo suppression種非線性的回聲消除。它通過簡(jiǎn)單的比較器將準(zhǔn)備由揚(yáng)聲器播放的聲音與當(dāng)前話筒拾取的聲音的電平進(jìn)行比較,如果前者高于某個(gè)閾值,那么就允許傳至揚(yáng)聲器,而且話筒被關(guān)閉,以阻止它拾取揚(yáng)聲器播放的聲音而引起遠(yuǎn)端回聲。如果話筒拾取的聲音電平高于某個(gè)閾值,揚(yáng)聲器被禁止,以達(dá)到消除回聲的目的。由于回聲抑制是一種非線性的回聲控制方法,會(huì)引起揚(yáng)聲器播放的不連續(xù),影響回聲消除的效果,隨著高性能的回聲消除器的出現(xiàn),回聲抑制已經(jīng)很少有人使用了。
聲學(xué)回聲消除算法(AEC)是對(duì)揚(yáng)聲器信號(hào)與由它產(chǎn)生的多路徑回聲的相關(guān)性為基礎(chǔ),建立遠(yuǎn)端信號(hào)(s(n))的語音模型,利用它對(duì)回聲進(jìn)行估計(jì)(e`(n)),并不斷地修改濾波器的系數(shù),使得估計(jì)值更加逼近真實(shí)的回聲(e(n))。然后,將回聲估計(jì)值從話筒的輸入信號(hào)中減去,從而達(dá)到消除回聲的目的,如圖2所示。
3 聲學(xué)回聲消除器設(shè)計(jì)
一般,回聲消除器的初始化需要兩個(gè)參數(shù):一次處理的數(shù)據(jù)量(幀長(zhǎng))和估計(jì)的錄音中回聲相對(duì)于錄音開頭的偏移量,即回聲相對(duì)于錄音的延遲的最大值(尾長(zhǎng))?;芈曄涌诘囊话阈问綖椋篈ecFunction(input frame, playback frame, out frame),對(duì)錄音數(shù)據(jù)進(jìn)行回聲消除需要等量的播放數(shù)據(jù)輸入作為建立回聲模型的參考數(shù)據(jù)。要達(dá)到良好的回聲消除效果,必須保證以下3點(diǎn):
(1) 播放數(shù)據(jù)的產(chǎn)生速度要和錄音數(shù)據(jù)的產(chǎn)生速度達(dá)到動(dòng)態(tài)平衡,為此如果錄放音數(shù)據(jù)的采樣率不同,那么需要把他們統(tǒng)一成同一采樣率下的數(shù)據(jù)以后再進(jìn)行回聲消除。如果是實(shí)時(shí)的語音處理,由于網(wǎng)絡(luò)的不穩(wěn)定性,數(shù)據(jù)包可能在網(wǎng)絡(luò)上丟失或者由于過大的延遲而被其他的處理環(huán)節(jié)丟棄,那么來自遠(yuǎn)端的數(shù)據(jù)量可能會(huì)少于近端錄音產(chǎn)生的數(shù)據(jù)量,對(duì)于這種情況我們必須補(bǔ)充播放數(shù)據(jù),以保證放音數(shù)據(jù)的量和錄音數(shù)據(jù)量達(dá)到平衡。
(2) 播放數(shù)據(jù)帶有的聲音信息先于錄音數(shù)據(jù)中帶有的對(duì)應(yīng)的回聲信息送給回聲消除接口。這個(gè)先后順序是回聲消除的前提,回聲消除器不可能消除自己沒有“見過”的回聲。
(3) 播放數(shù)據(jù)的聲音對(duì)應(yīng)的回聲在錄音數(shù)據(jù)中出現(xiàn)的位置相對(duì)于錄音的開頭的偏移量(即延遲)不能太大,因?yàn)樗械幕芈曄髦С值奈查L(zhǎng)都有一個(gè)范圍,延遲超過了這個(gè)范圍回聲就無法消除了。
為了滿足第一條,我們需要對(duì)放音線程數(shù)據(jù)產(chǎn)生的速度進(jìn)行控制,控制拿給聲卡播放的數(shù)據(jù)量和從聲卡獲得的錄音數(shù)據(jù)量總是保持一致。由于錄音數(shù)據(jù)產(chǎn)生的速度總是均勻的,因此放音數(shù)據(jù)的產(chǎn)生也必須均勻,也就是說從服務(wù)器得到的放音數(shù)據(jù)沒有及時(shí)達(dá)到時(shí),我們需要“創(chuàng)造”放音數(shù)據(jù)給系統(tǒng)播放,同時(shí)將這些數(shù)據(jù)緩存到放音數(shù)據(jù)隊(duì)列里。創(chuàng)造的方式有很多,比如填充靜音數(shù)據(jù)或是通過Wsola算法來模擬連續(xù)語音數(shù)據(jù)。
4 回聲延遲估計(jì)
在第一次獲得放音數(shù)據(jù)時(shí),我們開始對(duì)錄音數(shù)據(jù)進(jìn)行回聲消除。開始回聲消除之后,從系統(tǒng)錄音接口得到的錄音數(shù)據(jù)里可能含有回聲消除開始前錄到的數(shù)據(jù)。而從開始回聲消除那一刻起到放音幀真正從聲卡放出來被錄音設(shè)備捕獲可能也需要等待一段時(shí)間(我們假設(shè)聲音一放出來立即被錄到錄音數(shù)據(jù)里,忽略其在媒介中的傳播時(shí)間,因?yàn)閷?shí)際中最突出的回聲是直接回聲,即聲音從播放設(shè)備出來,通過空氣或手機(jī)本身直接傳輸?shù)戒浺粼O(shè)備,而不是經(jīng)過反射回到錄音設(shè)備,一般直接回聲從放音設(shè)備出來再回到錄音設(shè)備的時(shí)間是很短的,一般不到1毫秒,可以忽略),這個(gè)時(shí)間跟聲卡放音的緩沖區(qū)的長(zhǎng)度和我們的放音幀長(zhǎng)度有關(guān)。放音數(shù)據(jù)和錄音數(shù)據(jù)的時(shí)序關(guān)系如圖所示。
(以AEC開始后取得的第一個(gè)錄音幀的起始錄音時(shí)間為起點(diǎn)t0 )
粗虛線圈表示一個(gè)放音幀時(shí)長(zhǎng),實(shí)線圈表示錄音緩沖區(qū)對(duì)應(yīng)的時(shí)長(zhǎng),淺虛線圈表示錄音幀時(shí)長(zhǎng)。
為了保證所有播放的聲音一定會(huì)在錄音數(shù)據(jù)中重現(xiàn),應(yīng)先啟動(dòng)錄音線程,然后再啟動(dòng)放音線程?;芈暤难舆t決定了回聲消除器需要的“尾長(zhǎng)”,“尾長(zhǎng)”越小,同樣長(zhǎng)度的數(shù)據(jù)回聲消除器的處理時(shí)間越短,回聲消除算法的收斂也越快,即消除回聲起效越快。為了使回聲的延遲盡量小,我們需要從設(shè)備支持的采樣率中選擇最合適的錄放音采樣率。這個(gè)選擇的過程是移動(dòng)設(shè)備上回聲消除處理的關(guān)鍵。
如上所述,延遲可分為兩部分,一部分是由錄音時(shí)產(chǎn)生的,另一部分是由放音產(chǎn)生的。
先說放音,移動(dòng)設(shè)備支持的放音采樣率有多種,每種采樣率下都有一個(gè)最小放音緩沖區(qū)長(zhǎng)度,放音的緩沖區(qū)只能設(shè)置得比這個(gè)長(zhǎng)度長(zhǎng)。我們每次給放音API播放的數(shù)據(jù)會(huì)去填充緩沖區(qū),只有當(dāng)緩沖區(qū)被填滿以后才會(huì)真正拿到聲卡去播放。如果放音幀比放音緩沖區(qū)長(zhǎng),那么放音的延遲就只是聲卡固有的放音延遲。如果放音幀比放音緩沖區(qū)短,那么就要等若干個(gè)放音幀來填充放音緩沖區(qū),直到填滿以后才送給聲卡去播放。而聲卡收到放音數(shù)據(jù)到放音數(shù)據(jù)開始播放,這之間可能還有一個(gè)間隔,這是由于聲卡總是一段數(shù)據(jù)一段數(shù)據(jù)地播放,如果送到聲卡的時(shí)候前一段數(shù)據(jù)還沒播放完,那么聲卡會(huì)等到前一段數(shù)據(jù)播放完了才開始播放送來的這段數(shù)據(jù),這個(gè)“數(shù)據(jù)段”的長(zhǎng)度一般對(duì)應(yīng)的就是“最小放音緩沖區(qū)長(zhǎng)度”。所有上述的時(shí)間內(nèi)產(chǎn)生的錄音數(shù)據(jù)也會(huì)被送到回聲消除器里去處理,因此這段時(shí)間內(nèi)造成的數(shù)據(jù)延遲為(用時(shí)長(zhǎng)表示):
放音延遲 = - 1 ? 放音幀時(shí)長(zhǎng) + 聲卡延遲 (1)
其中[ ]表示向上取整,即取不小于該數(shù)的最小整數(shù)?!奥暱ㄑ舆t”即數(shù)據(jù)包送到聲卡后到其播放出來之間的間隔。如果有多個(gè)采樣率下的放音延遲都達(dá)到最小,那么我們選取最接近編解碼采樣率的那個(gè)采樣率,因?yàn)樵较嘟牟蓸勇手夭蓸訒r(shí)造成的失真越小。而放音緩沖區(qū)長(zhǎng)度也就設(shè)置為(大于或等于最小放音緩沖區(qū)長(zhǎng)度的)重采樣為放音采樣率后的放音幀長(zhǎng)度的最小倍數(shù)。
再說錄音,錄音稍微復(fù)雜一些。錄音也和放音一樣,在每種錄音采樣率下都有一個(gè)最小錄音緩沖區(qū)長(zhǎng)度,錄音的緩沖區(qū)只能設(shè)置得比這個(gè)長(zhǎng)度長(zhǎng)。當(dāng)錄音數(shù)據(jù)填滿第一個(gè)緩沖區(qū)以后,我們才能從錄音API中獲得第一個(gè)錄音塊,由于回聲消除的原因,我們每次都要從錄音數(shù)據(jù)里取得和放音幀“等長(zhǎng)”(這里的“等長(zhǎng)”是指播放時(shí)長(zhǎng)相等)的錄音幀來進(jìn)行處理。在放音線程得到第一個(gè)放音幀、開始回聲消除這個(gè)時(shí)刻之后,我們從錄音API里得到的錄音數(shù)據(jù)里可能有一部分是在回聲消除開始之前就錄到的,這個(gè)數(shù)據(jù)有多少跟錄音幀長(zhǎng)度以及錄音緩沖區(qū)的長(zhǎng)度都有關(guān)。如果錄音緩沖區(qū)的長(zhǎng)度不是錄音幀長(zhǎng)度的整數(shù)倍,錄音數(shù)據(jù)里錄到的回聲消除前的聲音數(shù)據(jù)的時(shí)長(zhǎng)的最大值是一個(gè)錄音幀時(shí)長(zhǎng)加上填滿一個(gè)錄音緩沖區(qū)需要的數(shù)據(jù)對(duì)應(yīng)的播放時(shí)長(zhǎng)之和。而如果錄音緩沖區(qū)長(zhǎng)度是錄音幀長(zhǎng)度的整數(shù)倍,那么錄到的回聲消除前的聲音的最大時(shí)長(zhǎng)就是填滿一個(gè)錄音緩沖區(qū)需要的數(shù)據(jù)對(duì)應(yīng)的播放時(shí)長(zhǎng)。
錄音延遲 < (2)
因此我們選擇使錄音延遲最大值最小的錄音采樣率,而存在多個(gè)同時(shí)達(dá)到最小值的錄音采樣率時(shí),我們選擇最接近錄音編碼采樣率的采樣率。錄音緩沖區(qū)長(zhǎng)度就設(shè)為(大于或等于最小錄音緩沖區(qū)長(zhǎng)度的)換算到錄音采樣率下的錄音幀長(zhǎng)度的最小倍數(shù)。由于放音延遲除去“聲卡延遲”的部分以外,剩下的那部分是固定的(見式(1)),作為一種優(yōu)化,我們可以把錄音數(shù)據(jù)從頭部先丟掉一部分?jǐn)?shù)據(jù),這部分?jǐn)?shù)據(jù)對(duì)應(yīng)的時(shí)長(zhǎng)就等于這部分延遲,這樣將縮短回聲的延遲,可以降低回聲消除器的“尾長(zhǎng)”。
5 結(jié) 論
本文通過仔細(xì)地分析移動(dòng)設(shè)備的錄放音系統(tǒng)的各個(gè)環(huán)節(jié)對(duì)回聲消除器得到的數(shù)據(jù)產(chǎn)生的影響,精確地估算出了回聲延遲可能的范圍,通過精確估計(jì)延遲的下限值,給回聲消除器的優(yōu)化提供了可能,提高了回聲消除器的處理效率和效果。
一、前言
因?yàn)楣ぷ鞯年P(guān)系,筆者從2004年開始接觸回聲消除(Echo Cancellation)技術(shù),而后一直在某大型通訊企業(yè)從事與回聲消除技術(shù)相關(guān)的工作,對(duì)回聲消除這個(gè)看似神秘、高端和難以理解的技術(shù)領(lǐng)域可謂知之甚詳。
要了解回聲消除技術(shù)的來龍去脈,不得不提及作為現(xiàn)代通訊技術(shù)的理論基礎(chǔ)——數(shù)字信號(hào)處理理論。首先,數(shù)字信號(hào)處理理論里面有一門重要的分支,叫做自適應(yīng)信號(hào)處理。而在經(jīng)典的教材里面,回聲消除問題從來都是作為一個(gè)經(jīng)典的自適應(yīng)信號(hào)處理案例來討論的。既然回聲消除在教科書上都作為一種經(jīng)典的具體的應(yīng)用,也就是說在理論角度是沒有什么神秘和新鮮的,那么回聲消除的難度在哪里?為什么提供回聲消除技術(shù)(不管是芯片還是算法)的公司都是來自國(guó)外?回聲消除技術(shù)的神秘性在哪里?
二、回聲消除原理
從通訊回音產(chǎn)生的原因看,可以分為聲學(xué)回音(Acoustic Echo)和線路回音(Line Echo),相應(yīng)的回聲消除技術(shù)就叫聲學(xué)回聲消除(Acoustic Echo Cancellation,AEC)和線路回聲消除(Line Echo Cancellation, LEC)。聲學(xué)回音是由于在免提或者會(huì)議應(yīng)用中,揚(yáng)聲器的聲音多次反饋到麥克風(fēng)引起的(比較好理解);線路回音是由于物理電子線路的二四線匹配耦合引起的(比較難理解)。
回音的產(chǎn)生主要有兩種原因:
1. 由于空間聲學(xué)反射產(chǎn)生的聲學(xué)回音(見下圖):

圖中的男子說話,語音信號(hào)(speech1)傳到女士所在的房間,由于空間的反射,形成回音speech1(Echo)重新從麥克風(fēng)輸入,同時(shí)疊加了女士的語音信號(hào)(speech2)。此時(shí)男子將會(huì)聽到女士的聲音疊加了自己的聲音,影響了正常的通話質(zhì)量。此時(shí)在女士所在房間應(yīng)用回音抵消模塊,可以抵消掉男子的回音,讓男子只聽到女士的聲音。
2. 由于2-4線轉(zhuǎn)換引入的線路回音(見下圖):

在ADSL Modem和交換機(jī)上都存在2-4線轉(zhuǎn)換的電路,由于電路存在不匹配的問題,會(huì)有一部分的信號(hào)被反饋回來,形成了回音。如果在交換機(jī)側(cè)不加回音抵消功能,打電話的人就會(huì)自己聽到自己的聲音。
不管產(chǎn)生的原因如何,對(duì)語音通訊終端或者語音中繼交換機(jī)需要做的事情都一樣:在發(fā)送時(shí),把不需要的回音從語音流中間去掉。
試想一下,對(duì)一個(gè)至少混合了兩個(gè)聲音的語音流,要把它們分開,然后去掉其中一個(gè),難度何其之大。就像一瓶藍(lán)墨水和一瓶紅墨水倒在一起,然后需要把紅墨水提取出來,這恐怕不可能了。所以回聲消除被認(rèn)為是神秘和難以理解的技術(shù)也就不奇怪了。誠(chéng)然,如果僅僅單獨(dú)拿來一段混合了回音的語音信號(hào),要去掉回音也是不可能的(就算是最先進(jìn)的盲信號(hào)分離技術(shù)也做不到)。但是,實(shí)際上,除了這個(gè)混合信號(hào),我們是可以得到產(chǎn)生回音的原始信號(hào)的,雖然不同于回音信號(hào)。
我們看下面的AEC聲學(xué)回聲消除框圖(本圖片轉(zhuǎn)載)。

Figure Acoustic Echo Cancellation in a voice communication terminal
其中,我們可以得到兩個(gè)信號(hào):一個(gè)是藍(lán)色和紅色混合的信號(hào)1,也就是實(shí)際需要發(fā)送的speech和實(shí)際不需要的echo混合而成的語音流;另一個(gè)就是虛線的信號(hào)2,也就是原始的引起回音的語音。那大家會(huì)說,哦,原來回聲消除這么簡(jiǎn)單,直接從混合信號(hào)1里面把把這個(gè)虛線的2減掉不就行了?請(qǐng)注意,拿到的這個(gè)虛線信號(hào)2和回音echo是有差異的,直接相減會(huì)使語音面目全非。我們把混合信號(hào)1叫做近端信號(hào)ne,虛線信號(hào)2叫做遠(yuǎn)端參考信號(hào)fe,如果沒有fe這個(gè)信號(hào),回聲消除就是不可能完成的任務(wù),就像“巧婦難為無米之炊”。
雖然參考信號(hào)fe和echo不完全一樣,存在差異,但是二者是高度相關(guān)的,這也是echo稱之為回音的原因。至少,回音的語義和參考信號(hào)是一樣的,也還聽得懂,但是如果你說一句,馬上又聽到自己的話回來一句,那是比較難受的。既然fe和echo高度相關(guān),echo又是fe引起的,我們可以把echo表示為fe的數(shù)學(xué)函數(shù):echo=F(fe)。函數(shù)F被稱之為回音路徑。在聲學(xué)回聲消除里面,函數(shù)F表示聲音在墻壁,天花板等表面多次反射的物理過程;在線路回聲消除里面,函數(shù)F表示電子線路的二四線匹配耦合過程。很顯然,我們下面要做的工作就是求解函數(shù)F。得到函數(shù)F就可以從fe計(jì)算得到echo,然后從混合信號(hào)1里面減掉echo就實(shí)現(xiàn)了回聲消除。
盡管回聲消除是非常復(fù)雜的技術(shù),但我們可以簡(jiǎn)單的描述這種處理方法:
1、房間A的音頻會(huì)議系統(tǒng)接收到房間B中的聲音
2、聲音被采樣,這一采樣被稱為回聲消除參考
3、隨后聲音被送到房間A的音箱和聲學(xué)回聲消除器中
4、房間B的聲音和房間A的聲音一起被房間A的話筒拾取
5、聲音被送到聲學(xué)回聲消除器中,與原始的采樣進(jìn)行比較,移除房間B的聲音
求解回音路徑函數(shù)F的過程恐怕就是比較難以表達(dá)的數(shù)學(xué)公式了。鑒于通俗表達(dá)數(shù)學(xué)公式的難度比發(fā)現(xiàn)數(shù)學(xué)公式還難,筆者就不費(fèi)力解釋了。下面這段表達(dá)了利用自適應(yīng)濾波器原理求解函數(shù)F的過程。(以下可以跳過)
自適應(yīng)濾波器
自適應(yīng)濾波器是以輸入和輸出信號(hào)的統(tǒng)計(jì)特性的估計(jì)為依據(jù),采取特定算法自動(dòng)地調(diào)整濾波器系數(shù),使其達(dá)到最佳濾波特性的一種算法或裝置。自適應(yīng)濾波器可以是連續(xù)域的或是離散域的。離散域自適應(yīng)濾波器由一組抽頭延遲線、可變加權(quán)系數(shù)和自動(dòng)調(diào)整系數(shù)的機(jī)構(gòu)組成。附圖表示一個(gè)離散域自適應(yīng)濾波器用于模擬未知離散系統(tǒng)的信號(hào)流圖。自適應(yīng)濾波器對(duì)輸入信號(hào)序列x(n)的每一個(gè)樣值,按特定的算法,更新、調(diào)整加權(quán)系數(shù),使輸出信號(hào)序列y(n)與期望輸出信號(hào)序列d(n)相比較的均方誤差為最小,即輸出信號(hào)序列y(n)逼近期望信號(hào)序列d(n)。

以最小均方誤差為準(zhǔn)則設(shè)計(jì)的自適應(yīng)濾波器的系數(shù)可以由維納-霍甫夫方程解得。
B.維德羅提出的一種方法,能實(shí)時(shí)求解自適應(yīng)濾波器系數(shù),其結(jié)果接近維納-霍甫夫方程近似解。這種算法稱為最小均方算法或簡(jiǎn)稱 LMS法。這一算法利用最陡下降法,由均方誤差的梯度估計(jì)從現(xiàn)時(shí)刻濾波器系數(shù)向量迭代計(jì)算下一個(gè)時(shí)刻的系數(shù)向量

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

自適應(yīng)濾波器應(yīng)用于通信領(lǐng)域的自動(dòng)均衡、回聲消除、天線陣波束形成,以及其他有關(guān)領(lǐng)域信號(hào)處理的參數(shù)識(shí)別、噪聲消除、譜估計(jì)等方面。對(duì)于不同的應(yīng)用,只是所加輸入信號(hào)和期望信號(hào)不同,基本原理則是相同的。(以上部分可以跳過)上面這段話表明,需要求解的回音路徑函數(shù)F就是一個(gè)自適應(yīng)濾波器W(n)收斂的過程。所加輸入信號(hào)x(n)是fe,期望信號(hào)是echo,自適應(yīng)濾波器收斂后的W(n)就是回音路徑函數(shù)F。 收斂之后,當(dāng)實(shí)際回音發(fā)生,我們把fe通過函數(shù)W(n),就可以得到一個(gè)很準(zhǔn)確的echo,把混合信號(hào)直接減去echo,得到實(shí)際需要發(fā)送的語音speech,完成回聲消除任務(wù)。
值得注意的兩點(diǎn):
1: 自適應(yīng)濾波器收斂階段,期望信號(hào)是完全的echo,不能混雜有speech。因?yàn)閟peech和fe是沒有關(guān)系的,會(huì)擾亂W(n)的收斂過程。也就是說要求回聲消除算法開始運(yùn)轉(zhuǎn)后收斂要非???,最好對(duì)方還來不及說話,你一說就收斂好了;收斂好之后,如果對(duì)方開始說話,也就是有speech混合過來,這個(gè)W(n)系數(shù)就不要變化了,需要穩(wěn)定下來。
2:回音路徑可能是變化的,一旦出現(xiàn)變化,回聲消除算法要能判斷出來,因?yàn)樽赃m應(yīng)濾波器學(xué)習(xí)要重新開始,也就是W(n)需要一個(gè)新的收斂過程,以逼近新的回音路徑函數(shù)F。
基本上來說,上面這兩點(diǎn)是兩難的,一個(gè)需要自適應(yīng)濾波器收斂后保持系數(shù)穩(wěn)定,以保證不受speech說話干擾,另一個(gè)需要自適應(yīng)濾波器隨時(shí)保持更新狀態(tài),以保證能夠追蹤變化的回音路徑。這樣一來,僅從數(shù)學(xué)算法層面,回聲消除已經(jīng)是難上加難!簡(jiǎn)單地說,回聲消除自適應(yīng)濾波器的設(shè)計(jì)具有兩個(gè)互相矛盾的特性,也就是快速收斂和高度的穩(wěn)定性,如何同時(shí)實(shí)現(xiàn)這兩項(xiàng)特性,正是設(shè)計(jì)上的主要挑戰(zhàn)。
經(jīng)過上面的分析,相信大家對(duì)回聲消除的原理和技術(shù)有了深刻的理解,這是一門即容易理解又難以實(shí)現(xiàn)的技術(shù)。
從應(yīng)用平臺(tái)來看,根據(jù)筆者多年的經(jīng)驗(yàn),可以把回聲消除分為兩大類:基于DSP等實(shí)時(shí)平臺(tái)的回聲消除技術(shù)和基于Windows等非實(shí)時(shí)平臺(tái)的回聲消除技術(shù)。兩者的技術(shù)難度和重點(diǎn)是不一樣的。
三、基于DSP平臺(tái)的回聲消除技術(shù)
回聲消除技術(shù)傳統(tǒng)的應(yīng)用領(lǐng)域是各種嵌入式設(shè)備,包括各種電信網(wǎng)絡(luò)設(shè)備和終端設(shè)備。網(wǎng)絡(luò)設(shè)備比如交換機(jī),網(wǎng)關(guān)等等,終端則包括移動(dòng)電話終端,視頻會(huì)議終端等。現(xiàn)代通訊產(chǎn)品里面大量應(yīng)用了回聲消除技術(shù),包括在我們看得到的終端產(chǎn)品(比如手機(jī))和看不到的局端產(chǎn)品(比如交換機(jī))。這種嵌入式設(shè)備的共同點(diǎn)就是采用各種型號(hào)的DSP芯片作為回聲消除的載體。一個(gè)有效的回聲消除算法需要持續(xù)的在一顆DSP芯片上面運(yùn)行,會(huì)遇到以下方面的難點(diǎn):
實(shí)時(shí)性與高效性,因?yàn)镈SP芯片資源有限。雖然自從二十世紀(jì)七十年代DSP應(yīng)用以來,日新月異的硬件芯片技術(shù)使許多沉睡在教科書上的信號(hào)處理理論算法大規(guī)模應(yīng)用,但是回聲消除算法需要的資源還是大得驚人。以視頻會(huì)議系統(tǒng),大規(guī)模的會(huì)議室可以產(chǎn)生超過512ms的回音,要消除這么長(zhǎng)延時(shí)的回音,即使按照8k赫茲采樣率計(jì)算,自適應(yīng)濾波器W(n)的長(zhǎng)度都會(huì)達(dá)到4096個(gè)點(diǎn),這樣一方面需要非常大的存儲(chǔ)空間來存儲(chǔ)W(n),另一方面,W(n)的更新需要的計(jì)算量也是成倍增長(zhǎng),同時(shí),W(n)的收斂難度也在加大,傳統(tǒng)自適應(yīng)濾波器的效率很難保證。對(duì)于電信設(shè)備中的應(yīng)用,雖然回聲消除不需要這么長(zhǎng)的延時(shí),但是在交換機(jī)等設(shè)備中,成本和效率就是生命,所有的處理算法都是按路或按線計(jì)算的,對(duì)算法的優(yōu)化效率提出了無止境的要求。相對(duì)而言,只有像車載免提這種應(yīng)用對(duì)效率要求不那么高,因?yàn)檐噧?nèi)空間小,回音延時(shí)有限,又不要求多路應(yīng)用。
傳統(tǒng)的回聲消除技術(shù)是從國(guó)外二十世紀(jì)七十年代的早期算法發(fā)展而來,這類技術(shù)的采用一直相當(dāng)昂貴,提供電信級(jí)回聲消除硬件應(yīng)用(包括芯片或者設(shè)備)的廠家都是國(guó)外的。對(duì)于移動(dòng)網(wǎng)絡(luò)用戶來說,語音品質(zhì)一直是他們最關(guān)切的議題,對(duì)電信業(yè)者來說,語音也仍是他們最能獲利的服務(wù)項(xiàng)目,因此語音的品質(zhì)是不容妥協(xié)的。為了滿足今日與未來的網(wǎng)路需求,回聲消除技術(shù)的挑戰(zhàn)正在于如何有效地降低成本并持續(xù)改善語音品質(zhì)。
算法級(jí)的DSP軟件解決方案,也是解決嵌入式設(shè)備回音問題的一種途徑,對(duì)用戶也有一定的靈活性,用戶只需要把回聲消除模塊集成到自己的DSP軟件中,再簡(jiǎn)單調(diào)整幾個(gè)相關(guān)參數(shù),就能達(dá)到較好的回聲消除效果。
目前基于DSP的回聲消除算法已經(jīng)比較成熟,市場(chǎng)上也有一批專門的算法/芯片公司的能夠?qū)ν馓峁┮呀?jīng)優(yōu)化好的基于DSP的軟件回聲消除模塊:如俄羅斯Spririt DSP、加拿大Octastic Semiconductor、瑞典GIPS、國(guó)內(nèi)科萊特斯科技Conatus Technologies以及美國(guó)Adaptive Digital、和GAO Research、英國(guó)CSR等等,另外還有美國(guó)Fortemedia、Acoustic Technologies和日本OKI等可以提供專用的回聲消除DSP芯片。其中性能較好的有Octastic、Conatus、和Spririt這三家,Octastic可以提供完整的從專用芯片、板卡到DSP算法的完整方案,而Conatus和Spririt的回聲消除效果更好,值得一提的是Conatus公司是目前市面上唯一提供針對(duì)專業(yè)視訊會(huì)議應(yīng)用寬帶回聲消除模塊的公司,其音頻采樣率可以達(dá)到48k赫茲。
四、基于Windows平臺(tái)的回聲消除技術(shù)
回聲消除技術(shù)最新的應(yīng)用領(lǐng)域是基于Windows平臺(tái)的各種VoIP應(yīng)用,比如軟件視頻會(huì)議,VoIP軟件電話等。當(dāng)回聲消除算法應(yīng)用到Windows平臺(tái),相對(duì)于傳統(tǒng)的DSP平臺(tái),既帶來優(yōu)勢(shì),也帶來了新的難點(diǎn)。高效性在Windows平臺(tái)已經(jīng)不是問題,現(xiàn)在的pc機(jī),擁有豐富的cpu資源和海量的內(nèi)存資源,再復(fù)雜的回聲消除算法都可以運(yùn)行自如。但是,新增加的麻煩比帶來的好處要多。
首先,Windows平臺(tái)是一個(gè)非實(shí)時(shí)的平臺(tái),音頻的采集和播放對(duì)回聲消除算法而言,也是非實(shí)時(shí)的。和DSP平臺(tái)不一樣,DSP平臺(tái)可以直接控制AD/DA芯片的采集播放,獲得實(shí)時(shí)的音頻流(不存在同步問題),但是Windows平臺(tái)下,應(yīng)用程序很難在底層直接控制聲卡的采集播放,獲得的是非實(shí)時(shí)的音頻流,從而帶來了采集和播放音頻流的同步問題。
實(shí)際應(yīng)用時(shí),傳給回聲消除算法的兩個(gè)聲音信號(hào)(采集的回音信號(hào)ne和播放的參考信號(hào)fe),必須同步得非常的好。就是說,本地接收到遠(yuǎn)端說的話以后,要把這些話音數(shù)據(jù)傳給回聲消除算法做參考,這是一個(gè)算法需要的輸入信號(hào);然后再傳給聲卡,聲卡放出來后經(jīng)過回音路徑,這時(shí),本地再采集,然后傳給回聲消除算法,這是算法需要的另一個(gè)輸入信號(hào)。這里的同步是指:兩個(gè)信號(hào)雖然存在延時(shí),但這個(gè)延時(shí)必須固定,在時(shí)序上要保持連貫,不能一個(gè)信號(hào)多來幾個(gè)幀,另外一個(gè)信號(hào)少來幾個(gè)幀。如果傳給回聲消除算法的兩個(gè)信號(hào)同步得不好,即兩個(gè)信號(hào)發(fā)生幀錯(cuò)位,就沒有辦法進(jìn)行消除了。因?yàn)檫@時(shí)系統(tǒng)會(huì)變成了非因果系統(tǒng),比如期望信號(hào)收到了,參考信號(hào)還沒來,時(shí)間上都沒有因果關(guān)系,肯定是沒有辦法消除的。
實(shí)際情況是,在一般的VoIP軟件中,接收對(duì)方的聲音并傳到聲卡中播放是在一個(gè)線程中進(jìn)行的,而采集本地的聲音并傳送到對(duì)方又是在另一個(gè)線程中進(jìn)行的,而聲學(xué)回聲消除算法在對(duì)采集到的聲音進(jìn)行回聲消除的同時(shí),還需要播放線程中的數(shù)據(jù)作為參考,而要同步這兩個(gè)線程中的數(shù)據(jù)是非常重要的,因?yàn)樯陨杂行┎煌剑晫W(xué)回聲消除算法中的自適應(yīng)濾波器就會(huì)發(fā)散,不但消除不了回音,還會(huì)破壞原始采集到的聲音,使聲音難以分辨。
另外,pc機(jī)器的聲卡種類繁多,各種各樣的聲卡特性進(jìn)一步加劇了同步問題的復(fù)雜性。所以,同步和聲卡等問題對(duì)回聲消除算法的內(nèi)部特性提出了更多苛刻的要求。
從上面分析來看,由于Windows平臺(tái)的非實(shí)時(shí)性,基于Windows平臺(tái)的回聲消除技術(shù)比DSP平臺(tái)要難得多。在PC平臺(tái)語音通訊領(lǐng)域,目前公認(rèn)音質(zhì)做得比較好的國(guó)外軟件是Skype,記得幾年前Skype一直是在用瑞典一家叫GIPS(Global IP Sound)公司的語音引擎技術(shù)。GIPS是最早介入PC平臺(tái)語音通訊領(lǐng)域的廠商之一,在改領(lǐng)域具有一定的權(quán)威性,其主要優(yōu)勢(shì)表現(xiàn)在對(duì)IP網(wǎng)絡(luò)的延時(shí)、抖動(dòng)和丟包等處理較好,基于Windows平臺(tái)的回音消除也做得不錯(cuò),不過最近的新版本Skype上已經(jīng)看不到GIPS的標(biāo)志了,據(jù)說是因?yàn)镾kype自己研發(fā)了一套新的更好的語音引擎的緣故。 目前大家接觸最多的采用了GIPS語音引擎技術(shù)的通訊軟件就是騰訊QQ了,其超級(jí)語音的效果普遍評(píng)價(jià)都還不錯(cuò)。另外微軟經(jīng)過多年的研發(fā),其最新版本的MSN語音特別是回音消除效果終于有了質(zhì)的提升,目前網(wǎng)上評(píng)價(jià)也還不錯(cuò)。另外還有一些專業(yè)廠商也對(duì)外提供包含回音消除功能的語音引擎,如俄羅斯的Spirit DSP、美國(guó)的GH Innovation和國(guó)內(nèi)的科萊特斯科技(Conatus Technologies)以及賽聲科技(Soft Acoustic)等等。除此之外,網(wǎng)絡(luò)上還可以下載到一個(gè)很好的開源的語音軟件Speex也提供了回音消除功能。為了進(jìn)一步了解目前PC Windows平臺(tái)回音消除技術(shù)的業(yè)界水平,筆者對(duì)各家的回音消除技術(shù)做一個(gè)詳細(xì)的橫向?qū)Ρ葴y(cè)試(所有測(cè)試都是免提狀態(tài))
為了對(duì)比,各家語音引擎的版本信息列舉如下:
國(guó)外廠商:
Skype V3.8.4.182
Spirit DSP(廠家DEMO)
GIPS(QQ 2009beta)
Micorsoft (Windows Live Messenger 2009 V14.0.8064.2006)
GH Innovation(廠家DEMO)
國(guó)內(nèi)廠商:
Conatus Technologies(廠家DEMO)
Soft Acoustic(廠家DEMO)
開源算法:
Speex(V1.2RC1 自己寫了測(cè)試軟件)
測(cè)試結(jié)果:
測(cè)試項(xiàng)目 | Skype | MSN | QQ | Conatus | Spirit | Speex | SoftAcoustic | GH I |
筆記本免提模式,外接麥克風(fēng)和音箱應(yīng)用模式的適應(yīng)性 | 兩種模式都無回音 | 筆記本免提模式有時(shí)一直有較小回音 | 筆記本免提模式偶爾有較小回音 | 兩種模式都無回音 | 筆記本免提模式有時(shí)一直有較小回音 | 兩種模式都有一直較小回音 | 兩種模式有時(shí)都會(huì)出現(xiàn)較大回音 | 筆記本免提模式一直有很小回音 |
單方講話效果 | 無回音,效果很好 | 基本無回音,效果好 | 基本無回音,效果好 | 無回音,效果很好 | 基本無回音,效果好 | 一直有較小回音,效果差 | 有時(shí)有很大回音,效果差 | 基本無回音,效果好 |
雙方同時(shí)講話效果 | 雙方交流流暢無回音,對(duì)方聲音偶爾有輕微斷續(xù) | 雙方交流流暢,但對(duì)方聲音中會(huì)夾雜著輕微回音 | 雙方交流流暢,但對(duì)方聲音中會(huì)夾雜著一些回音 | 雙方交流流暢無回音,對(duì)方聲音偶爾有輕微斷續(xù) | 雙方交流流暢,但對(duì)方聲音中間會(huì)夾雜著一些回音 | 雙方交流比較流暢,但一直聽到一個(gè)較小的回音 | 雙方交流不流暢,對(duì)方聲音經(jīng)常會(huì)斷續(xù) | 雙方交流無回音,但對(duì)方聲音很小很難聽清楚 |
麥克風(fēng)和揚(yáng)聲器相對(duì)的位置改變等 | 收斂比較快,基本沒有回音出現(xiàn)。 | 收斂比較快,基本沒有回音出現(xiàn)。 | 收斂比較快,基本沒有回音出現(xiàn)。 | 收斂比較快,基本沒有回音出現(xiàn)。 | 收斂比較快,基本沒有回音出現(xiàn)。 | 收斂速度慢,有好幾句回音 | 收斂速度慢,有好幾句回音 | 收斂比較快,基本沒有回音出現(xiàn)。 |
CPU重載(CPU負(fù)載達(dá)到100%)時(shí)效果 | XP和Vista下聲音都流暢,基本不會(huì)出現(xiàn)回音和聲音斷續(xù)現(xiàn)象 | XP和Vista下聲音都流暢,基本不會(huì)出現(xiàn)回音和聲音斷續(xù)現(xiàn)象 | XP下聲音流暢,基本不會(huì)出現(xiàn)回音;Vista下聲音斷續(xù),偶爾會(huì)出現(xiàn)回音 | XP和Vista下聲音都流暢,基本不會(huì)出現(xiàn)回音和聲音斷續(xù)現(xiàn)象 | XP下聲音流暢,基本不會(huì)出現(xiàn)回音;Vista下聲音斷續(xù),偶爾會(huì)出現(xiàn)回音 | 此項(xiàng)未測(cè) | XP下聲音流暢,基本不會(huì)出現(xiàn)回音;Vista下聲音斷續(xù),偶爾會(huì)出現(xiàn)回音 | XP下聲音流暢,基本不會(huì)出現(xiàn)回音;Vista下不加負(fù)載聲音都是斷續(xù)的 |
PC和聲卡適應(yīng)性 | 穩(wěn)定,基本都能消除回音 | 穩(wěn)定,基本都能消除回音 | 比較穩(wěn)定,偶爾有些筆記本免提時(shí)有回音 | 穩(wěn)定,基本都能消除回音 | 穩(wěn)定,基本都能消除回音 | 不穩(wěn)定,有時(shí)無法消除回音 | 不穩(wěn)定,經(jīng)常無法消除回音 | 穩(wěn)定,基本都能消除回音 |
噪聲抑制 | 噪聲抑制效果弱 | 噪聲抑制效果一般 | 噪聲抑制效果弱 | 噪聲抑制效果強(qiáng) | 噪聲抑制效果一般 | 噪聲抑制效果強(qiáng) | 噪聲抑制效果強(qiáng) | 噪聲抑制效果強(qiáng) |
自動(dòng)硬件增益控制和免提時(shí)能達(dá)到的最大播放音量 | 支持,音量較大 | 支持,音量較小 | 支持,音量適中 | 支持,音量適中 | 支持,音量較小 | 不支持 | 支持,音量較小 | 支持,音量非常小 |
整體效果評(píng)價(jià)(0-10分評(píng)分) | 很好,基本沒有回音,雙方交流很順暢,9分 | 較好,有的筆記本免提時(shí)偶爾有回音且音量較小,雙方交流比較順暢,7.5分 | 較好,有的筆記本免提時(shí)偶爾有回音,雙方交流順暢,8分 | 很好,基本沒有回音,音量比skype略小,雙方交流很順暢, 8.5分 | 較好,有的筆記本免提效果稍差且音量比較小,vista效果稍差,7分 | 不好,一直有個(gè)較小的殘余回音,雙方交流困難,3分 | 不好,經(jīng)常有完整的回音,感覺不穩(wěn)定,雙方交流比較困難,5分 | 一般,沒有回音,但是音量太小,雙方交流困難,且VISTA下聲音斷續(xù),5.5分 |
測(cè)試項(xiàng)目 | Skype | MSN | QQ | Conatus | Spirit | Speex | SoftAcoustic | GH I |
可以看出,Skype、 Conatus和 QQ(GIPS)的效果最好, MSN和Spirit的效果還不錯(cuò),而GH Innovation、Soft Acoustic效果一般,Speex的效果較差。
五、總結(jié)
回聲消除已經(jīng)成為語音通訊中提供全雙工音頻的標(biāo)準(zhǔn)方法。聲學(xué)回聲消除是通過消除或者移除本地話筒中拾取到的遠(yuǎn)端的音頻信號(hào)來阻止遠(yuǎn)端的聲音返回去的一種處理方法。這種音頻的移除都是通過數(shù)字信號(hào)處理來完成的?;芈曄夹g(shù)是數(shù)字信號(hào)處理的典型應(yīng)用之一。