我正在尝试编写一些代码,从 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]
之后,left
和right
包含相同 channel 的样本。
您可以找到更详细的示例 here .
关于python - 从 mp3 读取幅度数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17810472/