wav文件格式分析详解
PCM编码与Waveform音频文件(.wav)格式详解
PCM编码与Waveform⾳频⽂件(.wav)格式详解 ⼤家好,我是痞⼦衡,是正经搞技术的痞⼦。
今天痞⼦衡给⼤家介绍的是PCM编码及Waveform⾳频⽂件格式。
嵌⼊式⾥有时候也会和⾳频打交道,⽐如最近特别⽕的智能⾳箱产品,离不开前端的⾳频信号采集、降噪,中间的语⾳识别(ASR)、⾃然语⾔处理(NLP),以及后端的⽂语合成(TTS)、⾳频播放。
⾳频信号采集是处理声⾳的第⼀步,要采集⾳频就离不开PCM编码,⾳频采集完成⾃然需要保存,waveform格式(.wav)是⼀种最经典的⾳频⽂件格式。
今天痞⼦衡就给⼤家详细介绍PCM编码以及waveform⽂件格式。
⼀、声⾳基础 众所周知,声⾳是由物体振动产⽣的声波,声⾳通过介质(空⽓或固体、液体)传播并能被⼈听觉器官所感知。
发⾳物体情况(材料,距离,振动强度等)不同,产⽣的声⾳也不同。
为了区分不同的声⾳,我们主要⽤如下三个参数来描述声⾳的特征:⾳量:⼈主观上感觉到的声⾳⼤⼩(也叫响度),由“振幅”(amplitude)和⼈离声源的距离决定。
⾳调:声⾳的⾼低(⾼⾳、低⾳),由“频率”(frequency)决定,频率越⾼⾳调越⾼。
⾳⾊:⾳⾊是⼀种抽象的东西,波形决定了声⾳的⾳⾊。
声⾳因不同发声物体材料⽽具有不同特性,波形是把这个抽象特性直观的表现出来。
典型的⾳⾊波形有⽅波,锯齿波,正弦波,脉冲波等。
三⼤参数⾥除了⾳⾊没有度量单位外(可以认为⾳⾊是声⾳的UID,每种⾳⾊都是独⼀⽆⼆的),⾳量和⾳调均有度量单位,这意味着⾳量和⾳调是可调整的,也是声⾳之间可对⽐的特征参数。
1.1 ⾳量单位-分贝(dB) 声波是⼀种机械波(压⼒波)。
声波(空⽓质点)的连续振动,使空⽓分⼦不断交替的压缩和松弛,使⼤⽓压迅速产⽣起伏,这种⽓压的起伏部分,就称为声压。
声压的振幅表⽰质点离开平衡位置的距离,反映从波形波峰到波⾕的压⼒变化,以及波所携带的能量的多少。
声压值虽然可以反映⾳量⼤⼩,但⼈们⽇常⽣活中遇到的声⾳,若以声压值表⽰,变化范围⾮常⼤(达到六个数量级以上),并且⼈体听觉对声信号强弱刺激反应不是线形的,⽽是成对数⽐例关系。
WAV文件格式分析与详解
WAV文件格式分析与详解作者:王若钧何杉来源:《数字技术与应用》2014年第03期摘要:WAV文件格式信息是对WAV文件编程的重要依据。
揭开WAV文件格式的奥秘是开发功能强大的具有自主知识产权的语音处理软件的关键。
本文结合波形文件的基本知识,较系统地说明了WAV文件的存储原理、文件结构、WAV文件头格式、基于PCM编码的数据组织,内容全面、清楚、准确,还包含了一些新汇集的参数。
可作为开发人员的参考资料。
关键词:文件格式 WAV 编码声音中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2014)03-0093-021 引言WAV文件是在PC机平台上很常见的、最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形文件,可直接存储声音波形,还原的波形曲线十分逼真。
WAV文件格式简称WAV格式是一种存储声音波形的数字音频格式,是由微软公司和IBM联合设计的,经过了多次修订,可用于Windows,Macintosh,Linix等多种操作系统,详述如下。
2 波形文件的基础知识2.1 波形文件的存储过程声源发出的声波通过话筒被转换成连续变化的电信号,经过放大、抗混叠滤波后,按固定的频率进行采样,每个样本是在一个采样周期内检测到的电信号幅度值;接下来将其由模拟电信号量化为由二进制数表示的积分值;最后编码并存储为音频流数据。
有的应用为了节省存储空间,存储前,还要对采样数据先进行压缩。
2.2 WAV文件的编码编码包括了两方面内容,一是按一定格式存储数据,二是采用一定的算法压缩数据。
WAV格式对音频流的编码没有硬性规定,支持非压缩的PCM(Puls Code Modulation)脉冲编码调制格式,还支持压缩型的微软自适应差分脉冲编码调制Microsoft ADPCM(Adaptive Differential Puls Code Modulation)、国际电报联盟(International Telegraph Union)制定的语音压缩标准ITU G.711 a-law、ITU G.711-law、IMA ADPCM、ITU G.723 ADPCM (Yamaha)、GSM 6.10、ITU G.721 ADPCM编码和其它压缩算法。
WAV文件格式分析
WAV文件格式分析
WAV(PCM)文件格式是一种容器文件格式,它可以包含多种编码方式的
音频数据,但最常见的是PCM编码方式。
PCM是一种无损的音频编码方式,它将音频信号按照时序进行采样,并将每个采样值量化成离散的数字,进
而进行存储。
PCM编码方式的音频数据是最原始、最接近原始音频信号的
数据,因此在音质上具有高保真性。
文件头是WAV(PCM)文件的第一部分,用于描述整个文件的基本信息。
文件头的长度为44个字节。
它包含了文件的格式、采样率、通道数、量
化位数等信息。
其中,采样率表示每秒采样的次数,通道数表示音频数据
的通道数(例如单声道或立体声),量化位数表示每个采样值用多少位进
行表示。
附加信息部分是可选的,它可以用来存储一些附加的音频信息,如音
频标记、标题、歌手信息等。
附加信息部分的长度可以根据需要进行扩展。
然而,WAV(PCM)文件格式也存在一些不足之处。
由于PCM编码方式没
有对音频数据进行压缩处理,因此WAV(PCM)文件的尺寸相对较大,占用
存储空间较多。
另外,由于其采样率和量化位数的限制,WAV(PCM)文件格
式可能无法满足一些高质量音频的需求。
针对这些问题,人们常常使用其
他音频格式如MP3、AAC等进行压缩编码,以减小文件尺寸并提高存储和
传输效率。
总结起来,WAV(PCM)文件格式是一种常见的音频文件格式,它基于PCM编码方式进行存储和传输。
WAV(PCM)文件格式具有音质高、兼容性强
等优点,但同时也存在文件较大和存储、传输效率低的不足之处。
wav文件格式分析
一. RIFF概念在Windows环境下,大部分的多媒体文件都依循着一种结构来存放信息,这种结构称为"资源互换文件格式"(Resources lnterchange File Format),简称RIFF。
例如声音的WAV文件、视频的AV1文件等等均是由此结构衍生出来的。
RIFF可以看做是一种树状结构,其基本构成单位为chunk,犹如树状结构中的节点,每个chunk由"辨别码"、"数据大小"及"数据"所组成。
图一、块的结构示意图辨别码由4个ASCII码所构成,数据大小则标示出紧跟其后数据的长度(单位为Byte),而数据大小本身也用掉4个Byte,所以事实上一个chunk的长度为数据大小加8。
一般而言,chunk本身并不允许内部再包含chunk,但有两种例外,分别为以"RIFF"及"L1ST"为辨别码的chunk。
而针对此两种chunk,RIFF又从原先的"数据"中切出4个Byte。
此4个Byte称为"格式辨别码",然而RIFF又规定文件中仅能有一个以"RIFF"为辨别码的chunk。
图二、RIFF/LIST块结构只要依循此一结构的文件,我们均称之为RIFF档。
此种结构提供了一种系统化的分类。
如果和MS一DOS 文件系统作比较,"RIFF"chunk就好比是一台硬盘的根目录,其格式辨别码便是此硬盘的逻辑代码(C:或D:),而"L1ST"chunk即为其下的子目录,其他的chunk则为一般的文件。
至于在RIFF文件的处理方面,微软提供了相关的函数。
视窗下的各种多媒体文件格式就如同在磁盘机下规定仅能放怎样的目录,而在该目录下仅能放何种数据。
二. WAV文件格式WAVE文件是非常简单的一种RIFF文件,它的格式类型为"WAVE"。
多媒体文件解析(一):WAV文件解析
多媒体⽂件解析(⼀):WAV⽂件解析在之前的系列中,我们对主流的多媒体的⽂件格式进⾏了整理和讲述。
这⾥开始我们开始对如何分析和解释多媒体⽂件来进⾏整理,以便于以后我们⾃⼰排查⼀些问题的时候有⼀些帮助。
本篇我们就讲⼀下WAV⽂件格式。
⾸先我们知道WAV格式的实质就是在 PCM ⽂件的前⾯加了⼀个⽂件头。
下⾯是使⽤⼆进制打开的⼀个WAV⽂件,此⽂件只写⼊了WAV头信息。
整个⽂件的⼤⼩为44b。
下⾯我们就针对WAV头进⾏⼀点点的解析和整理。
WAV⽂件遵循RIFF规则,其内容以区块最⼩单位进⾏存储。
WAV⽂件由3个区块组成:RIFF chunk, Format chunk 和 Data chunk。
另外还有可能包含其他的可选区块,如:Fact chunk、Cue points chunk等。
⼀、RIFF区块下⾯我们针对此区块的三个名称的内容进⾏分析:ID:在WAV格式中,ID固定以 RIFF 为标识。
换成进制数据为:0x52494646,此值为⼤端序,按照正常的顺序进⾏读取即可。
Size:Size的⼤⼩为整个⽂件的长度减去ID和Size的长度. 注意此为⼩端序,计算⼤⼩的时候,需从右边往左读。
例如本WAV的Size为36(⼗六进制:24),再加上Size和ID的长度,整个⽂件的⼤⼩44b就是这么来的.Type:在WAV⽂件中,Type的内容固定为 "WAVE",表⽰后⾯会有两个区块,Format区块和Data区块。
⼆、FORMAT区块ID:此区块的ID以'fmt '为标识Size:表⽰该区块数据的长度(不包含ID和Size的长度)AudioFormat:表⽰Data区块存储的⾳频数据的格式,PCM⾳频数据的值为1NumChannels:表⽰⾳频数据的声道数,1:单声道,2:双声道SampleRate:表⽰⾳频数据的采样率ByteRate:每秒数据字节数 = SampleRate * NumChannels * BitsPerSample / 8BlockAlign:每个采样所需的字节数 = NumChannels * BitsPerSample / 8BitsPerSample:每个采样存储的bit数,8:8bit,16:16bit,32:32bit三、DATA区块ID:区块的ID以'data'为标识Size:表⽰⾳频数据的长度,N = ByteRate * secondsData:存储的是⾳频数据四、WAV⾳频数据存储⽅式WAV⽂件的PCM⾳频数据以⼩端形式来进⾏数据存储。
流行无损音乐格式介绍
流行无损音乐格式介绍无损音乐格式———WAVWAV(Wave Audio Files)格式是微软公司开发的一种声音文件格式,也叫波形声音文件,是最早的数字音频格式,被Windows平台及其应用程序广泛支持。
WAV格式支持许多压缩算法,支持多种音频位数、采样频率和声道,采用44.1kHz 的采样频率,16位(或8位)量化位数,因此WAV的音质与CD相差无几,但WAV 格式对存储空间需求太大,不便于交流和传播。
D上的音乐在 windows中是不能够直接认出的,无法直接拷贝到硬盘中(其它的格式windows是可以认识的,比如数据文件、VCD、DVD等,惟独CD不行)。
所以,为了把CD上的歌曲拷贝到硬盘中,需要专门的软件实现,这个过程叫做抓轨。
有很多软件可以实现这个功能。
最常见的、大家认为最好的,就是EAC(EAC.exe),经过抓轨出来的音乐以WAV格式保留在硬盘中。
当把CD上的音乐抓轨后,这个原始文件(WAV)很大(一盘CD上的音乐,约700M左右),如果把它分离成单首歌曲,那每个文件的大小约20到60M。
这样大的文件既占用硬盘空间,也不适合在网上传播。
所以,通常要把这个原始的大文件进行压缩。
其压缩方式有多种,可以分为两大类。
一类是没有损失的压缩,比如用猴子(Monkeys Audio.exe)就可以实现,它可以把、原始的音WAV文件压缩到原来大小的50——60%,文件格式是APE。
(可能就是免费高效的猴子捧红了ape) 。
另外一类压缩方式是有损失的压缩,能把文件压缩得更小,可以比ape文件还要小1半以上,常见的音乐有损压缩形式就是MP3。
但缺点明显:声音质量下降,文件越小,质量越差。
越来越多的人选择APE格式,网络传播是功不可灭的,众多的音乐发烧友在网上交流APE格式音乐,在百度搜索“APE音乐下载”约有 916,000个相关网页,且数量每日俱增。
而只要安装一些流行的影音播放软件,就可以直接对APE进行播放。
被遗忘的时光wav格式
被遗忘的时光wav格式随着科技进步的不断加快,我们与周围世界的交流日益频繁,尤其是在数字娱乐领域,各种高清、流畅的视频、音频体验让人目不暇接。
但是,有些奇妙的体验只可以被保存在具有某种特殊格式的文件中,比如wav格式。
wav格式被广泛用于数字音频存储,但它远远不止于此。
以下是本篇文章的重点:1. 被遗忘的时光wav(Waveform Audio File Format,波形音频文件格式)格式是一种标准化的、未压缩的音频文件格式。
这种格式使用PCM采样,并且通常采用44.1kHz采样率及16位的采样深度。
wav格式最初由IBM和微软共同开发,现在已成为数字音频领域中最常见的格式之一。
当我们回顾过去时,wav格式似乎已经陪伴了我们很长时间。
1991年,wav格式基本上已成为计算机上嵌入式、CD-ROM和互联网上音频的标准格式。
在这段时间里,wav格式已经确立了它被广泛认可的位置,并在运用领域拓展了许多新的技术领域。
2. Wav格式在音乐领域的重要性Wav格式成为了音乐领域主流的音频格式之一。
在复古的录音机和万花筒内部的信息记录方式中,也可以找到wav格式的影子。
对于一些音乐制作人员而言,wav格式可能是他们最爱的格式。
它可以提供无损旋转任何样式的音频文件,也适合自然环境记录和播放。
在今天,虽然数码播放器和云音乐变成了主流,但高音质音乐的发展是wav格式的显著标志之一。
wav格式虽然占用空间较大,但在保证音质的前提下,它的播放效果却是最为优秀的,这也是我个人最钟爱wav格式的原因。
3. Wav格式在电脑领域的闪光点通常来说,Wav格式具有非常好的兼容性。
它可以在几乎任何设备上运行,包括PC、Mac、智能手机、平板电脑等等。
如果您正在寻找高清声音或原始录音的无损格式,wav是绝佳的选择。
另外,wav格式也是一种开放和可编程的文件格式。
这意味着任何人都可以利用标准的格式和编码器开发自己的软件和应用程序。
它也支持与其他格式的无缝互操作性,这使得它成为数字音频处理的一个重要平台。
WAV文件的结构剖析
WAV 文件的结构剖析王 颀 赵世刚 张春寿 计算机多媒体技术的发展使视听处理技术产生了巨大进步。
用计算机“剪”、“拼”、“接”的视频、音频节目比比皆是。
这些视、音频文件在计算机内的存储结构和组织结构对使用者是透明的,这给技术人员带来困惑和诸多不便(例如:受病毒攻击或误操作需恢复文件时)。
如果掌握了这类文件结构,就可用一些简单的维护软件,以“特征字符”为引导,将各簇挂接,恢复文件。
下面以非压缩的基本WAV 文件(扩展名为wav )为例,介绍音频文件的储存与组织结构,以期达到抛砖引玉的目的。
WAV 音频文件是存储数字音频(波形)数据的文件。
它支持多种分辨采样频率和多声道音频,在IBM 平台上非常流行。
广泛应用在专业数字音频波形节目制作上,这种格式采用微软电子技术交换文件介绍的方式以块存储数据。
11数据的组织所有数据以字节(8位二进制)方式存储,多字节数据值按低位优先顺序存储,如图1所示。
21文件结构WAV 文件是不同类型块的集合。
其中,所必需的格式块内含描述波形的重要参数(诸如采样频率等);数据块内含音频波形数据,两者关系见图2。
31样本点和样本帧样本点是某时间点上所采到的一个语音样本幅值(简称采样值)。
单字节采样值以无符号数0—255表示;采样值超过8位二进制值92 济南教育学院学报2000年第3期 时,则以2的补码形式表示。
例如:16位二进制数(0111111111111111)B十六进制的(7FFF )H 表示(32767)D (最大值),(8000)H 表示(32768)D (最小值)。
采样值在9—16位时用二字节描述;采样值在17—24位时用三字节描述;采样值在25—32位时用四字节描述。
采样值的数据位应遵循左对齐及余位补“O ”规则。
例如,采样值为12位,用4—15位存储该值,0—3位填“0”。
具体讲,采样值为二进制101000010111,数据描述如图3所示。
需要特别指出的是:机内存储要求低字节优先,波形数据要求最高位优先。
wav文件格式详解
WAV (Waveform audio format )是微软与IBM 公司所开发的一种声音编码格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows 平台的音频信息资源,被Windows 平台及其应用程序所广泛支持,也是其音乐发烧友中常用的指定规格之一。
由于此音频格式未经过压缩,所以在音质方面不会出现失真的情况,但档案的体积因而在众多音频格式中较为大。
该格式支持多种音频数字,取样频率和声道,标准格式化的WAV 文件和CD 格式一样,也是44.1K 的取样频率,16位量化数字,因此在声音文件质量和CD 相差无几! WAV 打开工具是WINDOWS 的媒体播放器。
每个WAVE 文件的头四个字节便是“RIFF”。
WAVE 文件由文件头和数据体两大部分组成。
其中文件头又分为RIFF /WAV 文件标识段和声音数据格式说明段两部分。
WAVE 文件各部分内容及格式见下表。
文件头声音数据块偏移地址 字节数 类型 内容24H~27H 4 字符 数据标志符(data ) 28H~2BH 4 长整型 采样数据总数 2CH......采样数据示例下图是用UltraEdit 打开的wav 文件的部分截图偏移地址 字节数 类型 内容00H~03H 4 字符 资源交换文件标志(RIFF ) 04H~07H 4 长整数 从下个地址开始到文件尾的总字节数 08H~0BH 4 字符 WAV 文件标志(WAVE ) 0CH~0FH 4 字符 波形格式标志(FMT )10H~13H 4 整数 过滤字节(一般为00000010H )14H~15H 2 整数 格式种类(值为1时,表示数据为线性PCM 编码)16H~17H 2 整数 通道数,单声道为1,双声音为2 18H~1BH 4 长整数 采样频率1CH~1FH 4 长整数 波形数据传输速率(每秒平均字节数) 20H~21H 2 整数 数据的调整数(按字节计算) 22H~23H2整数样本数据位数此段W A V文件是使用window自带的录音机软件完成,生成的16进制文件内容,采用用的是小段存放格式(高地址存储高位,低地址存储低位)按字节存储(8bit)补充头文件样例说明:(1)“52 49 46 46”这个是Ascii字符“RIFF”,这部分是固定格式,表明这是一个WAVE 文件头。
WAV文件格式说明
1. 音频简介经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);22050HZ 8bit mono: 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录, 单声道;当然也可以有 16bit 的单声道或 8bit 的立体声, 等等。
采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。
采样值是指每一次采样周期内声音模拟信号的积分值。
对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位(左声道)和低八位(右声道)分别代表两个声道。
人对频率的识别范围是 20HZ - 20000HZ, 如果每秒钟能对声音做 20000 个采样, 回放时就足可以满足人耳的需求. 所以 22050 的采样频率是常用的, 44100已是CD音质, 超过48000的采样对人耳已经没有意义。
这和电影的每秒 24 帧图片的道理差不多。
每个采样数据记录的是振幅, 采样精度取决于储存空间的大小:1 字节(也就是8bit) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级;2 字节(也就是16bit) 可以细到 65536 个数, 这已是 CD 标准了;4 字节(也就是32bit) 能把振幅细分到 4294967296 个等级, 实在是没必要了.如果是双声道(stereo), 采样就是双份的, 文件也差不多要大一倍.这样我们就可以根据一个 wav 文件的大小、采样频率和采样大小估算出一个wav 文件的播放长度。
譬如 "Windows XP 启动.wav" 的文件长度是 424,644 字节, 它是"22050HZ / 16bit / 立体声" 格式(这可以从其 "属性->摘要" 里看到),那么它的每秒的传输速率(位速, 也叫比特率、取样率)是 22050*16*2 = 705600(bit/s), 换算成字节单位就是 705600/8 = 88200(字节/秒), 播放时间:424644(总字节数) / 88200(每秒字节数) ≈ 4.8145578(秒)。
wav文件文件头格式
一、WAVE文件格式剖析WA VE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。
RIFF是英文ResourceInterchangeFileFormat的缩写,每个W A VE文件的头四个字节便是“RIFF”。
WA VE文件由文件头和数据体两大部分组成。
其中文件头又分为RIFF/WAV 文件标识段和声音数据格式说明段两部分。
W A VE文件各部分内容及格式见附表。
常见的声音文件主要有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值)。
采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。
采样值是指每一次采样周期内声音模拟信号的积分值。
对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。
WA VE文件数据块包含以脉冲编码调制(PCM)格式表示的样本。
W A VE文件是由样本组织而成的。
在单声道W A VE文件中,声道0代表左声道,声道1代表右声道。
在多声道W A VE文件中,样本是交替出现的。
WA VE文件格式说明表偏移地址字节数数据类型内容文件头00H4char"RIFF"标志04H4longint文件长度08H4char"WA VE"标志0CH4char"fmt"标志10H4过渡字节(不定)14H2int格式类别(10H为PCM形式的声音数据)16H2int通道数,单声道为1,双声道为218H2int采样率(每秒样本数),表示每个通道的播放速度,1CH4longint波形音频数据传送速率,其值为通道数×每秒数据位数×每样本的数据位数/8。
播放软件利用此值可以估计缓冲区的大小。
20H2int数据块的调整数(按字节算的),其值为通道数×每样本的数据位值/8。
WAV格式头文件信息介绍与C读取实现
| Size | 4 Bytes | 数值为4 |
----------------------------------
| data | 4 Bytes | |
----------------------------------
RIFF WAVE Chunk, Format Chunk, Fact Chunk(可选), Data Chunk。具体见下图:
------------------------------------------------
| RI 'RIFF' |
----------------------------------
图2 RIFF WAVE Chunk 12 Bytes
以'FIFF'作为标示,然后紧跟着为size字段,该size是整个wav文件大小减去ID
和Size所占用的字节数,即FileLen - 8 = Size。然后是Type字段,为'WAVE',表
--------------------------------------------------------------------
| FormatTag | 2 Bytes | 编码方式,一般为0x0001 |
--------------------------------------------------------------------
| ID | 4 Bytes | 'RIFF' |
----------------------------------
| Size | 4 Bytes | |
WAV(PCM)文件格式分析
18H 2 int 采样率(每秒样本数),表示每个通道的播放速度,
1CH 4 long int 波形音频数据传送速率,其值为通道数×每秒数据位数×每 样本的数据位数/8。播放软件利用此值可以估计缓冲区的大小。
样本大小 数据格式 最大值 最小值
8位PCM unsigned int 225 0
16位PCM int 32767 -32767�
0CH 4 char "fmt"标志
10H 4 过渡字节(不定)
14H 2 int 格式类别(10H为PCM形式的声音数据)
W AVE文件数据块包含以脉冲编码调制(PCM)格式表示的样本。WAVE文件是由样本组织而成的。在单声道WAVE文件中,声道0代表左声道,声道1代表右声道。在多声道WAVE文件中,样本是交替出现的。
WAVE文件格式说明表
偏移地址 字节数 数据类型 内 容
8位立体声 0声道(左) 1声道(右) 0声道(左) 1声道(右)
16位单声道 0声道低字节 0声道高字节 0声道低字节 0声道高字节
16位立体声 0声道(左)低字节 0声道(左)高字节 1声道(右)低字节 1声道(右)高字节
WAVE文件的每个样本值包含在一个整数i中,i的长度为容纳指定样本长度所需的最小字节数。首先存储低有效字节,表示样本幅度的位放在i的高有效位上,剩下的位置为0,这样8位和16位的PCM波形样本的数据格式如下所示。
常见的声音文件主要有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值)。采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。采样值是指每一次采样周期内声音模拟信号的积分值。
WAV文件格式分析详解
WAV文件格式分析详解一、综述WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。
RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是“RIFF”。
WAVE文件是由若干个Chunk组成的。
按照在文件中的出现位置包括:RIFF WAVE Chunk, Format Chunk, Fact Chunk(可选), Data Chunk。
具体见下图:------------------------------------------------| RIFF WAVE Chunk || ID = 'RIFF' || RiffType = 'WAVE' |------------------------------------------------| Format Chunk || ID = 'fmt ' |------------------------------------------------| Fact Chunk(optional) || ID = 'fact' |------------------------------------------------| Data Chunk || ID = 'data' |------------------------------------------------图1 Wav格式包含Chunk示例其中除了Fact Chunk外,其他三个Chunk是必须的。
每个Chunk有各自的ID,位于Chunk最开始位置,作为标示,而且均为4个字节。
并且紧跟在ID后面的是Chunk大小(去除ID和Size所占的字节数后剩下的其他字节数目),4个字节表示,低字节表示数值低位,高字节表示数值高位。
WAV文件格式说明
1. 音频简介经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);22050HZ 8bit mono: 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录, 单声道;当然也可以有 16bit 的单声道或 8bit 的立体声, 等等。
采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。
采样值是指每一次采样周期内声音模拟信号的积分值。
对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位(左声道)和低八位(右声道)分别代表两个声道。
人对频率的识别范围是 20HZ - 20000HZ, 如果每秒钟能对声音做 20000 个采样, 回放时就足可以满足人耳的需求. 所以 22050 的采样频率是常用的, 44100已是CD音质, 超过48000的采样对人耳已经没有意义。
这和电影的每秒 24 帧图片的道理差不多。
每个采样数据记录的是振幅, 采样精度取决于储存空间的大小:1 字节(也就是8bit) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级;2 字节(也就是16bit) 可以细到 65536 个数, 这已是 CD 标准了;4 字节(也就是32bit) 能把振幅细分到 4294967296 个等级, 实在是没必要了.如果是双声道(stereo), 采样就是双份的, 文件也差不多要大一倍.这样我们就可以根据一个 wav 文件的大小、采样频率和采样大小估算出一个wav 文件的播放长度。
譬如 "Windows XP 启动.wav" 的文件长度是 424,644 字节, 它是"22050HZ / 16bit / 立体声" 格式(这可以从其 "属性->摘要" 里看到),那么它的每秒的传输速率(位速, 也叫比特率、取样率)是 22050*16*2 = 705600(bit/s), 换算成字节单位就是 705600/8 = 88200(字节/秒), 播放时间:424644(总字节数) / 88200(每秒字节数) ≈ 4.8145578(秒)。
WAV格式解析
ID big-endian FOURCC 值为'R' 'I' 'F' 'F' Size little-endian data字段中数据的字节数Data big-endian包含其它的chunkID big-endian FOURCC 值为 'f' 'm' 't' ' 'Size little-endian数据字段包含数据的⼤⼩。
如⽆扩展块,则值为16;有扩展块,则值为 16 + 2字节扩展块长度 + 扩展块长度或者值为18(只有扩展块的长度为2字节,值为0)Data little-endianformat_tag2字节,表⽰⾳频数据的格式。
如值为1,表⽰使⽤PCM格式。
little-endianchannels2字节,声道数。
值为1则为单声道,为2则是双声道。
little-endiansamples_per_sec采样率,主要有22.05KHz,44.1kHz和48KHz。
little-endianbytes_per sec⾳频的码率,每秒播放的字节数。
samples_per_sec *channels * bits_per_sample / 8,可以估算出使⽤缓冲区的⼤⼩little-endianblock_align数据块对齐单位,⼀次采样的⼤⼩,值为声道数 * 量化位数 / 8,在播放时需要⼀次处理多个该值⼤⼩的字节数据。
WAV格式解析WAV为微软公司(Microsoft)开发的⼀种声⾳⽂件格式,它符合RIFF(Resource Interchange File Format)⽂件规范,⽤于保存Windows平台的⾳频信息资源,被Windows平台及其应⽤程序所⼴泛⽀持,该格式也⽀持MSADPCM,CCITT A LAW等多种压缩运算法,⽀持多种⾳频数字,取样频率和声道,标准格式化的WAV⽂件和CD格式⼀样,也是44.1K的取样频率,16位量化数字,因此在声⾳⽂件质量和CD相差⽆⼏。
WAV文件格式分析详解
WAV文件格式分析详解WAV是一种非常常见的音频文件格式,它被广泛用于存储音乐、录音和其他音频数据。
以下是对WAV文件格式的详细分析:1.WAV文件的基本结构:-WAV文件是由一系列音频样本组成的。
每个样本表示一个特定时刻的音频振幅值。
- WAV文件以RIFF(Resource Interchange File Format)文件标识符开头。
- WAV文件由多个子块(chunk)组成,每个子块包含特定类型的数据。
- 子块包括文件头("fmt ")块,音频数据("data")块和其他可选的附加块。
2. 文件头("fmt "块):-文件头描述了WAV文件的格式和属性。
-文件头包含了采样率、音频通道数、样本大小(位数)等信息。
-附加块(可选)可能包含其他的扩展信息,如压缩格式、块对齐等。
3. 音频数据("data"块):-音频数据块是WAV文件中实际存储音频样本值的部分。
- 它以一个子块标识符("data")开头,紧随其后的是存储音频样本的二进制数据。
4.WAV文件属性:-采样率:表示每秒播放的样本数,常用的有44.1kHz(CD音质)和48kHz(DVD音质)。
- 音频通道数:表示同时播放的声道数,常见的有单声道(Mono)和立体声(Stereo)。
-样本大小:表示每个样本的位数,常用的有8位、16位和24位。
-比特率:表示每秒传输的位数,由采样率、样本大小和通道数决定。
-块对齐:表示每个子块的字节数,为样本大小×通道数。
5.WAV文件的优点和应用:-WAV文件具有较高的音质,因为它是无损压缩的。
-WAV文件是一种开放的标准,可以在不同的操作系统和平台上使用。
-WAV文件适用于存储和传输音频数据,如音乐、录音、语音等。
综上所述,WAV文件格式是一种常见的音频文件格式,它以RIFF文件标识符开始,由文件头、音频数据和附加块组成。
WAV文件格式分析
WAV文件格式分析文件头是WAV文件的开头部分,它由44个字节组成,用于存储一些重要的文件信息。
文件头的具体内容如下:1. ChunkID (4 字节):用于标识文件类型,通常为 "RIFF";2. ChunkSize (4 字节):表示整个文件的大小,即文件头和音频数据部分的大小之和;3. Format (4 字节):表示文件格式,通常为 "WAVE";4. Subchunk1ID (4 字节):表示格式子块的标识,通常为 "fmt ";5. Subchunk1Size (4 字节):表示格式子块的大小,通常为 16;6. AudioFormat (2 字节):表示音频格式,1 表示 PCM (脉冲编码调制) 编码;7. NumChannels (2 字节):表示音频的声道数,通常为 1 (单声道) 或 2 (立体声);8. SampleRate (4 字节):表示采样率,即每秒采集的样本数;9. ByteRate (4 字节):表示数据传输速率,即每秒传输的字节数;10. BlockAlign (2 字节):表示块对齐,即每个采样的字节数;11. BitsPerSample (2 字节):表示每个样本的位数。
音频数据块是 WAV 文件中存储实际音频样本的部分。
它紧跟在文件头之后,其大小由 ChunkSize 字段确定。
音频数据以 PCM 编码保存,即将连续的音频采样以原始整数值的形式存储。
附加信息块(可选)是WAV文件中可以包含的附加信息部分。
它通常用于存储一些与音频相关的元数据,如歌曲名称、艺术家、专辑信息等。
附加信息块的大小和内容可以根据实际需要进行定义。
然而,WAV文件也存在一些限制和缺点。
首先,由于采样率、声道数和位深度等参数的限制,WAV文件可能占用较大的存储空间。
其次,相对于其他压缩格式如MP3,它的文件大小会更大,因此在网络传输和存储方面可能会受到限制。
WAV文件格式实例分析
,BIO,,ST0U" , /9+N0QSV5OMWTSU"&
( 低位) 频道 ’ ( 高位) 频道 ’ ( 低位) 频道 ’ ( 高位) 频道 ’
,BIO,,ST0U$ , /9+N0QSV5OMWTSU"&
图$
QB4 文 件 中 位 元 安 排 方 式
第 " 排表示单声道 # 位元, 第 $ 排表示双声道 # 位元, 第 % 排表示单声道 "& 位元, 第 ! 排表示双 声 道 "& 位 元 。 # 位元代表音量大小由 # 个位元所表示, "& 位 元 则 代 表 音 量 大 小 由 "& 个 位 元 所 表 示 。 理 论 上 # 位 元 可 以 表 示 ’($)) ,
!"# 文件格式实例分析
合 肥 电 子 工 程 学 院 通 信 与 通 抗 原 理 教 研 室 !"#$$#%&
摘 要 : 分 析 !"# 文 件 格 式 , 给 出 !"# 文 件 格 式 的 解 析 实 例 。 声音文件 格式码
关 键 词 : !"# 文 件
$%&’(
%&’ 文 件 格 式 是 一 种 重 要 的 用 于 存 放 声 音 的 文 件
其 意义分别为:
! =#08*<+6<E : 记 录 此 声 音 的 格 式 代 号 , 例 如 %&’(S#5!4&6S234 、 %&’(S#5!&4S&O234 等 。
记录声音的频道数。 " B3D<BB/F, : 记录每秒取样数。 # BI<*PF/,2/8I/: : 记录每秒的数据量。 $ B&>EAJ+/,2/8I/: : 记录区块的对齐单位。 % BAF0:G&F-EB : 记录每个取样所需的位元数。 & =A-+,2/8I<*PF/ :
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
wav文件格式分析详解作者:曹京日期:2006年7月17日一、综述WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。
RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是“RIFF”。
WAVE文件是由若干个Chunk组成的。
按照在文件中的出现位置包括:RIFF WAVE Chunk, Format Chunk, Fact Chunk(可选), Data Chunk。
具体见下图:------------------------------------------------| RIFF WAVE Chunk || ID = 'RIFF' || RiffType = 'WAVE' |------------------------------------------------| Format Chunk || ID = 'fmt ' |------------------------------------------------| Fact Chunk(optional) || ID = 'fact' |------------------------------------------------| Data Chunk || ID = 'data' |------------------------------------------------图1 Wav格式包含Chunk示例其中除了Fact Chunk外,其他三个Chunk是必须的。
每个Chunk有各自的ID,位于Chunk最开始位置,作为标示,而且均为4个字节。
并且紧跟在ID后面的是Chunk大小(去除ID和Size所占的字节数后剩下的其他字节数目),4个字节表示,低字节表示数值低位,高字节表示数值高位。
下面具体介绍各个Chunk内容。
PS:所有数值表示均为低字节表示低位,高字节表示高位。
二、具体介绍RIFF WAVE Chunk==================================| |所占字节数| 具体内容|==================================| ID | 4 Bytes | 'RIFF' |----------------------------------| Size | 4 Bytes | |----------------------------------| Type | 4 Bytes | 'WAVE' |----------------------------------图2 RIFF WAVE Chunk以'FIFF'作为标示,然后紧跟着为size字段,该size是整个wav文件大小减去ID和Size所占用的字节数,即FileLen - 8 = Size。
然后是Type字段,为'WAVE',表示是wav文件。
结构定义如下:struct RIFF_HEADER{char szRiffID[4]; // 'R','I','F','F'DWORD dwRiffSize;char szRiffFormat[4]; // 'W','A','V','E'};Format Chunk================================================ ====================| | 字节数| 具体内容|================================================ ====================| ID | 4 Bytes | 'fmt ' |--------------------------------------------------------------------| Size | 4 Bytes | 数值为16或18,18则最后又附加信息|-------------------------------------------------------------------- ----| FormatTag | 2 Bytes | 编码方式,一般为0x0001 | |-------------------------------------------------------------------- || Channels | 2 Bytes | 声道数目,1--单声道;2--双声道| |-------------------------------------------------------------------- || SamplesPerSec | 4 Bytes | 采样频率| |-------------------------------------------------------------------- || AvgBytesPerSec| 4 Bytes | 每秒所需字节数| |===> WAVE_FORMAT-------------------------------------------------------------------- || BlockAlign | 2 Bytes | 数据块对齐单位(每个采样需要的字节数) | |-------------------------------------------------------------------- || BitsPerSample | 2 Bytes | 每个采样需要的bit数| |-------------------------------------------------------------------- || | 2 Bytes | 附加信息(可选,通过Size来判断有无)| |-------------------------------------------------------------------- ----图3 Format Chunk以'fmt '作为标示。
一般情况下Size为16,此时最后附加信息没有;如果为18则最后多了2个字节的附加信息。
主要由一些软件制成的wav格式中含有该2个字节的附加信息。
结构定义如下:struct WAVE_FORMAT{WORD wFormatTag;WORD wChannels;DWORD dwSamplesPerSec;DWORD dwAvgBytesPerSec;WORD wBlockAlign;WORD wBitsPerSample;};struct FMT_BLOCK{char szFmtID[4]; // 'f','m','t',' 'DWORD dwFmtSize;WAVE_FORMAT wavFormat;};Fact Chunk==================================| |所占字节数| 具体内容|==================================| ID | 4 Bytes | 'fact' |----------------------------------| Size | 4 Bytes | 数值为4 |----------------------------------| data | 4 Bytes | |----------------------------------图4 Fact ChunkFact Chunk是可选字段,一般当wav文件由某些软件转化而成,则包含该Chunk。
结构定义如下:struct FACT_BLOCK{char szFactID[4]; // 'f','a','c','t'DWORD dwFactSize;};Data Chunk==================================| |所占字节数| 具体内容|==================================| ID | 4 Bytes | 'data' |----------------------------------| Size | 4 Bytes | |----------------------------------| data | | |----------------------------------图5 Data ChunkData Chunk是真正保存wav数据的地方,以'data'作为该Chunk的标示。
然后是数据的大小。
紧接着就是wav数据。
根据Format Chunk中的声道数以及采样bit数,wav数据的bit位置可以分成以下几种形式:---------------------------------------------------------------------| 单声道| 取样1 | 取样2 | 取样3 | 取样4 || |--------------------------------------------------------| 8bit量化| 声道0 | 声道0 | 声道0 | 声道0 |---------------------------------------------------------------------| 双声道| 取样1 | 取样2 || |--------------------------------------------------------| 8bit量化| 声道0(左) | 声道1(右) | 声道0(左) | 声道1(右) |---------------------------------------------------------------------| | 取样1 | 取样2 || 单声道|--------------------------------------------------------| 16bit量化| 声道0 | 声道0 | 声道0 | 声道0 || | (低位字节) | (高位字节) | (低位字节) | (高位字节) |---------------------------------------------------------------------| | 取样1 || 双声道|--------------------------------------------------------| 16bit量化| 声道0(左) | 声道0(左) | 声道1(右) | 声道1(右) || | (低位字节) | (高位字节) | (低位字节) | (高位字节) |---------------------------------------------------------------------图6 wav数据bit位置安排方式Data Chunk头结构定义如下:struct DATA_BLOCK{char szDataID[4]; // 'd','a','t','a'DWORD dwDataSize;};三、小结因此,根据上述结构定义以及格式介绍,很容易编写相应的wav格式解析代码。