您的位置:首页 > 其它

常用语音编码的WAVE文件头格式剖析--各种编码

2017-12-26 12:55 344 查看


  WAVE文件头作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是“RIFF”。合理利用WAVE文件头可以更有效地进行语音解码。

  通常意义上说的语音编码都是指将8KHz采样、16比特量化的线性PCM语音信号压缩成其它格式的语音信号,解码时就将其它格式的语音信号变换成8KHz采样、16比特量化的线性PCM语音信号。一般说来,这个转换过程比较复杂,费时费力。如果对其它格式的语音信号直接加上对应的WAVE文件头就不用这个转换过程,用微软自带的录音机就可解码语音。

  下面就分别剖析各种语音编码的WAVE文件头格式,用如下各个表(表1到表7)进行对比即可。

表1 8KHz采样、16比特量化的线性PCM语音信号的WAVE文件头格式表(共44字节)

偏移地址 字节数 数据类型 内容 文件头定义为

00H 4 char "RIFF" char riff_id[4]="RIFF"

04H 4 long int 文件总长-8 long int size0=文总长-8

08H 8 char "WAVEfmt " char wave_fmt[8]

10H 4 long int 10 00 00 00H(PCM) long int size1=0x10

14H 2 int 01 00H int fmttag=0x01

16H 2 int int channel=1 或2

18H 4 long int 采样率 long int samplespersec

1CH 4 long int 每秒播放字节数 long int bytepersec

20H 2 int 采样一次占字节数 int blockalign=声道数*量化数/8

22H 2 int 量化数 int bitpersamples=8或16

24H 4 char "data" char data_id="data"

28H 4 long int 采样数据字节数 long int size2=文长-44

2CH 到文尾 char 采样数据  

表2 8KHz采样、8比特A律量化的PCM语音信号的WAVE文件头格式表(共58字节)

偏移地址 字节数 数据类型 内容 文件头定义为

00H 4 char "RIFF" char riff_id[4]="RIFF"

04H 4 long int 文件总长-8 long int size0=文总长-8

08H 8 char "WAVEfmt " char wave_fmt[8]

10H 4 long int 12000000H(ALAW) long int size1=0x12

14H 2 int 06 00H int fmttag=0x06

16H 2 int 声道数 int channel=1 或2

18H 4 long int 采样率 long int samplespersec

1CH 4 long int 每秒播放字节数 long int bytepersec

20H 2 int 采样一次占字节数 int blockalign=0x01

22H 4 long int 量化数 long int bitpersamples=8

26H 4 char "fact" char wave_fact="fact"

2AH 8 char 0400000000530700H定 char temp

32H 4 char "data" char wave_data="data"

36H 4 long int 采样数据字节数 lont int size2=文长-58

表3 8KHz采样、8比特U律量化的PCM语音信号的WAVE文件头格式表(共58字节)

偏移地址 字节数 数据类型 内容 文件头定义为

00H 4 char "RIFF" char riff_id[4]="RIFF"

04H 4 long int 文件总长-8 long int size0=文总长-8

08H 8 char "WAVEfmt " char wave_fmt[8]

10H 4 long int 12000000H(ULAW) long int size1=0x12

14H 2 int 07 00H int fmttag=0x07

16H 2 int 声道数 int channel=1 或2

18H 4 long int 采样率 long int samplespersec

1CH 4 long int 每秒播放字节数 long int bytepersec

20H 2 int 采样一次占字节数 int blockalign=0x01

22H 4 long int 量化数 long int bitpersamples=8

26H 4 char "fact" char wave_fact="fact"

2AH 8 char 0400000000530700H定 char temp

32H 4 char "data" char wave_data="data"

36H 4 long int 采样数据字节数 lont int size2=文长-58

表4 ADPCM语音编码后的WAVE文件头格式表(共90字节)

偏移地址 字节数 数据类型 内容 文件头定义为

00H 4 char "RIFF" char riff_id[4]="RIFF"

04H 4 long int 文件总长-8 long int size0=文总长-8

08H 8 char "WAVEfmt " char wave_fmt[8]

10H 4 long int 32000000H(ADPCM) long int size1=0x32

14H 2 int 02 00H int fmttag=0x02

16H 2 int 声道数 int channel=1 或2

18H 4 long int 采样率 long int samplespersec

1CH 4 long int 每秒播放字节数 long int bytepersec

20H 2 int 采样一次占字节数 int blockalign=声道数*量化数/8

22H 2 int 量化数 int bitpersamples=4

24H 34 char 固定字节 char temp1

46H 4 char "fact" char wave_fact="fact"

4AH 8 char 0400000004930600H定 char temp2

52H 4 char "data" char wave_data="data"

56H 4 long int 采样数据字节数 lont int size2=文长-90

5AH 到文尾 采样数据    

表5 GSM语音编码后的WAVE文件头格式表(共60字节)

偏移地址 字节数 数据类型 内容 文件头定义为

00H 4 char "RIFF" char riff_id[4]="RIFF"

04H 4 long int 文件总长-8 long int size0=文总长-8

08H 8 char "WAVEfmt " char wave_fmt[8]

10H 4 long int 14000000H(GSM) long int size1=0x14

14H 2 int 31 00H int fmttag=0x31

16H 2 int 声道数 int channel=1 或2

18H 4 long int 采样率 long int samplespersec

1CH 4 long int 每秒播放字节数 long int bytepersec

20H 8 char 4100000002004001H定 char temp1

28H 8 char 6661637404000000H定 char temp2

30H 4 char 40 E2 05 00H定 char temp3

34H 4 char "data" char wave_data="data"

38H 4 long int 采样数据字节数 lont int size2=文长-60

3CH 到文尾 采样数据    

表6 SBC语音编码后的WAVE文件头格式表(共58字节)

偏移地址 字节数 数据类型 内容 文件头定义为

00H 4 char "RIFF" char riff_id[4]="RIFF"

04H 4 long int 文件总长-8 long int size0=文总长-8

08H 8 char "WAVEfmt " char wave_fmt[8]

10H 4 long int 12000000H(SBC) long int size1=0x12

14H
9d59
2 int 71 00H int fmttag=0x71

16H 2 int 声道数 int channel=1 或2

18H 4 long int 采样率 long int samplespersec

1CH 4 long int 每秒播放字节数 long int bytepersec

20H 2 int 采样一次占字节数 int blockalign=0x25

22H 4 long int 量化数 long int bitpersamples=16

26H 4 char "fact" char wave_fact="fact"

2AH 8 char 0400000076280400H定 char temp

32H 4 char "data" char wave_data="data"

36H 4 long int 采样数据字节数 lont int size2=文长-59

表7 CELP语音编码后的WAVE文件头格式表(共58字节)

偏移地址 字节数 数据类型 内容 文件头定义为

00H 4 char "RIFF" char riff_id[4]="RIFF"

04H 4 long int 文件总长-8 long int size0=文总长-8

08H 8 char "WAVEfmt " char wave_fmt[8]

10H 4 long int 12000000H(CELP) long int size1=0x12

14H 2 int 70 00H int fmttag=0x70

16H 2 int 声道数 int channel=1 或2

18H 4 long int 采样率 long int samplespersec

1CH 4 long int 每秒播放字节数 long int bytepersec

20H 2 int 采样一次占字节数 int blockalign=0x0C

22H 4 long int 量化数 long int bitpersamples=16

26H 4 char "fact" char wave_fact="fact"

2AH 8 char 0400000060520700H定 char temp

32H 4 char "data" char wave_data="data"

36H 4 long int 采样数据字节数 lont int size2=文长-58
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: