提取Wav文件的时域双[]以输入FFT-Java

提取Wav文件的时域双[]以输入FFT-Java,java,audio,fft,wav,Java,Audio,Fft,Wav,我有一个wav文件,不知道如何从中提取数据,将其转换为快速傅立叶变换(FFT)进行进一步分析 我做了很多谷歌搜索,但没有找到具体的东西 The FFT algorithm code: public class ShortTimeFourierTransform { public static double[][] magnitudeSpectrum(double[] signal, int windowSize, int hopSize) { ... } ...}

我有一个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导出为字节,根据()手动解析wav文件似乎要复杂得多


非常感谢你

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

  • 解析.wav文件,获取编码音频
  • 解码音频,获取原始PCM音频字节(PCM也是一种编码,但易于使用)
  • 将音频转换为您需要的任何格式。(一些双人的?)
没有真正的解决方法-除非您可以更改文件的格式

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


一个好的第三方库可以帮助您做到这一点。不过我没有任何建议。

我今天也有同样的问题。该死的。。。