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读写ini文件示例(python读写文件)
Mar 25 Python
用Python输出一个杨辉三角的例子
Jun 13 Python
win与linux系统中python requests 安装
Dec 04 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
详解如何利用Cython为Python代码加速
Jan 27 Python
Python实现矩阵相乘的三种方法小结
Jul 26 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
Apr 22 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
Python爬虫之爬取二手房信息
Apr 27 Python
python爬取豆瓣电影TOP250数据
May 23 Python
Python基础之变量的相关知识总结
Jun 23 Python
教你使用一行Python代码玩遍童年的小游戏
Aug 23 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
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
Yii2框架加载css和js文件的方法分析
2019/05/25 PHP
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
Javascript中的默认参数详解
2014/10/22 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
JS排序之快速排序详解
2017/04/08 Javascript
Angular 4依赖注入学习教程之简介(一)
2017/06/04 Javascript
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
JS实现轮播图效果
2020/01/11 Javascript
vue项目接口域名动态获取操作
2020/08/13 Javascript
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
python中lambda()的用法
2017/11/16 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
Python 自由定制表格的实现示例
2020/03/20 Python
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
卡西欧B级产品官方网站:Casio Outlet
2018/05/22 全球购物
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
软件工程专业推荐信
2013/10/28 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
发展党员工作情况汇报
2014/10/28 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
2015年教师个人业务工作总结
2015/10/23 职场文书