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实现电子词典
Apr 23 Python
Python实现统计英文单词个数及字符串分割代码
May 28 Python
python脚本作为Windows服务启动代码详解
Feb 11 Python
Django 使用logging打印日志的实例
Apr 28 Python
浅析Python数据处理
May 02 Python
Python中应该使用%还是format来格式化字符串
Sep 25 Python
使用PyCharm创建Django项目及基本配置详解
Oct 24 Python
python 读取修改pcap包的例子
Jul 23 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
浅析Django中关于session的使用
Dec 30 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 Python
python+requests接口自动化框架的实现
Aug 31 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
Zend Studio 无法启动的问题解决方法
2008/12/04 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
javascript 写类方式之一
2009/07/05 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
python 字典操作提取key,value的方法
2019/06/26 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
大码女装:Ulla Popken
2019/08/06 全球购物
外包公司软件测试工程师
2014/11/01 面试题
给排水专业应届生求职信
2013/10/12 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
关于美容院的活动方案
2014/08/14 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
保护动物的宣传语
2015/07/13 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android
Nginx的gzip相关介绍
2022/05/11 Servers