Webrtc NS模块算法

 

一、算法函数调用关系

算法的主要函数调用关系如下:

1、初始化模块

//设置特征提取参数

set_feature_extraction_parameters()

//特征参数提取

FeatureParameterExtraction()

//初始化状态

WebRtcNs_InitCore()

//改变噪声抑制方法的激增性

WebRtcNs_set_policy_core()

2、分析模块

      //噪声抑制分析模块

WebRtcNs_AnalyzeCore()

             //更新数据缓冲

UpdateBuffer()

//计算缓冲区的能量

Energy()

//窗缓冲区

Windowing()

//将信号从时域变换到频域

FFT()

//噪声估计

NoiseEstimation()

//计算信噪比

ComputeSnr()

//特征值更新(主要是谱差和平坦度)

FeatureUpdate()

                     //计算谱平坦度

ComputeSpectralFlatness()

                     //计算谱差异

ComputeSpectralDifference()

//计算语音/噪声概率

SpeechNoiseProb()

//更新噪声估计

UpdateNoiseEstimate()

//计算缓冲区的能量

Energy()

//窗缓冲区

Windowing()

3、处理模块

//噪声抑制处理模块

WebRtcNs_ProcessCore()

//更新数据缓冲

UpdateBuffer()

//计算缓冲区的能量

Energy()

/ /窗缓冲区

Windowing()

//将信号从时域变换到频域

FFT()

//估计先验信噪比判决定向和计算基于DD的维纳滤波器

ComputeDdBasedWienerFilter()

//将信号从频率变换到时域

IFFT()

//窗缓冲区

Windowing()

//更新数据缓冲

UpdateBuffer()

二、算法原理

算法的核心思想是采用谱减法计算噪声估计和运用维纳滤波器抑制估计出来的噪声。谱减法是最常用的一种噪声抑制方法,它基于一个简单的原理:假设噪声为加性噪声,通过从带噪语音谱中减去对噪声谱的估计,就可以得到纯净的信号谱。在不存在语音信号的期间,可以对噪声谱进行估计和更新。做出这一假设是基于噪声的平稳性,或者是一种慢变的过程,这样噪声的频谱在每次更新之间不会有大的改变。增强信号通过计算估计信号谱的逆离散傅里叶变换得到,其相位仍然使用带噪信号的相位。在计算上这种算法比较简单,因为其只包含一次傅里叶变换和反变换。


三、原理框图及核心公式

1、WebrtcAnalyzeCore模块

在噪声抑制模块WebrtcAnalyzeCore中,输入信号经过时频变换后分成三路信号,分别对这三路信号进行计算频谱平坦度、计算信噪比、计算频谱差异。最后将这三个相应的特征值输入到语音/噪声概率更新模板中。该模块具体的流程图以及功能介绍如下:


输入信号:指在输入信号中从麦克风采集到的信号,其表达式为


时频变换:将输入信号进行时频变换,线性模型在语音状态下的表达式是

计算频谱平坦度:语音频往往会在基频和谐波中出现峰值,用于区分语音和噪声。其计算公式是

其中N表示STFT后频率点数,每个频带包括大量的频率点。

计算信噪比:根据分位数噪声估计计算先后信噪比。先验信噪比是与噪声功率相关的纯净信号功率的期望值,其计算公式为

而后验信噪比是指观测到的能量与噪声功率相关的输入功率相比的瞬态信噪比,其表达式是


计算频谱偏差:用于测量输入频谱与噪声频谱的偏差。其公式为

LRT均值特征:经过时间处理的LR因子的计算公式如下:

经过时间平滑处理的似然比(LR)因子的几何平均数是语音/噪声状态的可靠指标:


语音/噪声概率更新模板:在语音/噪声概率计算时,使用高斯假设作为语音PDF模型,从而获得似然比。在其它模型中,概率密度PDF模型也可以用作测量似然比的基础,包括拉普拉斯算子,伽马,超高斯。举个例子,当高斯假设可合理表示噪声时,该假设并不一定适用于语音,尤其是在较短的时帧中(如~10ms)。在这种情况下,可以使用另一种语音PDF模型,但这很可能会增加复杂性。



2、WebrtcProcesCore模块

在噪声抑制模块WebrtcProcesCore中,技术方案是采用维纳滤波抑制估计出来的噪声。其抑制过程为根据计算出的先后信噪比计算出语音/噪声的概率,根据计算出的语音概率,更新每帧中的初始噪声估计。将计算出的噪声估计进行维纳滤波得到估计的语音信号,再进行频时变换即输出信号为所求信号。该模块具体的流程图以及功能介绍如下:






  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
WebRtcNs_Analyze是**WebRTC项目中的一个音频处理模块**,主要用于对音频信号进行分析和处理。 以下是关于WebRtcNs_Analyze的详细介绍: 1. **功能用途**:WebRtcNs_Analyze是WebRTC中网络回声消除(NetEq)的一部分,它负责分析和处理音频数据,以改善通话质量。这个模块可以用于降低噪声、消除回声等,提高语音传输的清晰度。 2. **使用方法**:在开始使用WebRtcNs模块之前,需要对其进行初始化。初始化后,可以直接将输入和输出参数传入process函数进行处理。但在调用process函数之前,应当使用WebRtcNs_Analyze函数对传入参数进行处理,以确保得到正确的结果。 3. **编译动态库**:为了在Android设备上使用WebRtcNs模块,需要通过Android NDK将其编译为动态库。编译完成后,可以在Android项目中直接调用这些库函数进行音频处理。 4. **降噪处理**:如果你的项目要求对手机传输出去的音频进行降噪处理,那么WebRtcNs模块是一个很好的选择。它提供了一套完整的音频处理工具,可以帮助你实现高质量的音频传输。 5. **社区支持**:由于WebRTC是一个开源项目,因此有着庞大的开发者社区和丰富的文档资源。如果在使用过程中遇到问题,可以在相关社区寻求帮助和解答。 综上所述,WebRtcNs_Analyze是WebRTC中一个重要的音频处理模块,它通过分析和处理音频数据来提升通话质量。在使用该模块时,需要注意正确的初始化和处理流程,以及如何将其集成到你的项目中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值