微软Wav音频文件解析

C语言解析WAV音频文件 转载:http://www.cnblogs.com/LexMoon/p/wave-c.html 1.C语言解析WAV音频文件 代码地址:Github : https://github.com/CasterWx/c-wave-master 在计算机中有着各式各样的文件,比如说EXE这种可执行文件,JPG这种图片文件,也有我们平时看的TXT,或者C,CPP,PHP等代码文件。 如果把这些文件... 阅读详情

WAVE PCM 音频格式

           Wave文件是微软RIFF标准存储的多媒体文件的一种形式。一个RIFF文件包含一个文件头和多个数据块(chunks).WAVE文件是包含一个“WAVE”数据块,其包含两个子的数据块,一个是“fmt ”块,和”data”块。“fmt ”块指名数据的格式,而“data”块包含实际的取样值。下图为WAVE语音文件的经典格式:

          

注明 :little endia:内存的低字节存放数据的地位,高字节存放数据的高位

       Big endia:内存的低字节存放数据的高位,高字节存放数据的低位。

 

Chunk, Format Chunk, Fact Chunk(可选), Data Chunk。

 

各个字段解释:

ChunkID(0-3): 占4个字节,big-endian form,用ASCII的形参存储字符串“RIFF”.

ChunkSize(4-7):占4个字节,little-endian form,它的值的大小是整个文件的大小减去ChunkID 和 ChunkSize所占的8个字节的大小。大小等于36+SubChunk2Size,或者4 + (8 + SubChunk1Size) + (8 + SubChunk2Size)

Format(8-11):占4个字节,包含字符“WAVE”.

"WAVE" format 包含两个子块:“fmt ”和“data”.

 

“fmt ”块的数据格式如下:

 Subchunk1ID(12-15) :占4个字节,包含字符”fmt ” .

Subchunk1Size:占4个字节,该字段表示该块的大小,除去Subchunk1ID 和Subchunk1Size所占的8个字节大小。对于PCM 形式的文件,该值的大小为16个字节。即下面所占的大小:

AudioFormat:占两个字节,PCM形式的文件等于1,其他的值代表某些形式的数据压缩。

NumChannels:声道数,Mono = 1, Stereo = 2

SampleRate:采样率,如8000,16000

ByteRate: 每秒的字节数,大小为:SampleRate * NumChannels*BitsPerSample/8
BlockAlign:块对齐,即所有频道一个样本所占的字节数,大小为:NumChannels*BitsPerSample/8
 

“data”块的数据格式如下:

Subchunk2ID:占4个字节,包含字符”data”.

Subchunk2Size:音频数据的字节数,即要读取数据的大小。值为:NumSamples * NumChannels * BitsPerSample/8

*   Data:实际的声音数据。

 

例子:72字节的WAVE文件字节序列如下:

 

 

从上图可以看出:ChunkSize的十六进制数据为:000824:十进制为:2084

字节率ByteRate:十六进制:00015888,十进制为:88200

注:WAVE文件默认的存储方式为:little-endian.若ChunkID的值为“RIFX”则为big-endian.

抽样的数据必须以偶数字节数结束。

8位的抽样数据用无符号的字节,大小从0-255(2^8-1),16位样本是用有符号的整数来存储,大小为:-32768(-2^16/2)-32767(2^16/2-1).

RIFF stands for Resource Interchange File Format

  • Audio/visual interleaved data (.AVI)
  • Waveform data (.WAV)

注明:在不同的CPU上,相同的数据类型占用的位数不同,如:16bit 486PC 机器,char 占8个字节,int 占 16,short or short int 占16位, long or long int 占32 位

 而在32bit Pentium pc上,char:8,int:32,short or short int :16,long or long int:32,所以为了保持软件在不同机器上的兼容性,最好用char ,short ,long

 

 

Wavread读取的数据转化为int : yi=y*2^nbits/2;

 

数据结构定义:

 typedef struct RIFF_HEADER
  {
      char szRiffID[4];//"RIFF"
      DWORD dwRiffSize;
      char szRiffFormat[4];//"WAVE"
    }RIFF_HEADER;
  
 typedef struct WAVE_FORMAT
 {  WORD wFormatTag;   
    WORD wChannels;
     DWORD dwSamplesPerSec; 
     DWORD dwAvgBytesPerSec;
     WORD wBlockAlign; 
     WORD wBitsPerSample;
 } WAVE_FORMAT; 
    
 typedef struct FMT_BLOCK 
  {  char szFmtID[4]; 
     DWORD dwFmtSize; 
    WAVE_FORMAT wavFormat;
  }FMT_BLOCK;   
 typedef  struct FACT_BLOCK 
   {       char szFmtID[4]; 
          DWORD dwFactSize;
          DWORD dwFactData;
    }FACT_BLOCK;  
   typedef  struct DATA_BLOCK
     {  char szDataID[4]; // 'd','a','t','a'  
        DWORD dwDataSize; 
   }DATA_BLOCK; 
   


 

