較之傳統(tǒng)電話,VoIP語音質(zhì)量較差。影響因特網(wǎng)語音質(zhì)量的關(guān)鍵因素之一是回聲。要提高因特網(wǎng)的語音質(zhì)量,就必須在語音傳輸?shù)倪^程中進(jìn)行回聲消除的處理。AEC是基于自適應(yīng)算法、可被應(yīng)用于VoIP的回聲消除技術(shù)。 本文用于AEC算法實(shí)現(xiàn)與研究的硬件平臺(tái)足以Freescale公司的MCF5235為核心的開發(fā)板。MCF523x系列是以帶有增強(qiáng)型乘加運(yùn)算單元(eMAC)的ColdFire V2內(nèi)核為核心,同時(shí)結(jié)合了增強(qiáng)型時(shí)序處理單元(eTPU)和10/100M以太網(wǎng)多媒體通道控制模塊(MAC)的MCU,具有強(qiáng)大的數(shù)據(jù)處理能力和豐富的接口,能夠滿足VoIP電話終端對(duì)于數(shù)據(jù)處理速度以及剛絡(luò)通信安全性的要求。 回聲消除器介紹 聲學(xué)回聲消除原理 AEC是以揚(yáng)聲器信號(hào)與由它產(chǎn)生的多路徑回聲的相關(guān)性為基礎(chǔ),建立遠(yuǎn)端信號(hào)的語音模型,利用它對(duì)回聲進(jìn)行估計(jì),并不斷修改濾波器的系數(shù),使得估計(jì)值更加逼近真實(shí)的回聲。然后,將回聲估計(jì)值從話筒的輸入信號(hào)中減去,從而達(dá)到消除回聲的目的。 聲學(xué)回聲消除器的結(jié)構(gòu)如圖l所示。y(n)代表遠(yuǎn)端語音信號(hào),r(n)代表回聲,x(n)是近端語音信號(hào)。近端信號(hào)x(n)疊加了回聲信號(hào)r(n)。對(duì)同聲消除器來說,將遠(yuǎn)端信號(hào)作為一個(gè)參考信號(hào),自適應(yīng)濾波器用它來產(chǎn)生回聲的估計(jì)值r'(n),從近端帶有回聲的語音信號(hào)中將r'(n)減去,估計(jì)出近端輸出信號(hào)μ(n)。在近端沒有說話的情況下,即當(dāng)x(n)=0時(shí),μ(n)為回聲的殘差信號(hào)e(n)。e(n)的計(jì)算方程為: 此時(shí),回聲的殘留信號(hào)的理想值應(yīng)為0。 自適應(yīng)FIR濾波器 在聲學(xué)回聲消除器里,橫向結(jié)構(gòu)的自適應(yīng)濾波器通過采用參考信號(hào)來產(chǎn)生回聲的副本,如果這個(gè)橫向結(jié)構(gòu)的自適應(yīng)濾波器的轉(zhuǎn)換函數(shù)與回聲通道的函數(shù)模型一致,那么,回聲的副本與回聲就應(yīng)該是一致的,通過兩者的抵消就可以達(dá)到消除回聲的目的。 FIR濾波器的最主要特點(diǎn)是沒有反饋回路,是一種非遞歸系統(tǒng),它的沖激響應(yīng)h(n)是一個(gè)有限長(zhǎng)序列。下面的方程被用來計(jì)算FIR濾波器的輸出: 自適應(yīng)FIR濾波器是根據(jù)上一時(shí)刻的近端輸出信號(hào)μ(n)以及遠(yuǎn)端語音信號(hào)y(n),通過某種自適應(yīng)算法來估算當(dāng)前時(shí)刻FIR濾波器的系數(shù)ak(n+1)。 LMS和NLMS算法 在輸入信號(hào)和參考信號(hào)都是平穩(wěn)隨機(jī)信號(hào)的情況下,自適應(yīng)濾波器的均方誤差E[e(n)]性能曲面是濾波器加權(quán)系數(shù)ak的二次函數(shù)。其系數(shù)修正的算法通常是采用使均方誤差最小的最優(yōu)化求解算法,如最速下降算法。 由于實(shí)際的梯度值只能根據(jù)觀測(cè)數(shù)據(jù)估計(jì),因此,LMS算法提出的一個(gè)基本思想就是用平方誤差來代替均方誤差。它是對(duì)基本的最速下降算法的改進(jìn),其算法迭代公式為: 其中,y(n)為輸入信號(hào),μ為迭代步長(zhǎng)常量。 規(guī)一化LMS(NLMS)算法被用來在LMS自適應(yīng)濾波器方程里修正FIR濾波器的系數(shù)。NLMS算法與LMS算法幾乎是一樣的,唯一的不同是在NLMS算法中用可變的步長(zhǎng)控制因予代替了LMS算法中的常量因子,其目的是加快算法的收斂速度。其算法迭代公式為: 其中μ應(yīng)由試驗(yàn)來確定。μ的選取至關(guān)重要,為了確保收斂,必須滿足0<μ<2。本方案中的自適應(yīng)算法就采用了NLMS。 實(shí)現(xiàn)方案 聲學(xué)回聲消除器AEC主要包括FIR濾波模塊、Geigle雙端語音判決模塊、NLMS系數(shù)更新模塊、語音狀態(tài)控制模塊4個(gè)部分,圖2為AEC簡(jiǎn)要的結(jié)構(gòu)。 Freescale公司的硬件開發(fā)平臺(tái)是以Coldfire系列MCF5235為核心。該系列MCU支持標(biāo)準(zhǔn)C語言以及其專用的匯編語言。最終在該平臺(tái)上運(yùn)行的功能模塊需要使用C語言或者專用匯編語言。AEC的開發(fā)以及移植過程如圖3所示。 首先,搭建AEC的Matlab模型并對(duì)該模型進(jìn)行仿真驗(yàn)證。然后,以已通過驗(yàn)證的模犁為標(biāo)準(zhǔn),搭建可在MCF5235開發(fā)板上運(yùn)行的C語言模型。最后根據(jù)需要,將運(yùn)算較為密集的那部分C語言程序轉(zhuǎn)化為Coldfire芯片的專用匯編語言。 實(shí)驗(yàn)結(jié)果及分析 在Matlab環(huán)境下,對(duì)AEC進(jìn)行測(cè)試。將需要的三部分語音信號(hào)同時(shí)輸入到回聲消除器,測(cè)試回聲消除的相關(guān)性能。 輸入語音信號(hào)波形如圖4所示,從上到下依次表示遠(yuǎn)端語音信號(hào)y(n)、近端語音信號(hào)x(n)和回聲信號(hào)echo(n),其中,echo(n)與x(n)之和作為近端輸入,與y(n)一同構(gòu)成了回聲消除器的兩個(gè)輸入信號(hào)。將濾波器的階數(shù)設(shè)置為512,即采取64ms延時(shí)的回聲消除,通過回聲消除處理得到殘差信號(hào)e(n),其波形如圖5所示。 從圖4和圖5的對(duì)比中可以發(fā)現(xiàn),當(dāng)只存在遠(yuǎn)端信號(hào)和回聲信號(hào),近端緘默的情況下,回聲消除器能夠快速收斂并消除絕大部分的回聲;當(dāng)雙端存在信號(hào),回聲消除器能在消除回聲的基礎(chǔ)上較好地保持近端語音波形。 將AEC功能模塊集成到以MCF5235開發(fā)板搭建的VoIP終端上,建立兩個(gè)通信終端的語音通信,可對(duì)AEC功能模塊進(jìn)行實(shí)時(shí)免提通話測(cè)試。 結(jié)語 本文介紹了聲學(xué)回聲消除的原理,并介紹了聲學(xué)回聲消除器的設(shè)計(jì)以及AEC在基于MCF5235開發(fā)平臺(tái)的VoIP語音通信終端上的集成。該AEC實(shí)現(xiàn)了包括語音檢測(cè)、自適應(yīng)濾波等語音處理算法。程序執(zhí)行的實(shí)時(shí)性良好。通過Matlab模型的仿真和通話主觀測(cè)試的結(jié)果,證明該方案實(shí)現(xiàn)的聲學(xué)回聲消除器能夠滿足網(wǎng)絡(luò)通信對(duì)語音的要求。 |