WAVE文件格式分析
PCM编码与Waveform音频文件(.wav)格式详解

PCM编码与Waveform⾳频⽂件(.wav)格式详解 ⼤家好,我是痞⼦衡,是正经搞技术的痞⼦。
今天痞⼦衡给⼤家介绍的是PCM编码及Waveform⾳频⽂件格式。
嵌⼊式⾥有时候也会和⾳频打交道,⽐如最近特别⽕的智能⾳箱产品,离不开前端的⾳频信号采集、降噪,中间的语⾳识别(ASR)、⾃然语⾔处理(NLP),以及后端的⽂语合成(TTS)、⾳频播放。
⾳频信号采集是处理声⾳的第⼀步,要采集⾳频就离不开PCM编码,⾳频采集完成⾃然需要保存,waveform格式(.wav)是⼀种最经典的⾳频⽂件格式。
今天痞⼦衡就给⼤家详细介绍PCM编码以及waveform⽂件格式。
⼀、声⾳基础 众所周知,声⾳是由物体振动产⽣的声波,声⾳通过介质(空⽓或固体、液体)传播并能被⼈听觉器官所感知。
发⾳物体情况(材料,距离,振动强度等)不同,产⽣的声⾳也不同。
为了区分不同的声⾳,我们主要⽤如下三个参数来描述声⾳的特征:⾳量:⼈主观上感觉到的声⾳⼤⼩(也叫响度),由“振幅”(amplitude)和⼈离声源的距离决定。
⾳调:声⾳的⾼低(⾼⾳、低⾳),由“频率”(frequency)决定,频率越⾼⾳调越⾼。
⾳⾊:⾳⾊是⼀种抽象的东西,波形决定了声⾳的⾳⾊。
声⾳因不同发声物体材料⽽具有不同特性,波形是把这个抽象特性直观的表现出来。
典型的⾳⾊波形有⽅波,锯齿波,正弦波,脉冲波等。
三⼤参数⾥除了⾳⾊没有度量单位外(可以认为⾳⾊是声⾳的UID,每种⾳⾊都是独⼀⽆⼆的),⾳量和⾳调均有度量单位,这意味着⾳量和⾳调是可调整的,也是声⾳之间可对⽐的特征参数。
1.1 ⾳量单位-分贝(dB) 声波是⼀种机械波(压⼒波)。
声波(空⽓质点)的连续振动,使空⽓分⼦不断交替的压缩和松弛,使⼤⽓压迅速产⽣起伏,这种⽓压的起伏部分,就称为声压。
声压的振幅表⽰质点离开平衡位置的距离,反映从波形波峰到波⾕的压⼒变化,以及波所携带的能量的多少。
声压值虽然可以反映⾳量⼤⼩,但⼈们⽇常⽣活中遇到的声⾳,若以声压值表⽰,变化范围⾮常⼤(达到六个数量级以上),并且⼈体听觉对声信号强弱刺激反应不是线形的,⽽是成对数⽐例关系。
各种WAVE文件头格式