WAV文件解析 目录 一、WAV简介 二、WAV文件结构 2.1 首部数据 2.2Format数据块 2.3Data数据块 2.4其他数据块 参考资料 一、WAV简介 WAV格式是微软公司开发的一种声音文件格式,也叫波形声音文件,是最早的数字音频格式,被Windows平台及其应用程序广泛支持。WAV格式支持许多压缩算法,支持多种音频位数、采样频率和声道,采用44.1kHz的采样频率,16位量化位数,因此WAV的音质与CD相差无几,但WAV格式对存储空间需求太大不便于交流和传播。 二、WAV文.. 阅读详情

相关推荐

wav2sbc转换工具

wav2sbc转换工具

Wav详细解析(subChunk1Size/subChunk2Size) 附带部分C代码

WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是“RIFF”。WAVE文件由文件头和数据体两大部分组成。其中文件头又分为RIFF/WAV文件标识段和声音数据格式说明段两部分。 Wave主要包含size: 1,ChunkSize 整个文件大小,不能用它提取音频数据,Chunk1Size不固定而且文件结尾可能有填充描述信息 2,SubChunk1Size 如若为

weixin_41786823的博客 2916

wav转sbc提示音工具

wav转sbc提示音工具

音频录制

音频原始数据 PCM PCM数据是采集到的纯的音频数据,也是最原始的数据。 WAV WAV也是音频原始数据,只不过是在PCM的基础上加入了数据头,方便播放器使用正确的参数去播放。 量化基本概念 采样大小:一个采样用多少bit存放,常用的是16bit。也叫位深,位深越高描述的峰值越大,即描述声音的强度大 采样率:采样频率8K、16K、32K、44.1K、48K,采样率越高数字信号与模拟信号之间模仿的越接近,误差越小,打电话时常是8K,略有失真。 声道数:单声道、双声道、多声道,超过双声道的称为立体声。 码率计

一叶知秋 485

sbc_encode_decode.7z

蓝牙a2dp协议中的sbc编码 解码器,在windows下运行的工具软件,含编解码资源。 csdn积分充值也不贵,实在缺钱可以私信我要

bes平台-提示音转换工具wav2sbc.exe

BES平台提示音转换工具,希望能帮到更多兴趣爱好者。

音频wav文件格式分析

音频wav文件格式解析以及alsa接口调用Demo示例

wozaidengnihaojiu的博客 1478

半导体设备隔振必看:如何用天棚阻尼PID控制实现VC-C级振动抑制(含SIMULINK模型)

本文深入探讨了在半导体精密制造中,如何运用天棚阻尼PID控制算法实现VC-C级振动抑制。通过构建高保真单自由度仿真模型,详细解析了从算法原理、SIMULINK实现到参数整定的全链路方案,并针对谐波扰动提供了陷波滤波器设计方法,为工程师提供了从仿真到实践的完整主动隔振技术指南。

pz89012345的博客 537

wav音频文件格式解析

wav是微软开发的一种音频文件格式,注意,wav文件格式是无损音频文件格式,想对于其他音频格式文件数据是没有经过压缩的,通常文件也相对比较大些。 文件格式如图所示: 解析代码如下: #include #include #include struct WAV_Format { uint32_t ChunkID; /* "RIFF" */ uint32_t ChunkSize

Tracy Mcgrady的专栏 2万+

LSTM 怎么进行二维数据的输入呢

尽管LSTM并不天然地适用于处理图像、视频等二维数据,但通过时间序列化、卷积特征提取和双向LSTM等方法,我们可以将二维数据转化为适合LSTM输入的形式,从而利用LSTM的强大记忆能力和长期依赖学习能力对二维数据进行建模。未来的研究方向可以考虑将LSTM与其他模型结合,例如将LSTM与卷积神经网络(Convolutional Neural Network, CNN)结合,利用CNN提取图像的空间特征,然后利用LSTM学习时间序列的长期依赖;

xiamu_CDA的博客 1037

C# 8. 在新窗口中使用chart控件波形移动显示

