web-dev-qa-db-ja.com

WebRTC AGC(自動ゲイン制御)

私は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レベルに一致するように増幅されます。しかし、それは私が見ているものではありません。

64
user1884325

以下は、Webrtc_AGCに使用される一連の操作です。

  1. AGCを作成:WebRtcAgc_Create
  2. AGCを初期化:WebRtcAgc_Init
  3. 設定:WebRtcAgc_set_config
  4. 初期化capture_level = 0
  5. kAgcModeAdaptiveDigitalの場合は、VirtualMicを呼び出します:WebRtcAgc_VirtualMic
  6. capture_levelでバッファを処理:WebRtcAgc_Process
  7. WebRtcAgc_Processから返されたアウトキャプチャレベルを取得し、capture_levelに設定します
  8. audio buffersについて5〜7を繰り返します。
  9. AGCを破壊します:WebRtcAgc_Free

参照用にwebrtc/modules/audio_processing/gain_control_impl.ccを確認してください。

2
ssk

これを試して:

 
 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); 
 
0
Muhammad Faizan