如何从wav文件中获取时域频率?

时间:2014-09-17 14:18:01

标签: c++ audio signal-processing fft wav

换句话说,我正在尝试播放.wav文件,为此我需要知道频率和持续时间;我正在使用的API有一个方法,需要作为参数一个带有两个字段(频率和时间)的向量!

我尝试使用快速傅里叶变换,但它给了我频率和幅度!

MAG
  / \   |   |   - | ------>频率

但我需要这样的事情: 频率   / \   |   |   - | ------>时间

我想知道是否可以从wav文件中获取这些信息!

1 个答案:

答案 0 :(得分:0)

数字音频信号是一系列对(幅度,时间)。 或者你可以说它是时间的函数。 如果您采用一系列音频信号并对此序列执行傅里叶变换(DFT / FFT),您将得到一个包含(幅度,频率)对的新序列。 或者你可以说一个频率函数。

此序列描述了频域中信号的属性。 它根本不包含任何时间信息。

我想,你想要的是一个功能,它描述了音频信号频率成分随时间的变化。这不能通过简单的FFT来完成。

你能做的是:

  • 取N个音频数据流样本,样本(0,...,N-1)
  • 执行FFT
  • 获取音频数据流的另外N个样本,(m,...,m + N-1),其中m <&lt;&lt; Ñ
  • 执行FFT
  • 取另外N个音频数据流样本,(2m,...,2m + N-1)
  • 执行FFT

如果你的采样时间是ts,你会在T = m * ts之后得到一个新的频率分析。

也许,这就是你想要的。