2

我可以使用 fft 来获取加载的 1 秒音频文件的频率、相位和幅度,并重新创建它。我现在要做的是找出每个频率在 1 秒音频文件中的开始位置和结束位置,并将数据放入数组中

示例:100hz 从 0.23 秒到 0.34 秒开始,104.34hz 从 0.35 秒开始,到 0.37 秒结束。

fft 可以做到这一点还是我需要改变我的整个程序以使用小波?还有八度音程中的小波示例可以显示如何做我想要完成的事情吗?

我正在使用来自 repo 的 Ubuntu Linux 12.04 和 Octave 3.2.4

谢谢瑞克

4

1 回答 1

5

FFT 作为一种估计离散傅里叶变换 ( DFT ) 的算法,提供音频信号的频率内容(如您所提到的幅度和相位)。这将为您提供每个离散频率仓的一组幅度/相位值,您可以将其映射到连续频率值(基于仓索引或离散频率、FFT 点的数量和信号的采样频率)。

虽然 DFT(通过 FFT)是一种全局变换,也就是说,由于您正在移动到频域,因此您将失去时间的概念。您需要的是短时傅里叶变换 (STFT),即在信号的短时间帧(窗口)上进行 FFT。这将为您提供时频表示作为输出,您可以在其中指定每个分析窗口的频率内容,从而指定每个短时间实例。

方法草图:定义时间窗口长度和窗口偏移(基于所需的时间分辨率或线性采样时间实例),运行 STFT,然后对每个窗口中的傅里叶幅度进行峰值拾取或局部最大值估计的方法。这将为您提供可以跨时间跟踪的主要频率位置(发作等)

在 MATLAB 中检查频谱图以了解 STFT 的实现以帮助您入门。

于 2012-08-23T06:12:47.907 回答