2012-09-08 59 views
1

我正嘗試使用WebRtc庫創建獨立AGC。 (輸入 - wav文件,輸出 - 帶有調整增益的wav文件)。但是目前我在這個問題上遇到了一些問題。WebRtc應用程序中的獨立AGC(自動增益控制)

我正在嘗試使用在gain_control.h文件中聲明的函數。當我使用WebRtcAgc_Process(....)時,我獲得的恆定增益適用於整個信號,但不是取決於輸入信號幅度的非線性增益。

可能是我應該使用其他功能爲我的目的?我如何通過WebRTC庫實現AGC?

回答

2

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

0

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

調整完成增益 講話*活躍期。輸入語音長度可以是10ms或者0136 * 20ms,輸出長度可以是 。

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);