我正在尝试直接从 python 2.7.3(使用 ubuntu)中的 mp3 文件绘制频谱图。我可以按如下方式从 wav 文件执行此操作。
#!/usr/bin/python
from scikits.audiolab import wavread
from pylab import *
signal, fs, enc = wavread('XC124158.wav')
specgram(signal)
show()
从 mp3 文件而不是 wav 文件做同样的事情的最干净的方法是什么?如果可以避免,我不想将所有 mp3 文件转换为 wav。
最佳答案
另一种非常简单的绘制 mp3 文件频谱图的方法。
from pydub import AudioSegment
import matplotlib.pyplot as plt
from scipy.io import wavfile
from tempfile import mktemp
mp3_audio = AudioSegment.from_file('speech.mp3', format="mp3") # read mp3
wname = mktemp('.wav') # use temporary file
mp3_audio.export(wname, format="wav") # convert to wav
FS, data = wavfile.read(wname) # read wav file
plt.specgram(data, Fs=FS, NFFT=128, noverlap=0) # plot
plt.show()
这里使用了pydub
库,比调用外部命令更方便。
通过这种方式,您可以遍历所有 .mp3
文件,而无需在绘图之前将它们转换为 .wav
。
关于python - 从 mp3 绘制频谱图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15311853/