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的socket编程入门教程
Apr 23 Python
Python断言assert的用法代码解析
Feb 03 Python
Python遍历pandas数据方法总结
Feb 09 Python
详解Python中的分组函数groupby和itertools)
Jul 11 Python
python 自动重连wifi windows的方法
Dec 18 Python
Python设计模式之工厂方法模式实例详解
Jan 18 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
Feb 13 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
Python日期格式和字符串格式相互转换的方法
Feb 18 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 Python
python如何爬取动态网站
Sep 09 Python
解决numpy数组互换两行及赋值的问题
Apr 17 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 随机生成10位字符代码
2009/03/26 PHP
php随机输出名人名言的代码
2012/10/07 PHP
php+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
toString()一个会自动调用的方法
2010/02/08 Javascript
关于js datetime的那点事
2011/11/15 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
详解AngularJS2 Http服务
2017/06/26 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
Python实现句子翻译功能
2017/11/14 Python
Python如何计算语句执行时间
2019/11/22 Python
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
机械设计毕业生自荐信
2014/02/02 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
党员政治学习材料
2014/05/14 职场文书
分公司总经理岗位职责
2014/07/30 职场文书
推普周活动总结
2014/08/28 职场文书
教师年度考核个人总结
2015/02/12 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
个人德育工作总结
2015/03/05 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
公司与个人合作协议书
2016/03/19 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang