2011-09-03 36 views
1

我一直在尋找音頻分析。我有一個WAV流被讀入內存,我需要對數據執行各種功能,例如FFT。我一直在閱讀理論,但我不確定我是否正確閱讀。當讀取流時,我得到了一串輸出的數字,我猜是採樣數據(在44100赫茲)。我是否在這個流上執行所有功能?因此,對於1024個樣本的窗口,我只需從我的流中獲取前1024個數字?那麼,我是否會執行FFT和所有其他功能在1024上進行設置併爲其餘的流重複執行?分析波流

我開始理解它的理論和總結樣本等的想法......但我不確定這是什麼意思在實施條款。

編輯 - 爲了闡明我得到的流值,數字沿着-0.432,-0.065...的行。

回答

2

這只是您可以做的簡要概述。詳情我建議你看看一些文獻。

在應用FFT之前,需要對音頻信號進行預處理或加窗。 假設您正在拍攝一個窗口(hanning等), 窗口函數將應用於原始音頻並帶有一些「重疊」來處理邊緣效果。例如,您可以採用1024的方便窗口大小。窗口化後,您可以每1024(預處理)採樣FFT。

我建議你使用MATLAB。這會讓你的任務變得簡單。

+0

感謝您的幫助。那麼我應該將窗口函數應用於我的文章中提到的「-0.432,-0.065 ...」值嗎?即我從閱讀內存流中獲得的值?所以像這樣:var arr = StreamArray.Take(1024).ToArray(); FFT(arr);',然後是下一個1024等。 – XSL

+0

是窗口函數應該應用於您從音頻輸入接收的原始音頻,然後您可以執行FFT。還有一些重疊,例如先取n = 1到n = 1024個樣本,然後從n = 1024-128取樣到n = 1024-128 + 1024 ...像這樣 –

+0

謝謝,這有很大的幫助。 – XSL