表18KHz采样、16比特量化的线性PCM语音信号的WAVE文件头格式表(共44字节)偏移地址字节数数据类型内容文件头定义为00H 4 char "RIFF" char riff_id[4]="RIFF"04H 4 long int 文件总长-8 long int size0=文总长-808H 8 char "WAVEfmt " char wave_fmt[8]10H 4 long int 10 00 00 00H(PCM) long int size1=0x1014H 2 int 01 00H int fmttag=0x0116H 2 int int channel=1 或218H 4 long int 采样率long int samplespersec1CH 4 long int 每秒播放字节数long int bytepersec20H 2 int 采样一次占字节数int blockalign=声道数*量化数/822H 2 int 量化数int bitpersamples=8或1624H 4 char "data" char data_id="data"28H 4 long int 采样数据字节数long int size2=文长-442CH 到文尾char 采样数据表28KHz采样、8比特A律量化的PCM语音信号的WAVE文件头格式表(共58字节)偏移地址字节数数据类型内容文件头定义为00H 4 char "RIFF" char riff_id[4]="RIFF"04H 4 long int 文件总长-8 long int size0=文总长-808H 8 char "WAVEfmt " char wave_fmt[8]10H 4 long int 12000000H(ALAW) long int size1=0x1214H 2 int 06 00H int fmttag=0x0616H 2 int 声道数int channel=1 或218H 4 long int 采样率long int samplespersec1CH 4 long int 每秒播放字节数long int bytepersec20H 2 int 采样一次占字节数int blockalign=0x0122H 4 long int 量化数long int bitpersamples=826H 4 char "fact" char wave_fact="fact"2AH 8 char 0400000000530700H定char temp32H 4 char "data" char wave_data="data"36H 4 long int 采样数据字节数lont int size2=文长-58表38KHz采样、8比特U律量化的PCM语音信号的WAVE文件头格式表(共58字节)偏移地址字节数数据类型内容文件头定义为00H 4 char "RIFF" char riff_id[4]="RIFF"04H 4 long int 文件总长-8 long int size0=文总长-808H 8 char "WAVEfmt " char wave_fmt[8]10H 4 long int 12000000H(ULAW) long int size1=0x1214H 2 int 07 00H int fmttag=0x0716H 2 int 声道数int channel=1 或218H 4 long int 采样率long int samplespersec1CH 4 long int 每秒播放字节数long int bytepersec20H 2 int 采样一次占字节数int blockalign=0x0122H 4 long int 量化数long int bitpersamples=826H 4 char "fact" char wave_fact="fact"2AH 8 char 0400000000530700H定char temp32H 4 char "data" char wave_data="data"36H 4 long int 采样数据字节数lont int size2=文长-58表4ADPCM语音编码后的WAVE文件头格式表(共90字节)偏移地址字节数数据类型内容文件头定义为00H 4 char "RIFF" char riff_id[4]="RIFF"04H 4 long int 文件总长-8 long int size0=文总长-808H 8 char "WAVEfmt " char wave_fmt[8]10H 4 long int 32000000H(ADPCM) long int size1=0x3214H 2 int 02 00H int fmttag=0x0216H 2 int 声道数int channel=1 或218H 4 long int 采样率long int samplespersec1CH 4 long int 每秒播放字节数long int bytepersec20H 2 int 采样一次占字节数int blockalign=声道数*量化数/8 22H 2 int 量化数int bitpersamples=424H 34 char 固定字节char temp146H 4 char "fact" char wave_fact="fact"4AH 8 char 0400000004930600H定char temp252H 4 char "data" char wave_data="data"56H 4 long int 采样数据字节数lont int size2=文长-905AH 到文尾采样数据表5GSM语音编码后的WAVE文件头格式表(共60字节)偏移地址字节数数据类型内容文件头定义为00H 4 char "RIFF" char riff_id[4]="RIFF"04H 4 long int 文件总长-8 long int size0=文总长-808H 8 char "WAVEfmt " char wave_fmt[8]10H 4 long int 14000000H(GSM) long int size1=0x1414H 2 int 31 00H int fmttag=0x3116H 2 int 声道数int channel=1 或218H 4 long int 采样率long int samplespersec1CH 4 long int 每秒播放字节数long int bytepersec20H 8 char 4100000002004001H定char temp128H 8 char 6661637404000000H定char temp230H 4 char 40 E2 05 00H定char temp334H 4 char "data" char wave_data="data"38H 4 long int 采样数据字节数lont int size2=文长-603CH 到文尾采样数据表6SBC语音编码后的WAVE文件头格式表(共58字节)偏移地址字节数数据类型内容文件头定义为00H 4 char "RIFF" char riff_id[4]="RIFF"04H 4 long int 文件总长-8 long int size0=文总长-808H 8 char "WAVEfmt " char wave_fmt[8]10H 4 long int 12000000H(SBC) long int size1=0x1214H 2 int 71 00H int fmttag=0x7116H 2 int 声道数int channel=1 或218H 4 long int 采样率long int samplespersec1CH 4 long int 每秒播放字节数long int bytepersec20H 2 int 采样一次占字节数int blockalign=0x2522H 4 long int 量化数long int bitpersamples=1626H 4 char "fact" char wave_fact="fact"2AH 8 char 0400000076280400H定char temp32H 4 char "data" char wave_data="data"36H 4 long int 采样数据字节数lont int size2=文长-59表7CELP语音编码后的WAVE文件头格式表(共58字节)偏移地址字节数数据类型内容文件头定义为00H 4 char "RIFF" char riff_id[4]="RIFF"04H 4 long int 文件总长-8 long int size0=文总长-808H 8 char "WAVEfmt " char wave_fmt[8]10H 4 long int 12000000H(CELP) long int size1=0x1214H 2 int 70 00H int fmttag=0x7016H 2 int 声道数int channel=1 或218H 4 long int 采样率long int samplespersec1CH 4 long int 每秒播放字节数long int bytepersec20H 2 int 采样一次占字节数int blockalign=0x0C22H 4 long int 量化数long int bitpersamples=1626H 4 char "fact" char wave_fact="fact"2AH 8 char 0400000060520700H定char temp32H 4 char "data" char wave_data="data"36H 4 long int 采样数据字节数lont int size2=文长-58WAVEFORMATEXtypedef struct{WORD wFormatTag; WORD nChannels; DWORD nSamplesPerSec; DWORD nAvgBytesPerSec; WORD nBlockAlign; WORD wBitsPerSample; WORD cbSize; } WAVEFORMATEX;具体参数解释如下:wFormatTag:波形数据的格式,定义在MMREG.H文件中nChannels:波形数据的通道数:单声道或立体声nSamplesPerSec:采样率,对于PCM格式的波形数据,采样率有8.0 kHz,11.025kHz,22.05 kHz,44.1 kHz等nAvgBytesPerSec:数据率,对于PCM格式的波形数据,数据率等于采样率乘以每样点字节数nBlockAlign:每个样点字节数wBitsPerSample:采样精度,对于PCM格式的波形数据,采样精度为8或16cbSize:附加格式信息的数据块大小概念2、定义设备头结构WAVEHDR定义了指向波形数据缓冲区的设备头。
游戏音效处理中音频格式以及优缺点概述

