在上一个问题中,我曾问过Why can't I simply negate the source time domain amplitude values to produce a destructive noise signal?
其中一张海报说,虽然简单地产生一个反极性(否定)信号在理论上会起作用,但在实践中它是不可能的
所以我想问一下,主动噪音消除的基本方法(以某种半技术方式)是什么?
其次,为什么大多数关于这个主题的文献都在频域?
答案 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个最强大的波分量。对于他们每个我们存储:
比我们经常播放8个正弦曲线,每个正弦曲线都有正确的功率和正确的延迟。困难的部分是接下来发生的事情。我们需要继续倾听适应,但现在我们正在倾听环境声音+我们自己的声音。这种算法更难实现,但在概念上更容易,人们可以很容易地弄清楚如何自己做。
所以,与其他答案相反,管理时间延迟至关重要。如果不这样做,就无法创建ANC系统。如果您只关心频域,那么您唯一可能做的就是过滤这些频率。在ANC系统上,这没有意义。