Python3.7 读取 mp3 音频文件生成波形图效果


Posted in Python onNovember 05, 2019

测试环境为Windows 10 系统,Python3.7,转换需要提前安装pydub、ffmpeg,安装和加入环境变量配置方法自行解决,至于缺少的包直接 pip install xx 搞定。

主要是 mp3 转成 wav 格式的文件,因为 mp3 格式为了减小体积牺牲了音质,转成无损的 wav 格式之后,可以读取到更详细的信息。然后读取 wav 的信息,利用 matlotlib 绘图即可。

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 音频文件生成波形图效果 

总结

以上所述是小编给大家介绍的Python3.7 读取 mp3 音频文件生成波形图效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python的Flask框架中的Jinja2模板引擎学习教程
Jun 30 Python
python方向键控制上下左右代码
Jan 20 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
在Django中实现添加user到group并查看
Nov 18 Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 Python
Opencv常见图像格式Data Type及代码实例
Nov 02 Python
详解python的变量缓存机制
Jan 24 Python
Django项目在pycharm新建的步骤方法
Mar 02 Python
python numpy中multiply与*及matul 的区别说明
May 26 Python
Python如何快速找到多个字典中的公共键(key)
Apr 29 Python
关于的python五子棋的算法
May 02 Python
python被修饰的函数消失问题解决(基于wraps函数)
Nov 04 #Python
Python imread、newaxis用法详解
Nov 04 #Python
Python使用微信接入图灵机器人过程解析
Nov 04 #Python
python selenium循环登陆网站的实现
Nov 04 #Python
Django项目中使用JWT的实现代码
Nov 04 #Python
Python collections中的双向队列deque简单介绍详解
Nov 04 #Python
Python 下载及安装详细步骤
Nov 04 #Python
You might like
php中http与https跨域共享session的解决方法
2014/12/20 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
javascript常用对话框小集
2013/09/13 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
2015/05/15 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
JS字符串按逗号和回车分隔的方法
2017/04/25 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
详细分析python3的reduce函数
2017/12/05 Python
python学生管理系统代码实现
2020/04/05 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
如何使用python代码操作git代码
2020/02/29 Python
EJB的激活机制
2013/10/25 面试题
运动会广播稿诗歌版
2014/09/12 职场文书
2014年档案室工作总结
2014/12/01 职场文书
民事调解协议书
2016/03/21 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS