独立的AGC(自动增益控制)的WebRTC应用(Standalone AGC (auto gain

2019-10-17 05:08发布

我想使用的WebRTC库中创建一个独立的AGC。 (输入 - wav文件,输出 - 与调整增益wav文件)。 但就在这个时候,我有一些问题,这一问题。

我试图用它在声明的函数gain_control.h文件。 当我使用WebRtcAgc_Process(....)我得到恒定的增益,它适用于整个信号,而不是非线性增益取决于从输入信号幅度。

可能是我应该使用其他功能为我的目的是什么? 如何通过的WebRTC库实现AGC?

Answer 1:

该AGC的主要目的是提供用户期望通过操作系统设置建议的系统麦克风音量。 如果你想申请一个纯粹的数字增益,可以在两种模式中进行配置(从modules/audio_processing/include/audio_processing.h ,但gain_control.h具有类似模式):

// Adaptive mode intended for situations in which an analog volume control
// is unavailable. It operates in a similar fashion to the adaptive analog
// mode, but with scaling instead applied in the digital domain. As with
// the analog mode, it additionally uses a digital compression stage.
kAdaptiveDigital,

// Fixed mode which enables only the digital compression stage also used by
// the two adaptive modes.
//
// It is distinguished from the adaptive modes by considering only a
// short time-window of the input signal. It applies a fixed gain through
// most of the input level range, and compresses (gradually reduces gain
// with increasing level) the input signal at higher levels. This mode is
// preferred on embedded devices where the capture signal level is
// predictable, so that a known gain can be applied.
kFixedDigital

您可以设置这些通过WebRtcAgc_Init()但除非你需要避免的开销,我只是用AudioProcessing类建议。



Answer 2:

参考http://osxr.org/android/source/external/webrtc/src/modules/audio_processing/agc/interface/gain_control.h#0133

增益调整完成后的讲话仅在0135 *活跃期。 输入语音长度可以是10ms的或0136 * 20毫秒和输出是相同的长度。

webrtcage_process的快速概述

int WebRtcAgc_Process(void* agcInst,
                    const WebRtc_Word16* inNear,
                    const WebRtc_Word16* inNear_H,
                     WebRtc_Word16 samples,
                     WebRtc_Word16* out,
                     WebRtc_Word16* out_H,
                     WebRtc_Word32 inMicLevel,
                     WebRtc_Word32* outMicLevel,
                     WebRtc_Word16 echo,
                     WebRtc_UWord8* saturationWarning);


文章来源: Standalone AGC (auto gain control) in WebRtc application