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 相关文章推荐
Python3学习urllib的使用方法示例
Nov 29 Python
python读取视频流提取视频帧的两种方法
Oct 22 Python
Pycharm导入Python包,模块的图文教程
Jun 13 Python
Python 中的range(),以及列表切片方法
Jul 02 Python
PyQt5 多窗口连接实例
Jun 19 Python
初次部署django+gunicorn+nginx的方法步骤
Sep 11 Python
python中的函数递归和迭代原理解析
Nov 14 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 Python
TensorFlow使用Graph的基本操作的实现
Apr 22 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
Apr 26 Python
如何教少儿学习Python编程
Jul 10 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
Nov 05 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
初学CAKEPHP 基础教程
2009/11/02 PHP
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
PHP的拦截器实例分析
2014/11/03 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
BootStrap按钮标签及基本样式
2016/11/23 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
详解python中requirements.txt的一切
2017/03/03 Python
python判断无向图环是否存在的示例
2019/11/22 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
美国五金商店:Ace Hardware
2018/03/27 全球购物
师范生自荐信范文
2013/10/06 职场文书
手机业务员岗位职责
2013/12/13 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
教师节宣传方案
2014/05/23 职场文书
外贸业务员求职信
2014/06/16 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
公司新员工欢迎词
2015/09/30 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS