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是⼀种以RIFF为基础的⽆压缩⾳频编码格式,该格式以Header、Format Chunk及Data Chunk三部分构成。
本⽂简要解析了各部分的构成要素,概述了如何使⽤C++对⽂件头进⾏解析以及提取⾳频数据。
上图展⽰了WAV⽂件格式,包括每⼀field的⼤⼩与端序HeaderChunkID: 4字节⼤端序。
⽂件从此处开始,对于WAV或AVI⽂件,其值总为“RIFF”。
ChunkSize: 4字节⼩端序。
表⽰⽂件总字节数减8,减去的8字节表⽰ChunkID与ChunkSize本⾝所占字节数。
Format: 4字节⼤端序。
对于WAV⽂件,其值总为“WAVE”Format ChunkSubchunk1ID: 4字节⼤端序。
其值总为“fmt ”,表⽰Format Chunk从此处开始。
Subchunk1Size: 4字节⼩端序。
表⽰Format Chunk的总字节数减8。
AudioFormat: 2字节⼩端序。
对于WAV⽂件,其值总为1。
NumChannels: 2字节⼩端序。
表⽰总声道个数。
SampleRate: 4字节⼩端序。
表⽰在每个通道上每秒包含多少帧。
ByteRate: 4字节⼩端序。
⼤⼩等于SampleRate * BlockAlign,表⽰每秒共包含多少字节。
BlockAlign: 2字节⼩端序。
⼤⼩等于NumChannels * BitsPerSample / 8,表⽰每帧的多通道总字节数。
BitsPerSample: 2字节⼩端序。
表⽰每帧包含多少⽐特。
Data ChunkSubchunk2ID: 4字节⼤端序。
其值总为“data”,表⽰Data Chunk从此处开始。
Subchunk2Size: 4字节⼩端序。
表⽰data的总字节数。
data:⼩端序。
表⽰⾳频波形的帧数据,各声道按帧交叉排列。
使⽤C++解析WAV⽂件⽂件头结构定义结构体WaveHeader来保存WAV⽂件头,即Header、Format Chunk及Data Chunk的⾮data部分,此外在该结构体中添加了num_frame 字段,⽤来保存⽂件总帧数,由于Header、Format Chunk与Data Chunk之间可能有其他说明信息,所以还添加了start_pos字段⽤来保存真正的data开始的位置。
wav音频文件格式分析与数据获取
wav音频文件格式分析与数据获取作者:罗海涛来源:《电脑知识与技术》2016年第27期摘要:音频文件是把语音信号离散化的数字文件,wav格式的音频文件是常用的二进制音频格式,广泛应用于语音信号处理、语音识别、语音合成等领域;本文详细分析了wav音频文件格式,并用C语言编程,实现对该格式文件的访问,获取音频信息和数据。
关键字:wav;音频文件;音频信息;音频数据中图分类号:TP37 文献标识码:A 文章编号:1009-3044(2016)27-0211-031 概述语言是人们之间进行通讯和交流必不可少的手段。
语音由人的发音器官发出,语音信号是连续的模拟信号,在用计算机来处理时,需要进行数字化,包括采样、量化等过程,转换成离散的数字信号,保存在音频文件中。
现在很多领域要求对语音信号中的音频数据进行进一步的加工和处理。
例如,利用读出的音频信号数据,进行语音信号时域和频域分析、语音压缩、语音编码、解码、语音合成、语音识别、语音增强等,并通过波形观察比较不同编码效果。
另外,利用多媒体语音系统我们还可以用语音数据和波形方便地进行噪声模拟分析,语音特征提取研究,以及语音识别和训练等应用方面的实验。
又如:在人工智能领域,通过设计软件和硬件电路,用声音去控制计算机工作,还有机器人通过语音与人进行简单的对话交流等等。
这些都要求我们对数字语音信号进行一些必要的加工处理。
wav文件格式是一种重要的数字音频文件格式,是目前应用很广泛的一种音频格式。
相比于其他格式如MP3、MP4、RAM等压缩效率更高的音频文件格式,wav文件没有采用压缩技术,因而其文件要大很多,一般都在几兆字节,甚至更大。
但也正因为没有采用压缩技术,wav文件中声音的采样数据很容易被读出来,便于做其他处理。
例如:画出声音的信号波形、作出频谱,进行时域、频域分析,提取语音信号的特征参数用于语音识别等。
现在的应用程序几乎都支持wav文件格式,也有专门软件可以完成从wav文件格式向其他文件格式的转换,或者把其他格式文件转换为wav格式,例如,微软公司的Adobe Audition。
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⾳频数据以⼩端形式来进⾏数据存储。
wav格式结构
W A V实际上是Waveform Audio File Format(波形音频文件格式)的简称,它是微软公司开发的一种声音文件格式。
W A V实际上是对PCM格式的的一种包装,W A V取样频率可以是44100Hz、22050Hz、11025Hz等,量化位数可以8位或16位,声道数可以是单声道,也可以是立体声。
W A V文件包含了一个“fmt ”段落和一个“data”段落,“fmt”段落包含了音源样本的参数信息,“data”段落包含了实际的音源数据。
在W A V文件中,“fmt”段通常包含以下信息:1. 格式说明标志位(Subchunk1ID):4个字节,等于“fmt ”或者“wFormatTag”。
2. 格式说明标志位长度(Subchunk1Size):4个字节,等于16或者所使用的单声道位数与有关设置的乘积加上2。
3. 音频流的通道数(nChannels):2个字节,表示每个声道的样本数。
4. 每秒的采样数(nSamplesPerSec):4个字节,表示每秒的采样频率。
5. 采样点振幅位数(nAvgBytesPerSec):4个字节,等于每秒发送字节数,这是nChannels和nSamplesPerSec的乘积的两倍加一再除以8的结果。
6. 音频流码的位深度(nBlockAlign):2个字节,等于nChannels 和nAvgBytesPerSec的乘积除以8的结果。
7. 总采样点数(wNumBlocks):2个字节,等于采样点数。
8. 格式说明标志位(Subchunk2ID):4个字节,等于“data”。
9. 格式说明标志位长度(Subchunk2Size):4个字节,等于采样点数乘以nChannels再乘以nAvgBytesPerSec除以8的结果。
以上信息仅供参考,如需了解更多信息,建议咨询专业人士。
wav文件头详解,看懂wav文件
wav⽂件头详解,看懂wav⽂件⼯作中部门萌新常问的wav⽂件头格式及怎么看wav⽂件,且有时会遇到 “伪.pcm” 格式现总结如下: WAV是最常见的声⾳⽂件格式之⼀,是微软公司专门为Windows开发的⼀种标准数字⾳频⽂件,该⽂件能记录各种单声道或⽴体声的声⾳信息,并能保证声⾳不失真。
但WAV⽂件有⼀个缺点,就是它所占⽤的太⼤(每分钟的⾳乐⼤约需要12兆磁盘空间)。
它符合资源互换⽂件格式(RIFF)规范,⽤于保存Windows平台的⾳频信息资源推荐⼀个好⽤的16进制⽂件查看的⼯具:HxDx64对于完全0基础的,推荐下⾯⽹站中的详细解释,⽐较详细:(侵删)1.RIFF块(RIFF-Chunk)偏移地址字节数数据类型内容&H004String‘RIFF‘⽂件标志&H044UInteger⽂件总长&H08 4 String ‘WAVE‘⽂件标志2.格式化块(Format-Chunk)偏移地址字节数数据类型内容&H0C4String‘fmt‘标志&H104UInteger块长度&H12 2 UShort PCM格式类别&H142 UShort 声道数⽬&H184 UInteger 采样率&H1C 4 UInteger 传输速率&H1E 2UShort 数据块对齐&H202UShort 每样本bit数&H22 2UShort 可选3.附加块(Fact-Chunk) *当前块偏移地址需要根据实际数据变更偏移地址字节数数据类型内容&H264String‘fact‘标志&H2A4UInteger块长度&H2E4UInteger附加信息4.数据块(Data-Chunk) *当前块偏移地址需要根据实际数据变更偏移地址字节数数据类型内容&H324String‘data‘⽂件标志&H364UInteger数据块总长按照相关头格式,来观察字节即可Example:(取⾃上⾯博客)。
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语音文件格式的分析与处理
WAV语音文件格式的分析与处理
张敬怀;马道钧
【期刊名称】《北京电子科技学院学报》
【年(卷),期】2004(012)002
【摘要】WAV语音文件是Windows声音文件基本格式之一.分析其语音文件的格式是语音信号处理的一项重要工作.本文细致地分析了WAV语音文件的格式,为进一步进行语音文件数据处理和语音信号处理打下了基础.
【总页数】5页(P47-50,46)
【作者】张敬怀;马道钧
【作者单位】北京电子科技学院实验中心,北京,100070;北京电子科技学院计算机科学与技术系,北京,100070
【正文语种】中文
【中图分类】TN912.3
【相关文献】
1.用易语言实现WAVE格式语音文件的合成 [J], 孙庆川;李可一;竹雪梅
2.WAV文件格式分析与详解 [J], 王若钧;何杉
3.wav音频文件格式分析与数据获取 [J], 罗海涛
4.WAV文件格式实例分析 [J], 徐济仁;牛纪海;陈家松
5.WAV文件格式分析与详解 [J], 王若钧;何杉
因版权原因,仅展示原文概要,查看原文内容请购买。
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格式转换分析
WAV音频转换分析报告音频转换数据:莫斯科没有眼泪.wav 1400kbps 40.2M莫斯科没有眼泪.wma 320kbps 16.4M莫斯科没有眼泪.wma 128kbps 8.4M莫斯科没有眼泪.mp3 320kbps 10.1M莫斯科没有眼泪.mp3 128kbps 4.4M莫斯科没有眼泪.mp3 64kbps 2.2M莫斯科没有眼泪.mp3 33kbps 1.01M数据分析:1).WAV本身的结构更适合存放未经压缩的音频数据,因此其最大的缺点是占用存储空间大,不适合长时间记录数据。
2)在128kbps及以下码流的试听中WMA完全超过了MP3格式,低码流之王不是浪得虚名的。
但是当码流上升到128kbp以后,WMA的音质却并没有如MP3一样随着码流的提高而大大提升。
3). 相同数据率下如128Kbs,WMA的音值的确稍胜一筹;5). 在低数据率情况下,WMA的音质比MP3要高出很多。
如64Kbps时,WMA基本与128Kbps相差无几,而MP3已有明显差别;在32Kbps时WMA依然可听,MP3已经绝对不可听了;值的说明的是,128kbps的MP3要好于64kbps的WMA,更远远好于48Kbps的WMA。
6). MP3的确是一种非常成功的算法,在128Kbps时音质足够,如果用大于128Kbps的变码率压缩则音质可以达到非常好的程度,但其数据率的下限是128Kbps,在低于这个数值时,效果大幅度下降;7).WMA主要改善了极低数据率下高频信号的回放,在大于128Kbps时与MP3相比并无优势,而且高频失真情况比较严重,但如果用于压缩英语听力等素材则是上上之选。
8).从格式转换后,发现主要问题之一是WMA的高音部分有金属声,失真较大。
9).总体感觉WMA的声音偏硬,适合流行摇滚,如果是古典或者纯人声的话,感觉有点生硬,在低于128K时,WMA对于MP3拥有绝对优势!128以上的WMA相比MP3会有薄的感觉。
WAV文件结构范文
WAV文件结构范文WAV(Waveform Audio File Format)文件是一种常见的音频文件格式,它是无损音频文件的一种扩展名称。
WAV文件的结构相对简单,由文件头和音频数据组成。
下面将详细介绍WAV文件的结构。
1. RIFF头(RIFF Header)RIFF头是WAV文件的文件头,它包含了WAV文件的基本信息和数据格式。
RIFF头的结构如下:- ChunkID(4字节):文件标识,通常为"RIFF"。
- ChunkSize(4字节):文件大小,表示除了ChunkID和ChunkSize 字段外的文件大小。
- Format(4字节):文件格式,通常为"WAVE"。
2. 格式块(Format Chunk)格式块包含有关音频数据的格式信息。
格式块的结构如下:- SubChunk1ID(4字节):标识符,通常为"fmt "。
- SubChunk1Size(4字节):SubChunk1的大小,一般为16- AudioFormat(2字节):音频格式编码,一般为1表示PCM。
- NumChannels(2字节):声道数,常见为1表示单声道,2表示立体声。
- SampleRate(4字节):采样率,表示每秒采样的样本数。
- ByteRate(4字节):比特率,表示每秒的字节数。
- BlockAlign(2字节):块对齐,表示每个样本的字节数。
- BitsPerSample(2字节):每个样本的比特数。
3. 数据块(Data Chunk)数据块包含音频的实际采样数据。
- SubChunk2ID(4字节):标识符,通常为"data"。
- SubChunk2Size(4字节):SubChunk2的大小,表示音频数据的大小。
- Data(SubChunk2Size字节):音频数据。
总结起来,WAV文件结构包含RIFF头、格式块和数据块。
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格式解析
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相差⽆⼏。
WAVE文件格式解析
WAVE⽂件格式解析WAVE ⽂件作为Windows多媒体中使⽤的声⾳波形⽂件格式之⼀,它是以RIFF(Resource Interchange File Format)格式为标准的。
这⾥不针对RIFF⽂件格式做介绍,不太了解的可以参考“”⼀⽂。
WAVE⽂件构成每个WAVE⽂件的头四个字节便是“RIFF”。
WAVE ⽂件由⽂件头和数据体两⼤部分组成。
其中⽂件头⼜分为 RIFF/WAV ⽂件标识段和声⾳数据格式说明段两部分。
相对于RIFF⽂件,只是将“RIFF”chunk的form id替换为“WAVE”。
下表是⼀个典型的WAVE⽂件各部分构成及其长度字段。
注意所有数据采⽤windows默认的⼩端存储。
(FOURCC是⼀个特殊的四字节码,判断时按照字符顺序判断即可。
)域长度内容说明chunkID4Chunk ID: "RIFF",FOURCC四字节码chunksize4Chunk size: 4+nWAVEID4WAVE ID: "WAVE",FOURCC四字节码WAVE chunks n Wave chunks包含格式信息和⾳频采样数据,分为“format” chunk和“data”chunk两部分。
Format chunkFormat chunk⽤于说明data chunk中PCM数据的格式。
主要三种不同的format chunk格式(不同的格式码)。
如下表:域长度内容说明ckID4Chunk ID: "fmt ",FOURCC四字节码,注意最后⼀个填充是空格。
cksize4Chunk size: 16 or 18 or 40 wFormatTag2Format code,格式码nChannels2Number of interleaved channels,采样声道数(交织存储)nSamplesPerSec4Sampling rate (blocks per second),⾳频采样率nAvgBytesPerSec4Data rate,⾳频码率nBlockAlign2Data block size (bytes),⾳频数据块⼤⼩(单位字节)wBitsPerSample2Bits per sample,量化位数(⽐如8bits、16bits、32bits)cbSize2Size of the extension (0 or 22),扩展字段长度wValidBitsPerSample2Number of valid bits,有效的位长度dwChannelMask4Speaker position mask,声道描述掩码,⽐如左声道、右声道等SubFormat16GUID, including the data format code,数据格式码标准中定义的wFormatTag(Format code)可取值范围如下表:Format Code PreProcessor Symbol Data 0x0001WAVE_FORMAT_PCM PCM0x0003WAVE_FORMAT_IEEE_FLOAT IEEE float,[-1.0f,1.0f] 0x0006WAVE_FORMAT_ALAW8-bit ITU-T G.711 A-law 0x0007WAVE_FORMAT_MULAW8-bit ITU-T G.711 µ-law 0xFFFE WAVE_FORMAT_EXTENSIBLEDetermined by SubFormatPCM格式当wFormatTag为0x0001时,表⽰WAVE⽂件中存储的是PCM格式的⾳频数据。
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文件标识符开始,由文件头、音频数据和附加块组成。
APE、DTS、WAV、FLAC、MP3+常见音乐格式详解
APE、DTS、WAV、FLAC、MP3 常见音乐格式详解什么是dts音乐DTS是“Digital Theatre System”的缩写,是“数字化影院系统”的意思,DTS总公司位于美国加州的洛杉矾。
公司主要架构分为两大部分,一部分是以电影音乐的录音现场及电影院的编、解码为主的专业用“数字影院系统”,另一部分是以家庭用解码器的开发及DVD/LD/CD等套装软件为主的消费电子用“DTS技术”两大部份。
DTS公司推出了多种声场技术,其中DTS Digital Surround是最广为流传的一种,属于5.1声道系统,人们通常说的DTS技术,或者DTS环绕,一般就是指DTS Digital Surround。
DTS采用CAC(Coherent Acoustics Coding,相干声学编码)方式工作,和Dolby Digital一样也属于利用心理声学原理来对声轨进行编码的有损的数字压缩技术。
在电影院中,DTS的声迹录音采取了特殊的声画分离的数字立体声,数字声迹录在光盘上,由专用的光盘驱动器读取,另外在拷贝的模拟声迹与画幅之间录有时间同步码,用来控制光驱还音与画面的同步。
DTS分左、中、右、左环绕、右环绕5个声道,加上低音声道组成5.1声道,这一点和杜比数字相同。
但DTS在DVD中标准的数据流量为1536kbps,而Dolby Digital的数据流量是384Kbps,448Kbps,最高可提升到640Kbps,显然相比之下DTS具体更高的数据流量,也就具有更低的数字压缩比。
数据压缩比越低,占用的记录空间越大,但其重放音质就有可能越好,加之DTS采取高比特、高取样率等措施,使之对原音重现的追求上就更进了一步,因此DTS被很多人认为比Dolby Digital具体更好的效果。
DTS技术开发出来以后,一在电影界公布,马上受到大导演斯皮尔伯格和环球影业公司的高度重视,得到斯皮尔伯格大力支持,并率先在大型科幻电影“侏罗纪公园”中尝试采用DTS技术。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cnt++; } printf("Sample Cnt:%d\n",cnt); free(sample); fclose(fp); fclose(fp1); return 0; }
4.3.将 PCM 音频数据转换成 WAV 格式
WAV 为微软公司(Microsoft)开发的一种声音文件格式,它符合 RIFF(Resource Interchange File Format)文件规范,用于保存 Windows 平台的音频信息资源,被 Windows 平台及其应用程序所广泛支持。 WAVE 文件通常只是一个具有单个 “WAVE”块的 RIFF 文件,该块由两个子块(”fmt”子数据块和”data”子
db 的意义
其实再简单不过了,就是把一个很大(后面跟一长串 0 的)或者很小(前面有一长串 0 的)的数比较简短地 表示出来[2]。dB 的引入是为了将乘除关系变为加减关系,更便于工程运算。如: X = 1000000000000000= 10lgX = 150 dB X = 0.000000000000001 = 10lgX = -150 dB [例 1] 甲功率比乙功率大一倍,那么 10lg(甲功率/乙功率)=10lg2=3dB。也就是说,甲的功率比乙的功率 大 3 dB。 [例 2] 7/8 英寸 GSM900 馈线的 100 米传输损耗约为 3.9dB。 [例 3] 如果甲的功率为 46dBm,乙的功率为 40dBm,则可以说,甲比乙大 6 dB。 [例 4] 如果甲天线为 12dBd,乙天线为 14dBd,可以说甲比乙小 2 dB。
22 56 00 00 88 58 01 00 04 00 10 00 64 61 74 61 00 08 00 00 00 00 00 00 24 17 1e f3 3c 13 3c 14 16 f9 18 f9 34 e7 23 a6 3c f2 24 f2 11 ce 1a 0d
字段解析:
assuming you want to maximum level found in the file, the simplest way is to scan for the largest absolute sample value (fraction of 1.0), and then calculate
}
4.2.降 低 某 个 声 道 的 音 量
因为对于 PCM 音频数据而言,它的幅值(即该采样点采样值的大小)代表音量的大小,所以我们可以通过
减小某个声道的数据的值来实现降低某个声道的音量
int simplest_pcm16le_halfvolumeleft(char *url){ FILE *fp=fopen(url,"rb+"); FILE *fp1=fopen("output_halfleft.pcm","wb+"); int cnt=0; unsigned char *sample=(unsigned char *)malloc(4); while(!feof(fp)){ short *samplenum=NULL; fread(sample,1,4,fp); samplenum=(short *)sample; *samplenum=*samplenum/2; //L fwrite(sample,1,2,fp1); //R fwrite(sample+2,1,2,fp1);
分贝毫瓦 dBm
dBm[4]全写为 decibel relative to one milliwatt , 为功率的绝对值,而不同于 dB 只是一个相对值。
任意功率 P(mW)与 x(dBm)换算的公式如下: 例如,1 毫瓦(1 mW)换算成分贝毫瓦为 0dBm;1 瓦(1 Watt)换算成分贝毫瓦则为 30dBm。
unsigned short BlockAlign;//块对齐大小,其值=NumChannels * BitsPerSample/8
unsigned short BitsPerSample;//每个采样点的 bit 数,一般为 8,16,32 等。 }WAVE_FMT; typedef struct{
数据块),它的格式如下图所示
typedef struct{
char
ChunkID[4];//内容为"RIFF"
unsigned long ChunkSize;//存储文件的字节数(不包含 ChunkID 和 ChunkSize 这 8 个字节)
char
}WAVE_HEADER; typedef struct{
char
Subchunk2ID[4];//内容为“data”
unsigned long Subchunk2Size;//内容为接下来的正式的数据部分的字节数,其值 =NumSamples * NumChannels * BitsPerSample/8
}WAVE_DATA;
比如下面的例子
这里是一个 WAVE 文件的开头 72 字节,字节显示为十六进制数字: 52 49 46 46 24 08 00 00 57 41 56 45 66 6d 74 20 10 00 00 00 01 00 02 00
小端有关。大端模式如下图所示:
3.PCM 音频数据中常用的专业术语
一般我们描述 PCM 音频数据的参数的时候有如下描述方式
44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2 字节)记录, 双声道(立体声); 22050HZ 8bit mono: 每秒钟有 22050 次采样, 采样数据用 8 位(1 字节)记录, 单声道;
lg 的计算
lg 就是以 10 为底的 log。 (1)10lg2 = lg2^10 = lg1024,又因为 lg1000 = 3,所以 10lg2≠3,但非常接近[3]。 (2)lg4=lg(2×2)=lg2+lg2=2lg2≈0.6 (3)lg4=lg(2^2) =2lg2≈0.6 (4)10lg0.5=10 lg(2^(-1))=-10lg2≈-3
1.什么是 PCM 音频数据
PCM(Pulse Code Modulation)也被称为脉冲编码调制。PCM 音频数据是未经压缩的音频采样数据裸流,
它是由模拟信号经过采样、量化、编码转换成的标准的数字音频数据。
2.PCM 音频数据是如何存储的
如果是单声道的音频文件,采样数据按时间的先后顺序依次存入(有的时候也会采用 LRLRLR 方式存储, 只是另一个声道的数据为 0),如果是双声道的话就按照 LRLRLR 的方式存储,存储的时候还和机器的大
为其他非 PCM 格式的则有一定的压缩。
unsigned short NumChannels;//通道数,单通道(Mono)值为 1,双通道(Stereo)值为 2,等
等
unsigned long SampleRate;//采样率,如 8k,44.1k 等
unsigned long ByteRate;//每秒存储的 bit 数,其值=SampleRate * NumChannels * BitsPerSample/8
level is approx -6dB. Rule of thumb: each successive halving of amplitude equates to a drop by 6dB.
More sophisticated approaches will scan for rms or average level over some block length (say, 5msecs-worth).
Format[4];//内容为"WAVE"
cபைடு நூலகம்ar
Subchunk1ID[4];//内容为"fmt"
unsigned long Subchunk1Size;//存储该子块的字节数(不含前面的 Subchunk1ID 和
Subchunk1Size 这 8 个字节)
unsigned short AudioFormat;//存储音频文件的编码格式,例如若为 PCM 则其存储值为 1,若
4.PCM 音频数据的处理
4.1.分离 PCM 音频数据左右声道的数据
因为 PCM 音频数据是按照 LRLRLR 的方式来存储左右声道的音频数据的,所以我们可以通过将它们交叉
的读出来的方式来分离左右声道的数据
int simplest_pcm16le_split(char *url){ FILE *fp=fopen(url,"rb+"); FILE *fp1=fopen("output_l.pcm","wb+"); FILE *fp2=fopen("output_r.pcm","wb+"); unsigned char *sample=(unsigned char *)malloc(4); while(!feof(fp)){ fread(sample,1,4,fp); //L fwrite(sample,1,2,fp1); //R fwrite(sample+2,1,2,fp2); } free(sample); fclose(fp); fclose(fp1); fclose(fp2); return 0;
Assuming you are able to do C programming, all you need is a soundfile library such as libsndfile, and the rest is easy.
Richard Dobson
This is a standard 16 bit WAV WAV file. The largest sample value in the files is 21188 and the maximum possible value is 32767.