如何在会议混合实时音频之前和之后实施自动增益控制 (AGC)?

信息处理 声音的 音频处理 即时的 处理增益
2022-01-25 23:24:28

在将短值除以参与者数量之后,我混合音频(16bit,16khz,little-endian,单声道,帧持续时间:60ms)数据包,因此它永远不会被剪裁。但在此之前,我需要对所有传入的声音应用一定的增益,以使它们保持在同一水平。即使在混合之后,我也必须再次对混合音频应用一定的增益,以使声音保持流畅并保持一定的音量。

现在,随着语音级别的变化,所有参与者的“增益”一直不是恒定的,我必须一直计算这个动态/自动增益(从样本或短阵列的 RMS?)。我怎样才能做到这一点或实现逻辑?我尝试阅读 webRTC AGC 模块,但它太复杂了,我无法理解。至少建议我在这方面有帮助的任何资源。提前致谢。

1个回答

在将短值除以参与者数量之后,它永远不会被剪裁

这不是一个好主意,这样会损失很多 SNR。我建议在浮点中运行处理是 32 位定点,并且仅在创建算法的输出时将其减少到 16 位

我尝试阅读 webRTC AGC 模块,但它太复杂了,我无法理解。

那是不幸的。语音 AGC 是一个相当复杂的问题,至少如果你需要一个好的问题。不过研究得很好。作为一个快速概述:您需要一个语音活动检测器、一个包络或能量检测器、一个非线性增益曲线、一个混合级和另一个非线性增益(压缩器/限制器)来管理输出电平。每个块的细节高度依赖于您的特定应用程序的要求。

至少建议我在这方面有帮助的任何资源。

  1. 这是 TI 的白皮书,它已经过时了,但至少它是开放的https://www.ti.com/litv/pdf/spraal1
  2. 关于 webRTC AGC 的一些很好的分析https://chowdera.com/2021/06/20210615125737495y.html