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 Django做网页
Nov 04 Python
深入解析Python中的descriptor描述器的作用及用法
Jun 27 Python
python数据结构之链表的实例讲解
Jul 25 Python
Python3实现的判断回文链表算法示例
Mar 08 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
使用python爬取微博数据打造一颗“心”
Jun 28 Python
wxPython实现带颜色的进度条
Nov 19 Python
使用tensorflow实现矩阵分解方式
Feb 07 Python
150行Python代码实现带界面的数独游戏
Apr 04 Python
如何理解python对象
Jun 21 Python
python连接mongodb数据库操作数据示例
Nov 30 Python
4种方法python批量修改替换列表中元素
Apr 07 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初学者常见问题集合 修正版(21问答)
2010/03/23 PHP
PHP写的求多项式导数的函数代码
2012/07/04 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
2014/10/24 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&Firefox] 有文档和例子
2007/05/30 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
javascript闭包的理解和实例
2010/08/12 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
2016/01/28 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
2019/11/04 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
python中zip()方法应用实例分析
2016/04/16 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
python实现点对点聊天程序
2018/07/28 Python
python实现控制台打印的方法
2019/01/12 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
大学军训自我鉴定
2013/12/15 职场文书
环保公益策划方案
2014/08/15 职场文书
代办社保委托书范文
2014/10/06 职场文书
英语导游词
2015/02/13 职场文书
国家助学金受助感言
2015/08/01 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS