zoukankan      html  css  js  c++  java
  • WAV格式中常见的压缩编码

    WAV格式中常见的压缩编码(compression code)

    WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持,该格式也支持MSADPCM,CCITT A LAW等多种压缩运算法,支持多种音频数字,取样频率和声道。标准格式化的WAV文件采样频率为44100Hz,采样比特为16bit,因此标准的(这里说标准,只是一种广泛采用的波形音频方案)WAV文件和CD音频格式一样,也是44.1KHz的取样频率,16位量化数字,在声音文件质量和CD音频相差无几。

     下面由useiee详细介绍一下WAV格式文件常见的10种压缩码形式(Compression Code)。[1]

     1. PCM/uncompressed
      Pulse Code Modulation,脉码调制信号。是模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志。Windows的Convert工具可以把PCM音频格式的文件转换成Microsoft的WAV格式的文件。
      PCM脉码调制数字音频格式是70年代末发展起来的,80年代初由飞利浦和索尼公司共同推出。PCM的音频格式也被DVD-A所采用,它支持立体声和5.1环绕声,1999年由DVD讨论会发布和推出的。
      PCM的采样精度从14bit发展到16bit、18bit、20bit直到24bit;采样频率从44.1kHz发展到192kHz。到目前为止PCM这种单纯依赖提高采样规格的技术,其可改进的地方已经越来越来小。只是简单的增加PCM比特率和采样率,不能从底层改善它的根本问题。

     2. Microsoft ADPCM
      Adaptive Differential Pulse Code Modulation,自适应差分脉码调制信号。是一种数据压缩算法,该算法利用了语音信号样点间的相关性,并针对语音信号的非平稳特点,使用了自适应预测和自适应量化。即对不同水平的差分序列,用一个相应参数delta作为平稳化参数去除差分序列的幅值,使得差分编码自动的适应数据间大幅度的跳跃。
      Microsoft ADPCM是微软标准的WAV格式文件采用ADPCM编码的文件,区分于IMA ADPCM文件。MS-ADPCM编码是分块的,每块有块头信息和编码数据。对单声道信号,每块由7个字节组成,byte0是块预测器predictor,byte1-2是初始delta,byte3-4和byte5-6分别是两个采样。[2]
      
     3. ITU G.711 a-law [3]
      G.711标准也是PCM码的一种。是国际电报联盟(International Telegraph Union, ITU)订定出来的一套语音压缩标准,主要用于电话。它主要用脉冲编码调制对音频采样,采样率为8kHz。它利用一个 64kbit/s 未压缩通道传输语音讯号。起压缩率为1:2,即把16位数据压缩成8位。G.711是主流的波形声音编解码器。
      G.711 标准下主要有两种压缩算法。一种是?μ-law algorithm (又称μ-law),主要运用于北美和日本;另一种就是a-law algorithm,主要运用于欧洲和世界其他地区。其中,a-law是特别设计用来方便计算机处理的。

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

     5. IMA ADPCM
      IMA是ADPCM中使用较多的一种算法。该算法中对量化步长的调整使用了简单的查表方法,对于一个输入的PCM值X(n),将其与前一时刻的X(n-1)预测值做差值得到d(n),然后根据当前的量化步长对d(n)进行编码,再用此sample点的编码值调整量化步长,同时还要得到当前sample点的预测值供下一sample点编码使用。通过此算法可将样点编码成4bit的码流,一个符号位和三个幅度位。该算法较简单,通过查表简化了运算。编码后采用WAV文件格式,对编码后的数据流进行了包装,由文件头和数据码流组成,文件头和标准WAV格式文件一样,指出了音频数据所采用格式、采样率、比特率、块长度、比特数及声道数等信息。数据码流以块为单位,块头指出了该块起始的预测值和index值,码流中每byte的高四位和低四位分别对应一个PCM。当前该算法以其简单实用的特点广泛应用到数字音乐盒和数字录音笔中。

     6. ITU G.723 ADPCM (Yamaha)
      G.723是ITU在1996年制订成型的一种多媒体语音编解码标准。其典型应用包括VoIP服务、H.324视频电话、无线电话、数字卫星系统、数电倍增设备(DCME)、公共交换电话网(PSTN)、ISDN及各种多媒体语音信息产品。G.723标准传输码率有5.3kbit/s和6.3kbit/s两种,在编程过程中可随时切换。该标准主要包含了编码算法和解码算法。原理是:从采集的语音信号中解析出声道模型参数,构造一个合成滤波器,采用合适的激励源激励,编码传输的参数主要是激励源与合成滤波器的参数。5.3kbit/s的编码器采用代数码线预测激励(ACELP);6.3kb/s的编码器则采用多脉冲最大似然量化(MP-MLQ)激励。根据传输编码参数,可重构激励源与合成滤波器进行解码,还原出来的数字语音信号经D/A转换器转换成模拟语音信号。
      G.723算法对语音信号有很好的编解码效果,同时也可处理音乐和其它声音信号,典型输入是64kb/s(8k×8)或128kbit/s(8k×16)的A-law或µ-law的PCM采样语音信号。每次处理一帧语音信号,每帧240个采样点(30ms)。在5.3kbit/s的码率下,每帧语音被压缩成20个字节传输;在6.3kbit/s的码率下,每帧语音被压缩成24个字节传输。

     7. GSM 6.10 [4]
      是我们熟知的全球移动通讯系统(Global System for Mobile communications)定义的一种音频编解码标准。广泛应用于无线通信设备如手机、无线通讯终端中。音频信号被压缩至介于5.6kbit/s和13kbit/s之间,这两种码率被分别叫做半率(Half Rate)和全率(Full Rate),最初大部分只有这两种码率的编码。编码基于线性预测编码算法(Linear Predictive Coding, LPC)。GSM 6.10除了在比特率上有很出色的表现外,这种编码的音频信号在空气信道中传输有着高保真度,因此广泛使用在无线通信设备的语音信号中。
      在1997年,GSM进一步开发出了一种增强型全率编解码器(Enhanced Full Rate, EFR),这种编码码流比特率为12.2kbit/s。

     8. ITU G.721 ADPCM [5]
      G.721是ITU-T定义的一组标准协议组G.7xx其中之一,指的是32kbit/s的自适应差分脉冲编码调制(ADPCM)。除去上面介绍的三种,此协议组的其他码流标准如下:
      G.722 ―― 64 kb/s 下的 7 kHz 音频编码
      G.722.1 ――带有低帧损耗的具有免提操作的系统在24kbit/s和32kbit/s上的编码 
      G.722.2 ――利用自适应多频率宽带(AMR-WB)以16kbit/s多频率语音编码
      G.726 ―― 40, 32, 24, 16kbit/s自适应差分脉冲编码调制(ADPCM)
      G.727 ―― 5, 4, 3和2bit/s嵌入式自适应差分脉冲编码调制(ADPCM)
      G.728 ――利用低延迟代码线性预测以16 bit/s 进行语音编码
      G.729 ――利用共扼结构-代数激励编码线性预测(CS-ACELP)以8bit/s进行语音编码

     9. MPEG
      Moving Pictures Experts Group,动态图像专家组。MPEG是世界上最为著名的一种音视频压缩标准之一。MPEG标准主要有以下五个,MPEG-1、MPEG-2、MPEG-4、MPEG-7及MPEG-21等。该专家组建于1988年,专门负责为CD建立视频和音频标准,而成员都是为视频、音频及系统领域的技术专家。及后,他们成功将声音和影像的记录脱离了传统的模拟方式,建立了ISO/IEC1172压缩编码标准,并制定出MPEG-格式,令视听传播方面进入了数码化时代。因此,大家现时泛指的MPEG-X版本,就是由ISO(International Organization for Standardization)所制定而发布的视频、音频、数据的压缩标准。
      MPEG标准的视频压缩编码技术主要利用了具有运动补偿的帧间压缩编码技术以减小时间冗余度,利用DCT技术以减小图像的空间冗余度,利用熵编码则在信息表示方面减小了统计冗余度。这几种技术的综合运用,大大增强了压缩性能。
      我们熟知的MP3格式的音频文件,就是MPEG-1 layer3的缩写。

     10. Experimental
      称为实验性音频。专门用来作音频信号处理的研究开发工作,主要包括优化压缩算法提高压缩效率的工作。这种类型的压缩码流基本不被主流解码器支持,只在一些音频专家和发烧友的实验室里能够流畅的播放出来。

     Compression code信息在WAV文件字段的第21、22个byte,通过十六进制查看器我们可以看到一个WAV文件的压缩码类型。对应关系如下表:

    Code    Description 
    0 (0x0000) Unknown 
    1 (0x0001) PCM/uncompressed 
    2 (0x0002) Microsoft ADPCM 
    6 (0x0006) ITU G.711 a-law 
    7 (0x0007) ITU G.711 µ-law 
    17 (0x0011) IMA ADPCM 
    20 (0x0016) ITU G.723 ADPCM (Yamaha) 
    49 (0x0031) GSM 6.10 
    64 (0x0040) ITU G.721 ADPCM 
    80 (0x0050) MPEG 
    65,536 (0xFFFF) Experimental

    参考资料:
    [1]. Microsoft WAV datasheet
    [2]. Microsoft ADPCM wiki
    http://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM
    [3]. ITU reference literature
    [4]. http://www.wikipedia.org/
    [5]. http://baike.baidu.com/
    [6]. Microsoft ADPCM编码解码算法实现
    http://topic.csdn.net/u/20080407/15/aa98f445-9376-42a4-9d18-8181b206c6f0.html

  • 相关阅读:
    Could A New Linux Base For Tablets/Smartphones Succeed In 2017?
    使用libhybris,glibc和bionic共存时的TLS冲突的问题
    6 Open Source Mobile OS Alternatives To Android in 2018
    Using MultiROM
    GPU drivers are written by the GPU IP vendors and they only provide Android drivers
    Jolla Brings Wayland Atop Android GPU Drivers
    How to Use Libhybris and Android GPU Libraries with Mer (Linux) on the Cubieboard
    闲聊Libhybris
    【ARM-Linux开发】wayland和weston的介绍
    Wayland and X.org problem : Why not following the Android Solution ?
  • 原文地址:https://www.cnblogs.com/GoodGoodWorkDayDayUp/p/2622112.html
Copyright © 2011-2022 走看看