编码:
iLBC的每frame/block保持独立编码,这样才能保证在丢包的情况下,保持良好的重建语音质量;而CELP模型的codec往往都需要look head buffer 才能对当前帧进行编码,这样虽然可以使重建语音连接比较平滑,但是在网络传输中一旦发生丢包,则连续性遭到破坏,解码语音的质量就会下降。
与传统的CELP模型的speech codec有较大不同,精髓在于帧内的独立编码,同时也利用了长时预测编码(LPC)去除冗余信息和语音信号本身准周期性的特征构造动态码书。与CELP模型codec相比,在丢包率较高的网络情况下,语音质量不会下降很快。
解码:
1、iLBC整个解码流程的复杂度是编码端复杂度的1/3~1/2;(参考网上定点iLBC代码在ARM9上的实现)
2、低延时,较强的抗丢包性能,即在丢包率较高的情况仍然保持较好的语音质量;
3、特有的丢包补偿(Packet Loss Concealment)模块和语音增强(enhancer)模块,这两部分是解码端最大的亮点;
PLC:
丢包补偿技术(Packet Loss Concealment——PLC)是iLBC Codec中非常重要的一项技术,更是VOIP Codec应用中不可缺少的组成部分。iLBC的PLC只是在解码端进行封包补偿处理。在解码端根据收到的bitstream逐帧进行解码的过程中,iLBC decoder首先拿到每帧的 bitstream 要判断当前帧是否完整,如果没有问题则按照正常的iLBC 解码流程重建语音信号,见《深入剖析iLBC
解码器原理》;如果发生了语音封包丢失,那么就进入PLC单元进行处理。PLC主要根据前一帧的解码信息,利用基音同步重复的方法近似替代当前的丢失帧,以达到丢包补偿。
Enhancer:
注:语音增强是指当语音信号被各种各样的噪声干扰、甚至淹没后,从噪声背景中提取有用的语音信号,抑制、降低噪声干扰的技术。一句话,从含噪语音中提取尽可能纯净的原始语音
iLBC Enhancer本质上找出当前未增强残差信号(sub-block)的前后各3个80样点的周期序列,然后利用这6个基音同步序列来改进当前sub-block的音质,如果当前sub-block是话音部分就适当增加它的周期性,使声音更加饱满;如果当前sub-block具有非周期的特性,那么就减少它的周期性,减少噪声的影响。