2014-01-09 84 views
3

我有一個wav文件,無法弄清楚如何提取我需要的數據以將其放入快速傅里葉變換(FFT)中進一步的分析...提取用於輸入到FFT的Wav文件的時間域double [] - Java

我已經做了很多谷歌搜索和搜索,但沒有找到具體的東西...

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文件的幅度。

我不知道如何繼續。根據(https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

多數解決方案似乎將wav導出爲字節並且按字節分析wav文件似乎要複雜得多。非常感謝!

+0

今天我有同樣的問題。該死... https://xkcd.com/979/ – Gaspa79

回答

1

.wav格式僅僅是音頻編碼的包裝格式。你需要:

  • 解析.wav文件,獲得編碼後的音頻
  • 解碼音頻,獲得原始PCM音頻字節(PCM也是一種編碼,但很容易使用)
  • 轉換將音頻轉換爲您需要的任何格式。 (一些雙打?)

沒有真正的解決方法 - 除非你可以改變文件的格式。

如果您可以更改文件格式,我建議使用程序(如Audacity)打開wav文件,並保存其原始PCM編碼字節。這會讓你不必擔心.wav格式。

一個好的第三方庫可以幫助你做到這一點。但我沒有任何建議。