zoukankan      html  css  js  c++  java
  • 语音编解码器 1

    摘自本人总结的一片文档

    为使VoIP能够可靠的进行语音通信,必须保证在一定话音质量的前提下尽可能地降低编码速率,这主要是依赖语音编码技术。在目前VoIP中常用的语音编码算法主要有以下几类:基于波形编码的算法;基于CELP模型的混合编码算法;以及GIPS公司自己提出的4种语音编码算法。

    2.1.1    采用波形编码的编码器

    波形编解码器基本上不考虑信号是如何产生的,而直接将输入的模拟信号抽样编码,然后将量化后的样值传送到终端,在终端原始信号被重组到与原信号大致接近的程度。因此波形编码方式是能够忠实地表现波形的编码方式。由于这类编码器通常将语音信号作为一般的波形信号来处理,所以它具有适应能力强、话音质量好、抗噪抗误码的能力强等特点。它最大的缺点是同其他的编解码器相比,它要使用大量的带宽,当波形编解码器用于低带宽时,话音质量下降得非常快。

    脉冲编码调制(PCM)、自适应增量调制(ADM或∆M编码)、自适应差分编码(ADPCM)、自适应预测编码(APC)、自适应子带编码(ASBC)、自适应变换编码(ATC)等都属于波形编码。

    2.1.1.1  G.711协议[4]

    G.711是在电路交换电话网中普遍使用的一种波形编解码算法。G.711以8kHz作为抽样频率,如果使用统一量化方式,话音中通用的信号层次的每一个样本就要12比特来表示,这就产生了96kb/s的比特速率,如果使用不统一的量化方式,表示一个样本只需要8比特。G.711通常被称为脉冲编码调制(PCM)。G.711提供了良好的语音质量,其MOS值都在4.3左右。

    2.1.1.2  G.726协议[4]

    G.726协议采用的是ADPCM语音编码算法,提供了64kb/sPCM码流至低速率ADPCM码流的转换。协议给出40kb/s,32kb/s,24kb/s和16kb/s四种比特率。其中,40kb/s信道主要用于在数字电路倍增设备(DCME)上传送数据调制解调器信号,特别用于4.8kb/s以上速率的调制解调器;24kb/s和16kb/s信道主要用作DEME语音传送的过载信道。G.726设计的主要用途仍然是传统的电路交换网,但是其低比特率方案也可用于VoIP。

    2.1.2    采用CELP模型编码的编码器

    由于波形编码速率过高,占用较多的带宽资源,1985年提出了码激励线性预测(CELP)。它在保留参数模型技术精华的基础上,应用波形编码准则优化激励信号,使其与输入语音波形匹配,同时还利用了矢量量化和感知加权技术,从而在较低的数码率上获得了较高的合成语音质量。基于CELP的语音编解码算法已经成为目前主流语音编码算法。较成功的语音编码方案都是基于CELP技术的,如G.723、G.728、G.729等[5]

    2.1.2.1  G.723协议

    G.723协议是一个双速率语音编码协议,其两种速率分别是5.3kb/s和6.3kb/s,较高比特率的输出基于ML-MLQ技术,提供某种程度上较高质量的音质;较低速率的输出基于CELP为系统设计人员提供了更大的灵活性。G.723.1协议的编解码算法中两种速率的编解码基本原理是一样的,只是激励信号的量化方法有差别。对高速率(6.3kb/s)编码器,其激励信号采用多脉冲最大似然量化(MP-MLQ)法进行量化,对低速率(5.3kb/s)编码器,其激励信号采用代数码激码线性预测(ACELP)法量化。

    2.1.2.2  G.728协议

    G.728协议采用的编码算法是LD-CELP,即低时延的码激励线性预测的算法。LD-CELP采用后向自适应预测器(Backward Adaptive Predictor)对短时谱和增益进行预测。LD-CELP编码器发送的只是激励矢量在码本中的地址标号,而解码端的滤波器参数和增益参数都是在解码端计算得来的。在大多数编码系统中,这类参数都是在编码端求,然后传输到解码端。

    2.1.2.3  G.729协议

    G.729协议是一个能在8kb/s速率上实现高质量语音编码的协议,它采用的是CS-ACELP即共轭结构算术码激励线性预测的算法。对输入的模拟语音信号用8KHz采样,16bit线性PCM量化。CS-ACELP以CELP编码模型为基础,它把语音分成帧,每帧10ms,也就是80个采样点。对于每一帧语音,编码器从中分析出CELP模型参数,其中包括线性预测系数,自适应码本和随机码本的索引值和增益,然后把这些参数编码并传送到解码端,在解码端,把收到的比特流恢复成参数编码,解码后得到各个参数,解码器利用这些参数构成激励源和合成滤波器,计算出合成语音,并用后置滤波器进一步增强音质,从而重现原始语音。

    G.729A是对G.729语音编码标准的简化,具有比G.729更低的复杂度,在DSP上实现时占用较少的资源。它的编解码算法结构和G.729的编解码算法结构一样,其比特流与G.729的比特流可以相互操作。

  • 相关阅读:
    RedisTemplate实现事物问题剖析和解决
    PO BO VO DTO POJO DAO概念及其作用(附转换图)
    Java 应用程序设计规范
    Java web url 规范
    Java 中 Map与JavaBean实体类之间的相互转化
    使用Java 8中的Stream
    [转]http://lua-users.org/wiki/LpegTutorial
    [转]LUA元表
    LPEG
    [转]LUA 学习笔记
  • 原文地址:https://www.cnblogs.com/c6000/p/1801955.html
Copyright © 2011-2022 走看看