提取Wav文件的Time Domain double []以输入FFT - Java

时间:2014-01-09 03:24:04

标签: java audio fft wav

我有一个wav文件,无法弄清楚如何从中提取我需要的数据,将其放入快速傅里叶变换(FFT)进行进一步分析......

我做了大量的谷歌搜索和搜索,但没有找到具体的东西......

The FFT algorithm code:

    public class ShortTimeFourierTransform {
        public static double[][] magnitudeSpectrum(double[] signal, int windowSize, int hopSize) { ... }  
...}

接收信号的double []因此我假设我必须弄清楚如何解析wav文件并获得double [t]其中“t”是时间,而double [t]将是时间t时wav文件的幅度。

我不知道如何继续。大多数解决方案似乎都将wav导出为字节,根据(https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

,按字节解析wav文件似乎要复杂得多。

非常感谢你!

1 个答案:

答案 0 :(得分:1)

.wav格式只是围绕音频编码的包装格式。你需要:

  • 解析.wav文件,获取编码音频
  • 解码音频,获取原始PCM音频字节(PCM也是一种编码,但易于使用)
  • 将音频转换为您需要的任何格式。 (一些双打?)

除非你能改变文件的格式,否则没有办法解决这个问题。

如果您可以更改文件格式,我建议使用程序(如Audacity)打开wav文件,并保存其原始PCM编码字节。这将使您不必担心.wav格式。

一个好的第三方图书馆可以帮助你解决这个问题。我没有建议。