如何从JAVA中的wav缓冲区获得音高 - 快速傅立叶变换

时间:2017-04-01 20:23:14

标签: java signals

我是信号处理的新手,我正试图检测wav文件中的音高。我生成了一个2声道的wav文件,在1秒内播放3个不同的音符。我能够使用java类读取波形,并且有一个双数组:

-0.12847900390625
-0.161651611328125
-0.161651611328125
-0.1907958984375
-0.1907958984375
-0.215179443359375
-0.215179443359375
       .
       .
       .

我要获取正在双阵列中播放的音符。我已经google了一下,相信快速傅里叶变换是可行的方法。但是,我有点不确定这个转换是做什么的。

FFT会在给定时间段内返回频率吗?

感谢任何帮助。谢谢你

1 个答案:

答案 0 :(得分:0)

离散傅立叶变换用于将任何离散时域信号映射到频域,以减少计算,同时执行卷积,相互关系等操作,因为它更容易在频域中计算并采用逆变换并转换回来与时域中的直接操作相比,进入时域。 与DFT O(nlogn)的时间复杂度相比,FFT是DFT的简单算法实现,时间复杂度降低O(n^2)

您可以在此处找到更多详细信息:

http://www.dspguide.com/ch12/2.htm