gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:18 40 4
gpt4 key购买 nike

我有一个 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] 将是wav 文件在时间 t 的振幅。

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

非常感谢!

最佳答案

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

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

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

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

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

关于java - 提取 Wav 文件的时域双 [] 以输入到 FFT - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21011093/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com