睡眠音频分割及识别问题(十)--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源码实现重采样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 开发板 i2s_[Craftor原创] I2S总线接口设计(Verilog)

本文有Craftor原创,转载请保留出处。 I2S是数字音频的接口,这里不用多说,请读者自己查阅相关资料。 本文中要设计的是FPGA与数字音频芯片的I2S接口时序。简单点说,就是通过FPGA向音频芯片写数据,通过的是I2S总线&#…

linux内核态获取ip地址,Linux内核支持动态获取IP地址

配置选项:NFS: Network File SystemPNP: Plug-and-PlayCONFIG_ROOT_NFS若想要Linux box通过NFS依赖网络上的其他计算机来mount其整个根文件系统(假定该机器没有硬盘),则配置为Y。此时,可能还需要将"内核IP自动配置"设置为Y, 以便本…

深度学习(1)--引言

表示学习(representation learning) 使用机器学习来发掘表示本身,而不仅仅把表示映射到输出。 表示学习算法的典型例子为自编码器(autoencoder)。自编码器由一个编码器(encoder)函数和一个解码器(decoder) 函数组合而成。 编码器:将输入数据转换为一种…

pycharm配置python环境变量_求教大家 pycharm 中,环境变量 path 的问题!

问题的发现 在 pycharm 里把一个编译好的二进制文件放到/usr/local/bin/,然后在程序里调用。 cmmd "xxx ..." os.system(cmmd) 报这样的错,但是/usr/local/bin/已经在环境变量 path 里。 sh: xxx: command not found 最简单的解决办法就是把上…

linux nohup 运行,linux – 如何获取使用nohup运行的程序列表

当我开始使用$ nohup风暴dev-zookeper时,方法1:prayagupdprayagupd:/home/vmfest# jobs -l[1] 11129 Running nohup ~/bin/storm/bin/storm dev-zookeeper &方法2:使用ps命令。$ ps xwPID TTY STAT TIME COMMAND1031 tty1 Ss 0:00 /sbin/…

深度学习(2)--常见概率分布(1)

许多简单的概率分布在机器学习的众多领域中都非常有用,这个内容将分为两个部分来说明,第一个部分介绍伯努利分布、二项式分布、多项式分布及范畴分布,第二个部分介绍高斯分布、指数分布、Laplace分布、Dirac分布、经验分布及混合分布。 伯努…

gdb 调试_GDB调试指南-源码查看

前言我们在调试过程中难免要对照源码进行查看,如果已经开始了调试,而查看源码或者编辑源码却要另外打开一个窗口,那未免显得太麻烦。文本将会介绍如何在GDB调试模式下查看源码或对源码进行编辑。 准备工作为了说明后面的内容,我们…

suse linux 11如何分区,新手发帖,关于SUSE11挂载磁盘阵列并分区的问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼以下是盘阵给的代码:解压缩软件[rootRedHat5 ~]# tar xvzf Open-iscsi-2.0.865.tar.gz在/root下生成目录Open-iscsi-2.0.86,进入该目录进行编译和安装[rootRedHat5 ~]# cd Open-iscsi-2.0.86[rootRedHat5 Op…

深度学习(2)--常见概率分布(2)

上一部分介绍了伯努利分布、二项式分布、多项式分布以及范畴分布,这里将继续介绍高斯分布、指数分布、Laplace分布、Dirac分布、经验分布及混合分布。 高斯分布 高斯分布又称为正态分布,其图形为钟形曲线(bell-shaped curve),特点是中间高、…

update 千万数据_mysql学习(四)数据库

创建数据库create database 数据库名; 创建数据库的时候,我们应该记住以下几点: 1 不能与其他数据库名重复 2 名称可以由任意字母,阿拉伯数字,下划线,美元符,但是必须以字母开头 3 名称最长为64个字符&…

linux gpio按键驱动程序,Linux GPIO Key 驱动的加载

