《电子技术应用》
您所在的位置:首页 > 通信与网络 > 业界动态 > ILBC编码算法及其在VOIP中的应用

ILBC编码算法及其在VOIP中的应用

2008-05-08
作者:郭廷廷, 李 敬

  摘 要: VOIP正在成为热门的应用领域,语音质量" title="语音质量">语音质量的提高是其难点之一。ILBC算法是一种基于CELP(Code Excited Linear Predictive Coding)的新的低比特率语音编码算法,其优异的语音质量、突出的长时预测方法[1]及丢包掩蔽[2](PLC)技术,很好地解决了互联网上传输语音的问题。详细探讨了ILBC的实现原理,对其关键技术进行了较深入的分析,给出了实验结论,并对其应用作了一些展望。
  关键词: ILBC(Internet Low Bit Vate Codec) VOIP(Voice Over IP) PLC 丢包掩蔽 动态码本


  随着互联网的迅速发展,人们对通过互联网进行实时语音、视频传输的要求越发强烈,VOIP正是在这一应用背景下诞生的一门新技术,它把数字语音编码技术与分组交换网相结合,提供实时语音及其相关服务,该技术要求占用尽可能小的网络带宽并拥有良好的语音质量。由于当前网络环境" title="网络环境">网络环境的特点,丢包现象不可避免,以往的低比特率编码标准虽然可以解决带宽问题,但丢包时语音质量不能保证。因而,需要新的语音编码算法来满足这一要求。
1 ILBC简介
  ILBC是由Global IP Sound公司提出的一种专为包交换网络通信设计的编解码" title="编解码">编解码,优于目前流行的G.729A、G.723.1,对丢包进行了特殊处理,既使在丢包率相当高的网络环境下,仍可获得非常清晰的语音效果。
  ILBC是一种适用于窄带网络的编码算法。根据网络带宽的不同,ILBC提供两种编码的格式,如表1。该算法使用了长时的预测技术和帧独立编码方法,使其非常适合在存在丢包的网络环境中传播。


2 ILBC算法的原理
2.1 ILBC编码

  ILBC本质上是一种基于帧的线性预测编码方法,是对CELP(码激励线性预测编码)的一种发展,其独有的动态码本更新技术、语音加强算法和丢包掩蔽技术使其在VOIP中应用时有更好的性能。对于每一个含有160/240(20ms/30ms) 样点的输入帧,ILBC算法将进行以下主要操作:
  (1) 把该帧分为4/6 个子帧,每子帧40个样点。对30ms的帧,进行两组10阶的LPC分析,得到相应的LPC系数;对于20ms的帧,进行一次10阶LPC分析。
  (2)每次分析得到的LPC系数将转化为LSF(线谱对)参数,并对LSF系数进行量化,内插以得到各个子帧的LSF系数;随后,由各子帧的LSF系数得到各子帧对应的分析器,对各个子帧进行线性预测,计算各子帧的残差。
  (3)从残差中找到两个能量最大的连续子帧,然后把能量值较小的首23/22个样点(30ms/20ms)或尾23/22样点从连续子帧中去除,剩余的57/58个被选定为本次处理的初始状态。对于浊音语音,这样的选取方式将至少包含一个基音脉冲。
  (4)对初始状态进行基于DPCM的标量量化,量化结果将作为编码输出的一部分。与此同时,初始状态被存入码本存储区,以构成动态码本的初始值,用于对本帧的剩余样点进行矢量量化" title="矢量量化">矢量量化。
  (5)对于剩余的残差,矢量量化将按下面顺序进行:(a)包含有初始状态的两个连续子帧中剩余的23/22个样点;(b) 时间轴上处于初始状态之后的各个子帧; (c)时间轴上在初始状态之前的各个子帧。对于此矢量量化,每次搜索码本的范围是动态码本,其中存储了已经被解码的对象,并随着最新的解码结果,该动态码本被更新。
  (6)对编码结果进行封包处理。
  ILBC的编码的框图如图1所示。


2.2 ILBC解码
  ILBC是一种运用了分析合成方法的编解码算法,解码部分的运算量相对要小一些,使其在功能不强的客户端的实时解码成为可能。
  解码的主要过程如下:
  (1)解包,参数提取。
  (2)从得到的LSF参数进行内插,并转化各个子帧的LPC系数,以便进行合成操作。
  (3) 对初始状态进行解码,解码结果一方面作为激励信号" title="激励信号">激励信号暂存,另一方面存入码本存储区,以构成动态码本的初始值。
  (4) 对剩余的子帧部分,按照与编码相同的次序进行残差解码,并用解码结果更新动态码本,重复(4)直到所有子帧完成译码。
  (5) 对于解码得到的残差信号,进行语音增强的操作。该语音增强采用了条件限制的增强方法。
  (6) 进行语音合成,形成解码后的语音。
  (7) 高通滤波,以消除合成后的低频语音。
  ILBC解码的流程图如图2所示。


