Webrtc AGC 算法原理介绍(一)

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_Processvad核心处理
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
  • 12
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebRTC AGC(自适应增益控制算法是一种音频信号处理算法,用于调节音频输入信号的增益水平,以在通信中实现更好的音质和更高的语音识别准确度。 AGC算法通过监测音频输入信号的强度,并自动调整增益水平,以确保输出信号保持在可接受的范围内,避免声音过高或过低。这种自适应调节可以使通话中的语音更加清晰和稳定,而不会因为某一方的声音过弱或过强而听不清。另外,AGC算法还可以提供麦克风阵列的噪音抑制功能,减少环境噪音对通信质量的影响。 AGC算法的核心思想是根据音频输入信号的能量级别,动态调整增益水平。当输入信号较弱时,AGC会增加增益,以增强信号的强度。而当输入信号较强时,AGC会减小增益,以避免声音失真。这种自动调整可以根据通话环境中的变化进行实时优化,提供更好的音频体验。 WebRTC AGC算法的应用范围广泛,例如语音通信、视频会议、语音识别等领域,都可以受益于AGC算法的应用。通过实时优化音频输入信号的增益AGC可以提供更好的通话质量和语音识别准确度,提升用户体验并提高通信效率。 总而言之,WebRTC AGC算法是一种音频信号处理算法,通过自适应调整音频输入信号的增益水平,提供清晰稳定的通话音质和更高的语音识别准确度。它在现代通信中发挥重要作用,为用户提供了更好的音频体验和通信效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值