0 引 言
近年來,,VoIP(Voice over
IP)技術(shù)及其業(yè)務(wù)的迅速發(fā)展,,對傳統(tǒng)的電信業(yè)務(wù)造成了巨大的沖擊,與傳統(tǒng)電話相比,IP電話以其網(wǎng)絡(luò)帶寬利用率高,通話成本低,可靈活地提供豐富的增值功能而備受市場青睞,。然而,由于VoIP的語音在與其他數(shù)據(jù)一起在網(wǎng)絡(luò)中傳輸時要經(jīng)過壓縮,、編碼,、打包等一系列處理,造成回聲路徑的延遲較大,,延遲抖動也較大,,嚴(yán)重影響了話音質(zhì)量,阻礙了VoIP市場的拓展,。因此,,在VoIP終端上增加回聲消除算法已成為必然。
1 聲學(xué)回聲消除技術(shù)的原理
1.1 聲學(xué)回聲產(chǎn)生原理
根據(jù)回聲的產(chǎn)生原因,,回聲可以分為聲學(xué)回聲和電學(xué)回聲兩類,。電學(xué)回聲是由于電路阻抗不匹配造成的,通常影響比較小,。隨著消除回聲技術(shù)的發(fā)展,,當(dāng)前回聲消除研究的重點(diǎn)已由“電學(xué)回聲”的消除轉(zhuǎn)向了“聲學(xué)回聲”的消除。聲學(xué)回聲指設(shè)備的一部分聲音信號回饋到同一設(shè)備的受話器,,分為直接回聲和間接回聲,。直接回聲指揚(yáng)聲器的聲音未經(jīng)任何反射直接進(jìn)入麥克風(fēng),,這種回聲延遲最短。間接回聲是指揚(yáng)聲器播放的聲音經(jīng)不同的路徑一次或多次反射后進(jìn)入麥克風(fēng)所產(chǎn)生的回聲集合,,其主要特點(diǎn)是回聲路徑?jīng)_激響應(yīng)變化范圍大,,變化快,沖激響應(yīng)持續(xù)時間長,,一般在50~300
ms,。這使得自適應(yīng)建模濾波器的階數(shù)很高,因而成為語音通信系統(tǒng)回聲的主要難題,。
1.2 聲學(xué)回聲消除的原理
自適應(yīng)回聲抵消的基本思想是估計(jì)回聲路徑的特征參數(shù),產(chǎn)生一個模擬的回音路徑,,得出模擬回聲信號,,從接收信號中減去該信號,實(shí)現(xiàn)回聲抵消,。
圖1中,,y(n)代表來自遠(yuǎn)端的信號;r(n)是經(jīng)過回聲通道而產(chǎn)生的不期望的回聲,;x(n)是近端的語音信號,;D口的近端信號疊加有不期望的回聲。對消回聲器來說,,接收到的遠(yuǎn)端信號作為參考信號,,消回聲器根據(jù)由自適應(yīng)濾波器產(chǎn)生回聲估計(jì)值,將r1(n)從近端帶有回聲的語音信號減去,,就得到近端傳送出去的信號μ(n)=x(n)+r(n)-r1(n),。在理想情況下,經(jīng)過消回聲處理后,,殘留的回聲誤差e(n)=r(n)-r1(n)將為0,,從而實(shí)現(xiàn)回音消除。
2 自適應(yīng)回聲消除算法理論
回聲消除理論的難點(diǎn)是估計(jì)回聲與近端輸入信號之間的同步問題以及如何對雙端講話進(jìn)行處理的問題,,若這兩個問題處理不好,,就會造成濾波器的發(fā)散,不但不能消除回聲,,反而會引入更煩人的噪聲,。
2.1 雙端話音處理與MDF算法結(jié)合
在NLMS算法中,假設(shè)輸入近端背景噪聲與遠(yuǎn)端信號均為白噪聲,,那么兩信號間為時間無關(guān)的,,因此可以求得最優(yōu)步長因子:
式中:r(n)為殘留回聲的方差的估計(jì)值;e(n)為誤差信號的方差的估計(jì)值,。
但是用LMS/NLMS算法來進(jìn)行語音信號的聲學(xué)回聲消除時,,兩信號時間無關(guān)的假設(shè)就不完全成立,因此只能借助于頻域處理法。MDF算法相當(dāng)于對每一個頻率使用NLMS算法,。為了解決雙端講話檢測這個難題,,文獻(xiàn)[6]提出了一種與MDF相結(jié)合的不需要顯式進(jìn)行雙端話音檢測的方法,以下是推導(dǎo),。由于信號在頻域的相關(guān)程度比在時域的相關(guān)程度小得多,,而且步長因子μ也可以變換到頻率域μ(k,l),,即有公式:
式中:k為輸入信號塊索引號,;l為信號頻率。假定殘留回聲是泄漏因子η(l)與回聲估計(jì)值的乘積,,即:
又因?yàn)椴介L因子需要在雙端講話發(fā)生時迅速對其做出反應(yīng),,故可以有等式:
分子代表估計(jì)回聲與誤差信號的互相關(guān)值,分母為估計(jì)回聲的自相關(guān)值,。若有雙端講話存在,,則誤差就會變得很大,因此步長因子就會變得非常小,,不會使濾波器系數(shù)變化太大,;若有背景噪聲存在,由于步長因子公式中,,分子分母都有噪聲的影響,,因此相互抵消后噪聲的影響也會變得非常小了。
2.2 估計(jì)回聲與近端輸入信號的同步
回聲消除的原理就是利用參考回聲與真實(shí)回聲之間的相關(guān)性,,因此播放聲音的線程和錄音線程之間的同步就顯得極為重要,。下面分兩步進(jìn)行處理:
第一步,輸入/輸出設(shè)備與處理器之間存在速度不匹配的問題,,為了改善這個矛盾,,需要在輸入/輸出端分別劃出若干個專用緩沖區(qū)。在本測試環(huán)境中,,輸入/輸出流的延遲經(jīng)過計(jì)算結(jié)果為10幀,,也就是從處理器把第一幀要播放的聲音放人參考回聲幀隊(duì)列算起,到處理器從參考回聲幀隊(duì)列中取出一幀來與第一幀錄音輸入進(jìn)行回聲消除時為止,,錄音輸入比參考回聲在時間上落后了10幀,。也就是說,這前10幀錄音輸入不用進(jìn)行回聲消除,,而是直接傳走,,這個過程就稱為預(yù)取。
第二步,,實(shí)際應(yīng)用中播放聲音和錄音是用兩個線程完成的,,所以僅僅用上面固定的延遲數(shù)量來同步參考回聲和錄音輸入這兩個信號還不行,。設(shè)一個變量rec_ts作為處理器要處理的錄音輸入幀的序列號,設(shè)play_ts作為處理器處理的參考回聲幀的序列號,。用seq_delay=play_ts-rec_ts來修正上面的預(yù)取過程,。當(dāng)Seq_delay>0時,證明播放線程比錄音線程快,,因此則減少錄音輸入幀的預(yù)取個數(shù),;當(dāng)Seq-delay<0時,證明播放線程比錄音線程慢,,因此則增加錄音輸入幀的預(yù)取個數(shù),。
3 測試及結(jié)論
Speex是一個開源、免費(fèi),、專門針對VoIP語音的編解碼器,,是一種動態(tài)比特率編碼方式,它意味著可以根據(jù)網(wǎng)絡(luò)環(huán)境的變化來動態(tài)地修改其比特率,,它在窄帶和寬帶中都提供相應(yīng)版本?;匾粝恢笔荲oIP中亟待解決的主要問題,,所以近年來Speex中也集成了回音消除的模塊。因?yàn)镾peex算法中,,AEC沒有考慮線程同步問題,,因此這里提出了一種使播放線程和錄音線程同步的方法。
用PC機(jī)在VC 6.O下建工程進(jìn)行測試,。用麥克將一段語音錄下,,存為ref.pcm,之后用音箱把這段錄音播放出來,,播放的同時再用麥克將其錄下,,等播放一段時間后(代表只有遠(yuǎn)端講話的情況),再有人開始講話,,這時的錄音就代表雙端講話的情況,,把該文件存為echo.pcm。測試時采樣率為8 000 Hz,,20 ms為一幀,,/μmax=1。
回聲抵消效果一般還采用回聲返回衰減增益(ERLE)來評價,,其定義如下:
ERLE值越大,,則表明回聲抵消效果越好,一般要求ERLE≥6 dB,。測試回聲返回衰減增益如圖2所示,。
由圖2可知,,加入時間延遲估計(jì)后的效果好于不加時間延遲估計(jì)的效果。
失調(diào)也稱為系統(tǒng)距離(DIST),,反映的是回聲消除器中自適應(yīng)FIR濾波器r1(n)對真實(shí)回聲路徑r(n)的逼近程度,。其定義如下:
DIST值越低,表明自適應(yīng)濾波器收斂性能越好,。由圖3也可看出,,加入時間延遲估計(jì)后的失調(diào)量總體上低于不加時間延遲估計(jì)的失調(diào)量。
通過測試和大量的通話主觀測試,,結(jié)果表明,,用該方法實(shí)現(xiàn)的聲學(xué)回聲消除器能夠滿足通信對語音的要求,因此為VoIP語音通信和移動通信終端提供了參考,。