Python3.7 实现 MP3 音频波形图生成详解

林舟
林舟
发布时间:2026-10-13| 2人浏览过
原创

本文介绍在 Windows 10 环境下使用 Python3.7 将 MP3 音频转换为 WAV 格式并生成波形图的方法。通过安装 pydub 和 ffmpeg,利用 AudioSegment 读取音频数据,保存为无损 WAV 文件后,使用 matplotlib 库进行可视化处理,最终生成无边框的高清波形图像。

环境准备与依赖安装

测试环境基于 Windows 10 操作系统及 Python3.7 版本。在开始转换之前,需预先安装 pydub 库及 ffmpeg 工具,并配置好环境变量。若缺少相关依赖包,可通过 pip install 命令直接安装解决。

MP3 转 WAV 及绘图原理

核心思路是将 MP3 格式转换为 WAV 格式。由于 MP3 为了压缩体积牺牲了部分音质,转换为无损的 WAV 格式后,能够获取更详细的音频信息。随后读取 WAV 文件数据,利用 matplotlib 库进行绘图即可实现波形展示。

核心代码实现

具体实现代码见下文 mp3towavaform.py 模块。


#coding=utf8

from pydub import AudioSegment
import wave
import io
import numpy as np
import matplotlib.pyplot as plt  #专业绘图库
from PIL import Image
import pylab
from scipy.io import wavfile

# 先从本地获取 mp3 的 bytestring 作为数据样本
filename = "b.mp3"
fp=open(filename, 'rb')
data=fp.read()
fp.close()
# 读取
aud=io.BytesIO(data)
sound=AudioSegment.from_file(aud, format='mp3')
raw_data = sound._data

# 写入到文件
l=len(raw_data)
f = wave.open(filename + ".wav",'wb')
f.setnchannels(1)
f.setsampwidth(2)
f.setframerate(16000)
f.setnframes(l)
f.writeframes(raw_data)
f.close()

# 读取生成波形图
samplerate, data = wavfile.read(filename + ".wav")
times = np.arange(len(data))/float(samplerate)
# print(len(data), samplerate, times)

# 可以以寸为单位自定义宽高 frameon=False 为关闭边框

fig = plt.figure(figsize=(20, 5), facecolor="white")
# plt.tick_params(top='off', bottom='off', left='off', right='off', labelleft='off', labelbottom='on')

ax = fig.add_axes([0, 0, 1, 1])
ax.axis('off')
plt.fill_between(times, data, linewidth = '1', color='green')
plt.xticks([])
plt.yticks([])
plt.savefig(filename + '.png', dpi=100, transparent=False, bbox_inches='tight', edgecolor='w')
#plt.show()

波形图生成与参数配置

执行上述代码后,即可生成一个无边框的波形图。matplotlib 提供了丰富的可选参数,用户可根据需求自定义边框样式、颜色、图例及坐标轴信息,具体配置可参考 matplotlib 官方社区文档。

最终生成的波形图效果如图所示。

 

总结

总结

以上介绍了在 Python3.7 环境下读取 MP3 音频文件并生成波形图的完整流程。希望本文内容能对大家有所帮助,如有任何疑问欢迎留言,小编会及时回复。感谢大家对本站的支持!若觉得本文有用,欢迎转载,请注明出处,谢谢!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。