准备工作:
首先,我们需要 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音频处理(持续更新)相关推荐

  1. 商业数据分析模型及其核心Python代码_持续更新

    商业数据分析模型_持续更新 一.AARRR模型 二.PEST模型 理论 医美行业应用案例 三.RFM模型 理论 Python实战_核心指标计算 四.SWOT模型 五.5W1H模型 六.流程拆解法 七. ...

  2. 搭建基于 Vim 的 C++和 Python 开发环境[持续更新]

    最近 vscode 在技术圈火了一阵子,每天都可以在掘金上看到安利文章和奇葩的插件,什么"杨超越鼓励师",还有上班摸鱼系列,"看小说插件","看股票插 ...

  3. LeetCode刷题之python解法(持续更新)

    1. Two Sum 4行 class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:d = {}fo ...

  4. python tips(持续更新)

    1. 引用上一层目录 import sys sys.path.append('..') import xx 2. python json JSON是一种轻量级的数据交换格式.可以解决数据库中文存储问题 ...

  5. Python学习记录——持续更新

    python获取当前日期 time.strftime('%Y-%m-%d') python通过命令行传参在py文件中如何读取 通过sys模块中的 sys.argv可以访问到所有的命令行参数,返回值是包 ...

  6. python小trick持续更新~

    文章目录 python忽略warning执行输出 输出添加颜色效果 python忽略warning执行输出 python -W ignore run.py 输出添加颜色效果 pip install t ...

  7. CARLA传感器详细文档介绍+python实例(持续更新ing)

    CARLA中有两种类型的传感器:每帧都工作的传感器(相机,点云等)和只有特定环境下才接收数据的传感器(触发检测).都属于carla.Sensor类,从carla.BlueprintLibrary类中实 ...

  8. Linux部署Python项目(持续更新中)

    项目部署 ​ 项目部署对恩操作通常是由运维人员来进行统一管理装配的,但是对于一个开发人员来讲,基础的项目部署还是要会的. ​ 这里我主要讲解python的项目是如何部署的,至于项目哪里来的,这就要看观 ...

  9. 编程语言经典小例题—Python版【持续更新】

    本文用于记录一些学习过程中使用python3写过的小程序,和一些经典的编程小例题. [例题1] 编写一个简单的个人所得税计算器,设定起征点为3500元. print("个人所得税计算器\n& ...

  10. python中的概率例题_编程语言经典小例题—Python版【持续更新】

    本文用于记录一些学习过程中使用python3写过的小程序,和一些经典的编程小例题. [例题1] 编写一个简单的个人所得税计算器,设定起征点为3500元. print("个人所得税计算器\n& ...

最新文章

  1. Sublime text 2/3 [Decode error - output not utf-8] 完美解决方法
  2. oracle rcu 安装,Oracle Fusion MiddlewareⅠ: 数据库和RCU
  3. Uva11729 Commando War
  4. 应收应付重组配置和操作解析
  5. 一个人会python能做什么_利用Python来预测一个人有没有女朋友!无所不能!
  6. 用OpenJTAG烧写程序到Flash—— 韦东山嵌入式Linux视频学习笔记03
  7. python学习记录2
  8. NetBeans 7.2 beta:更快,更有用
  9. html一张图片用两种滤镜,HTML图片CSS滤镜—灰度效果
  10. 节约内存编程方式操作系统(全概念)
  11. 12-Linux下Oracle 11g R2数据库安装
  12. 【渝粤教育】电大中专计算机职业素养 (7)作业 题库
  13. avast! 5 简体中文正式版 官方直接下载链接
  14. 数据结构 | 哈希表与哈希冲突的解决(一)
  15. matlab 密集,matlab – 全局和parfor
  16. 抽象代数之三次方程的求根公式和构造一类整系数三次方程
  17. 关于自动驾驶中毫米波雷达传感器的一些知识(涉及多传感器融合)
  18. 2012年1月51CTO壁纸点评活动获奖名单【已结束】
  19. iPhone手机拍的图片为什么电脑上打不开?秒懂
  20. 《人性的弱点》25句经典语录

热门文章

  1. python节日贺卡图片大全_儿童新年贺卡图片大全
  2. 小案例:利用Python实现图片上下、左右翻转
  3. linux中无损gpt转mbr,如何快速实现免重装无损磁盘MBR转GPT?
  4. 帝国CMS二次开发入门教程
  5. 【数据库考试】考研复试必备数据库试题
  6. MIPS架构与指令简介
  7. CRM 客户管理系统C#源码
  8. ros打开笔记本电脑的摄像头
  9. 简单的选课系统(6)——选课界面和管理员界面
  10. 关于微信小程序认证问题