【问题标题】:STFT Clarification (FFT for real-time input)STFT 澄清(用于实时输入的 FFT)
【发布时间】:2015-08-08 14:12:20
【问题描述】:

我通过相关性了解 DFT 的工作原理,并将其作为理解 FFT 结果的基础。如果我有一个以 44.1kHz 采样的离散信号,那么这意味着如果我要采集 1 秒的数据,我将有 44,100 个样本。为了在上面运行 FFT,我必须有一个 44,100 的数组和一个 N=44,100 的 DFT,以获得检测高达 22kHz 频率所需的分辨率,对吧? (因为 FFT 只能将输入与频率最高为 N/2 的正弦分量相关联)

这显然需要很多数据点和计算时间,而且我已经读到这就是短时 FT (STFT) 的用武之地。如果我随后获取前 1024 个样本(约 23 毫秒)并运行 FFT那,然后取一个重叠的1024个样本,我可以每23ms得到一次信号的连续频域。那么我该如何解释输出呢?如果 FFT 对静态数据的输出是 N/2 个数据点,带宽为 fs/(N/2),那么 STFT 频率输出的带宽是多少?

这是我在 Mathematica 中运行的一个示例:

100Hz 正弦波,44.1kHz 采样率:

然后我只对前 1024 个点运行 FFT:

然后,感兴趣的频率位于数据点 3,它应该以某种方式对应于 100Hz。我认为 44100/1024 = 43 有点像比例因子,这意味着这个小窗口中的 1Hz 信号将对应于完整数据阵列中的 43Hz 信号。但是,这会给我一个 43Hz*3 = 129Hz 的输出。我的逻辑是否正确但我的实现不正确?

【问题讨论】:

  • 我认为您误解了 DFT、FFT 和 STFT。您不需要 N = 44100 来检测高达 22Khz 的频率,任何 N 都可以获得高达 22KHz 的频率(即 N 可以是 200、2000 等)。变量 N 仅影响您获得的频率分辨率,而不是最大值或最小值频率值的值。
  • STFT 用于频谱随时间变化的信号,如音乐。
  • 我应该说我打算将其用于连续输入,例如音乐或麦克风。
  • 是的@KillaKem。我的问题是我必须有 N=44100 才能检测到 22k 的频率。我应该说,“检测高达 22kHz 的单一频率”。谢谢你澄清这一点。然后我意识到通过应用您的评论,29Hz 错误可能是因为我的分辨率不够好。当我获得 4096 分的 STFT 时,我得到 107.6。可以看出,随着 N 的增加,这将趋向于 100Hz。 (如果您发表评论,我会接受您的评论作为答案。)再次感谢。

标签: fft


【解决方案1】:

正如我在之前的 cmets 中已经说过的,变量 N 会影响输出频谱可实现的分辨率,而不是您可以检测到的频率范围。N 越大,分辨率越高,但计算时间越长N 越小,计算时间越短,但可能导致spectral leakage,这是您在上图中看到的效果。

至于您的其他问题,理论上 FFT 的带宽是无限的,但我们将结果限制在 [-fs/2 到 fs/2] 范围内的频带范围内,因为该频带之外的所有频率容易受到aliasing 的影响,因此没有用。此外,如果输入信号是真实的(包括我们的大多数情况下都是如此),那么从 [-fs/2 到 0] 的频率只是频率的反映从 [0 到 fs/2] 等一些 FFT 程序只输出从 [0 到 fs/2] 的 FFT 频谱,我认为这适用于您的情况。这意味着您作为输出收到的 N/2 个数据点代表[0 到 fs/2] 范围内的频率,这就是您在 FFT 和 STFT 的情况下使用的带宽(STFT 只是一系列 FFT,每个 FFT 在一个 STFT将为您提供该波段中包含数据点的光谱)。

我还想指出,如果您的输入是变化的信号(例如音乐),STFT 很可能不会减少您的计算时间,因为在这种情况下您需要执行它几次 在歌曲的整个播放过程中,它可以让您更好地了解歌曲的频率特性,而如果您只执行一次 FFT。

要可视化 FFT 的结果,您可以使用频率(和/或相位)频谱图,但为了可视化 STFT 的结果,您很可能需要创建一个 spectrogram,它基本上是一个可以制作的图表只需将各个 FFT 频谱并排放置即可。创建频谱图的过程如下图所示(来源:Dan Ellis - Introduction to Speech Processing)。频谱图将向您展示信号的频率特性如何随时间变化以及您如何解释它取决于您希望从音频中提取/检测哪些特定功能。您可能需要查看spectrogram 维基百科页面以获取更多信息。

【讨论】:

  • 感谢您对频谱图的全面总结和补充。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多