作者:龔樂中;李廣軍;郭志勇
引言
VoIP是在IP網絡上實現音視頻及傳真信號傳輸的一門全新的集成業務數據網絡技術。IP語音傳輸技術具有節省帶寬、話費低,可方便地集成智能型開放體系結構以及多媒體業務等優勢。但較之傳統電話,其語音質量較差。事實上,影響因特網語音質量的因素是多方面的,關鍵因素之一是回聲的影響。因此,要提高因特網的語音質量,就必須在語音傳輸過程中進行回聲消除。AEC是基于自適應算法并可用于VoIP的聲學回聲消除技術。而用于AEC算法的實現與研究的硬件平臺是以freescale公司的MCF5235為核心的開發板。MCF523x系列MCU是首個以帶有增強型乘加運算單元(eMAC)的ColdFire V2內核為核心,該產品同時結合了增強型時序處理單元(eTPU)和10/100以太網多媒體通道控制模塊(MAC)的MCU,因而具有強大的數據處理能力和豐富的接口,能夠滿足VoIP電話終端對數據處理速度以及網絡通訊安全的要求。
1 回聲消除
1.1 聲學回聲消除原理
AEC是以揚聲器信號與由它產生的多路徑回聲的相關性為基礎建立的遠端信號語音模型,利用它可對回聲進行估計,并不斷地修改濾波器的系數,以使估計值更逼近真實的回聲,然后,將回聲估計值從話筒的輸人信號中減去,從而達到消除回聲之目的。
聲學回聲消除器的結構原理如圖1所示。其中y(n)代表遠端語音信號,r(n)代表回聲,x(n)是已經疊加了回聲信號r(n)的近端語音信號。對回聲消除器來說,可將遠端信號作為一個參考信號,然后由自適應濾波器通過它來產生回聲的估計值r′(n),再從近端帶有回聲的語音信號中減去r′(n),從而估計出近端輸出信號μ(n)。在近端未說話時,即當x(n)=0時,μ(n)即為回聲的殘差信號e(n)。e(n)的計算方程為:
e(n)=r(n)-r′(n) (1)
此時,回聲的殘留信號的理想值應為0。
1.2 自適應FIR濾波器
在聲學回聲消除器里,橫向結構的自適應濾波器可通過參考信號來產生回聲的副本,其原理如圖2所示。如果這個橫向結構的自適應濾波器的轉換函數與回聲通道的函數模型一致,那么,回聲的副本與回聲就應該是一致的,這樣,通過兩者的抵消便可達到消除回聲之目的。
FIR濾波器的最主要特點是沒有反饋回路,這是一種非遞歸系統,它的沖激響應是一個有限長序列。FIR濾波器的輸出計算公式為:
自適應FIR濾波器根據上一刻的近端輸出信號μ(n)及遠端語音信號y(n),并通過自適應算法來估算當前時刻FIR濾波器的系數ak(n+1)。
1.3 LMS算法和NLMS算法
在輸入信號和參考信號都是平穩隨機信號的情況下,自適應濾波器的均方誤差E[e(n)]性能曲面是濾波器加權系數ak的二次函數。其系數修正算法通常采用可使均方誤差最小的最優化求解算法。
由于實際的梯度值只能根據觀測數據估計,因此LMS算法提出的一個基本思想就是用平方誤差E[e2(n)]來代替均方誤差E[e(n)]。它是對基本的最速下降算法的改進,其算法迭代公式為:
ak(n+1)=ak(n)+2μe(e)*y(n) (3)
其中y(n)為輸入信號,μ為迭代步長常量。
規一化LMS (NLMS)算法可用來在LMS自適應濾波器方程里修正FIR濾波器的系數。NLMS算法與LMS算法幾乎是一樣的,唯一的不同是NLMS算法中使用可變步長控制因子來代替LMS算法中的常量因子。其目的是加快算法的收斂速度。其算法迭代公式為:
其中,μ可由試驗來確定。但應注意,μ的選取至關重要,為了確保收斂,必須滿足0《μ《2。本方案中的自適應算法就是采用NLMS算法。
1.4 語音檢測
語音活動檢測可用來確定三種語音狀態:近端講話狀態、遠端講話狀態和雙端講話狀態。因為AEC要根據不同的語音活動狀態來進行相應的處理。它在檢測到近端語音活動狀態時,濾波器既不進行濾波,也不進行系數更新;而在檢測到雙端語音活動狀態時,將停止濾波器系數的更新,但要進行濾波。由于在只有遠端語音活動的狀態下,既要進行濾波,又要進行系數更新。因此,語音活動狀態檢測的正確與否在很大程度上會影響回聲消除的效果。語音活動檢測流程如圖3所示。
雙端講話情況可以通過設計近端話音檢測器,并采用Geigel算法來判決。利用該算法計算回聲延時大小范圍內的瞬時能量比較,具有著良好的性能優勢。其Geigel算法描述如下:
式中,N是FIR延時級數,之所以將r(i)和最近N個遠端輸入的最大值進行比較,而不是僅僅和當前遠端輸入點y(i)進行比較,是因為回聲路徑延時具有不確定性。
2 實現方案
聲學回聲消除器AEC主要包括FIR濾波模塊、Geigle雙端語音判決模塊、NLMS系數更新模塊、語音狀態控制模塊四個部分,圖4所示是該AEC的簡要工作流程。
Freescale公司的硬件開發平臺以Coldfire系列MCF5235為核心。該系列MCU支持標準C語言及其專用的匯編語言。因此,在該平臺上運行的功能模塊需要使用C語言或者專用匯編。AEC的開發及移植過程如圖5所示。
設計時。首先應搭建AEC的Matlab模型并對該模型進行仿真驗證。然后以已通過驗證的模型為標準,搭建可在MCF5235開發板上運行的C語言模型。最后根據需要將運算較為密集的那部分C語言程序轉化為Coldfire芯片的專用匯編語言。
3 實驗結果及分析
在Matlab環境下對AEC進行測試時,可將需要的三部分語音信號同時輸入到回聲消除器,然后測試回聲消除的相關性能。
本測試所輸入的語音信號波形如圖6所示。從上到下依次是遠端語音信號y(n)、近端語音信號x(n)和回聲信號,其中與之和作為近端輸入與y(n)一同構成了回聲消除器的兩個輸入信號。將濾波器的階數設置為512。即采取64 ms延時的回聲消除。通過回聲消除處理后所得到的殘差信號e(n)的波形如圖7所示。
從圖6和圖7的對比可以發現,當只存在遠端信號和回聲信號,而近端緘默的情況下,回聲消除器能夠快速收斂并消除絕大部分回聲;而當雙端都存在信號時,回聲消除器能在消除回聲的基礎上較好的保持近端語音波形。
將AEC功能模塊集成到用MCF5235開發板搭建的VoIP終端上,來建立兩個通信終端的語音通信,即可對AEC功能模塊進行實時免提通話測試。
4 結束語
本文介紹了聲學回聲消除的原理、聲學回聲消除器的設計以及AEC在基于freescale公司MCF5235開發平臺的VoIP語音通信終端上的集成方法。該AEC的實現包括語音檢測、自適應濾波等語音處理算法。其程序執行的實時性較好。通過Matlab模型的仿真結果和通話主觀測試結果證明,用該方案實現的聲學回聲消除器能夠滿足網絡通信對語音的要求。
責任編輯:gt
-
濾波器
+關注
關注
161文章
7796瀏覽量
177996 -
開發板
+關注
關注
25文章
5033瀏覽量
97375
發布評論請先 登錄
相關推薦
評論