Webrtc AGC 算法原理介绍(三)

本文深入探讨WebRTC的自动增益控制(AGC)算法,包括WebRtcAgc_AddMic和WebRtcAgc_VirtualMic函数。WebRtcAgc_AddMic用于自适应模拟模式,根据帧长和采样率进行分帧,并根据最大值计算目标增益。WebRtcAgc_VirtualMic涉及虚拟音量调节,通过能量判断低能信号并调节增益,确保有效语音处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

零、前言

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

一、WebRtcAgc_AddMic

WebRtcAgc_AddMic用在自适应模拟模式下(kAdaptiveAnalog),其流程如下:
WebRtcAgc_AddMic 流程图
WebRtcAgc_AddMic 流程图
这个流程第一步是根据帧长和采样率继续分帧,具体如下:

采样率 帧长 子帧个数(1ms)M 子帧长度L subFrames
8000 10ms 10 8 80
8000 20ms 20 8 80
16000 10ms 10 16 160
16000 20ms 20 16 160
32000 5ms 10 16 160

这里注意32k时候因为在apm里头已经做了分频,10ms的数据分成了低频16K的10ms数据和高频16k的10ms数据,因此上表32000子帧个数10和subFrames为160。这些子帧用下面用来计算能量信息。
第二部分是如果麦克风最大值大于模拟值就计算缓慢增益的序号对应的值。
t a r g e t G a i n I d x = ( G A I N _ T B L _ L E N − 1 ) ∗ ( m i c V o l − m a x A n a l o g ) ( m a x L e v e l − m a x A n a l o g ) targetGainIdx = \frac{(GAIN\_TBL\_LEN - 1)*(micVol - maxAnalog)}{(maxLevel - maxAnalog)} targetGainIdx=

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值