Webrtc AGC 算法原理介绍(四)(转)

零、前言

本系列介绍Webrtc的agc算法。webrtc的agc算法对各种情况作了较为详尽的考虑,而且使用了的定点数的方法来实现,因此内容比较多。尽量在这几篇文章中描述清楚。

一、WebRtcAgc_ProcessAnalog

WebRtcAgc_ProcessAnalog函数的作用是把输入的信号根据能量的大小,饱和标志(WebRtcAgc_StaturationCtrl),零状态(WebRtcAgc_ZeroCtrl),以及近端语音活度(WebRtcAgc_SpeakerInactiveCtrl)的结果,来初步控制语音的大小。

1、预处理麦克风音量

对micVol进行调节。micVol决定了模拟初步调节的音量,将处理后的音量放到本文(7、调节流程)中说的范围中去,但是这个调节必须在AddVirtualMic中通过gainIndex起作用。
注意:在kAgcModeAdaptiveAnalog下,不调用AddVirtualMic,因此初步调节正常情况下不起作用(异常情况下回起作用)。在kAgcModeAdaptiveDigital下,GainControlImpl::set_stream_analog_level,其实不起作用,micVol起到初步调节的作用,micVol是粗调节的一个中间变量。
WebRtcAgc_ProcessAnalog 流程图1

2、检查和处理饱和

根据信号的能力包络计算信号是否饱和(WebRtcAgc_StaturationCtrl)。该函数输出了饱和标志位saturated。
接下来根据标志位saturated来
1)降低micVol的大小,micVol*=0.903。
2)降低自相关系数(功率谱能量)大小,保证AGC中的VAD判决正常。
3)设置saturationWarning输出,该标志位只在此处修改。注意:如果kAgcModeAdaptiveAnalog一定进入WebRtcAgc_ProcessAnalog流程;kAgcModeAdaptiveDigital在位大能量的时候进入WebRtcAgc_ProcessAnalog流程;而kAgcModeFixedDigital不会调用该流程。
4)修改相关阈值。重置音量变化阈值msecSpeechInnerChange,OuterChange,改变模式changeToSlowMode,静音计数器muteGuardMs、调高界限upperLimit,调低界限lowerLimit,目的是摒除音量饱和对这些变量的影响,如果饱和,认为是不正常的语音不进行相关信息更新。降低太高标志位,目的是为了保证不要一下调低阈值。

3、零检查

对信号的包络进行低能量检查WebRtcAgc_ZeroCtrl,判断是否是“几乎”全部为0的数据。如果是,micVol调节到一半,对数据适当放大。

4、近端语音活度检查

对近端的语音活度检查WebRtcAgc_SpeakerInactiveCtrl。通过近端输入信号的方差来调节活度阈值vadThreshold。该阈值决定是否进入micVol和调节主流程。声音越小越难进入调节流程。
WebRtcAgc_ProcessAnalog 流程图2

5、计算子带能量和总能量

计算子带低频能量Rxx16_LPw32和帧能量Rxx160w32。
WebRtcAgc_ProcessAnalog 流程图3

6、根据vadMic.logRatio判断是否进入调节流程

7、调节流程

首先计算低频的全帧能量Rxx160_LPw32。该变量根据4个阈值划分成5个界限。
四个阈值分别是:
1)upperSecondaryLimit
2)upperLimit
3)lowerLimit
4)lowerSecondaryLimit
这四个数值的关系是1)>2)>3)>4),其中2)可以选择startUpperLimit和upperPrimaryLimit两个阈值;3)可以选择startLowerLimit和lowerPrimaryLimit两个阈值。在区间[2),3)]中,4000ms后可以触发慢变模式(changeToSlowMode),选择lowerPrimaryLimit,upperPrimaryLimit。

-单位(dB)正常模式慢变模式
upperSecondaryLimit-15-15
upperLimit-19-18
lowerLimit-21-22
lowerSecondaryLimit-25-25

下面是5个区间不同处理方法的流程图,其核心是对micVol进行调节,其目的是保证一个帧的能量在区间[2),3)]内,也即是初步调节的目的。
WebRtcAgc_ProcessAnalog 流程图4

8、检查回声,保护标志和界限

保证回声状态和静音保护过程不被放大,并且检查micVol的界限。最后micVol的值通过VirtualMic和AddMic函数起作用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebRTC AGC(自适应增益控制)算法是一种音频信号处理算法,用于调节音频输入信号的增益水平,以在通信中实现更好的音质和更高的语音识别准确度。 AGC算法通过监测音频输入信号的强度,并自动调整增益水平,以确保输出信号保持在可接受的范围内,避免声音过高或过低。这种自适应调节可以使通话中的语音更加清晰和稳定,而不会因为某一方的声音过弱或过强而听不清。另外,AGC算法还可以提供麦克风阵列的噪音抑制功能,减少环境噪音对通信质量的影响。 AGC算法的核心思想是根据音频输入信号的能量级别,动态调整增益水平。当输入信号较弱时,AGC会增加增益,以增强信号的强度。而当输入信号较强时,AGC会减小增益,以避免声音失真。这种自动调整可以根据通话环境中的变化进行实时优化,提供更好的音频体验。 WebRTC AGC算法的应用范围广泛,例如语音通信、视频会议、语音识别等领域,都可以受益于AGC算法的应用。通过实时优化音频输入信号的增益,AGC可以提供更好的通话质量和语音识别准确度,提升用户体验并提高通信效率。 总而言之,WebRTC AGC算法是一种音频信号处理算法,通过自适应调整音频输入信号的增益水平,提供清晰稳定的通话音质和更高的语音识别准确度。它在现代通信中发挥重要作用,为用户提供了更好的音频体验和通信效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值