睡眠音频分割及识别问题(十)--Java读取wav文件
简介
Waveform Audio File Format(WAVE,又或者是因为扩展名而被大众所知的 wav),是微软与 IBM公司所开发在个人电脑存储音频流的编码格式。
由于项目需要从 wav 文件中读取音频数据,现有许多框架的 API 文档参差不齐,学习成本过高且复用性不高,所以我们准备抛弃已有的API,利用java基础io包构建自己的API。
wav文件格式
为了利用java 原生 io包中的字节流读取文件数据实现睡眠音频的操作,最终在 IOS 平台复现的目的,我们首先要了解 wav 文件内容格式,充分理解wav文件管理音频的原理。
wav文件遵守资源交换文件格式之规则,在文件的前 44(或 46)字节放置头部(header),使播放器或编辑器能够简单掌握文件的基本信息,其内容以区块(chunk)为最小单位,每一区块长度为 4 字节,而区块之上则由子区块包裹,每一子区块长度不拘,但须在前头先宣告标签及长度(字节)。头部的前 3 个区块记录文件格式及长度;接着第一个子区块包含 8 个区块,记录声道数量、采样率等信息;接着第二个子区块才是真正的音频资料,长度则视音频长度而定。内容如下图所示。
须注意的是,每个区块的端序不尽相同,而音频内容本身则是采用小端序。
wav文件的读取(java)
目前已经实现数据的读取,可以获取音频中的采样点信息,以及音频文件的相关描述信息。结果示例如下所示:
下一步工作
规范代码格式,并尝试阅读重采样原理,使用java源码实现重采样。
睡眠音频分割及识别问题(十)--Java读取wav文件相关推荐
- 睡眠音频分割及识别问题(十二)--基于IOS的YAMNet音频识别(总结)
1 结构体 此部分定义了两个结构体用于存储音频信息: AudioFragment:用于存储单个音频片段(0.975s, 16000Hz)的标签评分信息: AudioInfo:用于存储整个音频信息,包含 ...
- 睡眠音频分割及识别问题(六)--输入输出及方案讨论
简介 2021年7月13日,我和我的三个研究生一起拜访了玉米树,和王总等一起针对睡眠音频分割及识别问题进行了深入的讨论,达成了如下共识. 输入 由于保存整个晚上的睡眠音频所需要的存储空间过大,目前拟采 ...
- 睡眠音频分割及识别问题(十一)--基于Android的YAMNet音频识别(总结)
WAV文件格式介绍 WAV文件遵守资源交换文件格式之规则,在文件的前44(或46)字节放置标头(header),使播放器或编辑器能够简单掌握文件的基本信息,其内容以区块(chunk)为最小单位,每一区 ...
- 睡眠音频分割及识别问题(一)
问题描述 通过手机App的录音功能,获得用户一整夜的睡眠音频,对睡眠音频进行分割,并对睡眠阶段进行判定. (1)假设条件一:用户在相对安静的环境下进行睡眠,背景音可能会出现风声.雨声.汽车噪音.空调声 ...
- 睡眠音频分割及识别问题(八)--数据采集
问题 在采用PANN或者YAMNet框架进行学习的时候,没有梦话.磨牙等睡眠音频数据,在一些公开数据集上也没有找到(如果有哪位读者知道,麻烦给我在评论区留言,万分感谢). 公开数据集包括: (1)ht ...
- 睡眠音频分割及识别问题(七)--接口输入输出讨论
简介 关于接口输入输出的讨论. 输入 1.音频文件路径,类型为:字符串: 2.预测多标签类型的排名,前n名,类型为:整型. 处理 1.将输入的音频分割为多个以1s为时间单位的音频片段: 2.利用PAN ...
- 睡眠音频分割及识别问题(二)
输入 通过手机麦克风录制的任意长度睡眠声音. 输出 睡眠阶段曲线,该曲线可以反映出深度睡眠,浅度睡眠.REM睡眠.清醒各个阶段. 研究的核心问题 1.录制策略 (1)每隔10分钟录制一段睡眠音: 2. ...
- 睡眠音频分割及识别问题(九)--Android下的YAMNet
部署PANNs模型面临的问题 加载模型出错 在使用PANNs模型时,在PC端可以较好的运行,可是在Android端运行的时候,编译过程提示缺少libpytorch_jni.so文件,导致无法加载模型, ...
- 睡眠音频分割及识别问题(四)--YAMNet简介
简介 YAMNet模型是在 AudioSet 数据集(一个大型音频.视频数据集)上训练的音频事件分类器. 模型输入 该模型接收包含任意长度波形的float32一维张量或 NumPy数组,且满足范围[- ...
最新文章
- java中Integer装箱的注意
- 【python图像处理】图像的增强(ImageEnhance类详解)
- 使用命令行对Android应用签名
- 解决Jenkins的job启动tomcat时会在job结束时关闭问题
- java下标运算符_《Java从小白到大牛精简版》之第6章 运算符(下)
- 论文拒稿的评价可以有多狠?
- 华中科技大学计算机第三次作业,华中科技大学微机原理第三次作业.doc
- python和lisp学哪个好_五位专家跟你讲讲为啥Python更适合做AI/机器学习
- 恢复oracle中误删除delete的数据、drop掉的表
- java模拟浏览器htmlunit,Java版本的浏览器HtmlUnit入门示例
- 举例在项目中动态构建自己的程序集,.NET产生动态程序集!
- GitHub中文排行榜,帮助你发现高分优秀中文项目(二)-Java
- win10键盘鼠标怎么使用?(键盘操纵鼠标)
- java 合并mp3
- 5G NGC — 关键技术 — 网络切片 — 网络切片管理器网元
- C++编译器如何实现异常处理
- SVG开发包, 20 个有用的 SVG 工具,提供更好的图像处理
- java中finally语句是否一定会被执行
- 怪异盒模型flex布局
- 高质量C++/C编程指南(重要)
热门文章
- 计算机远程桌面自动关闭,windows10重启之后自动关闭远程桌面是怎么回事
- mysql 安全删除_mysql的binlog安全删除的一种方法
- qt读oracle时间戳,QT利用QDateTime获取当前时间戳的方法toTime_t
- oracle连续周数,详细讲解Oracle数据库的“周数计算”
- idea搭建maven项目关于数据库连接jar包版本问题解决方案
- Linux7添加syslog,请教linux下安装syslog的方法.是安装,不是配置
- python后端开发学什么_零基础学Python,这是阿里Python8年开发经验写给你的学习路线图...
- Java的一些学习心得
- 怎么制作游戏脚本_精彩的游戏视频混剪怎么做?录屏剪辑一站式制作
- 【学习笔记】结合代码理解设计模式 —— 代理模式(静态代理、动态代理、延伸)