python音频处理的示例详解


Posted in Python onDecember 23, 2020

准备工作:
首先,我们需要 import 几个工具包,一个是 python 标准库中的 wave 模块,用于音频处理操作,另外两个是 numpy 和 matplot,提供数据处理函数。

一:读取本地音频数据

处理音频第一步是需要从让计算机“听到”声音,这里我们使用 python 标准库中自带的 wave模块进行音频参数的获取。

(1) 导入 wave 模块
(2) 使用 wave 中的函数 open 打开音频文件,wave.open(file,mode)函数带有两个参数, 第一个 file 是所需要打开的文件名及路径,使用字符串表示;第二个 mode 是打开的模式,也是用字符串表示 ('rb'或'wb')
(3) 打开音频后使用 getparams() 获取音频基本的相关参数(nchannels:声道数,
sampwidth:量化位数或量化深度,framerate:采样频率,nframes:采样点数)

# 导入 wave 模块
import wave
# 用于绘制波形图
import matplotlib.pyplot as plt
# 用于计算波形数据
import numpy as np
# 用于系统处理,如读取本地音频文件
import os
 
# 打开WAV文档
f = wave.open(r"2.wav",'rb' )
# 读取格式信息
params = f.getparams ()
nchannels,sampwidth, framerate, nframes = params [:4]
print(framerate)

二:读取单通道音频,并绘制波形图(常见音频为左右2个声道)

(1) 通过第一步,可以继续读取音频数据本身,保存为字符串格式

readframes:

读取声音数据,传递一个参数指定需要读取的长度(以取样点为单位),readframes返回的是二进制数据(一大堆bytes),在Python中用字符串表示二进制数据。

strData = f.readframes(nframes)

(2) 如果需要绘制波形图,则需要将字符串格式的音频数据转化为 int 类型

frombuffer:

根据声道数和量化单位,将读取的二进制数据转换为一个可以计算的数组。

通过frombuffer函数将二进制转换为整型数组,通过其参数dtype指定转换后的数据格式。

waveData=np.frombuffer(strData,dtype=np.int16)

此处需要使用到 numpy 进行数据格式的转化

(3) 将幅值归一化
把数据变成(0,1)之间的小数。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。

waveData=waveData*1.0/(max(abs(waveData)))

这一步去掉也可画出波形图,可以尝试不用此步,找出波形图的不同

(4) 绘制图像

通过取样点数和取样频率计算出取样的时间:

time = np.arange(0,nframes)*(1.0/framerate)

import wave
# 导入 wave 模块
import matplotlib.pyplot as plt
# 用于绘制波形图
import numpy as np
# 用于计算波形数据
import os
#  用于系统处理,如读取本地音频文件
 
f = wave.open(r"di.wav",'rb' )
params = f.getparams ()
nchannels,sampwidth, framerate, nframes = params [:4]
print(framerate)
 
# 读取波形数据
strData = f.readframes(nframes)
# 将字符串转换为16位整数
waveData = np.frombuffer(strData,dtype=np.int16)
# 幅值归一化
waveData = waveData*1.0/(max(abs(waveData)))
#计算音频的时间
time = np.arange(0,nframes)*(1.0 / framerate)
 
plt.plot(time,waveData)
plt.xlabel("Time(s)")
plt.ylabel("Amplitude") 
plt.title("Single channel wavedata")
plt.show()

效果图

python音频处理的示例详解

到此这篇关于python音频处理的示例详解的文章就介绍到这了,更多相关python音频处理内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中的字典详细介绍
Sep 18 Python
简单介绍Python的Django框架的dj-scaffold项目
May 30 Python
配置 Pycharm 默认 Test runner 的图文教程
Nov 30 Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
python获取微信企业号打卡数据并生成windows计划任务
Apr 30 Python
Django的性能优化实现解析
Jul 30 Python
详解Python 重学requests发起请求的基本方式
Feb 07 Python
python实现门限回归方式
Feb 29 Python
Python操作MongoDb数据库流程详解
Mar 05 Python
Python实现查找数据库最接近的数据
Jun 08 Python
Python Opencv实现单目标检测的示例代码
Sep 08 Python
python 实现客户端与服务端的通信
Dec 23 #Python
python实现excel公式格式化的示例代码
Dec 23 #Python
python 基于opencv实现图像增强
Dec 23 #Python
python接口自动化框架实战
Dec 23 #Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 #Python
python实现发送QQ邮件(可加附件)
Dec 23 #Python
如何通过安装HomeBrew来安装Python3
Dec 23 #Python
You might like
PHP文件操作实现代码分享
2011/09/01 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
PHP模块化安装教程
2016/06/01 PHP
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
angular 动态组件类型详解(四种组件类型)
2017/02/22 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
[00:14]护身甲盾
2019/03/06 DOTA
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
在TensorFlow中屏蔽warning的方式
2020/02/04 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
2021/02/26 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
Java如何支持I18N?
2016/10/31 面试题
复核员上岗演讲稿
2014/01/05 职场文书
商场促销活动方案
2014/02/08 职场文书
学习标兵获奖感言
2014/02/20 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
2014年学前班工作总结
2014/12/08 职场文书
保管员岗位职责
2015/02/14 职场文书
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python