我可以使用 fft 获取加载的 1 秒音频文件的频率、相位和幅度,并重新创建它。
我现在想做的是找出每个频率在 1 秒音频文件中的开始位置和结束位置,并将数据放入数组中
示例:100hz 从 0.23 秒到 0.34 秒开始,
104.34hz 从 0.35 秒开始,到 0.37 秒结束。
fft 可以做到这一点还是我需要改变我的整个程序以使用小波?还有八度音程中的小波示例可以说明如何完成我想要完成的任务吗?
我正在使用存储库中的 Ubuntu Linux 12.04 和 Octave 3.2.4
谢谢
瑞克
FFT 作为估计离散傅立叶变换的算法 (DFT http://en.wikipedia.org/wiki/Discrete_Fourier_transform),提供音频信号的频率内容(如您提到的幅度和相位)。这将为您提供每个离散频率仓的一组幅度/相位值,您可以将其映射到连续频率值(基于仓索引或离散频率、FFT 点数和信号的采样频率)。
不过,DFT(通过 FFT)是一种全局变换,即,由于您正在移动到频域,因此您将失去时间的概念。您需要的是短时傅立叶变换(STFT),即对信号的短时间帧(窗口)进行 FFT。这将为您提供时频表示作为输出,您可以在其中指定每个分析窗口的频率内容,从而指定每个短时实例的频率内容。
进场草图:定义时间窗口长度和窗口移位(基于所需的时间分辨率或线性采样时间实例),运行 STFT,然后运行对每个窗口中的傅里叶幅度进行峰值拾取或局部最大值估计的方法。这将为您提供主要频率的位置,您可以跨时间跟踪这些频率(发作等)
在 MATLAB 中检查频谱图 http://www.mathworks.com/help/toolbox/signal/ref/spectrogram.htmlSTFT 的实现可以帮助您入门。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)