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 26 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
python中实现字符串翻转的方法
Jul 11 Python
pandas 透视表中文字段排序方法
Nov 16 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
Feb 08 Python
Python容器使用的5个技巧和2个误区总结
Sep 26 Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
在Python中等距取出一个数组其中n个数的实现方式
Nov 27 Python
Python dict和defaultdict使用实例解析
Mar 12 Python
django实现模型字段动态choice的操作
Apr 01 Python
python 图像插值 最近邻、双线性、双三次实例
Jul 05 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程序员面试 切忌急功近利(更需要注重以后的发展)
2010/09/01 PHP
php数据库配置文件一般做法分享
2012/07/07 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
js字符串转成JSON
2013/11/07 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
React优化子组件render的使用
2019/05/12 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
python实现数独算法实例
2015/06/09 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
Python中私有属性的定义方式
2020/03/05 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
宝信软件JAVA工程师面试经历
2012/08/19 面试题
工商管理专业学生的自我评价
2013/10/01 职场文书
会计电算化专业个人的自我评价
2013/11/24 职场文书
学生社团文化节开幕式主持词
2014/03/28 职场文书
机关出纳岗位职责
2014/04/03 职场文书
医德医魂心得体会
2014/09/11 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书