与原始时域窗口的自动相关对应

信息处理 自相关 峰值检测
2022-02-21 18:48:02

我试图弄清楚自相关如何准确地对应于时域信号。

现在我正在尝试在音频文件中找到音高周期,并且 99% 的时间我都能找到它。然而不幸的是,这 1% 的时间给我带来了一些烦人的问题。

现在,我现在通过我的窗口扫描最高峰(即最高绝对值(样本值))。在大多数情况下,这似乎非常匹配。

现在,当我自动关联时,我希望中心峰值是我已经确定的这个峰值(如果我没看错,它总是有一个正数)。它是否正确?

其次,距离自相关中心峰值 n 个样本的峰值将距离我在时域中识别的峰值 n 个样本,好吗?

Sooo,如果这是正确的,那么我遇到了一个奇怪的问题。我在自相关中心的自相关 91 个样本中找到了一个峰值。不幸的是,当我查看时域中的信号时(在音频编辑应用程序内),我的中心峰值完全对应于音频中的负峰值。但是,距离该峰值 91 个样本没有峰值。

如果我期待下一个真正的峰值是 142 个样本,而前一个峰值是 75 个样本。我确实注意到在我的峰值之前有一个非常小的峰值 91 个样本左右,但样本甚至从未变为负数。那么,为什么这最终会显示为迄今为止自相关中最强的峰值呢?

对此的任何帮助将不胜感激!

4个回答

自相关不是寻找各个峰之间的距离。更重要的是找到那些使所有事物、所有峰、所有谷、所有平坦点、所有组合等之间的平均平方增量最小化的滞后距离。由于在整个窗口上进行平均,滞后距离可能不对应于任何一对点现象之间的距离。

思考自相关如何与原始时域信号相关的一种有用方法是考虑自相关等价于原始信号功率谱的逆 FFT。在物理术语中,这可以被认为是将时域信号分解为其组成的正弦波,从每个正弦波中剥离任何相位信息(即,使每个分量成为余弦波),然后将它们再次组合。实际上,您已经从信号中删除了所有相位信息。所以这就是为什么你在 T = 0 处得到一个大峰值的原因,因为此时所有的余弦分量都“排成一行”。自相关中的其他正峰值出现在您获得一个或多个余弦分量与重合正峰值的位置,例如

希望这种挥手致意的非数学描述有助于使自相关的概念具有更多的物理意义。(如果没有,请随意忽略它!)

音频自相关中的大偏离中心峰值通常是由以下原因引起的

  1. 声反射或回声
  2. 信号中的强谐波分量
  3. 其任意组合

您可以按如下方式考虑自相关:复制原始信号,对其进行时间偏移,然后测量时间偏移与原始信号的相似程度。

让我们用正弦波来做这件事:每次时滞是正弦周期的整数倍时,两个信号完美对齐,并且自相关具有最大值。如果时间滞后是一个周期的一半,则两个信号完全对齐,但相位不同。在这种情况下,自相关为负且具有负峰值。对于完美的正弦波,自相关也是正弦波。对于具有基频和谐波的更复杂的音调,自相关往往具有均匀间隔的多个峰值。在演讲期间,这堵墙主要发生在元音期间。

现在考虑用麦克风录制语音并且麦克风放在桌子上的一个小支架上的情况(任何优秀的录音工程师都会像瘟疫一样避免这种情况)。麦克风直接拾取声音,但声音也从桌面反弹并稍后到达麦克风。如果您对此进行自相关,一旦时间滞后将反射线与原始语音对齐,您就会看到一个强烈的峰值。因此反射会产生一个偏心的自相关峰值。其时间位置对应于原始声音和反射的传播路径的差异。例如,如果反射路径长 70 厘米,您将在 2 毫秒或 91 个样本 @44.1kHz 处看到自相关峰值。

如果您在同一信号中有多个反射和多个谐波,事情会变得更加复杂。

现在,当我自动关联时,我希望中心峰值是我已经确定的这个峰值(如果我没看错,它总是有一个正数)。它是否正确?

不,这是不正确的。自相关是整个窗口的数据价值的平均值。只需看一下相关性的定义,您就会看到相关函数中的点 n 是信号在循环移位 n 处与自身相乘时的平均样本值所以最大的峰值会影响这种相关性,但它会在整个信号中取平均值。

那么为什么信号中的一个峰值可能与相关性中的一个峰值相对应呢?让我们考虑一个信号,其中每个偶数样本为 1,每个奇数样本为 0。然后您会说第一个最大峰值位于 0,第二个最大峰值位于 2。我们还注意到我们的自相关函数在这些索引处的峰值。关键是您在这些位置看到峰值的原因是因为这些非常强的峰值是信号的周期性特征这不是因为该指数有 1 个尖峰,而是因为许多尖峰与该循环移位值相关。对于非常纯的信号可能会出现这种情况,但在涉及具有多个谐波的不太简单的信号时情况并非如此。你的分析很快就崩溃了。