使用Python分析MP3文件的频率

9
我正在尝试编写一个Python脚本,读取一个MP3文件,并对其中的频率进行一些分析。特别地,我想要得到一个声谱图(频率 vs 时间)作为输出。
��而,当我使用open()读取文件,并将内容传输到文件时,我得到了下面这样的东西:
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

在进一步的研究中,我发现这些与在这个wiki中讨论的MP3头和数据有关:http://en.wikipedia.org/wiki/MP3#File_structure 我该如何利用这些信息来提取文件的频率数据?
PS:我特别想分析MP3文件,而不是WAV文件。一个解决方法是将MP3转换为WAV格式,然后在上面进行操作,因为有一个处理WAV文件的Python模块。但是,是否有不需要这种转换的解决方案呢?
提前谢谢。

将mp3文件解码为PCM是一个很好的起点。 - marko
2个回答

6

1
如果你想创建一个频谱图,numpy有一个名为fftpack的模块(我认为-FFT是快速傅里叶变换的缩写),可以将振幅随时间变化的函数转换为振幅随频率变化的函数。如果你创建一个程序,以非常短的时间间隔重复迭代此过程,你可以将所有这些内容放入数组中,并从那里进行分析。
如果你只想获取采样率,你需要找到头文件,它通常以“fff”或“ffe”开头(不一定总是在开头)。采样率信息位于头文件的第六个字节中,所有内容都在这里解释:http://www.multiweb.cz/twoinches/mp3inside.htm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接