利用Java中的FFT算法进行音频频谱分析
我想用Java(ME)分析音频文件的频谱。 我想像一些媒体播放器那样绘制频谱。 但我不明白一些观点:
- FFT算法的输入,我必须从音频文件中获取。 我现在不知道它叫什么,它是什么,更重要的是,我不知道如何得到它。
- 输出:如果输入是一个数组(范围?),我获得了其他数组,它的范围是:0-1,右(或不)? 那我和它有什么关系呢?
除了FFT之外,还需要一些额外的步骤。 这已经在SO的先前类似问题中已经涵盖了很多次,您可以通过搜索“dsp”,“fft”,“spectrum”,“谱图”等找到其他材料,但基本上您需要执行以下操作:
- 将窗口函数应用于输入数据(例如Hann(ing) )
- 将FFT应用于加窗输入数据(对于复数到复数的FFT,虚数输入都应为零)
- 计算前
N / 2
FFT输出区的平方幅度(re * re + im * im
) - 将平方幅度转换为dB刻度(
10 * log10(squared_magnitude)
)