WAV格式分析

来源:互联网 发布:联想扬天x110知乎 编辑:程序博客网 时间:2024/06/05 14:46

WAV文件是以RIFF格式来组织内部结构的,用于存储数字音频。RIFF文件结构是树状结构,基本构成是称为Chunk的单元,整个文件可以看做一个RIFF块。每个块由“类型块标识(可选)”、“标志符”、“数据大小”及“数据”等项组成,块与块可以嵌套,但每个文件只有一个RIFF块。


WAV文件格式:

别名               字节数    类型       注释

ckid                4       char      "RIFF"的ASCII码

cksize              4       int32     文件长度。这个长度不包括"RIFF"标志 和

                                      文件长度 本身所占字节, 下面的子块大小

                                      也是这样。

  fcc type          4       char      "WAVE"的ASCII码

    ckid            4       char      表示"fmt" chunk的开始。此块中包括文

                                      件内部格式信息。小写, 最后一个字符是

                                      空格。

    cksize          4       int32     文件内部格式信息数据的大小。

      FormatTag     2       int16     音频数据的编码方式。1 表示是 PCM 编码

      Channels      2       int16     声道数,单声道为1,双声道为2

      SamplesPerSec 4       int32     采样率(每秒样本数), 比如 44100 等

      BytesPerSec   4       int32     音频数据传送速率, 单位是字节。其值为

                                      采样率×每次采样大小。播放软件利用此

                                      值可以估计缓冲区的大小。

      BlockAlign    2       int16     每次采样的大小 = 采样精度*声道数/8(单

                                      位是字节); 这也是字节对齐的最小单位,

                                      譬如 16bit 立体声在这里的值是 4 字节。

                                      播放软件需要一次处理多个该值大小的字节数

                                      据,以便将其值用于缓冲区的调整。

      BitsPerSample 2       int16     每个声道的采样精度; 譬如 16bit 在这

                                      里的值就是16。如果有多个声道,则每个

                                      声道的采样精度大小都一样的。

      [cbsize]      2       int16     [可选]附加数据的大小。

      [...]         x     

  [ckid]            4       char      "fact".

  [cksize]          4       int32     "fact" chunk data size.

  [fact data]       4       int32     解压后的音频数据的大小(Bytes).

  ckid              4       char      表示 "data" chunk的开始。此块中包含

                                      音频数据。小写。

  cksize            4       int32     音频数据的长度

    ......                            文件声音信息数据(真正声音存储部分)

  [......]                            其它 chunk


Q1:8bit和16bit样值的二进制编码方式表示一样吗?

8bitPCM数据格式为unsigned int,取值范围0~255;

16bitPCM数据格式为int,取值范围 -32767~32767。

对于双声道文件,采样数据按时间先后顺序交叉存入:


参考:http://www.cnblogs.com/cheney23reg/archive/2010/08/08/1795067.html

Q2:现有的WAV支持哪几种音频压缩方法?

WAV格式文件常见的10种压缩码形式:

1. PCM/uncompressed,脉码调制信号,是模拟音频信号经模数转换(A/D变换)直接形成的二进制序列。

2. Microsoft ADPCM,自适应差分脉码调制信号。是一种数据压缩算法,该算法利用了语音信号样点间的相关性,并针对语音信号的非平稳特点,使用了自适应预测和自适应量化。

3. ITU G.711 a-law [3],G.711标准也是PCM码的一种。它主要用脉冲编码调制对音频采样,采样率为8kHz。它利用一个 64kbit/s 未压缩通道传输语音讯号。起压缩率为1:2,即把16位数据压缩成8位。

4. ITU G.711 µ-law,G.711标准下的另一种压缩算法,主要运用于北美和日本,美国电话格式(CCITT G.711)就采用这种算法。

5. IMA ADPCM,IMA是ADPCM中使用较多的一种算法。通过此算法可将样点编码成4bit的码流,一个符号位和三个幅度位。该算法较简单,通过查表简化了运算。编码后采用WAV文件格式,对编码后的数据流进行了包装,由文件头和数据码流组成,文件头和标准WAV格式文件一样,指出了音频数据所采用格式、采样率、比特率、块长度、比特数及声道数等信息。

6. ITU G.723 ADPCM (Yamaha),G.723是ITU在1996年制订成型的一种多媒体语音编解码标准。原理是:从采集的语音信号中解析出声道模型参数,构造一个合成滤波器,采用合适的激励源激励,编码传输的参数主要是激励源与合成滤波器的参数。5.3kbit/s的编码器采用代数码线预测激励(ACELP);6.3kb/s的编码器则采用多脉冲最大似然量化(MP-MLQ)激励。根据传输编码参数,可重构激励源与合成滤波器进行解码,还原出来的数字语音信号经D/A转换器转换成模拟语音信号。

7. GSM 6.10 [4],是全球移动通讯系统(Global System for Mobile communications)定义的一种音频编解码标准。编码基于线性预测编码算法(Linear Predictive Coding, LPC)。

8. ITU G.721 ADPCM [5],G.721是ITU-T定义的一组标准协议组G.7xx其中之一,指的是32kbit/s的自适应差分脉冲编码调制(ADPCM)。

9. MPEG,MPEG标准的视频压缩编码技术主要利用了具有运动补偿的帧间压缩编码技术以减小时间冗余度,利用DCT技术以减小图像的空间冗余度,利用熵编码则在信息表示方面减小了统计冗余度。这几种技术的综合运用,大大增强了压缩性能。MP3格式的音频文件,就是MPEG-1 layer3的缩写。
10. Experimental称为实验性音频。专门用来作音频信号处理的研究开发工作,主要包括优化压缩算法提高压缩效率的工作。

参考资料:http://blog.csdn.net/stelalala/article/details/17058755

Q3:取样率转换(48kHz->44.1kHz)?

对48kHZ音频进行先插值后抽样的操作,48k*147=44.1k*160,先在每两个样值之间插入146个样值,再每隔159个样值进行抽取,完成48kHz到44.1kHz的转换。

0 0
原创粉丝点击