1. 添加新窗口 在Form1中新建button控件,名称为buttonStartWaveDisp,这样单击就能调出Form2窗口 在Form1中增加如下: private void buttonStartWaveDisp_Click(object sender, EventArgs e) { if((form2 == null) || (form2.IsDisposed == true)) { form2 = new Form2();

TrueLink的博客 1432

Linux音频驱动-WAV文件格式分析

概述 WAV文件格式是Microsoft的RIFF规范的一个子集,用于存储多媒体文件。WAV(RIFF)文件由若干个Chunk组成,分别为:  RIFF WAVE Chunk,Format Chunk,Fact Chunk(可选),Data Chunk。具体格式如下: RIFF Chunk 根据RIFF的格式,可以抽象出RIFF chunk的结构体: struct RIFF_CHU

半月旋空 2461

避坑指南:STM32移植CanFestival时那些没人告诉你的细节(含TJA1050硬件适配)

本文深入解析STM32移植CanFestival协议栈时的关键细节与TJA1050硬件适配技巧,涵盖AVR残留代码清理、定时器中断优化及CAN通信稳定性提升方案。特别针对TJA1050在特定波特率下的信号畸变问题提供实战解决方案,帮助开发者规避移植过程中的隐形陷阱,实现工业级稳定通信。

work3的博客 760

WAV文件格式

作者:阿宝  更新:2016-09-21  来源:彩色世界(https://blog.hz601.org/2016/09/21/waveform-audio-file-format/index.html)  WAVE (Waveform Audio File Format),是由微软和IBM公...

160

什么是 WhatsApp云控 WhatsApp群发,WhatsApp协议,他们有什么区别?

下面我们sensws讲解下什么是WhatsApp云控 WhatsApp群发,WhatsApp协议

sendws的博客 3875

从零构建锂电池主动均衡系统:Simulink仿真中的Buck-Boost拓扑实战指南

本文详细介绍了如何在Simulink中从零构建基于Buck-Boost拓扑的锂电池主动均衡系统。通过仿真环境搭建、参数优化、控制策略设计和性能评估,为工程师提供了完整的实战指南,帮助快速验证和优化均衡算法,提升电池组一致性与寿命。

gitlab7runner的博客 896

pcm格式封装wav

PCM PCM编码是直接存储声波采样被量化后所产生的非压缩数据,故被视为单纯的无损耗编码格式,其优点是可获得高质量的音频信号。 PCM是模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志。 要将这样的信号转为 PCM 时,需要将声音量化,我们一般从如下几个维度描述一段声音: 1.声道数 2.采样位数 3.采样频率 4.时长 采样频率:即取样频率...

隔壁老王呀的专栏 1178

地平线天工开物AI开发平台实战:从量化训练到模型部署的完整指南

本文提供了地平线天工开物(OpenExplorer)AI开发平台的实战指南,详细解析了从量化训练到模型部署的完整流程。文章重点对比了量化感知训练(QAT)与训练后量化(PTQ)两条核心路径的优劣与适用场景,并分享了图像分类模型PTQ部署的实战经验与常见问题调试技巧,旨在帮助开发者高效地将AI模型部署到地平线AI芯片上。

weixin_29046035的博客 456

【音视频 | wav】wav音频文件格式详解——包含RIFF规范、完整的各个块解析、PCM转wav代码

本文详细介绍wav音频文件的结构,包含RIFF规范、完整的各个块解析、以及提供了pcm转wav的C语言代码。

wkd_007的博客 1万+

零倾覆力矩点(ZMP)

从形式上讲,ZMP 指的是空间中相对于一个平面(通常是地平面)抵消接触力矩的点的集合。这个集合实际上是一个轴,而不是一个点,但为了方便起见,让我们按照传统的推导方法来计算地面平面上的 ZMP。这一推导从任何多刚体系统的牛顿-欧拉运动方程开始:其中,为机器人的总质量,为重力矢量,为系统的重心,为加速度,为固定点的角动量变化率。在右侧,表示净接触扭矩,即施加到机器人上的所有接触扭矩之和,坐标取自质心 (COM)。

机器人控制与仿真应用 2371

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

wav音频文件格式解析【个人笔记】(自用)

wav音频文件格式解析【个人笔记】(自用) 1. WAV格式 wav是微软开发的一种音频文件格式,注意,wav文件格式是无损音频文件格式,相对于其他音频格式文件数据是没有经过压缩的,通常文件也相对比较大些。、 支持多种音频数字,取样频率和声道,标准格式化的WAV文件和CD格式一样,也是44.1K的取样频率,16位量化数字,因此在声音文件质量...

豆子 7338

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

WAV音频文件解析与Python读取

WAV音频文件解析与Python读取 本文相似解析了WAV格式的头部信息,并用Python通过wave或者struct模块解析并读取WAV音频内容。 WAV(波形声音文件)是最常见的声音文件格式之一,是微软公司专门为Windows开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真。

yd778473278的博客 2014

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Audio】WAV音频文件格式结构解析

网上找的一些资料,和自己的调试经验,总结~ https://blog.youkuaiyun.com/imxiangzi/article/details/80265978 https://www.cnblogs.com/ranson7zop/p/7657874.html WAV WAV文件是在PC机平台上很常见的、最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为W...

Sam-zhang的博客 4452

wav音频文件解析

wav音频文件解析概述文件结构RIFF区块FORMAT区块DATA区块demo解析结果测试文件相关资料 概述   Waveform Audio File Format(WAVE,又或者是因为WAV后缀而被大众所知的)是最常见的声音文件格式之一,是微软公司专门为Windows开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真。   它采用RIFF(Resource Interchange File Format)文件格式结构。通常用来保存PCM格式的原始音频数据,所以通常

淡淡的心 1413
上一篇: 研究生期间有关语音识别方面资料的收集
下一篇: 【Programming Pearls】对文档中的单词进行计数问题
xiaoding133
博客等级 码龄19年 415粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值