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之不要红头文件(2)
Sep 28 Python
跟老齐学Python之print详解
Sep 28 Python
Django imgareaselect手动剪切头像实现方法
May 26 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
Oct 18 Python
pandas通过索引进行排序的示例
Nov 16 Python
PyQt5通信机制 信号与槽详解
Aug 07 Python
python字典的遍历3种方法详解
Aug 10 Python
python实现五子棋游戏(pygame版)
Jan 19 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
python中怎么表示空值
Jun 19 Python
Python pytesseract验证码识别库用法解析
Jun 29 Python
详解anaconda离线安装pytorchGPU版
Sep 08 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_MySQL教程-第一天
2007/03/18 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
php之XML转数组函数的详解
2013/06/07 PHP
php is_executable判断给定文件名是否可执行实例
2016/09/26 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
Javascript 作用域使用说明
2009/08/13 Javascript
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
react-native-fs实现文件下载、文本存储的示例代码
2017/09/22 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
Python验证企业工商注册码
2015/10/25 Python
Python聊天室实例程序分享
2016/01/05 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
使用python绘制二维图形示例
2019/11/22 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
计算机专业职业生涯规划范文
2014/01/19 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
归途列车观后感
2015/06/17 职场文书
高二数学教学反思
2016/02/18 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
pytorch Dropout过拟合的操作
2021/05/27 Python