天天看點

Webrtc NS 音頻降噪學習筆記(持續更新)

一、webrtc降噪共分為四個模式,0,1,2,3,分别可抑制6,10,15,20dB左右;調用函數 WebRtcNs_set_policy→WebRtcNs_set_policy_core進行初始化與配置;

二、函數 WebRtcNs_Analyze→WebRtcNs_AnalyzeCore 用于實作以下功能:

1、更新處理的資料。将新的160一幀,與上一幀拼接成256一幀,并存儲在buffer内(self->analyzeBuf),相關函數為UpdateBuffer;

2、為上述的self->analyzeBuf加窗。并存放于windata中。函數為Windowing。

3、統計加窗後該幀的能量。若能量=0,則退出,不接收噪聲估計等處理。函數為Energy。

4、更新處理塊blockInd。若上述能量不為0,則blockInd+1.(因為webrtc ns 用前50幀有效資料用于初始噪聲估計)。

5、對windata進行傅裡葉變換,傳回實數譜129、虛數譜129和幅度譜129;函數為FFT256點。

6、計算平滑的對數譜能量,log[i] * log(mag[i]),與總的對數譜能量。注意其跳過前五個頻點才開始進行計算,即16000/256*(5-1)=250,即噪聲估計從250Hz才開始;

7、計算并存儲平均幅度譜(sum(mag))/mag_len與總幅度譜sum(mag)。

8、将幅度譜作為輸入,進行分位數噪聲估計[1]。

[1] Stahl V , Fischer A , Bippus R . Quantile based noise estimation for spectral subtraction and Wiener filtering[C]// 2000 IEEE International Conference on Acoustics, Speech, and Signal Processing. Proceedings (Cat. No.00CH37100). IEEE, 2000.

繼續閱讀