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