自适应码本(adaptive codebook - ACB)通常用在类CELP语音编解码器的内部,用于减少语音信号的长期冗余(Long Term Redundancy)。
但是自适应码本是基于开发帧间(inter-frame)相关性的算法组件。一旦丢包,发送端和接收端没有同步。被丢弃的包就会对相邻包的解码产生影响。故最简单办法:
1. 限制编码器端的ACB的自适应长度。使用简短的重置。
2. 解码器和编码器在丢包后及时进行同步。
在这点上,ILBC做的比较好,他没有使用ACB,而是用帧独立码本进行压缩。但是有论文认为ILBC在每帧20ms、15.2kbps码率或是30ms、13.33kbps码率下的音质和G.729A在10ms、8kbps码率下的音质差不多(在不发生丢包和出错的前提下)。我没有经过测试,只能对这个结果表示怀疑。不能一概而论。
但是在码率和特定环境下丢包率没有总结规律的前提下。
很难判定音质,码率,丢包,帧间相关性是否开发这四者的关系。
但从实际应用情况看,ILBC的抗丢包貌似好些。(经验数据,根据GIPS的codec结果)
试想,在没有丢包的前提下哦,有帧间相关性应尽量开发,以提高压缩效率。但是,如果发生丢包,在一定丢包率下,帧间相关性就变的不可预测,因为有相关性的包可能丢掉,那么帧间开发就是双刃剑。而同时,因为帧间开发的存在,同音质下,码率降低,会不会对丢包率产生影响?
所以,对以上假设和疑问,应该结合实际情况探索以下问题,
1.特定环境下丢包率和码率有多大关系。
2.合理应用帧间相关性,而不是一概而论并结合当时网络状态。