是否有可以在 iOS 中实现的现有反馈消除算法?

信息处理 声音的 数字通信 软件实现 回馈
2022-02-02 20:20:02

我正在进行的项目允许用户使用他们的 iphone 作为麦克风通过 PA 系统讲话。不幸的是,iOS 中现有的音频单元并没有消除 PA 扬声器和 iphone 麦克风之间的反馈,并且存在即时且令人衰弱的反馈。有没有办法使用现有算法来克服这个问题?如果软件反馈消除不是一个选项,是否可以将 iphone 麦克风的灵敏度调整为更具方向性?

1个回答

我自己从来没有实现过这个,但这是我的(可能不正确的)想法:

反馈消除的一般方法是

  1. 检测反馈的频率
  2. 调整滤波器以消除这些频率

第 2 步相对容易,特别是如果您使用的是 iOS 并且有一个可以为您完成的音频单元。有一些事情需要注意——因为你需要一个相当陡峭的过滤器,你需要确保它即使在极端环境下也能保持稳定——但希望 Apple 的人已经为你处理好了这些东西。

第 1 步比较棘手——你怎么知道某些东西是反馈而不是音频的真实部分?有一些与回声消除和自适应过滤相关的高级技术可以做到这一点,但我不知道有任何广泛可用的代码或库。您的特定用例可能有一些捷径,例如,如果您只处理语音,您可能能够简单地跟踪音高,并且如果单个音高足够强,则假设它是反馈的结果,但即使这样做足够快可能不是微不足道的。

请注意,这整个过程通常需要连续/自适应地进行,至少在某种程度上确保麦克风和扬声器的移动不会引起新的反馈。

有几项与此相关的专利,主要是因为它是设计助听器的一个重要方面。也许其中一些已过期并且您使用它们:

(注意,维基百科提到了另一种基于音高转换的方法。我对此并不熟悉,听起来很傻,但可能值得研究。)