【问题标题】:What is the best way to remove the echo from an audio file?从音频文件中删除回声的最佳方法是什么?
【发布时间】:2012-05-19 10:55:46
【问题描述】:

我想通过 Skype 的回声消除功能之类的功能运行音频文件。 iChat 和其他 VoIP 也有此功能,但我找不到任何可以导入或打开文件的软件。

【问题讨论】:

    标签: audio core-audio audio-streaming voip


    【解决方案1】:

    基本方法:

    确定延迟。确定幅度偏移。

    反转信号。应用延迟。调整幅度。播放两个音频文件。

    任何多轨音频应用程序都可以做到这一点(例如大胆、原型或逻辑)。

    对于更复杂的信号,您需要在过滤方面更加聪明,理想情况下,您应该在信号干扰之前抑制信号(在 Skype 场景中)。


    听起来很酷,从理论上讲很有意义,但我仍然不知道该怎么做。我对逻辑相当有经验,但我不知道如何确定延迟。我应该只复制文件,将其反转并移动它直到听起来不错吗?

    只需直观地排列 2 个信号的瞬态即可确定延迟。然后您必须放大并确定 sample 的延迟以实现最佳取消。如果它没有关闭,它不会取消而是添加

    你说的幅度偏移是什么意思,是不是原声和回声噪声的音量差?

    没错。除了非常不寻常的情况外,回波的幅度将与源不同(通常更低),您需要知道这种差异才能最好地消除它(这个偏移量应用于反相信号,顺便说一句)。如果幅度错误,那么您将引入反相信号(可听见),或者,在奇怪的情况下,回声比声源响亮,只减少部分回声。

    一旦瞬变(与样本)对齐并且信号反转,然后确定音量差异 - 如果它太高或太低,它不会尽可能多地消除。

    同样,这是一种基本方法。您可以做很多事情来改进它,这取决于您拥有的信号和处理器。在大多数情况下,这种方法会导致抑制,而不是消除。

    【讨论】:

    • 当产生回声的系统的脉冲响应只有一个非零元素时,这很好。但这种情况很少见。您可能需要多次重复此过程。
    • 听起来很酷,理论上也很有意义,但我仍然不知道该怎么做。我对逻辑相当有经验,但我不知道如何确定延迟。我应该只复制文件,将其反转并移动它直到听起来不错吗?你说的幅度偏移是什么意思,是不是原声和回声噪声的音量差?
    【解决方案2】:

    为了消除回声,您需要两个文件:mic & reference。 麦克风是包含回声的信号。 参考是包含产生回声的原始音频的信号。

    拥有这两个文件后,您就可以开始构建回声消除的逻辑了。从有关该主题的 wiki 页面开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      相关资源
      最近更新 更多