我是靠谱客的博主 欣喜白开水,最近开发中收集的这篇文章主要介绍Webrtc AGC 算法原理介绍(一)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

最后

以上就是欣喜白开水为你收集整理的Webrtc AGC 算法原理介绍(一)Webrtc AGC 算法原理介绍(一)的全部内容,希望文章能够帮你解决Webrtc AGC 算法原理介绍(一)Webrtc AGC 算法原理介绍(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部