2014-06-24 285 views
1

很抱歉,如果我提交了一個副本,但我想知道是否有任何lib中的python,這使得你可以從音頻文件中提取聲音頻譜。我希望能夠獲取音頻文件並編寫一個算法,該算法將返回一組數據{TimeStampInFile;頻率振幅}。從python的音頻文件中提取音頻頻譜

我聽說這通常稱爲節拍檢測,但據我所知,節拍檢測不是一種精確的方法,它只適用於可視化,而我想操縱提取的數據,然後將其轉換回一個音頻文件。我不需要做這個實時。

我會感謝您的任何建議和建議。

回答

1

我認爲你的問題有三個獨立的部分:

  1. 如何音頻文件加載到蟒蛇?
  2. 如何計算python中的譜?
  3. 如何處理光譜?

1.如何在python中加載音頻文件?

您可能最好使用scipy,因爲它提供了很多信號處理功能。對於加載音頻文件:

import scipy.io.wavfile 

samplerate, data = scipy.io.wavfile.read("mywav.wav") 

現在,你必須在samplerate採樣率(樣本/秒)和數據作爲data一個numpy.array。您可能希望將數據轉換爲浮點數,具體取決於您的應用程序。

還有一個用於加載wav文件的標準python模塊wave,但是numpy/scipy提供了一個更簡單的接口和更多的信號處理選項。

2.如何計算頻譜

簡要回答:使用FFT。爲了更智慧的話,請參閱:

Analyze audio using Fast Fourier Transform

較長的答案是相當長的。開窗是非常重要的,否則你會有奇怪的光譜。

3.做什麼用的頻譜

這是有點難度。通常對時間較長的信號進行時域濾波。也許如果你告訴我們你想完成的事情,你會收到一個很好的答案。計算頻譜是一回事,在信號處理中獲得有意義的結果會有點複雜。 (我知道你沒有問這個,但我看到它的概率是0. 0。當然,這可能是你對音頻信號處理有很好的瞭解,在這種情況下,這是無關緊要的。)

+0

謝謝,這真是有幫助。我打算使用scikit-learn或PyBrain編寫軟件,它將分析audiofiles並嘗試確定它屬於哪個音樂。 –

+0

晚會之後,但考慮到你的目標(寫一個圖書館來分類音樂流派),你可以看看這個https://github.com/tyiannak/pyAudioAnalysis –