python - 从 mp3 绘制频谱图

标签 python audio signal-processing

我正在尝试直接从 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

enter image description here

关于python - 从 mp3 绘制频谱图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15311853/

相关文章:

ruby-on-rails - 无法识别AudioInfo(ruby-audioinfo gem)

c - FIR滤波器在C编程中的实现

android - 在android中通过声音识别敲击(拍手)

matlab - 使用一维 DCT 的二维离散余弦变换

python - 如何在 Pandas 中遍历 DataFrame 中的行

Python 和 opencv : how do I convert the ALL of the background of this image to one colour or transparent

python - f=1 时 python 中的 pbft 实现

audio - 听起来不好用 Asterisk

为数据框中的每个点获取最近点的 Pythonic 方法(最近邻)

bash - Sox 批量转换