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 字典(Dictionary)操作详解
Mar 11 Python
python操作ie登陆土豆网的方法
May 09 Python
在Python中处理日期和时间的基本知识点整理汇总
May 22 Python
详解在Python程序中解析并修改XML内容的方法
Nov 16 Python
Python实现调用另一个路径下py文件中的函数方法总结
Jun 07 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
python 三元运算符使用解析
Sep 16 Python
python 串口读取+存储+输出处理实例
Dec 26 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
Python操作Word批量生成合同的实现示例
Aug 28 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
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
2013/06/18 PHP
浅谈laravel框架sql中groupBy之后排序的问题
2019/10/17 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
jquery图片放大功能简单实现
2013/08/01 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
用Python创建声明性迷你语言的教程
2015/04/13 Python
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
Python模块WSGI使用详解
2018/02/02 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
装潢设计实习自我鉴定
2013/09/19 职场文书
护士思想汇报
2014/01/12 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书