利用Java中的FFT算法进行音频频谱分析

我想用Java(ME)分析音频文件的频谱。 我想像一些媒体播放器那样绘制频谱。 但我不明白一些观点:

  1. FFT算法的输入,我必须从音频文件中获取。 我现在不知道它叫什么,它是什么,更重要的是,我不知道如何得到它。
  2. 输出:如果输入是一个数组(范围?),我获得了其他数组,它的范围是:0-1,右(或不)? 那我和它有什么关系呢?

除了FFT之外,还需要一些额外的步骤。 这已经在SO的先前类似问题中已经涵盖了很多次,您可以通过搜索“dsp”,“fft”,“spectrum”,“谱图”等找到其他材料,但基本上您需要执行以下操作:

  • 将窗口函数应用于输入数据(例如Hann(ing) )
  • 将FFT应用于加窗输入数据(对于复数到复数的FFT,虚数输入都应为零)
  • 计算前N / 2 FFT输出区的平方幅度( re * re + im * im
  • 将平方幅度转换为dB刻度( 10 * log10(squared_magnitude)