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使用BeautifulSoup库解析HTML基本使用教程
Mar 31 Python
Python 类的继承实例详解
Mar 25 Python
Pycharm技巧之代码跳转该如何回退
Jul 16 Python
python实现聚类算法原理
Feb 12 Python
20个常用Python运维库和模块
Feb 12 Python
Linux下python3.6.1环境配置教程
Sep 26 Python
python接口调用已训练好的caffe模型测试分类方法
Aug 26 Python
python 使用pdfminer3k 读取PDF文档的例子
Aug 27 Python
django框架中间件原理与用法详解
Dec 10 Python
keras中的loss、optimizer、metrics用法
Jun 15 Python
scrapy结合selenium解析动态页面的实现
Sep 28 Python
基于Python模拟浏览器发送http请求
Nov 06 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
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
PHP实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
Firefox div高度自适应
2009/04/28 Javascript
用 Javascript 验证表单(form)中多选框(checkbox)值
2009/09/08 Javascript
XENON基于JSON变种
2010/07/27 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
JS动态修改iframe高度和宽度的方法
2015/04/01 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
Python的标准模块包json详解
2017/03/13 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
销售会议开幕词
2015/01/28 职场文书
英语邀请函范文
2015/02/02 职场文书
七一晚会主持词
2015/06/29 职场文书
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS