我正在尝试使用WebRtc库创建独立的AGC。 (输入-WAV文件,输出-具有调整增益的WAV文件)。但是目前,我对此问题有些疑问。

我正在尝试使用在gain_control.h文件中声明的函数。当我使用WebRtcAgc_Process(....)时,我获得了恒定增益,该增益适用于整个信号,但不适用于取决于输入信号幅度的非线性增益。

我可以为自己的目的使用其他功能吗?如何通过WebRTC库实现AGC?

最佳答案

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类。

关于c++ - WebRtc应用程序中的独立AGC(自动增益控制),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12334937/

10-11 00:59