我的任务是设计自动增益控制的逻辑。它不会是传统的 AGC,因为它必须在计算机上运行,并且不可能以与硬件相同的方式连续修改音量。与 AGC 本身相比,它更像是“自动为我粗略设置输入增益”。但是,我计划以相同的方式处理设计。
这将主要用于语音/语音,所以我想做的是防止传入的静音(当扬声器不说话时)导致增益设置得太高。我想避免像语音活动检测这样复杂的事情以及涉及派生多个简单参数的复杂临时方法——至少现在是这样。
我可以使用任何简单的技巧来帮助解决这个问题,还是使用成熟的语音活动检测的最佳方法?
我的任务是设计自动增益控制的逻辑。它不会是传统的 AGC,因为它必须在计算机上运行,并且不可能以与硬件相同的方式连续修改音量。与 AGC 本身相比,它更像是“自动为我粗略设置输入增益”。但是,我计划以相同的方式处理设计。
这将主要用于语音/语音,所以我想做的是防止传入的静音(当扬声器不说话时)导致增益设置得太高。我想避免像语音活动检测这样复杂的事情以及涉及派生多个简单参数的复杂临时方法——至少现在是这样。
我可以使用任何简单的技巧来帮助解决这个问题,还是使用成熟的语音活动检测的最佳方法?
我想到了两件事。
首先,让我们解决低幅度噪声问题。这是一个典型的噪声门教科书案例。举一个极端的例子,这些有时甚至用于吉他失真效果,这些效果基本上是疯狂的受控过载。我不得不承认,我没有找到任何关于创建数字噪声门的文献,但它们作为插件大量存在,所以也许挖掘一些开源项目将为你学习如何实现它们打下良好的基础。本质上,您测量信号的窗口能量,如果它低于某个阈值,则将增益衰减为零(通常使用衰减指数)。无论如何,我相信你知道噪音门是什么,我在这里绕着灌木丛打。制作一个并使用它。
其次,当你说如果我的输入增益太差时自动为我粗略地设置输入增益,这听起来像是使用模糊控制器的教科书案例。我链接到 Wikipedia 页面是因为我感觉有点懒惰,但是您可以在 Google 结果的前十页上找到大量优秀的论文。这个概念和你描述的完全一样。您将有几个(为了一个简单的示例而说五个)级别的增益与您认为应该是的接近程度:
- 太低了 - 低的 - 差不多 - 高的 - 太高了
基于这些,您将获得某种模糊响应,例如:
- 高速增长 - 低速增长 - 没做什么 - 低速下降 - 高速减少
这些是我对如何做的想法。您仍然需要一些方法来测量您的模糊控制输入(评估当前增益水平有多好),但这是您需要解决的问题。我会说,如果您骑得非常接近剪裁,那就是High,如果您已经剪裁,那就是Way too high,依此类推。根据规范认为可接受的内容,模糊控制有时可以让您摆脱非常简单的解决方案。