webrtc AGC的通俗说明

前言

一、目的

二、AGC的核心问题

1.AGC的目的

2.AGC的流程

3.AGC的核心

[4 AGC的GainTable](#4 AGC的GainTable)

[5 对初步的Gain进行调整](#5 对初步的Gain进行调整)

[6 Gain effect 回乘](#6 Gain effect 回乘)

总结


前言

最近整理了一下webrtc agc的一些东西,我网上也讨论过一些,但总感觉还是欠点意思。

一、目的

我也可以直接给出一个流程图,很大的这种,比如

这个其实没啥用,因为我估计你基本看不懂,

我这个文件尽可能的解释的很简单,用一句(一句B装太大,毕竟是人谷歌东西,还是几句)把这个事情说清楚

二、AGC的核心问题

1.AGC的目的

AGC其实是调整增益的,使得大信号不至于过饱和,小信号得到放大,当然只放大有用的speech信号,噪声信号不能放大,这就要求agc能简单区分语音和噪声,另外还得保证连续不能引起失真等问题。

webrtc的AGC其实是一个很"保守"脾气的AGC,它总是尽可能小心的放大信号,对快速变化(变大)的问题保持谨慎。

有两个参数我理解是一级参数,最有效的参数

target gain,你期望信号最终被拉到多少数字域dB,当然最后是取负号

compressionGain,最大能变化的gain,比如你的信号很小,期望又很大,那么会限制你拉太多

2.AGC的流程

这里面我就不用网上的什么流程图了,太复杂,我这很简单:

说白了就这么简单,计算包络,然后查表得到合适的gain,调整gain,再把gain回乘回去就完了

3.AGC的核心

它的核心其实就是 快包络,慢包络

快包络是快速随着wav的波形进行变化,慢包络就非常慢了,总是缓缓变化,用这个联络,我们可以干很多事情,能知道语音的近似vad短,还能限制突发的声音带来的gain抖动。

快包络:

峰值保持+快速释放

慢包络:

上升,下降 只"慢慢靠近 env"+不被短峰值拉上去

我们拿个例子来看:

第二张图中红色是漫包络,看起来太它的抖动很慢,蓝色是快包络,基本是wav波形的外廓,第三张是gain,它是

快包络,慢包络取最大,然后再取反,就是如下含义

1、两个包络取最大值

2、包络大的,给的Gain小,包络小的给的Gain大

这两句话是不是很符合你的认识,显然你对信号进行提Gain,当然是目前大,那么给小Gain,目前信号小,给大Gain

4 AGC的GainTable

GainTable就是预先写好的一组数,然后每个要加的Gain过来查下表就完了

如果画出来是这样:

显然你从这个图形来看就是,gaintable对大信号的放大是很保守的,小信号会被快速的放大,但是大信号到一定程度以上的都按固定比率放大了

5 对初步的Gain进行调整

这里面就是对Gain进行

a、非语音段,我们进行适当的压缩(显然,你不想noise或者静音段也放大同比率)

b、对Gain进行limit的,不能过大限制

c、对Gain变大小心处理(说过AGC对大Gain很谨慎),同帧内的10个 只能水平或者下降变化,不同帧之间的才允许上扬

还拿我刚才那个文件,处理之后变成

6 Gain effect 回乘

分第一帧和后续帧处理

第一帧 先用"试探增益",看看会不会溢出

会 → 直接 clip

不会 → 再用正式 gain

这是 "软启动(soft-start)"。

后续:本帧 gain 要从 gainsk 平滑过渡到 gainsk+1

7AGC的vad处理

处理原理

高通后的子带能量 → dB → 短期/长期统计 → Z-score → 平滑后的对数似然比

logratio 计算 decay需要

总结

1、快包络慢包络是核心,计算gain,都需要快包络慢包络信息,快包络还用于non speech段的gain的拉低

2、AGC对信号的调整较为保守,能量大的帧给小Gain,且Gain不会突然变大,对突然过来的的大Gain做各种保护保守处理

3、考虑了帧之间的缓慢变化,16khz事 1ms 内容处理,这种颗粒度让帧之间平滑过渡

4、vad功能相对弱一些,在强噪声背景下,噪声估计vad功能可能会退化

相关推荐
OpenLoong 开源社区8 天前
打破 NAT 限制,零侵入跨网络通信:基于 WebRTC 的透明 TCP 隧道跨网络通信方案
网络协议·tcp/ip·开源·webrtc·openloong开源社区
探鸽小钛11 天前
4G 终端 ES8311 - 挂断一次,下次说话就没声了之解决办法
物联网·音视频·嵌入式·esp32·webrtc
草根大哥12 天前
AI 编程实践之自建视频CDN
音视频·webrtc·低延迟直播·视频cdn·低延迟cdn
EasyCVR12 天前
应急指挥怕延迟?聊聊视频汇聚/视频融合/视频分析EasyCVR平台WebRTC低延迟方案
音视频·webrtc·easycvr
TrueDei13 天前
WebRTC ICE 候选变成 mDNS 地址导致连接失败:原因分析与解决方案
webrtc
中屹指纹浏览器svip16 天前
WebRTC泄露是什么,怎么关闭?
webrtc
海边捡石子17 天前
从零设计一个通用智能电话平台:FreeSWITCH + ESL + AI 实战架构
人工智能·架构·webrtc
音视频牛哥17 天前
不换摄像机,也能接入 WebRTC?SmartMediaKit RTSP/RTMP 转 WHIP 技术实践
音视频·webrtc·smartmediakit·rtsp转whip·rtmp转whip·whip推流·rtsp转webrtc播放
直播技术开发交流19 天前
Android 端 WHIP 协议推流技术实践:相机/录屏/多路转发WHIP实现测试
webrtc·android whip·rtsp转whip·毫秒级实时媒体流·whip低延时推送·whip推送实现·rtsp转webrtc
程序员阿明21 天前
docker搭建视频流服务go2rtc,webRTC
docker·容器·webrtc