游戏音效处理中音频格式以及优缺点概述游戏音效适用于游戏中的各个领域,针对不同的场景以及动作,都会有不同的音效,今天小编来和大家一起聊聊游戏音效中常见的音频格式有哪些,以及这些音频格式有哪些优缺点。
WAV格式WAVE是录音时用的标准的WINDOWS文件格式,文件的扩展名为“WAV”,数据本身的格式为PCM或压缩型,属于无损音乐格式的一种。
WAV的优点是可通过增加驱动程序,而支持各种各样的编码技术。
缺点是不适于传播和用作聆听,支持的编码技术大部分只能在Windows平台下使用,适用领域音频原始素材保存。
MP3格式MP3是利用人耳对高频声音信号不敏感的特性,将时域波形信号转换成频域信号,并划分成多个频段,对不同的频段使用不同的压缩率,对高频加大压缩比(甚至忽略信号)对低频信号使用小压缩比,保证信号不失真。
这样一来就相当于抛弃人耳基本听不到的高频声音,只保留能听到的低频部分,从而将声音用1∶10甚至1∶12的压缩率压缩。
由于这种压缩方式的全称叫MPEG Audio Player3,所以人们把它简称为MP3。
MP3的优点是在低至128kbps的比特率下提供接近CD,音质的音频质量广泛的支持,缺点是出现的比较早,音质不是太好,适用领域一般聆听和高保真聆听。
Windows Media格式Windows Media格式是属于wma格式的音频文件,音质要强于MP3格式,更远胜于RA格式。
优点是功能齐全使用方便,同时支持无失真、有失真、语音压缩方式,缺点是失真压缩方式下音质不高,必须在Windows平台下才能使用。
适用领域音频档案级别保存,一般聆听,网络音频流传输。
MIDIMIDI是编曲界最广泛的音乐标准格式,可称为“计算机能理解的乐谱”。
它用音符的数字控制信号来记录音乐。
优点是音频数据为乐器的演奏控制,通常不带有音频采样,缺点是没有波表硬件或软件配合时播放效果不佳,适用领域,与电子乐器的数据交互,乐曲创作等。
不同的音频格式各有利弊,主要还是要看自己对于游戏音效的需求,根据需求而决定格式。
wavefront 格式

wavefront 格式
Wavefront格式是一种常用的3D模型文件格式,也被称为OBJ
格式。
它是一种文本文件格式,用于存储三维模型的顶点、法线、
纹理坐标和面的信息。
Wavefront格式以ASCII形式存储数据,使
得它易于阅读和编辑。
该格式通常由一组以.obj为扩展名的文件组成,其中包括.obj文件本身、.mtl材质文件和纹理贴图文件。
Wavefront格式的优点之一是它的通用性和兼容性。
由于它是
一种文本格式,几乎所有的3D建模软件都支持导入和导出OBJ文件,这使得它成为了一个广泛应用的标准格式。
另外,由于其易读性,
开发人员和艺术家们可以直接编辑OBJ文件,而无需依赖特定的建
模软件。
该格式也具有一些局限性。
由于它是以文本形式存储数据,因
此文件相对较大,不适合存储复杂的几何信息。
此外,OBJ文件不
支持动画和骨骼绑定等高级特性,因此在需要这些功能的情况下,
开发人员通常会选择其他格式,如FBX或COLLADA。
总的来说,Wavefront格式是一种方便且通用的3D模型文件格
式,适合用于静态的三维模型存储和交换。
它的易读性和广泛的软件支持使得它在建模和渲染领域得到了广泛的应用。
WAV文件格式说明

