薛建清
(福建星網(wǎng)智慧科技有限公司,福建 福州 530002)
在擴(kuò)聲場(chǎng)景下,麥克風(fēng)和揚(yáng)聲器會(huì)形成揚(yáng)聲器-功率放大器-揚(yáng)聲器閉環(huán)回路[1],某些頻點(diǎn)被不斷加強(qiáng),從而引發(fā)嘯叫。嘯叫發(fā)生時(shí),會(huì)損壞揚(yáng)聲器,損害聽(tīng)力,嚴(yán)重影響體驗(yàn)。針對(duì)上述問(wèn)題,需要使用嘯叫抑制算法進(jìn)行聲反饋抑制。常用的嘯叫抑制算法有移頻、移相、陷波器以及自適應(yīng)嘯叫抑制算法等。
移頻是信號(hào)頻譜的整體頻移,破壞了閉環(huán)中的頻率疊加效應(yīng),從而達(dá)到抑制嘯叫的目的[2]。
本文所提的算法移頻模塊采用Weaver 移頻算法[3-4],使得整體頻譜向上移動(dòng)5 Hz,算法框架如圖1 所示。
圖1 Weaver 算法框架
該算法被稱作生成單邊帶信號(hào)的第三種方法[5-6]。其特點(diǎn)是以固定頻率生成正交信號(hào)。本文采用4 kHz 作為固定頻率。移頻算法依賴于低通濾波器的選擇。常用的帶通濾波器有巴特沃斯和切比雪夫?yàn)V波器。兩種濾波器的頻響對(duì)比如圖2所示。從圖2 可以看出,巴特沃斯濾波器過(guò)渡帶長(zhǎng),切比雪夫?yàn)V波器的過(guò)渡帶小。兩種濾波器局部放大的頻響曲線如圖3、圖4 所示。從圖3、圖4 可看出,巴特沃斯濾波器的通帶波動(dòng)小,切比雪夫?yàn)V波器的通帶有波動(dòng)。
圖2 巴特沃斯和切比雪夫?yàn)V波器頻響對(duì)比
圖3 巴特沃斯濾波器頻響曲線局部放大
圖4 切比雪夫?yàn)V波器頻響曲線局部放大
本文提出的自適應(yīng)陷波器算法框架如圖5 所示。將信號(hào)劃分為8 個(gè)子頻帶,每個(gè)子頻帶分別提取頻譜峰度特征,若大于上限閾值,則判定該子帶存在嘯叫頻點(diǎn),使用陷波器處理子頻帶中最高嘯叫頻點(diǎn)。
圖5 自適應(yīng)陷波器算法框架
頻譜峰度度量(SPM)指的是用1 減去帶功率譜的幾何平均值與帶功率譜的算術(shù)平均值之間的比率,計(jì)算式為:
式中:X(k,l)表示頻帶索引k的頻譜幅度,l表示幀的索引,K表示頻帶的數(shù)量。進(jìn)一步地,SPM 度量按照如下公式進(jìn)行平滑,得到當(dāng)前幀各個(gè)子帶頻譜峰度特征。若大于上限閾值,則判定該子帶存在嘯叫頻點(diǎn),使用陷波器處理子頻帶中最高嘯叫:
由于陷波器的作用,信號(hào)能量會(huì)降低,所以需要增益補(bǔ)償改善聲壓損失[8]。本文采用動(dòng)態(tài)范圍控制器,信號(hào)先通過(guò)噪聲門(mén)限器,對(duì)低于噪聲門(mén)限閾值的信號(hào)進(jìn)行抑制,接著通過(guò)指定動(dòng)態(tài)范圍內(nèi)的信號(hào)做增益補(bǔ)償,彌補(bǔ)聲壓的損失。
在移動(dòng)設(shè)備(處理器為4 核Cortex-A17)外接拾音器和揚(yáng)聲器(間距1.5 m),對(duì)著拾音器說(shuō)話,經(jīng)固定延時(shí)150 ms 從揚(yáng)聲器播放出來(lái)。本文提出的嘯叫抑制方案可以有效地抑制嘯叫的發(fā)生。具體耗時(shí)為處理10 ms 數(shù)據(jù)耗時(shí)242 μs,滿足實(shí)時(shí)性要求。
含有嘯叫的信號(hào)波形和語(yǔ)譜如圖6(a)所示,嘯叫信號(hào)在波形上振幅大能量集中,語(yǔ)譜圖上為持續(xù)的單頻強(qiáng)信號(hào)。經(jīng)嘯叫抑制后的信號(hào)波形圖和語(yǔ)譜圖如圖6(b)所示,可以看出,經(jīng)算法處理后,嘯叫信號(hào)的波形被明顯抑制,從語(yǔ)譜圖上可以看出,單頻強(qiáng)信號(hào)被抑制明顯,同時(shí)沒(méi)有明顯損傷語(yǔ)音信號(hào);嘯叫狀態(tài)的終止比較精準(zhǔn),減小了語(yǔ)音的損傷。同時(shí),嘯叫狀態(tài)的檢測(cè)存在延時(shí),為0.5~1.0 s,可以在較短時(shí)間內(nèi)結(jié)束嘯叫,避免引發(fā)更壞的影響。
圖6 信號(hào)處理前后的波形圖和語(yǔ)譜圖
本文通過(guò)結(jié)合移頻和自適應(yīng)陷波器算法,針對(duì)會(huì)議擴(kuò)音場(chǎng)景下的嘯叫問(wèn)題,將麥克風(fēng)采集信號(hào)先進(jìn)行微量移頻,破壞嘯叫的產(chǎn)生條件,接著將信號(hào)劃分8 個(gè)子頻帶,每個(gè)子頻帶提取頻譜峰度特征判斷是否嘯叫,對(duì)嘯叫頻點(diǎn)做陷波處理,最后通過(guò)增益補(bǔ)償彌補(bǔ)損失的聲壓,達(dá)到抑制嘯叫、提高揚(yáng)聲器增益的目的。
在實(shí)際會(huì)議室場(chǎng)景錄音數(shù)據(jù)上測(cè)試發(fā)現(xiàn),本文提出的基于移頻和自適應(yīng)陷波器的嘯叫抑制算法可以提供10~18 dB 的附加增益,能有效預(yù)防聲反饋發(fā)生,具體取決于聲學(xué)環(huán)境。同時(shí),可以根據(jù)不同場(chǎng)景和需求,微調(diào)參數(shù)即可完成適配,操作簡(jiǎn)單,具有較好的使用價(jià)值。下一步擬改善嘯叫檢測(cè)的速度,改善嘯叫自激階段的體驗(yàn)。