2.3 ILBC的比特流定义
  对于20 ms的帧,共使用了304个比特来表示编码后的语音信号,被封装在38个字节中;对于30ms的帧,共使用了400个比特,封装在50个字节中。在封装的过程中,按照数据对传输误差的敏感程度不同,这些比特被分成三类,第一类代表了最敏感的数据[3]。表2 列出了ILBC编码的比特流分配情况。


3 ILBC的关键技术
  与以往的低比特率语音编解码算法相比,ILBC除了采用经典的线性预测分析法、LPC系数到LSF系数相互转换、分裂矢量量化LSF参数和多级形状-增益量化[4]残差外,主要有下面特殊的方法。
  (1) 基于初始状态的动态码本的选取和更新。
  ILBC利用了基于初始状态的动态码本的更新方法,把最新的解码结果加入码本,以取代较老的码矢。通过这种算法,可以较为方便地生成码本,同时也提供了很好的码本预测能力。
  (2) 帧间独立的长时预测方法,在此基础上的PLC(丢包掩蔽)技术。
  经典的CELP方法是利用以往的激励信号来对自适应码本进行更新的,这样的方法在分组交换网中有下面问题:
  ①如果过去的信号丢失或在传输过程中被污染,解码用的码本就会与编码时不同,将导致解码语音质量变差;
  ②在语音建立阶段,解码端的自适应码本并不能很好地描述基音周期,导致解码语音建立时间加长。
  ILBC采用了基于初始状态的解码方法,初始码本是从初始状态中得到的,通常都会包含至少一个基音脉冲,因而建立时间较快;同时,从初始状态出发,既有时间上前向的预测,也有向后的预测,因而体现了长时预测的概念,配合PLC技术,即使出现丢帧,解码语音质量也不会有明显下降。
  PLC技术的基本原则是:解码端若收到正确的帧,则计算出的LPC系数和激励码本被存储; 若丢帧,则使用上一个正确帧中的激励信号,利用基音同步重复的方法得到本帧解码信号。
  (3) 利用有条件限制的优化算法[3]加强残差语音。
  该算法的主要思想是对要加强的残差语音块,寻找其前3个块和后3个块,用这6个块的线性组合逼近当前待加强的块。计算待加强块和逼近块的均方误差。若误差足够小,就把逼近块作为加强块;否则,加强块为待加强块和逼近块的线性组合。


4 实验结果与性能评测
  图3是Dynstat公司在具有丢包情况的网络环境下对ILBC、G729.A、G723.1几种算法进行测试后的MOS(平均意见得分)对比图,可以看出ILBC编码的语音质量整体高于其余两种编码,尤其是当丢包率较高时,MOS得分远高于另外两种编码。
  为了对ILBC在丢帧时仍有良好语音质量做出解释,进行了以下实验:
  (1)在短时间内对有丢包时的解码片断做分析,如图4所示。实验得出,仅有一帧丢失时,语音的损坏基本上不会被听者察觉,当出现连续两帧以上丢失时,才会被察觉。在文献[2]中有ILBC与G.729.A的丢帧对比。


  (2)初始状态编码是ILBC中的关键步骤,应用了标量编码的方式。为使编码更有效,实现时,先用一个全通滤波器将残差的动态范围压缩,解码时再通过逆滤波恢复。图5是对某一帧语音的残差分析的结果,经过多帧测试发现,该技术使残差的动态范围减小了约1/3。
  由于实时传输的需要,算法的时间复杂度成为实际系统实现时重要的考虑因素,在PC机(Celeron 2.7G, 512M内存)上对用ANSI-C实现的ILBC浮点算法[1]进行运算量统计,可以得到表3的结果,可以得到①解码的复杂度较小,是一种非对称的编码方案;②编码部分码本搜索占用了最长的时间,成为算法优化时要考虑的关键部分。

 


  ILBC算法优异的语音质量及良好的丢包掩蔽技术,使其在VOIP中的应用前景非常广阔。2002年2月,ILBC是IETF 接受的关于语音/音频编解码的第一个标准。2004年4月在关于多媒体终端适配器和媒体网关分布的CableLabsPacketCable1.1 Audio/Video编解码规范中,被指定为强制的编解码算法。软件与系统方面, Skype、Hostip、Pandora Networks和Pingtel Instant都对该算法进行支持,DSP及专用集成电路方面,TI 已经推出相应的定点DSP实现方案,AudioCodes已有专用芯片支持。
  可以预计,不久的将来, ILBC将在VOIP中得到更加广泛的应用。
参考文献
1 Andersen S V. Internet low bit rate codec. IETF internet-draft, 2002
2 Andersen S V. ILBC- A linear predictive coder with robustness to packetlosses. Global IP Sound
3 Klein WB. Enhancement of coded speech by constrained optimization. In: proc IEEE Speech Coding Workshop, 2002,submitted for publication
4 杨行峻, 唐 昆. 语音信号数字处理. 北京:电子工业出版社,1995

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。