WA VE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。
RIFF是英文Resource Interchange File Format的缩写,每个W A VE文件的头四个字节便是“RIFF”。
WA VE文件由文件头和数据体两大部分组成。
其中文件头又分为RIFF/WA V文件标识段和声音数据格式说明段两部分。
WA VE文件各部分内容及格式见附表。
常见的声音文件主要有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值)。
采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。
采样值是指每一次采样周期内声音模拟信号的积分值。
对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。
W A VE文件数据块包含以脉冲编码调制(PCM)格式表示的样本。
WA VE文件是由样本组织而成的。
在单声道WA VE文件中,声道0代表左声道,声道1代表右声道。
在多声道W A VE文件中,样本是交替出现的。
WA VE文件格式说明表偏移地址字节数数据类型内容文件头00H 4 char "RIFF"标志04H 4 long int 文件长度08H 4 char "WA VE"标志0CH 4 char "fmt"标志10H 4 过渡字节(不定)14H 2 int 格式类别(10H为PCM形式的声音数据)16H 2 int 通道数,单声道为1,双声道为218H 2 int 采样率(每秒样本数),表示每个通道的播放速度,1CH 4 long int 波形音频数据传送速率,其值为通道数×每秒数据位数×每样本的数据位数/8。
播放软件利用此值可以估计缓冲区的大小。
Wave文件格式解析

Wave文件是用于多媒体文件存储的Microsoft RIFF(Resource Interchange File Format 资源交换档案标准)规范的子集之一。
一个RIFF文件以一个文件头(File Header)开始,接着是一系列数据块(data chunk)。
一个Wave文件常常是一个带有一个单“WAVE”块的RIFF文件。
该“WAVE”chunk由两个子快组成,一个“fmt”chunk用于详细说明数据格式,一个“data”chunk包含实际的样本数据。
这种形式我们称为规范形式。
下面我们看一个具体的例子,声音文件如下:
52 49 46 46 24 08 00 00 57 41 56 45 66 6d 74 20 10 00 00 00 01 00 02 00
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
上图所示例子,该WAVE文件采用PCM编码。
该音频具有双声道,每个样点进行16位量化编码,双声道的一个样点占4字节,存储顺序是每个样点的左右声道交替存储。
对于Data块,根据声道数和采样率的不同情况,布局如下(每列代表8bits):1、8 Bit 单声道:
2、8 Bit 双声道
3、16 Bit 单声道:
4、16 Bit 双声道。
wave文件格式分析实验

