python - 从 mp3 读取幅度数据

标签 python python-2.7 mp3 wav

我正在尝试编写一些代码,从 mp3 中提取作为时间函数的幅度数据。我不久前在 MATLAB 上使用此函数编写了一个粗略版本:http://labrosa.ee.columbia.edu/matlab/mp3read.html然而我很难找到Python 的等价物。

我做了很多研究,到目前为止我发现我需要使用 mpg321 之类的东西将 .mp3 转换为 .wav。我一直不知道如何让它发挥作用。

下一步将从 .wav 文件中读取数据,但我也没有取得任何成功。有没有人做过类似的事情或者可以推荐一些图书馆来帮助解决这个问题?谢谢!

最佳答案

您可以使用subprocess模块调用mpg123:

import subprocess
import sys

inname = 'foo.mp3'
outname = 'out.wav'
try:
    subprocess.check_call(['mpg123', '-w', outname, inname])
except CalledProcessError as e:
    print e
    sys.exit(1)

要读取 wav 文件,您应该使用 Wave 模块,如下所示:

import wave
import numpy as np

wr = wave.open('input.wav', 'r')
sz = 44100 # Read and process 1 second at a time.
da = np.fromstring(wr.readframes(sz), dtype=np.int16)
wr.close()
left, right = da[0::2], da[1::2]

之后,leftright包含相同 channel 的样本。

您可以找到更详细的示例 here .

关于python - 从 mp3 读取幅度数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17810472/

相关文章:

python - Pip 在 Windows 7 中挂起

python - 如何从定义的根目录获取文件的相对路径?

python - 使用 beautiful soup 抓取数据的问题

java - 是否有Java库可以通过编程方式删除.mp3音频文件的一部分?

c# - 如何以编程方式确定 MP3 文件是 CBR 还是 VBR? (最好使用c#)

python - 如何使 dash 中的选项卡具有不同的 URL?

Python 属性错误

sockets - 将 bytearray 与 socket.recv_into 一起使用

django - django 的 bulk_create 是原子的吗?

python - 使用 eyeD3 从 Python 中的 mp3 文件中检索歌词