zoukankan      html  css  js  c++  java
  • 语音编码的WAVE文件头格式剖析

    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 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

  • 相关阅读:
    WRF WPS预处理
    CVS安装
    Linux窗口最小化消失,任务栏上无法找到的解决方法
    NCARG安装配置出现error while loading shared libraries: libg2c.so.0问题额解决办法
    Netcdf安装
    Embedding R-generated Interactive HTML pages in MS PowerPoint(转)
    The leaflet package for online mapping in R(转)
    Some 3D Graphics (rgl) for Classification with Splines and Logistic Regression (from The Elements of Statistical Learning)(转)
    What does a Bayes factor feel like?(转)
    Weka算法介绍
  • 原文地址:https://www.cnblogs.com/jqyp/p/2641910.html
Copyright © 2011-2022 走看看