2014-04-10 160 views
4

我正在嘗試編寫一個Python腳本來讀取MP3文件並對其中的頻率執行一些分析。特別是,我想要一個頻譜圖(頻率與時間)作爲輸出。使用python分析mp3文件的頻率

然而,當我讀到使用打開該文件()和管道的內容到一個文件中,我得到了這樣的事情:

3763 1e65 0311 1814 b094 d3e3 25b3 641b 
15a1 f146 62d6 ade6 7708 c5ec 1a0d 7395 
201c 46e6 65a9 5276 688a 47eb 80e8 617e 
4d66 2d82 2677 f74e e664 6220 69fa 1b46 

在進一步的研究,我想這些都在某種程度上涉及到MP3在本維基中討論的標題和數據:http://en.wikipedia.org/wiki/MP3#File_structure

如何使用此信息提取文件的頻率數據?

PS:我特別想分析MP3文件,而不是WAV文件。解決方法是將MP3轉換爲WAV格式,然後處理,因爲有一個Python模塊來處理WAV文件。但是,沒有這種轉換,是否有解決這個問題的方法?

在此先感謝。

+0

解碼MP3文件到PCM將是一個很好的起點。 – marko

回答

0

如果你想創建一個譜圖,numpy的有一個模塊調用fftpack(我認爲 - FFT是快速傅立葉變換的縮寫),其可以將幅度隨時間的函數轉換爲幅度隨頻率變化的函數。如果你創建一個程序在很短的時間間隔內重複這個操作,你可以把所有這些都放到一個數組中,並從那裏進行分析。

如果你只是想獲得採樣率,你需要找到通常以「fff」或「ffe」開始的頭(它並不總是在開頭)。採樣率信息是在頭的第六個字節,這裏全部解釋這裏:http://www.multiweb.cz/twoinches/mp3inside.htm