任思明,夏秀渝
(四川大學(xué)電子信息學(xué)院,成都 610065)
近年來,隨著移動通信的快速發(fā)展,免提通話的應(yīng)用領(lǐng)域也逐漸擴(kuò)大。但免提通話場景中聲學(xué)回聲的存在嚴(yán)重影響了通話質(zhì)量,降低了用戶的聽覺體驗(yàn)。如何消除回聲,實(shí)現(xiàn)高質(zhì)量的語音通信已經(jīng)成為免提通話中待解決的主要問題之一。
圖1 回聲消除的基本原理
但在現(xiàn)實(shí)通話環(huán)境中,尤其是免提通話環(huán)境下,近端話音干擾是不可避免的,因此為了提高回聲消除系統(tǒng)在雙話情況下的效能,必須要檢測通話雙方是否存在雙端通話,根據(jù)具體情況調(diào)節(jié)自適應(yīng)濾波器系數(shù)的迭代更新,避免濾波器的權(quán)值發(fā)散。當(dāng)檢測器檢測到不存在雙端通話的時候,自適應(yīng)濾波器進(jìn)行正常系數(shù)更新和自適應(yīng)濾波;當(dāng)檢測器檢測到存在雙端通話的時候,自適應(yīng)濾波器停止系數(shù)更新,凍結(jié)濾波器系數(shù),只進(jìn)行簡單的濾波。
由此可見,雙端通話檢測對回聲消除系統(tǒng)的性能十分重要,為了解決雙端通話問題,研究者們提出了很多雙端通話檢測算法。常見的檢測算法有基于能量的檢測算法、基于信號互相關(guān)的檢測算法、基于過零率的檢測算法、基于雙濾波器的算法等。其中基于能量的檢測算法簡單易行,但檢測效率比較低,例如經(jīng)典的GEIGEL算法;1991年Ye和Wu提出了互相關(guān)算法后,2000年Gansler和Benesty在互相關(guān)的基礎(chǔ)上進(jìn)行了改進(jìn),提出了歸一化互相關(guān)(Normalized Cross-Correlation,NCC)算法,檢測效率較高。其余算法也大多原理類似,這些檢測算法都能在一定程度上檢測到雙端通話的發(fā)生。
但性能較好的回聲消除器不只需要雙話檢測模塊,還需要結(jié)合其他模塊才能實(shí)現(xiàn)較好的回聲消除效果。針對以上問題,本文提出一種適用于雙端通話的回聲消除結(jié)構(gòu),該結(jié)構(gòu)中采用NCC進(jìn)行雙端通話檢測,PFBLMS算法進(jìn)行濾波器權(quán)值自適應(yīng)更新,同時結(jié)合后置濾波器技術(shù)消除殘余回聲,進(jìn)一步提高回聲消除器的性能,實(shí)驗(yàn)仿真表明該結(jié)構(gòu)在收斂速度和穩(wěn)態(tài)誤差方面具有明顯優(yōu)勢,同時能正確判斷雙端通話的發(fā)生,在回波抑制比、收斂速度及輸出音頻質(zhì)量等方面能得到比較好的效果。
實(shí)際應(yīng)用場景尤其是免提視頻會議通信系統(tǒng)中,房間回聲路徑時延可能長達(dá)幾百毫秒,在8 kHZ的采樣率下,可能需要上千階的濾波器才能滿足需求,而傳統(tǒng)的回聲消除系統(tǒng)一般采用歸一化LMS(Normalized LMS,NLMS)算法,其計算復(fù)雜度會隨著濾波器的階數(shù)呈線性增長。為了克服這個問題,可采用PFBLMS算法來進(jìn)行自適應(yīng)更新,減少回聲消除系統(tǒng)的計算復(fù)雜度,提高算法的收斂速度。
PFBLMS算法先對信號進(jìn)行分塊劃分,然后在頻域進(jìn)行濾波器系數(shù)的逐塊更新。利用快速傅里葉變換(FFT)作為中間步驟實(shí)現(xiàn)快速卷積,同時濾波器系數(shù)用逐塊更新代替逐點(diǎn)更新,大大降低了頻域LMS算法的復(fù)雜度,也克服了頻域LMS算法處理延遲大的缺點(diǎn)。
該算法首先在時域上對濾波器輸入信號()和濾波器權(quán)系數(shù)()做分塊處理。設(shè)代表迭代次數(shù),代表濾波器階數(shù),算法首先將濾波器分為段,每段的長度為,則有=×,則第段濾波器可以表示為:
()用分塊形式可以表示為:
同樣地,輸入信號()可以用分塊形式表示:
同理可得時域誤差向量為:
其中()表示第次迭代濾波器的期望輸出,長度為,則得到的時域補(bǔ)償向量長度也為。將()擴(kuò)展得到頻域的誤差向量為:
對于無約束的PFBLMS算法,其頻域系數(shù)更新公式可以表示為:
雙端通話檢測是AEC系統(tǒng)中非常重要的一部分,其目的是檢測當(dāng)前的通話系統(tǒng)所處的話音通信狀態(tài),即當(dāng)前時刻是否處于雙端通話,讓回聲消除器根據(jù)不同的話音狀態(tài)對輸入信號進(jìn)行不同的處理,主要工作原理如下:
(1)利用AEC系統(tǒng)中的遠(yuǎn)端語音信號、近端麥克風(fēng)信號、誤差信號等構(gòu)造一個檢測統(tǒng)計量;
(2)利用這個統(tǒng)計量和預(yù)先設(shè)定的門限值T進(jìn)行對比,一般來說如果<T,則認(rèn)為檢測到雙端通話的發(fā)生;
(3)一旦檢測到存在雙端通話,則自適應(yīng)濾波器停止系數(shù)更新,凍結(jié)當(dāng)前系數(shù),只進(jìn)行濾波;
(4)當(dāng)次濾波完成后,再次檢測當(dāng)前通信狀態(tài),直到≥T時,認(rèn)為雙端通話結(jié)束,自適應(yīng)濾波器繼續(xù)進(jìn)行濾波和系數(shù)更新。
一般來說門限值T必須是一個獨(dú)立的常數(shù)。NCC是一種常見的基于信號相關(guān)性的雙端檢測算法。其利用遠(yuǎn)端信號和近端麥克風(fēng)輸入信號來構(gòu)造檢測統(tǒng)計量,其主要的原理如下:
當(dāng)遠(yuǎn)端信號()=0時,
其中:
則可以將式(12)表示為:
當(dāng)()≠0時,
則雙端發(fā)聲統(tǒng)計量可以記做:
將式(12)帶入式(16)可以得到檢測變量:
從式(17)可以很容易得到,()=0時,即不存在近端話音時,=1;當(dāng)()≠0時,即存在近端話音時,<1。
因此基于以上描述,我們能通過檢測變量的值判斷雙話情況是否發(fā)生,通過檢測變量的特征,設(shè)定恰當(dāng)?shù)拈T限值T,將檢測變量與門限值進(jìn)行比較,通過比較結(jié)果判定當(dāng)前時刻是否發(fā)生雙話。
為了實(shí)現(xiàn)快速、高效、魯棒性好的回聲消除,本文采用的雙端通話回聲消除新結(jié)構(gòu)(如圖2所示),主要由以下三部分構(gòu)成:雙端檢測、自適應(yīng)算法、后置濾波。
圖2 本文提出的回聲消除新結(jié)構(gòu)
在真實(shí)的通話環(huán)境中,需要實(shí)時監(jiān)測話音的活動狀態(tài)。自適應(yīng)濾波器才能根據(jù)不同的話音活動狀態(tài)去進(jìn)行相應(yīng)的處理。因此,雙端檢測算法對存在雙端通話時回聲消除系統(tǒng)的性能有很大影響。NCC雙端檢測算法簡單易行,雙端通話檢測效能較為理想,本文采用的雙端通話回聲消除新結(jié)構(gòu)采用NCC來進(jìn)行雙端通話檢測。
傳統(tǒng)回聲消除結(jié)構(gòu)采用NCC雙端通話檢測算法進(jìn)行檢測后,再采用時域的NLMS算法或者頻域的LMS算法來進(jìn)行自適應(yīng)濾波器的更新,時域的NLMS算法實(shí)現(xiàn)簡單,但缺點(diǎn)是計算復(fù)雜度高,頻域LMS算法計算復(fù)雜度低,但延遲高。因此本文采用PFBLMS算法來進(jìn)行濾波器的自適應(yīng)迭代,時間復(fù)雜度更低,算法延遲更小。
只采用自適應(yīng)濾波器對回聲抑制的能力有限,所以在回聲抑制系統(tǒng)中添加非線性處理模塊(Nonlinear Processing,NLP)具有重要意義,其目的是抑制線性濾波后誤差信號中的殘留回聲。主要原理是利用近端信號()和誤差信號()之間的頻域相干性C ,結(jié)合近端信號()和遠(yuǎn)端信號()的頻域相干性C ,利用C 和C 計算出每個頻帶的抑制因子,將抑制因子與對應(yīng)的頻帶相乘,從而實(shí)現(xiàn)對殘留回聲的抑制。
將本文所采用的回聲消除結(jié)構(gòu)用于回聲消除,并采用歸一化失調(diào)(Normalized misalignment,MIS)和回波抑制比(Echo return loss enhancement,ERLE)兩個參數(shù)作為衡量回聲消除效果的指標(biāo),比較不同方法下輸出語音的時域波形圖,直觀比較回聲消除的效果,其中MIS和ERLE兩個指標(biāo)的定義如下:
歸一化失調(diào)值越小,表明自適應(yīng)濾波器的系數(shù)越接近真實(shí)房間路徑的沖激響應(yīng)。回波抑制比的值越大,表明回聲消除系統(tǒng)對回聲的抑制程度越大。
實(shí)驗(yàn)一:高斯白噪聲作為輸入信號。遠(yuǎn)端話音輸入均值為0、方差為1的高斯白噪聲,并在近端添加信噪比為20 dB的高斯白噪聲作為背景噪聲。信號采樣率設(shè)為8 kHZ。真實(shí)房間路徑?jīng)_激響應(yīng)如圖3所示,長度為1024。
圖3 回聲通道的沖激響應(yīng)
歸一化失調(diào)值和回波抑制比如圖4所示??梢钥闯?,歸一化失調(diào)值方面,在濾波器迭代的初始階段,本文所采用的PFBLMS算法的收斂速度介于時域NLMS和頻域NLMS之間,但是當(dāng)?shù)竭_(dá)收斂狀態(tài)之后,本文所采用的算法穩(wěn)態(tài)誤差最??;在回波抑制比方面,本文所采用的方法到達(dá)穩(wěn)態(tài)后回波抑制比最高。當(dāng)環(huán)境發(fā)生突變之后,本文算法的穩(wěn)態(tài)誤差和收斂速度都能達(dá)到較好的水平。
圖4 白噪聲輸入下的歸一化失調(diào)和回波抑制比
實(shí)驗(yàn)二:真實(shí)話音作為輸入。遠(yuǎn)端話音輸入為一段長為20秒的語音,近端話音在4~8秒處有一段長為4秒的語音,且在近端添加相較于近端話音信噪比為30 dB的白噪聲作為背景噪聲,近端語音、背景噪聲和回聲信號一起作為近端麥克風(fēng)的采集信號。信號采樣率設(shè)為8 kHz。遠(yuǎn)端話音、近端話音及麥克風(fēng)話音的時域波形如圖5所示。
圖5 遠(yuǎn)端話音、近端話音及麥克風(fēng)話音時域波形
存在雙話情況下三種方法進(jìn)行回聲消除后,輸出語音的時域波形如圖6所示。從時域波形可以看出,三種方法均對回聲信號有一定的抑制作用,在雙講時刻都能防止濾波器的發(fā)散。但從圖中可以看出,在近端含背景噪聲的情況下,從聽覺感受上基于GEIGEL-NLMS算法的語音失真最嚴(yán)重,NCC-NLMS算法下的殘留回聲最大,本文方法的殘留回聲最小、語音失真也最小、語音的聽覺感受最好。說明無論在雙講時刻還是在非雙講時刻,本文所提方法均優(yōu)于GEIGEL算法和簡單的時域NCC算法的回聲消除效果。
圖6 三種方法下的輸出語音
三種方法的回波抑制比如圖7所示,可以看出三種方法在雙講時刻下的性能都沒有發(fā)生嚴(yán)重惡化,雖然基于NCC算法的兩種方法在自適應(yīng)迭代初始的收斂速度較為緩慢,但基于GEIGEL算法的方法在接近收斂后的回波抑制低于另外兩種方法。另外,雙講時刻下三種算法的回波抑制比均有一定程度的下降,其中GEIGEL算法下降最明顯,本文所提算法下降程度最低。本文所提出的方法在回波抑制效果和收斂速度上均達(dá)到了比較理想的效果,在較低的算法復(fù)雜度下實(shí)現(xiàn)了較好的回波消除效果。
圖7 三種方法的回波抑制比
本文提出了一種適用于雙端通話下的回聲消除結(jié)構(gòu),該結(jié)構(gòu)中采用NCC算法進(jìn)行雙端檢測,PFBLMS算法進(jìn)行自適應(yīng)濾波器系數(shù)更新,最后采用后置濾波技術(shù)消除殘余回聲。算法時間復(fù)雜度方面,回聲消除系統(tǒng)所采用的PFBLMS算法相比于時域NLMS算法降低了復(fù)雜度,相比于頻域LMS算法減少了時延。仿真實(shí)驗(yàn)表明,該系統(tǒng)的回聲性能優(yōu)于傳統(tǒng)的GEIGEL-NLMS算法及NCC-NLMS算法下的回聲消除,在語音失真度較小的情況下消除了殘留回聲。本文提出的回聲消除結(jié)構(gòu)也有一些待改進(jìn)的方面,①NCC算法的最優(yōu)門限難以確定,遠(yuǎn)端話音改變或回聲路徑延遲過大都有可能造成最優(yōu)門限改變;②經(jīng)過非線性處理之后的近端語音仍然有一定程度的失真。接下來的工作將考慮針對這些缺點(diǎn)不斷完善和優(yōu)化所提出的回聲消除系統(tǒng)。