私はWebRTC AGCをテストしていますが、信号が変更されずに通過するだけなので、何か間違っているはずです。
AGCを作成して初期化する方法は次のとおりです。
agcConfig.compressionGaindB = 9;
agcConfig.limiterEnable = 1;
agcConfig.targetLevelDbfs = 9; /* 9dB below full scale */
WebRtcAgc_Create(&agc);
WebRtcAgc_Init(agc, minLevel, maxLevel, kAgcModeFixedDigital, 8000);
WebRtcAgc_set_config(agc, agcConfig);
そして、10msのサンプルブロックごとに、次のことを行います。
WebRtcAgc_Process(agc, micData, NULL, 80, micData, NULL, micLevelIn, &micLevelOut, 0, &saturationWarning);
ここで、micLevelIn
は0に設定されています。
誰かが私が間違っていることを教えてもらえますか?
フルスケールのサイントーンがターゲットのDBFSレベルに減衰されることを期待していました。また、低レベルの正弦波トーン(-30dBFSなど)は、ターゲットのDBFSレベルに一致するように増幅されます。しかし、それは私が見ているものではありません。
以下は、Webrtc_AGCに使用される一連の操作です。
WebRtcAgc_Create
WebRtcAgc_Init
WebRtcAgc_set_config
capture_level = 0
kAgcModeAdaptiveDigital
の場合は、VirtualMicを呼び出します:WebRtcAgc_VirtualMic
capture_level
でバッファを処理:WebRtcAgc_Process
WebRtcAgc_Process
から返されたアウトキャプチャレベルを取得し、capture_level
に設定しますaudio buffers
について5〜7を繰り返します。WebRtcAgc_Free
参照用にwebrtc/modules/audio_processing/gain_control_impl.ccを確認してください。
これを試して:
agcConfig.compressionGaindB = 9; agcConfig.limiterEnable = 1; agcConfig.targetLevelDbfs = 9;/*フルスケールより9dB */ WebRtcAgc_Create(&agc); WebRtcAgc_Init(&agc、minLevel、maxLevel、kAgcModeFixedDigital、8000); WebRtcAgc_set_config(&ag &agcConfig);