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实现k均值算法示例(k均值聚类算法)
Mar 16 Python
Python单元测试框架unittest简明使用实例
Apr 13 Python
Python 实现数据库更新脚本的生成方法
Jul 09 Python
Python判断文件或文件夹是否存在的三种方法
Jul 27 Python
Python tornado队列示例-一个并发web爬虫代码分享
Jan 09 Python
Python实现的栈(Stack)
Jan 26 Python
Python实现按照指定要求逆序输出一个数字的方法
Apr 19 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
Mar 25 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
Jun 22 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 Python
python字符串拼接.join()和拆分.split()详解
Nov 23 Python
Python find()、rfind()方法及作用
Dec 24 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
apache mysql php 源码编译使用方法
2012/05/03 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
php构造函数与析构函数
2016/04/23 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
解javascript 混淆加密收藏
2009/01/16 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
python中matplotlib的颜色及线条控制的示例
2018/03/16 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
如何清空python的变量
2020/07/05 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
Windows和Linux动态库应用异同
2016/07/28 面试题
财务副总经理工作职责
2013/11/25 职场文书
建筑工程专业学生的自我评价
2013/12/25 职场文书
安全生产先进个人总结
2015/02/15 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
八年级英语教学反思
2016/02/15 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python