gpio-keys是基于input子系统实现的一个通用的GPIO按键驱动,基于platform来实现,位于drivers/input/keyboard/gpio_keys.c,这个文件是硬件无关的,而硬件有关的需要我们自己来注册.进入这个gpio_keys.c这个函数,第一步就是初始化.static int __init gpio_keys_init(void){return …

深度学习(3)--常用激活函数的有用性质

1 sigmoid函数 sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。 sigmoid函数由下列公式定义: σ(x)11e−x(1)\sigma(x) \frac{1}{1 e^{-x}} \tag1σ(x)1e−x1​(1) sigmoid函数的级数表示: σ(x)1214x−148x31480x5−1780640x73114515…

kvm虚拟机不通网关_linux ssh 虚拟机下CentOS7开启SSH连接

一. 没开启,连接会报错二. 开启后,连接成功在虚拟机(Vmware Workstation)下,安装了CentOS7,现在想通过SSH工具连接虚拟机中的CentOS71、 首先,要确保CentOS7安装了 openssh-server,在终端中输入 yum list i…

linux netstat服务,linux netstat查看服务和端口状态

netstat可以查看linux系统中正在使用的服务和端口情况常见参数-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字。-l 仅列出有在 Listen (监听) 的服务状态-p …

memcpy函数实现_等比例缩放c++ opencv 实现

背景&#xff1a;在目标检测算法中&#xff0c; 输入图片等比例resize时mAP比直接resize会高几个点。实现&#xff1a;使用c 和opencv实现(之所以没用python&#xff0c;是因为用于生产环境)先贴代码&#xff1a;#include <math.h> #include <opencv2/core/core.hpp&g…

linux的bh文件停止运行,linux 系统 rcu_bh self-detected stall 问题处理

问题说明近期几台 linux 机器都报了以下 kernel 提示:Apr 24 21:02:09 cztest kernel: INFO: rcu_bh self-detected stall on CPU { 0} (t0 jiffies)Apr 24 21:02:09 cztest kernel: Pid: 0, comm: swapper/0 Not tainted 3.4.95.R620.CentOS6.5-x86_64.OpenBeta.KVM #1Apr 24 …

睡眠音频分割及识别问题(十一)--基于Android的YAMNet音频识别(总结)

WAV文件格式介绍 WAV文件遵守资源交换文件格式之规则&#xff0c;在文件的前44(或46)字节放置标头(header)&#xff0c;使播放器或编辑器能够简单掌握文件的基本信息&#xff0c;其内容以区块(chunk)为最小单位&#xff0c;每一区块长度为4字节&#xff0c;而区块之上则由子区…

安卓第一行代码第3版pdf_SPECFEM2D用户手册——第3章 网格生成——3.1 如何使用SPECFEM2D...

参考资料manual_SPECFEM2D.pdf数值实现Julia 1.4.2/MATLAB 2019a备用系统Ubuntu 64地球物理局 地震波动力学实验室 谱元组 译# 声明 # 欢迎批评指正&#xff0c;禁止转载&#xff01;目 录石中居士&#xff1a;地震波场正演模拟中的谱元法&#xff1a;基本原理与程序实现——目…

黑白棋游戏水平(2)--pytorch剪裁

系统需求 Linux系统&#xff0c;并已安装git、gcc、g、cmake⼯具 下载源码 从github克隆Pytorch仓库 git clone --recursive https://github.com/pytorch/pytorch如果已经克隆过&#xff0c;则使⽤以下命令更新 git submodule sync git submodule update --init --recurs…

linux htb 源代码,LINUX TC:HTB相关源码

LINUX TC:HTB相关源码 收藏HTB(hierarchy token buffer)是linux tc(traffic control)模块中的排队队列的一种。它的配置比CBQ要简单.同时实现功能也很强大。下面&#xff0c;就来看看&#xff0c;HTB在linux中的源码。1、 Qdisc_ops的注册先从module_init函数看起(…