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调用cmd命令行制作刷博器
Jan 13 Python
跟老齐学Python之一个免费的实验室
Sep 14 Python
python标准算法实现数组全排列的方法
Mar 17 Python
python基于phantomjs实现导入图片
May 13 Python
Python爬虫工程师面试问题总结
Mar 22 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 Python
python对csv文件追加写入列的方法
Aug 01 Python
详解Django将秒转换为xx天xx时xx分
Sep 27 Python
Django实现前台上传并显示图片功能
May 29 Python
pycharm永久激活超详细教程
Oct 29 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
php防止网站被刷新的方法汇总
2014/12/01 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
vue自定义指令用法经典实例小结
2019/03/16 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
Python对象与引用的介绍
2019/01/24 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
Python pandas库中的isnull()详解
2019/12/26 Python
python破解同事的压缩包密码
2020/10/14 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
金宝贝童装官网:Gymboree
2016/08/31 全球购物
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
C#实现启动一个进程
2016/10/01 面试题
JSF界面控制层技术
2013/06/17 面试题
如何进行有效的自我评价
2013/09/27 职场文书
全国文明单位申报材料
2014/05/31 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
餐饮店长岗位职责
2015/04/14 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL