在没有 STFT 的情况下,以 1/f 时间分辨率分析音频/音乐频率,使用对数间隔频率 O(N log N) 的探针相量?

信息处理 傅里叶变换 频谱 自由度 时频 stft
2022-02-05 07:04:31

首先,一些背景知识: STFT 是我所知道的用于将(音乐或其他)信号分析为其分量频率的最佳通用工具。对于许多用途,STFT 工作正常,但有两个相关问题使其不适合音乐用途 - 1)频率箱是均匀间隔的,不像人类听力系统那样以对数方式工作,以及 2)由数学由于 DFT/FFT 的性质,您需要捕获长时间的音频才能在低频下获得不错的频率分辨率。

例如,为了能够准确区分钢琴低音范围内的半音,您需要大约 1hz 的分辨率,这意味着您需要捕获 1 秒的音频。对于音乐来说,这是一个完全不能接受的时间分辨率。

有多种方法可以增强 FFT 的输出,包括 a) 零填充以创建更大的窗口,或 b) 重叠分析段,或 c) 使用相位魔术来检测频率变化。这些很有用,但仍然存在问题——更多的计算开销,虽然 (a) 可以在给定的时间分辨率下增加明显的频率分辨率,但对于两个频率碰巧落入同一个 bin 的情况没有帮助。

所以... 纯粹出于兴趣,我一直在研究其他可能性。CWT 和 DWT 起初看起来很有前途,但 CWT 的计算速度非常慢,而且 DWT 只有倍频程频率分辨率。(对吗?)我还考虑过以不同的时间/频率分辨率进行多个 FFT 以更好地覆盖空间,或者使用缩放 FFT 等解决方案。这些都有助于解决不同的具体问题,但它们都没有真正解决根本问题:我们没有一种快速 (N log N) 的方法来以良好的时间频率分辨率分析信号中的频率。

很多人在这一点上指向海森堡不确定性原理,这意味着在数学上根本不可能真正实现这一点。我很确定这完全是错误的:当然,不确定性原理是有效的,但我们甚至还没有接近它。这里的问题是 DFT/FFT 只能分析基频整数倍的频率。但是,如果我们愿意使用(计算速度较慢的)正弦扫描或连续小波变换,其他频率肯定会以良好的时间分辨率进行分析。直到FFT 不再有用很久之后,不确定性原理才会引起问题。

所以,我的解决方案。我想让你告诉我它是否以及在哪里是错误的:让我们将输入信号与选定频率的探针相量相关联。起初,这听起来像是一个 N^2 算法(每个频率的相关性的 N 次操作,乘以频率数)。然而,关键点是,对于具有相同频率分辨率(低频)的 FFT 的等效对数频率分辨率,您只需要分析对数 N 个频率 - 因为在音乐信号中,高频分辨率对数不太重要.

所以,我们有一个这样工作的算法:

  1. 决定你的频率分辨率。现在让我们说八度音阶,尽管我想要在大多数应用程序中使用亚半音。
  2. 预加载一些带有探针相量的缓冲区,作为以该间隔间隔的频率——比如 16、32、64、128、256、512、1024hz,[...]。因为可以在更短的时间内检测到更高的频率,所以在更高的频率下需要更少的样本(= 更好的时间分辨率,以及更少的操作)。为此,让我们在每个频率上使用几个周期。
  3. 如果有意义的话,预先窗口化这些缓冲区。
  4. 将这些中的每一个与时间 t 处输入信号的足够长的段相关联(即,段和探头的分量乘法之和)。可能标准化这个值。
  5. 这种相关性的结果是在时间 t 处该频率的信号幅度。因此,结果与频率的表应该是您在所需对数分辨率(在这种情况下为八度音阶)的频谱。

据我所知,只要您的频率是对数间隔的,这将在您喜欢的任何频率分辨率下为您提供出色的时间分辨率(每个频率的几个周期),使用大约 N 次操作乘以 log N 频率 -正是你想要的音乐,也正是 STFT 的问题——因此,解决了 STFT(音乐信号)的问题,计算复杂度相当。

我错过了什么?这会起作用吗?有警告或陷阱吗?我的复杂性计算在数学上是否合理?

感觉有点像发明了一台永动机——它看起来应该可以工作,但我的直觉是我在掩盖一些重要的细节。

3个回答

诚然,复杂度将是O(NlogN)

但是这个捕捉到了与 FFT 算法中不同的现实。在您的情况下,这是因为您只对一组较小的对数间隔频率感兴趣。在 FFT 案例中,它来自 Cooley-Tukey 算法的“分而治之”的递归结构。logNlogN

假设您对从 40 Hz 到 1.28kHz 的四分之一音分辨率感兴趣。那是 5 个八度音阶,或 120 个四分音符。对于 1024 长的缓冲区,您的算法正在执行 1024 x 120 复杂 MAC(加上一些簿记)。一个简单的 radix-2 FFT 将执行 1024 x 10 复数 MAC(加上一些簿记)。你的算法慢了 12 倍。

此外,您的变换听起来不可逆,这使得它仅对分析应用程序有用(而不是重新合成、效果......)。

您所描述的可能类似于使用 Morlet 或 Gabor 小波应用恒定 Q 变换。与使用加窗 FFT 相比,这些变换可能具有更高的计算成本,但当适当缩放时,它们可能在频率和时间上表示更接近人类感知分辨率的东西。

请定义你所说的探测相量是什么意思?我没有在音频中遇到过这个术语。

我认为你的理论很好,因为我在 2004 年编写了一个类似的程序,它给出了准确的样本结果,没有垃圾箱和窗口。不确定性原理确实会阻止对正弦波峰和谷的位精确检测,如果您在音频文件中混合了两个正弦,并且您想在来自潜艇雷达的频谱图中分析它们,这是非常精确的,您将看不到非常精确的频率和时间特征,你不可能有一个 440 的正弦波在 440 处产生一条检测到的特征线,但你可以对频谱图的值进行平均,这将在 440 标记周围形成钟形曲线,并以高精度表示信号在440。

探测相量必须基于音频的延迟和跨时域的比较值,这意味着您可以拥有的最高频率时间特征被延迟作为频率的一个因素,因此低频具有较低的时域分辨率。 ..并且当您提高相量探头的精度时,我发现生成的图形值是以更多的时间延迟或更少的时间精度写入的,我不知道是哪个。

我看到,由于您可以计算 1 秒声音的 1gb 高精度分析,因此您最终拥有如此多的数据,您可以在视觉上和数学上平均并处理结果以具有比初始不确定性精度更高的精度,如果您进行进一步处理,您可以获得频率准确的数据,以及非常准确的时间数据,但这似乎是通过统计平均结果。与所有统计数据相同,有大量数据,您对基础价值有很高的确定性。

您还可以向前和向后运行音频,并从两个图表中确定检测到的信号实际发生的时间,它们位于向前和向后分析的频谱图的中间。