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 根据pid杀死相应进程的方法
Jan 16 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 Python
基于python神经卷积网络的人脸识别
May 24 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 Python
python3.x提取中文的正则表达式示例代码
Jul 23 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
Feb 26 Python
Python基于pyecharts实现关联图绘制
Mar 27 Python
Python多个装饰器的调用顺序实例解析
May 22 Python
ASP.NET Core中的配置详解
Feb 05 Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 Python
python基础之爬虫入门
May 10 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
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
2013/07/15 PHP
PHP合并静态文件详解
2014/11/14 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
JS 时间显示效果代码
2009/08/23 Javascript
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
对python函数签名的方法详解
2019/01/22 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
《唯一的听众》教学反思
2014/02/20 职场文书
关于抽烟的检讨书
2014/02/25 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
2015年小学开学寄语
2015/02/27 职场文书
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android