有源噪声消除背后的理论是什么?

时间:2012-04-24 04:22:01

标签: math audio fft frequency noise-reduction

在上一个问题中,我曾问过Why can't I simply negate the source time domain amplitude values to produce a destructive noise signal?

其中一张海报说,虽然简单地产生一个反极性(否定)信号在理论上会起作用,但在实践中它是不可能的

所以我想问一下,主动噪音消除的基本方法(以某种半技术方式)是什么?

其次,为什么大多数关于这个主题的文献都在频域?

4 个答案:

答案 0 :(得分:9)

这很简单。

当您发送反转信号时,已经听到了噪音。

您需要查看正在生成的频率,然后生成相应的反转信号以取消它们。

答案 1 :(得分:6)

噪音消除是预测。您的算法必须预测未来某个时间噪声的声音(由系统和音频时间延迟给出的时间),然后预测将来在同一点产生相反声音的信号(你的系统会扭曲和延迟,所以你必须反映失真和延迟)。

您可以使用几个连续的FFT来确定噪声中的哪些频率没有变化,并假设或计算它们将在未来短时间内持续的概率。

如果您知道扬声器的频率响应曲线,您可能能够找出匹配某些预测噪声频谱所需的信号频率幅度。正弦曲线的相位角将随时间变化。如果您知道输出信号的时间延迟,则可以在将来的某个时间点计算正弦波的相位。如果您在某个时间和位置具有特定噪声频率的预测相位,则可以将π添加到该相位角以估计噪声消除信号。

如果您不知道系统的频率响应和延迟,那么您将无法知道要取消的信号的频率,幅度或相位。你可能最终会放大噪音而不是取消它。

答案 2 :(得分:1)

似乎缺少的是拦截和消除信号所需的传播延迟。 KISS规则最终将证明这一点。 FFT是一个复杂的计算,由于处理信号所需的时间,每次N次迭代都会引入结果误差。要消除声波,需要提前将其拦截,处理和倒转。然后必须设置传感器的时间常数。 E考虑了。我的经验是,在“噪声”源附近的麦克风通过导线,放大设备和要消除的位置附近的换能器连接。

答案 3 :(得分:0)

编辑:拼写错误

ANC的基本思想是找到重复的声音并播放相反的。如果重复声音继续播放,我们将能够取消它。这与其他答案直接矛盾,但我会澄清。

播放相反的声音意味着以精确的功率和延迟再次播放,可能会反转波形。延迟本身随每个频率而变化。例如,对于20Hz声音,我们必须以1/20 = 0.05s的精确倍数重放倒置声音。例如,对于23Hz,延迟必须是1 / 23~ = 0.04347s的倍数。

由于任何波形都可以通过正弦波的总和产生,一种方法是只担心 N 最大正弦波,以功率(振幅的平方)来衡量。为了找到正弦波的频率和功率,我们使用傅立叶变换,通常使用 FFT 算法。

如果我们采用,例如N = 8,则意味着我们正试图消除8个最强大的波分量。对于他们每个我们存储:

  • wave的振幅
  • wave的偏移量,将计算机的时钟作为基础。

比我们经常播放8个正弦曲线,每个正弦曲线都有正确的功率和正确的延迟。困难的部分是接下来发生的事情。我们需要继续倾听适应,但现在我们正在倾听环境声音+我们自己的声音。这种算法更难实现,但在概念上更容易,人们可以很容易地弄清楚如何自己做。

所以,与其他答案相反,管理时间延迟至关重要。如果不这样做,就无法创建ANC系统。如果您只关心频域,那么您唯一可能做的就是过滤这些频率。在ANC系统上,这没有意义。