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是粗调节的一个中间变量。