WA VE文件格式分析实验一、实验目的了解Wave文件格式并学习Windows下用低级函数来播放Wave文件。
二、实验原理1、Windows中的低级多媒体函数Windows中的低级多媒体函数都是以mmio开头的,在VC的联机帮助中,可以找到以下函数的具体含义和使用方法。
mmioAdvancemmioAscendmmioClosemmioCreateChunkmmioDescendmmioFlushmmioGetInfommioInstallIOProcmmioOpenmmioReadmmioRenamemmioSeekmmioSendMessagemmioSetBuffermmioSetInfommioStringToFOURCCmmioWrite事实上我们只用到5个函数:mmioAscend、mmioClose、mmioOpen、mmioRead、mmioDescend 2、Wave文件的结构Wave文件的数据以几种方式出现:抽样速率的各种综合、多种声道(单声和立体声)和不同分频率(每个样本的位数)。
这些信息以一种格式块的形式出现-在RIFF专门名词中称为(chunk)-位于每个WAVE文件的开头附近。
下图是一个RIFF文件结构的示意图:一个WAVE文件最少包含3个块,RIFF块是其中最大的。
整个WAVE文件就是一个RIFF 块。
Cksize紧跟在“RIFF”CKID之后出现,它包含一个值,等于文件大小减去8个字节-这8个字节用来存储RIFF块的CKID和CKSIZE。
第二和第三块称为子块,包含在RIFF块之中。
这些子块的第一个是“fmt”块,包含PCMWAVEFORMAT结构所需要的信息;第二个字块“data”块是文件的最大部分,紧跟在“fmt”块后,包含所有的数据波形。
RIFF块的CKSIZE 等于“fmt”块和“data”块占用的字节之和。
为了读写RIFF文件,用户使用为多媒体块信息准备的叫MMCKINFO的标准数据结构。
pcm编码方式与wave音频格式

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(秒)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WAVE 文件作为多媒体中使用的声音波形文件格式之一,它是以RIFF(Resource Interchange File Format)格式为标准的。
每个WAVE文件的头四个字节便是“RIFF”。
WAVE 文件由文件头和数据体两大部分组成。
其中文件头又分为RIFF/WAV 文件标识段和声音数据格式说明段两部分。
WAVE文件各部分内容及格式见后文。
常见的声音文件主要有两种,分别对应于单声道(11.025KHz 采样率、8Bit 的采样值)和双声道(44.1KHz 采样率、16Bit 的采样值)。
采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。
采样值是指每一次采样周期
内声音模拟信号的积分值。
对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。
WAVE 文件数据块包含以脉冲编码调制(PCM)格式表示的样本。
WAVE 文件是由样本组织而成的。
在单声道WAVE 文件中,声道0代表左声道,声道1代表右声道。
在多声道WAVE 文件中,样本是交替出现的。
WAVE 文件除了前面一小段文件头对数据组织进行说明之外,Data 块就是声音的原始采样数据,WAVE 文件虽然可以压缩,但一般都使用不压缩的格式。
44.1KHz 采样率、16Bit 的分辨率、双声道,所以WAVE可以保存音质要求非常高的声音文件,CD 采用的也是这种格式,声音方面的专家或是音乐发烧友们应该非常熟悉。
但这种文件的体积也非常大,以44.1KHz 16bit 双声道的数据为例,一分钟的声音数据量为:4100*2byte*2channel*60s/1024/1024=10.09M 。
所以不合适在网上传送。
下面我们具体地分析WAVE 文件的格式
endian field name Si ze
big ChunkID 4
文件头标识,一般就是" RIFF" 四个字母
little ChunkSize4整个数据文件的大小,不包括上面ID和Size本身big Format4一般就是" WAVE" 四个字母
big SubChunk1ID4格式说明块,本字段一般就是"fmt "
little SubChunk1Size4本数据块的大小,不包括ID和Size字段本身little AudioFormat2音频的格式说明
little NumChannels2声道数
little SampleRate4采样率
little ByteRate4比特率,每秒所需要的字节数
little BlockAlign2数据块对齐单元
little BitsPerSample2采样时模数转换的分辨率
big SubChunk2ID4真正的声音数据块,本字段一般是"data"
little SubChunk2Size4本数据块的大小,不包括ID和Size字段本身little Data N音频的采样数据
以下是对各个字段的详细解说:
ChunkID4bytes ASCII 码表示的“RIFF”。
(0x52494646)
ChunkSize4bytes36+SubChunk2Size,或是
4 + ( 8 + SubChunk1Size ) + ( 8 + SubChunk2Size ),
这是整个数据块的大小(不包括ChunkID和ChunkSize的大
小)
Format4bytes ASCII 码表示的“WAVE”。
(0x57415645)
新的数据块(格式信息说明块)
SubChunk1ID
ASCII 码表示的“fmt ”——最后是一个空格。
(0x666d7420)SubChunk1Siz
4bytes本块数据的大小(对于PCM,值为16)。
e
AudioFormat2bytes PCM = 1 (比如,线性采样),如果是其它值的话,则可能是
一些压缩形式
NumChannels2bytes 1 => 单声道| 2 => 双声道
SampleRate4bytes采样率,如8000,44100 等值
ByteRate4bytes等于:SampleRate * numChannels * BitsPerSample / 8 BlockAlign2bytes等于:NumChannels * BitsPerSample / 8
BitsPerSample2bytes采样分辨率,也就是每个样本用几位来表示,一般是8bits 或
是16bits
SubChunk2ID4bytes新数据块,真正的声音数据
ASCII 码表示的“data ”——最后是一个空格。
(0x64617461)4bytes数据大小,即,其后跟着的采样数据的大小。
SubChunk2Siz
e
Data N bytes真正的声音数据
对于Data块,根据声道数和采样率的不同情况,布局如下(每列代表8bits):
1. 8 Bit 单声道:
采样1采样2
数据1数据2
2. 8 Bit 双声道
采样1采样2
声道1数据1声道2数据1声道1数据2声道2数据2
1. 16 Bit 单声道:
采样1采样2
数据1低字节数据1高字节数据1低字
数据1高字节
节
2. 16 Bit 双声道
采样1
声道1数据1低字节 声道1数据1高字节 声道2数据1低字节 声道2数据1高字节 采样2
声道1数据2低字节 声道1数据2高字节 声道2数据2低字节
声道2数据2高字节
下面我们看一个具体的例子,声音文件如下:
52 49 46 46 24 08 00 00 57 41 56 45
66 6d 74 20 10 00 00 00 01 00 02 00
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
对应的分析如下图所示:。