1 系統架構
本文回聲消除模塊的總體設計如圖2所示。
如圖,本文設計的DSP系統可以劃分成信號輸入模塊、算法實現模塊和信號輸出模塊。
信號輸入模塊,可分為主通道和參考通道。DSP在處理算法時需要用到遠端語音輸入信號和近端語音輸入信號。主通道和參考通道分別采集近端語音信號和遠端語音信號,經過處理轉換成數字信號,同時送入到DSP中進行處理。
算法實現是自適應濾波器設計的核心部分。本文采用型號為TMS320F28335的高速信號處理器。已經轉換成數字信號的主通道和參考通道信號在高速信號處理器中按照自適應濾波算法進行處理,處理完成以后送到系統的輸出模塊。在信號的輸出模塊,通過數模轉換器得到模擬信號,再經過低通濾波,送給揚聲器輸出,由此得到經過回聲消除以后的語音信號。
本文設計的自適應回聲消除模塊的程序設計流程圖如圖3所示。在各個子模塊的程序設計中,通過調用集成在CCS開發平臺中的芯片支持庫,可以有效地簡化開發流程,極大地提高工作效率。
2 軟件設計
CCS(Code Composer Studio)是美國德州儀器公司(Texas Instrument,簡稱TI)推出的代碼開發和調試軟件。
自適應濾波算法的軟件實現流程框圖如圖4所示。根據濾波器系數迭代數據以后,并不需要根據計算誤差e(n)來判斷計算得到的數據是否輸出。而是不管得到的數據和目標數據的誤差有多大,都把該數據輸出,所以輸出的數據有個收斂的過程,剛開始誤差比較大,往后就穩定在一個較小的誤差范圍以內。
在CCS開發平臺上搭建好開發環境,選擇目標配置對象為TMS320F28335,用C語言編寫實現LMS自適應算法的核心程序代碼如下:
for(i=0;i《n;i++)《 p=“”》
{
sum = 0.0f;
for(j=0;j《m;j++)《 p=“”》
{
sum+=h[j]*x[i+j];
}
y[i]=sum;
error=d[i]-y[i];
for(j=0;j《nh;j++)《 p=“”》
{
h[j]=h[j]+(miu*error*x[i+j]);
}
}
首先對程序中需要用到的各個參數進行初始化,取每一次需要處理的信號序列長度N=512,濾波器的階數M=4,步長因子miu=0.0001。用MATLAB錄制一段語音從參考通道輸入,作為回聲消除算法的遠端參考語音。同時把這段語音從主通道輸入,在DSP處理器中把它縮小為原來的三分之一,作為近端回聲信號。
在視頻和音頻數據流控制中經常用到一種被稱為“乒乓操作”的處理機制。它的最大特點是接收數據流的緩存單元按照一定規律有節拍的切換,這樣數據就傳送的很順暢,不會丟失,而且沒有任何停頓,不會阻塞。這種方式非常適合音頻和視頻數據的流水線處理。在每一段單位時間內,處理器處理數據的時間不能過長,否則本段數據還沒有處理完成,下一段數據就已經來了,這樣就會導致數據的丟失和錯亂。通過DMA實現“乒乓操作”的流程如圖5所示。
3 雙端檢測(DTD)
雙端通話指近端和遠端同時說話的情況,此時遠端、近端語音信號不相關,近端語音在算法處理時會表現成一個干擾信號,使得自適應濾波器性能變差,甚至發散。因此,為了使濾波器適應雙端通話的情況,需要在回聲消除系統中添加一個雙端通話檢測器(Double-Talk Detector,DTD)。通過它來區分單端和雙端通話,如果不存在雙端通話時,濾波器就實時更新其系數,反之,濾波器系數則停止更新。
目前,最常見的DTD算法有互相關比較法和能量比較法。
4 硬件設計
具體硬件設計如圖6所示。整個硬件系統以TMS320F28335型號的DSP為核心,通過編碼器TLV320AIC23b與外部進行語音信號的交換(TLV320AIC23b實現語音信號的模擬-數字,數字-模擬的轉換工作)。TMS320F28335對TLV320AIC23b的控制通過I2C總線實現,其數據交換通過多通道緩沖端口(McBSP)來完成。JTAG通過仿真器連接DSP與上位機,以實現程序的下載、調試。其他模塊與DSP構成能正常工作的最小系統。DSP與編碼器的具體連接如圖7所示。TLV320AIC23b數字音頻接口與DSP之間的數據傳輸時序如圖8所示。
在音頻信號的輸入端和輸出端各加了一級濾波器,濾除高頻信號的干擾。共有兩個通道,分別獲取遠端參考信號和近端回聲信號。
為了使編碼器能夠正常工作,需要對它內部的寄存器進行配置,配置是通過控制接口(I2C接口)來完成的。對應的配置命令字的前7位表示的是寄存器地址,后9位代表對寄存器的配置內容。該音頻芯片提供了11個配置寄存器,如表1所示。
在本DSP系統設計中,采用+5 V的穩壓直流輸入作為外部引入電源,這樣首先就滿足了模擬電路供電需求,并且通過LM117DT3-3.3電源轉換芯片將5 V轉換為3.3 V來給I/O引腳及部分外圍電路,再通過LM117DT3-1.8電源轉換芯片將3.3 V主電源轉換為1.8 V,給DSP內核供電。
5 回聲消除系統調試
為了驗證本文所設計的自適應濾波器的功能,設計了一個模擬實際通話環境的回聲消除實驗。
場景布置:房間A作為遠端房間,房間B作為近端房間,兩個房間的參與者利用局域網傳輸工具FeiQ進行語音通信。A說話的聲音被計算機的麥克風捕獲到,通過網絡傳到B房間的計算機中,此時聲音從計算機中分為兩路輸出,其中一路直接輸入到回聲消除模塊的參考通道,另一路則通過揚聲器輸出,作為遠端參與者傳輸給近端參與者的聲音信息。揚聲器出來的聲音和近端參與者說話的聲音通過麥克風進入回聲消除模塊的主通道,主通道和參考通道的聲音經過DSP處理后輸出,輸出的聲音通過電腦的麥克風再經過網絡傳輸給A房間的遠端參與者。
6 結果分析
根據原理圖設計PCB,最后設計好的完整的回聲消除模塊如圖9所示。模塊中包含兩個輸入通道,兩個輸出通道,一個電源接口,一個調試接口。按照上文所述的方式搭建測試環境。
第一次測試,不加回聲消除算法,用錄音軟件錄下回聲大小,如圖10所示。
在相同條件下,加入回聲消除算法,用錄音軟件錄得的回聲波形如圖11。
通過波形曲線,測得不加回聲算法和加入回聲算法的回聲幅度大小,經過計算,回聲抑制比為26 dB,對回聲起到了很好的抑制作用,增強了近端和遠端說話者的通話體驗。
從圖11中可以看出,回聲的波形仍然存在,所以回聲只是被抑制了,并沒有被徹底消除。這是因為實際的環境沒有仿真環境理想,DSP的精度限制了回聲算法的收斂精度,使得最后的收斂曲線會在一個很小的范圍內波動;另一方面,算法的性能也影響收斂精度,步長因子和權系數迭代公式決定了誤差的波動范圍。所以,提高回聲抑制比的最主要方式是提高DSP的運算精度和算法的性能。
-
dsp
+關注
關注
554文章
8059瀏覽量
350447 -
放大器
+關注
關注
143文章
13634瀏覽量
214216 -
濾波器
+關注
關注
161文章
7862瀏覽量
178936
發布評論請先 登錄
相關推薦
speex中的回聲消除模塊如何移植到dsp
基于FPGA的多路回聲消除算法的實現
如何在PFGA中實現高速的自適應濾波器?
LabVIEW開發自適應降噪ANC
長時延環境中的回聲消除器設計
自適應小波變換擴頻數字水印檢測DSP系統
IP電話回聲消除器的設計及其DSP實現
![IP電話<b class='flag-5'>回聲</b><b class='flag-5'>消除</b>器的設計及其<b class='flag-5'>DSP</b>實現](https://file1.elecfans.com//web2/M00/A4/DB/wKgZomUMNfeASmpRAABNls5I4ME400.jpg)
基于改進LMS自適應并行多址干擾消除
![基于改進LMS<b class='flag-5'>自適應</b>并行多址干擾<b class='flag-5'>消除</b>](https://file.elecfans.com/web2/M00/49/5D/pYYBAGKhtEmAd6FdAAATx6w8QRs276.jpg)
如何使用VSS-LMS算法進行自適應回聲消除算法的研究與實現
![如何使用VSS-LMS算法進行<b class='flag-5'>自適應</b><b class='flag-5'>回聲</b><b class='flag-5'>消除</b>算法的研究與實現](https://file.elecfans.com/web1/M00/7E/B7/pIYBAFwYbWiAHER_AADkey76f3w157.png)
評論