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



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

我已经做了很多谷歌搜索和搜索,但没有找到具体的东西......

The FFT algorithm code:
    public class ShortTimeFourierTransform {
        public static double[][] magnitudeSpectrum(double[] signal, int windowSize, int hopSize) { ... }  
...}

为信号输入双 [],所以我假设我必须弄清楚如何解析 wav 文件并获得一个双 [t],其中"t"是时间,而 double[t] 将是时间 t 处 wav 文件的振幅。

我不知道该如何进行。大多数解决方案似乎将 wav 导出为字节,并且根据 (https://ccrma.stanford.edu/courses/422/projects/WaveFormat/) 手动解析 wav 文件似乎要复杂得多

非常感谢!

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

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

没有真正的解决方法 - 除非您可以更改文件格式。

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

一个好的第三方库可以帮助您解决这个问题。 不过我没有建议。

最新更新