【发布时间】:2014-05-07 12:54:42
【问题描述】:
我正在测试 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);
然后对于每个 10 毫秒的样本块,我执行以下操作:
WebRtcAgc_Process(agc, micData, NULL, 80, micData, NULL, micLevelIn, &micLevelOut, 0, &saturationWarning);
其中micLevelIn 设置为 0。
谁能告诉我我做错了什么?
我预计满量程正弦音会衰减到目标 DBFS 级别;低电平正弦音(即 -30dBFS)将被放大以匹配目标 DBFS 电平。但这不是我看到的。
【问题讨论】:
-
您确定绝对没有“尖峰”噪声阻止 AGC 按照您的预期放大输入信号吗?也看看这个answer;
WebRtcAgc_Process()是否应该适当地设置micLevelOut并保留它?... -
对
WebRtcAgc_Process()的简短描述有助于理清您的期望。 -
WebRtcAgc_Process()是否将正弦波输入视为非语音段并因此跳过它?您可以尝试通过实际的语音片段并进行测试吗? -
请不要将 c++ 代码标记为 C,它会造成混淆。
-
我用过类似的代码。但是在我的情况下,到目前为止的输出结果为 -1(错误)。无论如何,如果您到目前为止收到任何饱和警告,您可以分享吗?另外,我知道语音输出是产生的 dbfs、压缩增益和更多参数的综合效果。我注意到这可能不是很有帮助,但我需要确保它有效,以便我可以使用相同的 .如果您已经解决了问题,请分享
标签: c++ signal-processing webrtc