我正在测试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级别。但那不是我所看到的。
+0
您确定绝对没有“尖峰”噪声,可以防止AGC放大输入信号吗?也请看看这个[**答案**](http://stackoverflow.com/a/12712228/319204);是'WebRtcAgc_Process()'预计适当地设置'micLevelOut',并把它留在那?? –
+0
[**'WebRtcAgc_Process()**]的一个不错的描述(http://osxr.org/android/ source/external/webrtc/src/modules/audio_processing/agc/interface/gain_control.h#0133)来帮助理清您的期望。 –
+0
'WebRtcAgc_Process()'是否将正弦波输入视为非语音段并跳过?你可以尝试传递一个实际的语音剪辑和测试? –