【问题标题】:Audio feedback issue in an iphone applicationiPhone应用程序中的音频反馈问题
【发布时间】:2013-02-23 22:10:15
【问题描述】:

有一个适用于 iphone 的实时音频应用程序,可为输入声音添加一些效果(混响、延迟等)并进行播放。 所以我有一个经典的放大audio loop issue。您可能对此很熟悉。当您将麦克风靠近扬声器时,通常会发生这种情况(来自输入的声音被放大、消失、重新进入等等)。

很高兴听到任何解决此问题的想法。

(我已经尝试过:

  1. 限制最大音量以防止反馈增大。
  2. 使用过滤器来限制某些频率。
  3. 从新的输入信号中减去以前的输出信号(我认为这是最好的方法,但这并不完美。即使时机很好(我认为是这样)这种方法对声音的破坏太大了)

谢谢。

【问题讨论】:

    标签: iphone audio audio-recording


    【解决方案1】:

    你的 3 号和 2 号加起来可能是最好的。查找自适应声学回声消除。

    使用 nLMS 的 AEC 很容易实现,但会占用一些 CPU。如果您使用较低的采样率,它可能会起作用,具体取决于您的回声的毫秒数。

    有一个使用 FFT 进行适应的快速版本。它不会很快适应,但在没有长回声尾巴的移动应用程序上可能会很好。

    AEC 的工作方式是将扬声器和麦克风之间的回声路径收敛到声学模型上,然后使用该模型从麦克风输入中减去输出回声。它知道会发生什么,将其放入模型中并猜测回声将是什么,然后从输入中删除该回声。随着时间的推移,模​​型变得更好,回波更小。

    【讨论】:

    • 是的。 AEC + 低通、高通滤波器的组合是可行的方法。
    【解决方案2】:

    您可能已经知道这一点,但为了安全起见 - 请确保您将输出路由到正确的扬声器。正如in the docs 所说,当您设置“播放和录制”音频会话类别时,默认输出是顶部扬声器(您在通话期间将耳朵放在的那个)。底部还有另一个扬声器,由于它离麦克风更近,它会产生更多的反馈。如果您设置“播放和录制”类别,通常需要手动覆盖以路由到错误的(底部)扬声器,但我想我会提到它以确保。

    【讨论】:

    • 这值得一提,谢谢。顶部的扬声器可以解决问题,但它太安静了,所以我必须使用底部的。
    【解决方案3】:

    为了帮助其他试图解决此问题的人:AEC 加上高通、低通滤波器的组合。

    http://speex.org,它的 AEC 部分完成了这项工作。 High-pass, low-pass 过滤器很容易实现。 (请参阅 Apple AccelerometerGraph 示例以了解 LP、HP 过滤器的实现)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2017-08-28
      • 1970-01-01
      • 2010-12-03
      相关资源
      最近更新 更多