我是靠谱客的博主 称心裙子,最近开发中收集的这篇文章主要介绍Webrtc AGC 算法原理介绍(四)Webrtc AGC 算法原理介绍(四),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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函数起作用。

最后

以上就是称心裙子为你收集整理的Webrtc AGC 算法原理介绍(四)Webrtc AGC 算法原理介绍(四)的全部内容,希望文章能够帮你解决Webrtc AGC 算法原理介绍(四)Webrtc AGC 算法原理介绍(四)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部