美文网首页他山之石,可以攻玉
WebRTC C++音频降噪(NS)

WebRTC C++音频降噪(NS)

作者: 豪爵吸金ing | 来源:发表于2019-06-13 17:51 被阅读0次

    WebRtc自带音频降噪模块,效果良好。

    webrtc的NS在业内还是赫赫有名的,通过实际对比测试,我们发现webrtc的降噪的确是性能和稳定性

    都要高于同类开源算法。

      webrtc的ns原理是这样的:把启动前50帧的数据拿来构建噪声模型,把启动前200帧的信号强度用来计

    算归一化的频谱差值计算。根据这两个模型使用概率目的函数来计算出每帧的信噪比并区分出噪声和声音,

    然后根据计算出的信噪比在频域使用维纳滤波器对噪声信号进行噪声消除,最后在根据降噪前后的能量比

    和信号噪声似然比对降噪后的数据进行修复和调整后输出。

      webrtc的NS使用分析:webrtc的降噪支持三种采样率,8k,16k和32k,其它的采样率的降噪可以通过

    瞎采样来完成。降噪模式有四种:分别是,0,1,2,3 四种模式的降噪量依次增加,笔者亲自测过,一般是2比较

    好,对声音损失小,降噪效果又不错。还有个比较重要的参数就是噪声估计模型宏定义,如下所示,推荐在

    系统计算能力够的情况下使用第三种,效果最好。

    #define PROCESS_FLOW_0 // Use the traditional method.

    #define PROCESS_FLOW_1 // Use traditional with DD estimate of prior SNR.

    #define PROCESS_FLOW_2 // Use the new method of speech/noise classification.

      使用方法和代码调用:

    初始化:申请内存,设置采样率和降噪模式。

    WebRtcNs_Create(&pNS_inst);

    WebRtcNs_Init(pNS_inst,nSample);

    WebRtcNs_set_policy(pNS_inst,nMode);

    处理主函数:针对降噪的帧进行处理,默认是10ms的帧长度。

    int WebRtcNs_Process(NsHandle* NS_inst, short* spframe, short* spframe_H,

    short* outframe, short* outframe_H)

    、----------------------------

    经本人测试webrtc仅支持 采样率8000,16000; 其它采样率处理出来是噪声。

    相关文章

      网友评论

        本文标题:WebRTC C++音频降噪(NS)

        本文链接:https://www.haomeiwen.com/subject/eeqefctx.html