wav文件格式分析详解
44.1khz 的wav例子

题目:探索44.1kHz的WAV音频格式在当今数字化的世界里,音频文件已经成为我们日常生活中不可或缺的一部分。
而WAV格式作为一种常见的音频文件格式,其44.1kHz的采样率更是被广泛运用于各种音频设备和媒体评台。
在本文中,我们将深入探讨44.1kHz的WAV音频格式,探寻其在音频处理和播放中的重要性。
1. 什么是44.1kHz的WAV音频格式?WAV是一种无损音频文件格式,最初由微软和IBM在Windows上推出。
它以PCM编码方式存储音频数据,因此能够提供高质量的音频效果。
而44.1kHz则是指音频的采样率,即以每秒44,100次的频率对声音的快照进行采样。
这一标准是由CD音质确定的,因此被广泛应用于CD音轨和音频编辑中。
2. 44.1kHz的重要性和适用场景44.1kHz的采样率之所以被广泛采用,是因为它能够准确地还原人耳能够感知的所有频率。
这意味着在这一采样率下录制的音频可以达到接近原始声音的还原效果,保留了丰富的音频细节,尤其适用于音乐、录音以及音频处理等领域。
3. 如何理解44.1kHz的WAV音频格式?在理解44.1kHz的WAV音频格式时,我们不仅要关注其数字表示,还需深入了解其对音频体验的影响。
采样率的增加能够提高音频的精度和质量,而44.1kHz的采样率已经达到了人类耳朵的极限感知范围。
无论是从技术还是从感官上来说,这一采样率都能够满足我们对高品质音频的追求。
4. 结语44.1kHz的WAV音频格式在当前的数字音频领域中扮演着重要的角色,其高质量和广泛应用性使其成为音频文件处理和传输中不可或缺的一部分。
通过深入探索和理解这一音频格式,我们不仅能够更好地应用于实际场景中,更能够对数字音频的发展与应用有着更全面、深刻的理解。
个人观点:作为一名音频领域的从业者,我对44.1kHz的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格式的音频一般占用存储空间较大」

wav格式「wav格式的音频一般占用存储空间较大」WAV是最常见的声音文件格式之一,是微软公司专门为Windows开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真但WAV文件有一个致命的缺点,就是它所占用的磁盘空间太大每分钟的音。
WAV格式是微软公司开发的一种声音文件格式,也叫波形声音文件,是最早的数字音频格式,被Windows平台及其应用程序广泛支持WAV 格式支持许多压缩算法,支持多种音频位数采样频率和声道,采用441kHz的采样频率,16位量化位数。
WAV是最常见的声音文件格式之一,是微软公司专门为Windows开发的一种标准数字音频文件,该文件能记录各种单声道或立体声的声音信息,并能保证声音不失真但WAV文件有一个致命的缺点,就是它所占用的磁盘空间太大每分钟的。
WAV格式视频文件是比较常见的格式,用Windows自带播放器就可以进行播放了1找到WAV格式视频2鼠标右键点击WAV格式视频,然后选择打开方式3点击打开方式之后,选择WindowsMediaPlayer进行打开4选择WindowsMediaPlayer之后。
Hz四种WAV文件采用的是RIFF格式结构至少是由3个块构成,分别是RIFFfmt和Data所有基于压缩编码的WAV文件必须含有fact块此外所有其它块都是可选。
WAV是真正的无损格式 WAV为微软公司Microsoft开发的一种声音文件格式,它符合RIFFResource Interchange File Format文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持,该格式也支持MSADPCM。
wav是完全无损的非压缩音频格式,容量比较大,很多电子播放设备不支持,你可以将它转换成mp3wma格式就可以了我一般用cooledit 转换。
一首3分钟左右的音乐文件在30M至50M之间其后期可经无损压缩为APE,FLAC等无损格式,也可压为MP3,AAC,wma等有损格式有些手机,MP3等录音文件也为wav,但那是低端的,文件一般很小不是以上所说的无损音频。
wav文件头

