概述
Webrtc AGC 算法原理介绍(一)
标签(空格分隔): 音频算法
零、前言
本系列介绍Webrtc的agc算法。webrtc的agc算法对各种情况作了较为详尽的考虑,而且使用了的定点数的方法来实现,因此内容比较多。尽量再这几篇文章中描述清楚。
一、AGC模块的结构与简介
较新的webrtc已经把原来的agc模块移动到了一个叫做legacy的文件夹。这个回头再写文章详细介绍。我还是从旧的agc算法开始讲起。Webrtc 的AGC算法的结构如下
|–include |–gain_control.h
agc—|–analog_agc.c
|–analog_agc.h
|–digital_agc.c
|–digital_agc.h
gain_control.h是包装的头文件,在apm里头gain_control_impl调用。主要包括了接口定义函数和参数配置。
对于该文件着预先说一下配置的含义。
enum
{
kAgcModeUnchanged,
kAgcModeAdaptiveAnalog,
kAgcModeAdaptiveDigital,
kAgcModeFixedDigital
};
typedef struct
{
int16_t targetLevelDbfs; // default 3 (-3 dBOv)
int16_t compressionGaindB; // default 9 dB
uint8_t limiterEnable; // default kAgcTrue (on)
} WebRtcAgc_config_t;
枚举是agc的使用模式,一个是kAgcModeAdaptiveAnalog、kAgcModeAdaptiveDigital和kAgcModeFixedDigital是常用的三种模式。kAgcModeAdaptiveAnalog带有模拟音量调节的功能。kAgcModeAdaptiveDigital是可变增益agc,但是不调节系统音量。kAgcModeFixedDigital是固定增益的agc。
WebRtcAgc_config_t是配置targetLevelDbfs和compressionGaindB用于调节agc的动态范围。
analog_agc.h包括模拟的agc结构体声明,而gain_control.h中的接口函数在analog_agc.c中实现。
函数 | 功能 |
---|---|
WebRtcAgc_AddFarend | 计算远端信号的语音活度VAD |
WebRtcAgc_AddMic | 计算麦克风输入的语音活度,对于非常小的信号会乘增益系数 |
WebRtcAgc_VirtualMic | 用虚拟的麦克风音量来调节幅度 |
WebRtcAgc_Process | vad核心处理 |
WebRtcAgc_set_config | 设置VAD参数 |
另外在analog_agc.c还包括以下函数:
函数 | 功能 |
---|---|
WebRtcAgc_UpdateAgcThresholds | 略 |
WebRtcAgc_SaturationCtrl | 略 |
WebRtcAgc_ZeroCtrl | 略 |
WebRtcAgc_SpeakerInactiveCtrl | 略 |
WebRtcAgc_ExpCurve | 略 |
WebRtcAgc_ProcessAnalog | 略 |
digital_agc.h包括数字的agc结构体声明,Vad结构声明,而gain_control.h中的接口函数在analog_agc.c中实现。
函数 | 功能 |
---|---|
WebRtcAgc_ProcessDigital | 略 |
WebRtcAgc_AddFarendToDigital | 略 |
WebRtcAgc_InitVad | 略 |
WebRtcAgc_ProcessVad | 略 |
WebRtcAgc_CalculateGainTable | 略 |
最后
以上就是欣喜白开水为你收集整理的Webrtc AGC 算法原理介绍(一)Webrtc AGC 算法原理介绍(一)的全部内容,希望文章能够帮你解决Webrtc AGC 算法原理介绍(一)Webrtc AGC 算法原理介绍(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复