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