基于DSP的回聲消除系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
作者 / 程穎菲1 于偉健2 王建明 1.西安鐵路職業(yè)技術(shù)學(xué)院(陜西 西安 710014) 2.西安恒飛電子科技有限公司(陜西 西安 710068)
本文引用地址:http://www.ex-cimer.com/article/201811/395040.htm摘要:在通信行業(yè)日漸發(fā)達(dá)的今天,回聲消除的應(yīng)用十分廣泛。為了滿足自適應(yīng)濾波器回聲消除系統(tǒng)實(shí)時(shí)性和精確性的要求,本文選取具有強(qiáng)大信號(hào)處理能力和控制能力的數(shù)字信號(hào)處理器(digital signal processer,簡(jiǎn)稱DSP)作為核心算法的處理芯片來(lái)完成回聲消除的硬件實(shí)現(xiàn)。
0 引言
常見(jiàn)的DSP系統(tǒng)的結(jié)構(gòu)主要由低通濾波器、放大器、模數(shù)轉(zhuǎn)換器(ADC)、數(shù)字信號(hào)處理器和數(shù)模轉(zhuǎn)換器(DAC)五個(gè)模塊構(gòu)成。DSP系統(tǒng)設(shè)計(jì)步驟如圖1所示。
1 系統(tǒng)架構(gòu)
本文回聲消除模塊的總體設(shè)計(jì)如圖2所示。
如圖,本文設(shè)計(jì)的DSP系統(tǒng)可以劃分成信號(hào)輸入模塊、算法實(shí)現(xiàn)模塊和信號(hào)輸出模塊。
信號(hào)輸入模塊,可分為主通道和參考通道。DSP在處理算法時(shí)需要用到遠(yuǎn)端語(yǔ)音輸入信號(hào)和近端語(yǔ)音輸入信號(hào)。主通道和參考通道分別采集近端語(yǔ)音信號(hào)和遠(yuǎn)端語(yǔ)音信號(hào),經(jīng)過(guò)處理轉(zhuǎn)換成數(shù)字信號(hào),同時(shí)送入到DSP中進(jìn)行處理。
算法實(shí)現(xiàn)是自適應(yīng)濾波器設(shè)計(jì)的核心部分。本文采用型號(hào)為T(mén)MS320F28335的高速信號(hào)處理器。已經(jīng)轉(zhuǎn)換成數(shù)字信號(hào)的主通道和參考通道信號(hào)在高速信號(hào)處理器中按照自適應(yīng)濾波算法進(jìn)行處理,處理完成以后送到系統(tǒng)的輸出模塊。在信號(hào)的輸出模塊,通過(guò)數(shù)模轉(zhuǎn)換器得到模擬信號(hào),再經(jīng)過(guò)低通濾波,送給揚(yáng)聲器輸出,由此得到經(jīng)過(guò)回聲消除以后的語(yǔ)音信號(hào)。
本文設(shè)計(jì)的自適應(yīng)回聲消除模塊的程序設(shè)計(jì)流程圖如圖3所示。在各個(gè)子模塊的程序設(shè)計(jì)中,通過(guò)調(diào)用集成在CCS開(kāi)發(fā)平臺(tái)中的芯片支持庫(kù),可以有效地簡(jiǎn)化開(kāi)發(fā)流程,極大地提高工作效率。
2 軟件設(shè)計(jì)
CCS(Code Composer Studio)是美國(guó)德州儀器公司(Texas Instrument,簡(jiǎn)稱TI)推出的代碼開(kāi)發(fā)和調(diào)試軟件。
自適應(yīng)濾波算法的軟件實(shí)現(xiàn)流程框圖如圖4所示。根據(jù)濾波器系數(shù)迭代數(shù)據(jù)以后,并不需要根據(jù)計(jì)算誤差e(n)來(lái)判斷計(jì)算得到的數(shù)據(jù)是否輸出。而是不管得到的數(shù)據(jù)和目標(biāo)數(shù)據(jù)的誤差有多大,都把該數(shù)據(jù)輸出,所以輸出的數(shù)據(jù)有個(gè)收斂的過(guò)程,剛開(kāi)始誤差比較大,往后就穩(wěn)定在一個(gè)較小的誤差范圍以內(nèi)。
在CCS開(kāi)發(fā)平臺(tái)上搭建好開(kāi)發(fā)環(huán)境,選擇目標(biāo)配置對(duì)象為T(mén)MS320F28335,用C語(yǔ)言編寫(xiě)實(shí)現(xiàn)LMS自適應(yīng)算法的核心程序代碼如下:
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]);
}
}
首先對(duì)程序中需要用到的各個(gè)參數(shù)進(jìn)行初始化,取每一次需要處理的信號(hào)序列長(zhǎng)度N=512,濾波器的階數(shù)M=4,步長(zhǎng)因子miu=0.0001。用MATLAB錄制一段語(yǔ)音從參考通道輸入,作為回聲消除算法的遠(yuǎn)端參考語(yǔ)音。同時(shí)把這段語(yǔ)音從主通道輸入,在DSP處理器中把它縮小為原來(lái)的三分之一,作為近端回聲信號(hào)。
在視頻和音頻數(shù)據(jù)流控制中經(jīng)常用到一種被稱為“乒乓操作”的處理機(jī)制。它的最大特點(diǎn)是接收數(shù)據(jù)流的緩存單元按照一定規(guī)律有節(jié)拍的切換,這樣數(shù)據(jù)就傳送的很順暢,不會(huì)丟失,而且沒(méi)有任何停頓,不會(huì)阻塞。這種方式非常適合音頻和視頻數(shù)據(jù)的流水線處理。在每一段單位時(shí)間內(nèi),處理器處理數(shù)據(jù)的時(shí)間不能過(guò)長(zhǎng),否則本段數(shù)據(jù)還沒(méi)有處理完成,下一段數(shù)據(jù)就已經(jīng)來(lái)了,這樣就會(huì)導(dǎo)致數(shù)據(jù)的丟失和錯(cuò)亂。通過(guò)DMA實(shí)現(xiàn)“乒乓操作”的流程如圖5所示。
3 雙端檢測(cè)(DTD)
雙端通話指近端和遠(yuǎn)端同時(shí)說(shuō)話的情況,此時(shí)遠(yuǎn)端、近端語(yǔ)音信號(hào)不相關(guān),近端語(yǔ)音在算法處理時(shí)會(huì)表現(xiàn)成一個(gè)干擾信號(hào),使得自適應(yīng)濾波器性能變差,甚至發(fā)散。因此,為了使濾波器適應(yīng)雙端通話的情況,需要在回聲消除系統(tǒng)中添加一個(gè)雙端通話檢測(cè)器(Double-Talk Detector,DTD)。通過(guò)它來(lái)區(qū)分單端和雙端通話,如果不存在雙端通話時(shí),濾波器就實(shí)時(shí)更新其系數(shù),反之,濾波器系數(shù)則停止更新。
目前,最常見(jiàn)的DTD算法有互相關(guān)比較法和能量比較法。
4 硬件設(shè)計(jì)
具體硬件設(shè)計(jì)如圖6所示。整個(gè)硬件系統(tǒng)以TMS320F28335型號(hào)的DSP為核心,通過(guò)編碼器TLV320AIC23b與外部進(jìn)行語(yǔ)音信號(hào)的交換(TLV320AIC23b實(shí)現(xiàn)語(yǔ)音信號(hào)的模擬-數(shù)字,數(shù)字-模擬的轉(zhuǎn)換工作)。TMS320F28335對(duì)TLV320AIC23b的控制通過(guò)I2C總線實(shí)現(xiàn),其數(shù)據(jù)交換通過(guò)多通道緩沖端口(McBSP)來(lái)完成。JTAG通過(guò)仿真器連接DSP與上位機(jī),以實(shí)現(xiàn)程序的下載、調(diào)試。其他模塊與DSP構(gòu)成能正常工作的最小系統(tǒng)。DSP與編碼器的具體連接如圖7所示。TLV320AIC23b數(shù)字音頻接口與DSP之間的數(shù)據(jù)傳輸時(shí)序如圖8所示。
在音頻信號(hào)的輸入端和輸出端各加了一級(jí)濾波器,濾除高頻信號(hào)的干擾。共有兩個(gè)通道,分別獲取遠(yuǎn)端參考信號(hào)和近端回聲信號(hào)。
為了使編碼器能夠正常工作,需要對(duì)它內(nèi)部的寄存器進(jìn)行配置,配置是通過(guò)控制接口(I2C接口)來(lái)完成的。對(duì)應(yīng)的配置命令字的前7位表示的是寄存器地址,后9位代表對(duì)寄存器的配置內(nèi)容。該音頻芯片提供了11個(gè)配置寄存器,如表1所示。
在本DSP系統(tǒng)設(shè)計(jì)中,采用+5 V的穩(wěn)壓直流輸入作為外部引入電源,這樣首先就滿足了模擬電路供電需求,并且通過(guò)LM117DT3-3.3電源轉(zhuǎn)換芯片將5 V轉(zhuǎn)換為3.3 V來(lái)給I/O引腳及部分外圍電路,再通過(guò)LM117DT3-1.8電源轉(zhuǎn)換芯片將3.3 V主電源轉(zhuǎn)換為1.8 V,給DSP內(nèi)核供電。
5 回聲消除系統(tǒng)調(diào)試
為了驗(yàn)證本文所設(shè)計(jì)的自適應(yīng)濾波器的功能,設(shè)計(jì)了一個(gè)模擬實(shí)際通話環(huán)境的回聲消除實(shí)驗(yàn)。
場(chǎng)景布置:房間A作為遠(yuǎn)端房間,房間B作為近端房間,兩個(gè)房間的參與者利用局域網(wǎng)傳輸工具FeiQ進(jìn)行語(yǔ)音通信。A說(shuō)話的聲音被計(jì)算機(jī)的麥克風(fēng)捕獲到,通過(guò)網(wǎng)絡(luò)傳到B房間的計(jì)算機(jī)中,此時(shí)聲音從計(jì)算機(jī)中分為兩路輸出,其中一路直接輸入到回聲消除模塊的參考通道,另一路則通過(guò)揚(yáng)聲器輸出,作為遠(yuǎn)端參與者傳輸給近端參與者的聲音信息。揚(yáng)聲器出來(lái)的聲音和近端參與者說(shuō)話的聲音通過(guò)麥克風(fēng)進(jìn)入回聲消除模塊的主通道,主通道和參考通道的聲音經(jīng)過(guò)DSP處理后輸出,輸出的聲音通過(guò)電腦的麥克風(fēng)再經(jīng)過(guò)網(wǎng)絡(luò)傳輸給A房間的遠(yuǎn)端參與者。
6 結(jié)果分析
根據(jù)原理圖設(shè)計(jì)PCB,最后設(shè)計(jì)好的完整的回聲消除模塊如圖9所示。模塊中包含兩個(gè)輸入通道,兩個(gè)輸出通道,一個(gè)電源接口,一個(gè)調(diào)試接口。按照上文所述的方式搭建測(cè)試環(huán)境。
第一次測(cè)試,不加回聲消除算法,用錄音軟件錄下回聲大小,如圖10所示。
在相同條件下,加入回聲消除算法,用錄音軟件錄得的回聲波形如圖11。
通過(guò)波形曲線,測(cè)得不加回聲算法和加入回聲算法的回聲幅度大小,經(jīng)過(guò)計(jì)算,回聲抑制比為26 dB,對(duì)回聲起到了很好的抑制作用,增強(qiáng)了近端和遠(yuǎn)端說(shuō)話者的通話體驗(yàn)。
從圖11中可以看出,回聲的波形仍然存在,所以回聲只是被抑制了,并沒(méi)有被徹底消除。這是因?yàn)閷?shí)際的環(huán)境沒(méi)有仿真環(huán)境理想,DSP的精度限制了回聲算法的收斂精度,使得最后的收斂曲線會(huì)在一個(gè)很小的范圍內(nèi)波動(dòng);另一方面,算法的性能也影響收斂精度,步長(zhǎng)因子和權(quán)系數(shù)迭代公式?jīng)Q定了誤差的波動(dòng)范圍。所以,提高回聲抑制比的最主要方式是提高DSP的運(yùn)算精度和算法的性能。
參考文獻(xiàn):
[1]田增山,涂正偉,龔玲,邱烈義. 雙模移動(dòng)終端主動(dòng)探測(cè)系統(tǒng)的DSP設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子技術(shù)應(yīng)用,2014,v.40;No.427(01):23-26+30.
[2]張子剛. 一種雙端通話檢測(cè)算法中噪音閾值自動(dòng)更新的方法[D].復(fù)旦大學(xué),2013.
[3]汪萌,戴禮榮,宋彥,王仁華.一種使用雙濾波器的回聲消除算法[J].數(shù)據(jù)采集與處理,2006(01):74-79.
[4]蔡宇,洪纓,原建平,侯朝煥,郝程鵬.語(yǔ)音系統(tǒng)中的子帶自適應(yīng)回聲消除技術(shù)[J].儀器儀表學(xué)報(bào),2013,34(07):9-14.
[5]成利香. 基于DSP聲回聲抵消系統(tǒng)的研究[D].中南大學(xué),2010.
本文來(lái)源于《電子產(chǎn)品世界》2018年第12期第59頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處。
評(píng)論