基于DSP的音頻會(huì )議信號合成算法研究
2.2 有無(wú)聲能量檢測
本文引用地址:http://dyxdggzs.com/article/83866.htm在ITU-T協(xié)議中有無(wú)聲檢測即語(yǔ)音激活檢測(Voice Activity Detection)。在多點(diǎn)音頻會(huì )議中,有無(wú)聲檢測使得在某一時(shí)段實(shí)際語(yǔ)音合成的終端數目大大少于與會(huì )者數目,降低了合成運算量,減輕了處理芯片的負擔。同時(shí)也是麥克風(fēng)自適應增益控制AGC的基礎。
在數字語(yǔ)音信號中,有無(wú)聲檢測是通過(guò)信號能量、過(guò)零率參數的組合,與預置的能量門(mén)限值進(jìn)行比較得出?;诙虝r(shí)平均能量的計算是利用一個(gè)固定寬度的滑動(dòng)窗口,每輸入一個(gè)最新樣本,計算該樣本之前的窗口覆蓋的所有樣本的能量平均值,將其與一個(gè)能量門(mén)限值比較來(lái)判斷該新樣本是靜音還是有聲。
如上所述,以幀為單位對數字語(yǔ)音進(jìn)行檢測,如果某一幀內有任何一個(gè)樣本是有聲,則該幀就是有聲。將窗口以幀為單位滑動(dòng),而不是以樣本為單位,直接憑每幀的最后一個(gè)樣本是有無(wú)聲來(lái)確定該幀是有聲幀或無(wú)聲幀,這種簡(jiǎn)化的判斷方式大大節省了運算量。對判斷的結果而言并無(wú)影響。
使用自適應變化的能量門(mén)限可以更加準確地對有無(wú)聲加以判斷??梢酝ㄟ^(guò)樣本短時(shí)能量的一階線(xiàn)性低通濾波得到背景噪聲能量。而自適應能量門(mén)限值則保持與短時(shí)背景噪聲能量一個(gè)靜音檢測的靈敏度常量比值So。長(cháng)時(shí)間連續講話(huà)會(huì )升高背景噪聲的估計值,這就相應地提高了靜音檢測能量門(mén)限,有可能造成緊接著(zhù)發(fā)生的低幅值的講話(huà)當作靜音而未被檢測到。所以當檢測到話(huà)音時(shí)可以通過(guò)改變低通濾波器的截止頻率來(lái)重新估計噪聲能量。
在過(guò)濾靜音的同時(shí)應當注意如何保留短時(shí)能量相對較低的微弱音頻信號,如摩擦音和輔音。這些微弱信號的存在保證了語(yǔ)音語(yǔ)義的完整性,所以在短時(shí)平均能量判斷之外還應該結合過(guò)零率的判別保留這些微弱音頻信號。采用余音生成器的方式可以實(shí)現微弱音頻信號的保留,即余音生成器將緊跟在一個(gè)語(yǔ)音串后的頭幾幀。所謂無(wú)聲的幀仍然應該被當作是有聲,從而避免低電平語(yǔ)音被抑制掉。ITU-T G.723.1A對余音生成器算法作了較詳細的設計,在此不做詳細描述。
2.3 歸一化定標處理
多路語(yǔ)音信號合成時(shí)采用線(xiàn)性疊加,必須解決的問(wèn)題是如何防止疊加產(chǎn)生溢出而導致失真。如果采樣樣本是16bit,而求和緩沖區也是16bit,那兩路音頻流就容易使求和區溢出。即使提供了高精度的求和緩沖區,使得在求和過(guò)程中不會(huì )溢出,但是這不能保證求和結果的幅值適合輸出硬件器件的要求范圍(DA器件范圍通常是16bit)。
簡(jiǎn)單的方法是對超出范圍的值箝位。更好的方法是對求和結果分幀進(jìn)行歸一化定標,具體就是:對某個(gè)求和語(yǔ)音幀中的所有樣本分析,若樣本S的值超過(guò)了器件所能表示的最大范圍,那么S之后的所有樣本均乘以一個(gè)衰減因子f。其中f是能夠使S滿(mǎn)足輸出器件范圍的最大值,顯然,f的絕對值小于1。這樣在箝位后的一段時(shí)間內,語(yǔ)音樣本之間的大小是相對不變的。
在實(shí)驗中選用了通用的16bit定點(diǎn)DSP芯片TMS320C549進(jìn)行實(shí)時(shí)仿真來(lái)完成多路音頻流的合成。各路線(xiàn)性樣本相加過(guò)程中,求和的值是不會(huì )溢出的,因為樣本是16bit,而累加器是32bit。但和值很容易超過(guò)輸出硬件設備允許的范圍(16bit)。
在歸一化定標處理中,初始化時(shí)衰減因子f為1,每次開(kāi)始處理一個(gè)新的樣本緩沖區時(shí),任何一個(gè)樣本S超過(guò)了范圍,將S箝位,并且求得S與允許范圍值的比值f,在時(shí)序上位于S之后的樣本都除以f。但是為了避免語(yǔ)音不必要的衰減,而箝位操作有讓f越來(lái)越小的趨勢,因此需要有讓f變大的地方,這發(fā)生在每個(gè)新樣本緩沖區開(kāi)始處理的入口。新的緩沖區樣本仍然需要衰減的可能性很大,所以f不適合每次都從1開(kāi)始,而是應該在某種程度上繼承過(guò)去的值。即在每個(gè)新樣本緩沖區的入口處,只要f不等于1,就將其調整為比f(wàn)稍大些的值,讓它成為新的衰減因子。若樣本的確不需要衰減,經(jīng)過(guò)若干幀后f會(huì )慢慢變回1。
定點(diǎn)DSP中不易使用除法,所以可以把所有f的值做成一張表,f的取值范圍定義為1/16、2/16,直到15/16,它的衰減精度為1/16。當S發(fā)生箝位時(shí),用比較法或者查表法求出合適f (15個(gè)取值之一)。之所以考慮是1/16的步長(cháng),是因為它已經(jīng)可以確保16個(gè)輸入流求和不會(huì )溢出,如果還需要更大的精度,可以取1/32(2的n次方由定點(diǎn)DSP實(shí)現起來(lái)較方便)。
歸納起來(lái),歸一化定標的核心思想是:f必須很快地變成合適的衰減因子,使得樣本不會(huì )溢出,然后f會(huì )慢慢地變回1。S發(fā)生箝位時(shí)f立刻被計算出,而在時(shí)間上每處理完一個(gè)求和幀后,就試圖把f向1靠近,f每次增加它與1的差值的1/16。即: f′= f+(1-f)/16。具體的定標流程圖如圖2所示。
3 試驗分析
同時(shí)輸入10路的音頻流到混音模塊,每路的采樣率都是16kHz,幀長(cháng)選擇10ms,即160個(gè)樣本。
在對電干擾進(jìn)行抵消時(shí),對于帶寬為3kHz(300~3 300Hz)的寬帶隨機白噪聲,抵消程度優(yōu)于42dB。在室外,其混響時(shí)間較小,對寬帶噪聲的聲干擾的抵消程度優(yōu)于30dB。在混響較為嚴重的實(shí)驗室中,聲干擾的抵消程度也可以?xún)?yōu)于15dB。
經(jīng)過(guò)聽(tīng)覺(jué)試驗表明,經(jīng)過(guò)定標和回波抑制的合成語(yǔ)音流輸出能夠清晰分辨出每一路的聲音。
使用Matlab比較對輸出進(jìn)行簡(jiǎn)單箝位和輸出定標兩種方式的語(yǔ)音時(shí)域波形,可以觀(guān)察到前者波形中有很多因溢出導致的“削波”,而后者的波形失真較小。
數字音頻流合成對于多點(diǎn)音頻會(huì )議系統是不可缺少的。首先對輸入的多路音頻流進(jìn)行經(jīng)過(guò)有無(wú)聲能量檢測和回波抑制處理后將有效輸入信號線(xiàn)性疊加,然后進(jìn)行增益定標以便減少失真,以滿(mǎn)足輸出設備的要求。通過(guò)定點(diǎn)DSP的實(shí)現以及實(shí)驗證明這種模式下的音頻會(huì )議信號合成算法能取得很好的會(huì )議效果。
參考文獻
1 周 霖. DSP通信工程技術(shù)應用[M]. 北京:國防工業(yè)出版社,2004:301~315
2 楊行峻.語(yǔ)音數字信號處理[M].北京:電子工業(yè)出版社,1995:154~157
3 ITU-T G.723.1 Annex A:Silence Compression Scheme. ITU,1996
評論