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文件夹与文件的操作实现代码
Jul 13 Python
python 安装virtualenv和virtualenvwrapper的方法
Jan 13 Python
使用python实现knn算法
Dec 20 Python
使用apidocJs快速生成在线文档的实例讲解
Feb 07 Python
Tensorflow环境搭建的方法步骤
Feb 07 Python
Python3.6.0+opencv3.3.0人脸检测示例
May 25 Python
Python3随机漫步生成数据并绘制
Aug 27 Python
Django框架用户注销功能实现方法分析
May 28 Python
python datetime处理时间小结
Apr 16 Python
如何打包Python Web项目实现免安装一键启动的方法
May 21 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
用python给csv里的数据排序的具体代码
Jul 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
将数组写入txt文件 var_export
2009/04/21 PHP
晋城吧对DiscuzX进行的前端优化要点
2010/09/05 PHP
php网上商城购物车设计代码分享
2012/02/15 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
Laravel 5.3 学习笔记之 配置
2016/08/28 PHP
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
第一个Vue插件从封装到发布
2017/11/22 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
django云端留言板实例详解
2019/07/22 Python
利用CSS的Sass预处理器(框架)来制作居中效果
2016/03/10 HTML / CSS
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
体育课课后反思
2014/04/24 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书
python如何为list实现find方法
2022/05/30 Python
CSS控制继承中的height能变为可继承吗
2022/06/10 HTML / CSS