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脚本来实现最简单的FTP下载的教程
May 04 Python
Python的网络编程库Gevent的安装及使用技巧
Jun 24 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
python 中字典嵌套列表的方法
Jul 03 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
如何在python中实现随机选择
Nov 02 Python
如何运行带参数的python脚本
Nov 15 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
pycharm实现print输出保存到txt文件
Jun 01 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
Jun 17 Python
python rsa-oaep加密的示例代码
Sep 23 Python
python基础入门之字典和集合
Jun 13 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
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
javascript 年月日联动实现核心代码
2009/12/21 Javascript
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
js实现简单页面全屏
2019/09/17 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
SQL面试题
2013/12/09 面试题
如何现实servlet的单线程模式
2014/08/05 面试题
预备党员思想汇报
2014/01/08 职场文书
科级干部考察材料
2014/02/15 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
学校课外活动总结
2014/05/08 职场文书
商家认证委托书格式
2014/10/16 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
中考学习决心书
2015/02/04 职场文书
超市食品安全承诺书
2015/04/29 职场文书
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python