wav文件提取音频数据_python

wav文件格式

首先需要知道wav文件格式:(10条消息) WAV文件格式详解_imxiangzi的专栏-CSDN博客_wav文件格式

简单来说wav文件分为三个区块

这里主要讲的是提取wav文件的data部分

观察数据在文件头的分段

当然由于每个wav文件的采样规格不一样,在data数据部分的分段(比如左声道右声道以及每个采样点的字节数)是不一样的

我们可以看到的是data部分每个sample占两个字节,另外需要注意data的数据sample部分是小端存储,这就意味着在每个sample内部的两个字节若要正确提取出来,需要是以字节为单位相反顺序提取的

wave模块

使用wave模块进行提取:wave — 读写WAV格式文件 — Python 3.10.2 文档

打开文件

f = wave.open("flag.wav","r")
print(f)
# <wave.Wave_read object at 0x0000012E10681C40>

相当于返回的是wave_read对象,里面包含了这个wav文件的所有数据

  • 读取nframes个帧数的帧
f.readframes(nframes)
  • 获取帧数
f.getnframes()
  • 获取声道数
f.getnchannels()
  • 获取帧速率
f.getframerate()
  • 获取比特宽度(每一帧的字节数),使用这个函数就可以验证一下之前图上所展示的data部分单个sample的字节长度
f.getsampwidth()
  • 提取data部分的数据
f.readframes(f.getnframes)

以Misc的一道题为例,需要提取wav文件的data部分,并根据音频高低转换为1和0

每四位十六进制(也就是每两位字节)为一个sample

代码实现

import wave
f = wave.open("flag.wav","r")
framers_data = f.readframes(f.getnframes()).hex()
bin_data = ''
for i in range(0,len(framers_data),4):data = framers_data[i:i+4]data = data[2:] + data[:2] # 由于是小端存储,所以需要以字节为单位倒序if int(data,16) > 20000:bin_data += "1"else:bin_data += "0"
f.close()
with open("result.txt","a+") as f:f.write(bin_data)
f.close()

参考文章

WAVE 文件格式分析 - 唐风思琪 - 博客园 (cnblogs.com)

wav文件格式分析与详解 - nigaopeng - 博客园 (cnblogs.com)

wav文件格式分析与详解 - nigaopeng - 博客园 (cnblogs.com)

wav文件提取音频数据_python相关推荐

  1. python音频 降噪_从视频中提取音频数据,然后应用傅里叶对音频降噪(python)...

    视频准备 QQ有热键 然后随便打开一个视频网站进行录屏 我选择B站 从视频中提取音频 需要安装包moviepy pip install moviepy 提取代码 from moviepy.editor ...

  2. 从视频中提取音频数据,然后应用傅里叶对音频降噪(python)

    视频准备 QQ有热键 然后随便打开一个视频网站进行录屏 我选择B站 从视频中提取音频 需要安装包moviepy pip install moviepy 提取代码 from moviepy.editor ...

  3. python处理pdf提取指定数据_python从PDF中提取数据的示例

    01 前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都 ...

  4. matlab如何读取excel文件中的数据?_Python自动化之从Excel文件读取数据

    前言: 在Python语言,常用的excel读写库有xrld和openpyxl两个,当然pandas库也可以从excel文件中读取数据,但这里不建议使用.有个问题就是,xrld只能用于读取数据而不能用 ...

  5. mfc从文件中读取数据_Python 中的 bytes、str 以及 unicode 区别

    从Python发展历史谈起 Python3和Python2表示字符序列的方式有所不同. Python3字符序列的两种表示为byte和str.前者的实例包含原始的8位值,即原始的字节:后者的实例包括Un ...

  6. python txt提取特定数据_Python提取列表中的内容 用“python”怎么提取文件里的指定内容?...

    用"python"怎么提取文件里的指定内容? python读取文件内容的方法: 一.最方便的方法是一次性读取文件中的所有内容并放置到一个大字符串中: all_the_text = ...

  7. swf文件提取音频文件方法

    手头有几个古早swf文件,想提取音质好的音频文件,搜索到了几个方法: 一.使用swf提取MP3的软件 下载不到免费好用的软件,作罢: 二.使用格式转换软件直接转换音频 使用格式工厂试了下,经过对比,发 ...

  8. python计算csv文件内的数据_Python利用pandas计算多个CSV文件数据值的实例

    功能:扫描当前目录下所有CSV文件并对其中文件进行统计,输出统计值到CSV文件 pip install pandas import pandas as pd import glob,os,sys in ...

  9. python提取abaqus数据_Python语言在ABAQUS数据提取中的简单应用

    前面某期文章提到过ABAQUS中利用Python脚本进行后处理数据的提取,这个问题有必要做些讨论和总结. 在ABAQUS中,利用Python脚本做简单的处理是非常方便和易懂上手的,这里做简单介绍,参考 ...

最新文章

  1. Asp.Net MVC 4 Web API 中的安全认证-使用OAuth
  2. NLP数据科学家不会告诉你的残酷事实
  3. Java开发需掌握的常用Linux命令(持续更新)
  4. mysql cbo优化器_查询优化器介绍 - PolarDB-X 云原生分布式数据库 - 阿里云
  5. NLP《Tranformer和Self-Attention》
  6. 力扣-1267 统计参与通信的服务器
  7. 深度装机大师一键重装_“云骑士一键重装系统”,看标题就知道装系统原来如此简单...
  8. 由浅入深的了解Groovy的基本使用
  9. c语言中while循环语句的作用,while和do while循环,C语言while和do while循环详解
  10. 关于百度ueditor图片上传到OSS问题解决
  11. LiveNVR安防监控直播中无插件web直播方案中实现快照抓取的功能
  12. nodejs之简单的爬数据
  13. 掌握云服务器使用的基本方法
  14. 剑指政企数智办公市场,通信厂商融云有何看家本领?
  15. 为自动驾驶保驾护航—谈谈主流中间件设计
  16. 容联携手火星时代教育 促进线上线下一体化
  17. 菜鸟教程python100题:递归函数
  18. 为什么说现在IT toB发展的拐点
  19. easyui datagrid 多列checkbox
  20. 阿里云备案审核一般多久能过?域名备案需要几天?

热门文章

  1. 云计算对电子商务的应用优势
  2. 『华为』 [行业要闻]华为VS思科:21世纪的第一场战争 。
  3. Windows使用dos窗口打开应用
  4. 通过uvm_printer的print_generic进行扩展打印
  5. 点击预览与按钮预览图片
  6. HTML学生个人网站作业设计:电影网站设计——电影资讯博客(5页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
  7. 谷歌公布13GB 3D扫描数据集:17大类、1030个家用物品
  8. 哥尼斯堡的“七桥问题“(并查集)
  9. 计算机主机能上网玩游戏吗,为什么现在人人都有电脑,还要去网吧玩游戏?
  10. 完成清除工作,可以Destory窗口标志