常见的音频文件一般以pcm、 wav、 mp3、 amr等格式进行存储。本文对这几种音频文件格式进行了介绍并以具体的音频文件进行了分析。
1、PCM
PCM(Pulse Code Modulation),脉码调制录音,即将模拟信号变成符号化的脉冲序列,以原始的音频数据将其记录下来,是对模拟信号先抽样,再对样值幅度量化,编码的过程。PCM信号是把以一定采样频率记录的脉冲幅值信号按一定的精度进行量化后构成的数字信号,没有未经过任何编码和压缩处理。涉及到的两个重要参数是采样频率和量化精度,常用的采样频率有22050Hz,44100H等,,量化精度8bit、16bit,标准的CD音频2即以2050Hz/161bit的方式进行记录。2、WAV
WAV是一种无损的音频文件格式,WAV符合 PIFF(Resource Interchange File Format)规范。所有的WAV都有一个文件头,这个文件头包含音频流的编码参数。WAV对音频流的编码没有硬性规定,除了PCM之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码,不过我们常见的都是音频流被PCM编码处理的WAV,但这不表示WAV只能使用PCM编码,MP3编码同样也可以运用在WAV中,在Windows平台下,基于PCM编码的WAV是被支持得最好的音频格式,故基于PCM编码的WAV常被作为中介的格式在各种类型的音频文件中进行转换。
WAV文件遵循RIFF规则,其内容以区块(chunk)为最小单位进行存储。WAV文件一般由3个区块组成:RIFF chunk、Format chunk和Data chunk。有时文件中也包含Playlist chunk、Associated data list chunk等区块。
》RIFF chunk:
54 49 46 46 (大端):RIFF标识,表明该文件遵循RIFF规则
24 08 00 00(小端):整个wav文件的包含的字节数,即0x0824,十进制为2084,不包含RIFF标识的四个字节及本身所占的四个字节
57 41 56 45(大端):WAVE标识,表明该文件后面有Format块和Data块
》Format chunk:
66 6d 74 20(大端):fmt标识,表明文件接下来是Format块
10 00 00 00(小端):Format子块所包含的字节数,十进制为16,不包含fmt标识的四个字节及本身所占的四个字节
01 00 (小端):音频的编码格式,01为PCM编码
02 00 (小端):通道数,02为双通道(立体声)
22 56 00 00(小端):音频采样频率,此处为0x5622,即十进制为22050
88 58 01 00(小端):位率(也叫比特率,指音频每秒的传输速率),此处为0x5888,即十进制为88200(采样频率*通道数 *量化精度)
04 00 (小端):表示音频数据以四字节对齐
10 00 (小端):采样值幅的量化精度,以16位量化后进行记录
》Data chunk:
64 61 74 61(大端):data标识,表明文件接下来是Data块
00 08 00 00(小端):Data 子块所包含的字节数,此处为0x0800,即十进制的2048,不包含data标识的四个字节及本身所占的四个字节
3、MP3
MP3利用的是MPEG Audio Layer3音频压缩技术,所以人们把它简称为MP3。MPEG音频文件是MPEG1 标准中的声音部分,也叫MPEG 音频层它根据压缩质量和编码复杂程度划分为三层,即Layer-1、Layer2、Layer3,分别对应MP1、MP2、MP3 这三种声音文件,并根据不同的用途,使用不同层次的编码。并且音频编码的层次越高,编码器越复杂,压缩率也越高,MP1 和MP2 的压缩率分别为4:1 和6:1-8:1,而MP3 的压缩率可达1∶10甚至1∶12。MP3 属于有损失的格式,牺牲音乐文件的质量以换取较小的文件体积,因为人耳只能听到一定频段内的声音(20Hz~20000Hz),而其他更高或更低频率的声音对人耳是无法感知的,所以MP3技术就把这部分声音去掉了,从而使得文件体积大为缩小,但在人耳听起来, 却并没有什么失真。
MP3 音频一般包含三部分:ID3V2,Frame,ID3V1。ID3V2,ID3V1 为标签帧,Frame为数据帧,ID3v1存在文件尾部,长度 128 字节,而 ID3v2,是对 ID3v1 的扩展,存在文件头部,长度不定。在一个MP3 文件内不一定有标签帧,但一定有数据帧。
如果mp3音频文件存在ID3V2标签的话,在文件的首部顺序会记录10 个字节的ID3V2的头部,即标签头。之后则为ID3V2标签的标签帧,可有多个标签帧,标签帧数据表明了该MP3的作者,作曲,专辑等信息,扩展了ID3V1 的信息量。
》ID3V2的标签头:
49 44 33:ID3标识,表明该MP3文件包含ID3V2标签
04:版本号,此处为ID3V2.4
00:副版本号,此处为0
00:存放标志的字节(是否包含扩展头部及测试标签等)
00 00 00 02:ID3V2标签帧包含的字节数,包括标签头的10 个字节和所有的标签帧的大
ID3V2标签帧之后是数据帧,记录了mp3 的位率,采样率,版本等信息,每个数据帧帧都有一个帧头Header,长度是4Byte(32bit),帧头后面可能有两个字节的CRC 校验值,一般为FF FB或 FF FA。4、AMR
AMR( Adaptive Multi-Rate),自适应多速率,是一种音频编码文件格式。基于新的网络和新的要求,无论是从节省传输频带资源,还是保持线路通信的高效率等方面来看,研究采用各种可变速率语音编码技术的系统都有重要意义。目前为了适应此需要提出了AMR的概念,即自适应多速率语音编码器。主要用于移动设备的音频压缩,可有效地压缩语音频率,压缩比非常高,但是音质相对其他的压缩格式质量比较差比较差,主要用于语音类的音频压缩,不适合对音质要求较高的音乐类音频的压缩。
AMR又分为两种,一种是AMR-NB(AMR-NarrowBind),语音带宽范围:300-3700Hz,8KHz采样频率;另外一种是AMR-WB(AMR WideBand),语音带宽范围50-7000Hz,16KHz采样频率。但考虑语音的短时相关性,每帧长度均为20ms。这两种编码器根据带宽的要求选用了不同的速率,适用于不同的应用场景。
1)AMR-NB
AMR-NB的采样频率为8KHz,每20ms编码一帧,每个帧中包含160个语音样点,支持8种不同的编码方式:4.75 kb/s 5.15kb/s 5.9kb/s 6.7kb/s 7.4kb/s 7.95kb/s 10.2kb/s 12.2kb/s 。AMR采用的是基于代数码激励线性预测(ACELP)的编码模式,从编码端提取ACELP模型参数,解码端接收到数据后后根据这些参数从新合成语音,如TD-SCDMA中AMR-NB的实现。
2)AMR-WB
AMR-WB是一种同时被国际标准化组织ITU-T和3GPP采用的宽带语音编码标准,也称为G722.2标准。AMR-WB采样频率为16kHz,同样是每20ms编码一帧,但每帧中包含320个语音样点,拥有更大的语音带宽,支持9种不同的编码方式:6.6kb/s 8.85kb/s 12.65kb/s 14.25kb/s 15.85kb/s 18.25kb/s 19.85kb/s 23.05kb/s 23.85kb/s,用户可主观感受到话音比以前更加自然、舒适和易于分辨。AMR-WB应用于窄带GSM(全速信道16k,GMSK)的优势在于其可采用从6.6kb/s, 8.85kb/s和12.65kb/s三种编码,当网络繁忙时C/I恶化,编码器可以自动调整编码模式,从而增强QoS。AMR-WB在较低的误码信道可以提供很好的性能,但对于误码率大或干扰高的信道,具有较低编码速率的AMR-NB更为合适。
AMR文件由AMR和数据帧组成,文件头标识占6个字节,后面紧跟着就是音频帧,每个音频帧都包含一个字节的音频头和相应字节的语音数据。
》AMR文件头:23 21 41 4D 52 0A (固定的)
对于不同的编码模式,它的音频帧的大小是不同的,比特率也是不同的。此处为3C,即AMR12.2编码模式。可知其比特率为12.2kbs,每秒采样的音频数据位数为32字节。