2014-04-10 75 views
0

我正在使用python讀取mp3文件對象。解讀從mp3文件對象讀出的unicode數據

f = open("/home/user/temp.mp3", "r") 

我的最終目標是提取作爲時間函數的振幅和頻率。我指的wiki頁面,http://en.wikipedia.org/wiki/MP3#File_structure

樣品的Unicode:

edee 68c0 bb0b f65f 4ef1 62ae 8cb0 53be 
3146 3c90 aa74 d558 ea62 85c1 9319 41b4 
90a9 1260 e0c1 81c5 fb6c ae6b 626c 28c4 
bbb2 6c4c 3d77 aee7 c5b3 a2fb 0e5d ed59 

的wiki頁面,說,每32位,第21和22位代表的採樣率頻率指標。

a。採樣率頻率索引(是每8位中第六位的十六進制到二進制轉換中的第一位和第二位)。對於某首歌曲,這不應該是恆定的嗎?

b。是否可以使用這些數據來獲取特定時間的頻率?

在此先感謝

+0

您應該將'.mp3'讀作二進制文件:'「rb」'模式。你爲什麼認爲你的示例是Unicode的,例如,你確定要將'edee 68c0「解釋爲'u」\ uedee \ u68c0「'? – jfs

+0

有一些Python庫可以解析'mp3',例如'mutagen','eye3D','pymedia'。你爲什麼要手動解析它?見https://wiki.python.org/moin/PythonInMusic – jfs

回答

1

一)聽起來,這將支持VBR encoding,您可能要更改動態採樣率(是我最好的猜測)。

b)查找Fourier transforms - 頻率在「瞬間」沒有意義 - 他們需要時間重複自己。傅里葉變換將給你足夠長的時間內出現的頻率。儘管如此,這仍然很短暫。

+0

謝謝。對於傅立葉變換,即頻率 - 時間映射,我需要頻率幅度和時間幅度映射嗎?打開mp3文件後,是否可以從unicode數據中提取它? – Manoj