很抱歉,如果我提交了一個副本,但我想知道是否有任何lib中的python,這使得你可以從音頻文件中提取聲音頻譜。我希望能夠獲取音頻文件並編寫一個算法,該算法將返回一組數據{TimeStampInFile;頻率振幅}。從python的音頻文件中提取音頻頻譜
我聽說這通常稱爲節拍檢測,但據我所知,節拍檢測不是一種精確的方法,它只適用於可視化,而我想操縱提取的數據,然後將其轉換回一個音頻文件。我不需要做這個實時。
我會感謝您的任何建議和建議。
很抱歉,如果我提交了一個副本,但我想知道是否有任何lib中的python,這使得你可以從音頻文件中提取聲音頻譜。我希望能夠獲取音頻文件並編寫一個算法,該算法將返回一組數據{TimeStampInFile;頻率振幅}。從python的音頻文件中提取音頻頻譜
我聽說這通常稱爲節拍檢測,但據我所知,節拍檢測不是一種精確的方法,它只適用於可視化,而我想操縱提取的數據,然後將其轉換回一個音頻文件。我不需要做這個實時。
我會感謝您的任何建議和建議。
我認爲你的問題有三個獨立的部分:
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。當然,這可能是你對音頻信號處理有很好的瞭解,在這種情況下,這是無關緊要的。)
謝謝,這真是有幫助。我打算使用scikit-learn或PyBrain編寫軟件,它將分析audiofiles並嘗試確定它屬於哪個音樂。 –
晚會之後,但考慮到你的目標(寫一個圖書館來分類音樂流派),你可以看看這個https://github.com/tyiannak/pyAudioAnalysis –