WebRTC音频降噪使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tanningzhong/article/details/88664338

webrtc的ns原理:把启动前50帧的数据拿来构建噪声模型,把启动前200帧的信号强度用来计算归一化的频谱差值计算。根据这两个模型使用概率目的函数来计算出每帧的信噪比并区分出噪声和声音,然后根据计算出的信噪比在频域使用维纳滤波器对噪声信号进行噪声消除,最后在根据降噪前后的能量比和信号噪声似然比对降噪后的数据进行修复和调整后输出。

在研究webrtc的降噪模块,这里简述如何使用webrtc的降噪模块。

1、创建降噪句柄:

NsHandle *pNS_inst = NULL;
 
WebRtcNs_Create(&pNS_inst);
2、初始化降噪句柄

 WebRtcNs_Init(pNS_inst, samplerate);//samplerate可为8000, 16000,32000
3、设置降噪策略

WebRtcNs_set_policy(pNS_inst,nMode);//nMode可为0,1,2,3
4、首先需要使用滤波函数将音频数据分高低频,以高频和低频的方式传入降噪函数内部

WebRtcSpl_AnalysisQMF(shBufferIn,in_len,shInL,shInH,filter_state1,filter_state12);
5、将需要降噪的数据以高频和低频传入对应降噪处理接口,同时需要注意返回数据也是分高频和低频

 WebRtcNs_Process(pNS_inst ,shInL  ,shInH ,shOutL , shOutH);
6、如果降噪成功,则根据降噪后高频和低频数据传入滤波接口,输出数据即为处理完成数据
 

 WebRtcSpl_SynthesisQMF(shOutL,shOutH,shout__len,shBufferOut,Synthesis_state1,Synthesis_state12);
 

猜你喜欢

转载自blog.csdn.net/tanningzhong/article/details/88664338