用python分析mp3文件的频率

2024-04-27 02:34:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编写一个Python脚本来读取MP3文件并对其中的频率进行一些分析。特别是,我想要一个光谱图(频率与时间)作为输出。

但是,当我使用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

如何使用此信息提取文件的频率数据?

注:我特别想分析MP3文件,而不是WAV文件。解决方法是将MP3转换为WAV格式,然后再处理它,因为有一个Python模块来处理WAV文件。但是没有这种转换,这个问题有没有解决的办法?

提前谢谢。


Tags: 文件数据脚本内容管道wiki时间光谱
2条回答

如果你想创建一个频谱图,numpy有一个叫做fftpack的模块(我认为-FFT是快速傅立叶变换的缩写),它可以将一个随时间变化的振幅函数转换成一个随频率变化的振幅函数。如果您创建了一个程序,它在很短的时间间隔内反复迭代,那么您可以将所有这些内容放入一个数组中,并从那里对其进行分析。

如果你只是想得到采样率,你需要找到报头,它通常以“fff”或“ffe”开头(不一定总是在开头)。采样率信息在报头的第六个字节中,这里都有解释:http://www.multiweb.cz/twoinches/mp3inside.htm

如果使用.wav文件,则有一个python标准库可以处理这些文件(https://docs.python.org/2/library/wave.html)。我以前玩过这个,觉得很好用。

对于mp3,诱变剂包是一个选项https://github.com/quodlibet/mutagen

还有,这个问题我的帮助:Importing sound files into Python as NumPy arrays (alternatives to audiolab)

相关问题 更多 >