一、各种WAV文件头格式WAV文件也分好几个种类,相应的非数据信息存储在文件头部分,以下是各种WAV文件头格式。
表18KHz采样、16比特量化的线性PCM语音信号的WAV文件头格式表(共44字节)表28KHz采样、8比特A律量化的PCM语音信号的WAV文件头格式表(共58字节)表38KHz采样、8比特U律量化的PCM语音信号的WAV文件头格式表(共58字节)表4ADPCM语音编码后的WAV文件头格式表(共90字节)表5GSM(Global System for Mobile Communication全球移动通信系统)语音编码后的WAV文件头格式表(共60字节)表6SBC(Sub-Band Coding子带编码)语音编码后的WAV文件头格式表(共58字节)表7CELP(Code Excited Linear Prediction码激励线性预测编码——近10年来最成功的语音编码算法)语音编码后的WAV文件头格式表(共58字节)概念1、读取WAV文件,填写WAVEFORMATEX结构WAVEFORMATEXtypedef struct{WORD wFormatTag;WORD nChannels;DWORD nSamplesPerSec;DWORD nAvgBytesPe rSec; 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文件格式分析

WAV文件格式分析
WAV(PCM)文件格式是一种容器文件格式,它可以包含多种编码方式的
音频数据,但最常见的是PCM编码方式。
PCM是一种无损的音频编码方式,它将音频信号按照时序进行采样,并将每个采样值量化成离散的数字,进
而进行存储。
PCM编码方式的音频数据是最原始、最接近原始音频信号的
数据,因此在音质上具有高保真性。
文件头是WAV(PCM)文件的第一部分,用于描述整个文件的基本信息。
文件头的长度为44个字节。
它包含了文件的格式、采样率、通道数、量
化位数等信息。
其中,采样率表示每秒采样的次数,通道数表示音频数据
的通道数(例如单声道或立体声),量化位数表示每个采样值用多少位进
行表示。
附加信息部分是可选的,它可以用来存储一些附加的音频信息,如音
频标记、标题、歌手信息等。
附加信息部分的长度可以根据需要进行扩展。
然而,WAV(PCM)文件格式也存在一些不足之处。
由于PCM编码方式没
有对音频数据进行压缩处理,因此WAV(PCM)文件的尺寸相对较大,占用
存储空间较多。
另外,由于其采样率和量化位数的限制,WAV(PCM)文件格
式可能无法满足一些高质量音频的需求。
针对这些问题,人们常常使用其
他音频格式如MP3、AAC等进行压缩编码,以减小文件尺寸并提高存储和
传输效率。
总结起来,WAV(PCM)文件格式是一种常见的音频文件格式,它基于PCM编码方式进行存储和传输。
WAV(PCM)文件格式具有音质高、兼容性强
等优点,但同时也存在文件较大和存储、传输效率低的不足之处。
wav文件格式分析

char szFactID[4]; // 'f','a','c','t'
DWORD dwFactSize;
};
Data Chunk
==================================
| |所占字节数| 具体内容 |
==================================
{
char szFmtID[4]; // 'f','m','t',' '
DWORD dwFmtSize;
WAVE_FORMAT wavFormat;
};
Fact Chunk
==================================
| |所占字节数| 具体内容 |
--------------------------------------------------------------------
| Size | 4 Bytes | 数值为16或18,18则最后又附加信息 |
-------------------------------------------------------------------- ----
| FormatTag | 2 Bytes | 编码方式,一般为0x0001 | |
-------------------------------------------------------------------- |
| Channels | 2 Bytes | 声道数目,1--单声道;2--双声道 | |
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⾳频数据以⼩端形式来进⾏数据存储。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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个字节表示,低字节表示数值低位,高字节表示数值高位。
下面具体介绍各个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格式解析代码。