继续学习iLBC Codec ...
一、iLBC解码器的流程
如图1是没有丢帧情况下的iLBC解码流程,当解码端收到Payload时,首先从bitstream里面解析出解码所需要的参数。这里的解码参数从LPC开始,然后是重建起始状态,接下来的sub frame重建与编码时的顺序一致,通过解码三级形状/增益矢量并且相乘再叠加在一起就得到了重建的残差信号。然后进入语音增强模块,提高语音信号的周期性,最后再经过合成滤波以及后处理模块得到解码语音。如果发生丢包,那么步骤1到5需要采用丢包补偿模块进行处理,关于丢包补偿(PLC)内容较多,以后再详细说明。

1、从bitstream中提取解码参数;
2、解码LPC系数,并且通过内插得到各个子帧的相应LPC系数,这个步骤比较直接,在各个speech codec的实现都基本相似;
3、重建57/58个样点的起始状态矢量。首先通过查找表解码DPCM样点,然后将解码的Scalar恢复矢量的功率,接下来通过时间反转和全通滤波得到57/58的起始状态矢量。剩下的23/22个样点矢量通过起始状态矢量构成的动态码书和相应的索引号进行解码重建。
4、利用已经解码的残差信号样点建立Codebook Memory,按照编码的顺序依次解码各个子帧,需要注意的是解码在起始状态之前的矢量时,需要对残差信号和目标矢量进行时间反转。
5、通过(gain[0]*cbvec[0]+gain[1]*cbvec[1]+gain[2]*cbvec[2]) ,重复步骤4、5重建所有的子帧。
6、语音增强模块。通过放大语音周期性使语音质量达到最佳化。
7、残差信

本文深入探讨iLBC解码器的流程,包括从bitstream中提取解码参数、解码LPC系数、重建起始状态、语音增强模块及合成滤波等步骤。着重介绍了解码器在丢包情况下的处理策略,以及iLBC解码器的低延时、高抗丢包性能和语音质量优化特点。同时提到了iLBC解码器的丢包补偿和语音增强模块作为后续学习的重点。
最低0.47元/天 解锁文章
156

被折叠的 条评论
为什么被折叠?



