深入剖析iLBC的丢包补偿技术(PLC)
来源:互联网 发布:dota淘宝交易 编辑:程序博客网 时间:2024/05/17 04:42
丢包补偿技术(Packet Loss Concealment——PLC)是iLBC Codec中非常重要的一项技术,更是VOIP Codec应用中不可缺少的组成部分。iLBC的PLC只是在解码端进行封包补偿处理。在解码端根据收到的bitstream逐帧进行解码的过程中,iLBC decoder首先拿到每帧的 bitstream 要判断当前帧是否完整,如果没有问题则按照正常的iLBC 解码流程重建语音信号,见《深入剖析iLBC 解码器原理》;如果发生了语音封包丢失,那么就进入PLC单元进行处理。PLC主要根据前一帧的解码信息,利用基音同步重复的方法近似替代当前的丢失帧,以达到丢包补偿。
一、PLC unit 的几种情形
1、过去帧、当前帧都接收正确
进入正常的iLBC decoder解码流程,需要保存当前帧的状态信息,这些状态信息包括LPC信息、解码后的残差信号等。如果下一帧的比特率丢失的话,就要用到这些保存的信息。
2、仅当帧发生丢包
如果当前帧没有丢失,那么进入PLC unit重建LPC系数和残差信号。后面会详细介绍LPC和残差信号的补偿方法。
3、连续多帧发生丢包
如果发生连续多帧丢包,那么就需要多次进入PLC unit,并且需要利用经过补偿的帧状态信息。值得注意的是,越靠后面丢失的帧越难以精确的重建,所以对连续丢包的增益采用逐帧递减,以避免引入更大的信号失真。
4、过去帧经过PLC处理,需要与当前帧平滑处理
为了使经过PLC补偿的帧与接下来没有丢包的帧保持语音连续而需要进行平滑,主要根据前后帧的相关性处理。
二、PLC重建LPC系数
iLBC 的PLC对于丢失LPC的补偿是采用了过去帧的最后一个子帧的LPC系数来简单的重建。这个方法是显然的,因为无论从空间上还是时间上最后一个子帧都与当前丢失的LPC具有最大相关性。但是这种简单的复制当处理连续多帧时也显然会引入更大的失真。
三、PLC重建残差信号
激励信号(残差信号)通常可以分为两部分组成:准周期成分和类噪声成分。因此PLC实际上首先需要重建这两个部分,准周期成分可以根据测量前一帧的基音周期来近似得到,类噪声成分则可以通过产生随机噪声得到,二者的能量比例也可以借鉴前一帧的比例关系。所以首先要对前一帧进行基音检测,然后以基音同步的方式重建丢失帧的话音部分,然后利用相关性得到类噪声的增益,最后进行混合以重建整个残差信号。
在连续丢帧的情况下,为了减少各个补偿帧之间的相关性,会将能量进行逐帧递减,但依然会产生一定的听觉噪声。如果采用内插的方法,虽然可能音质会好些,但是却会引入更大的延时。
四、iLBC PLC的缺点
在连续丢帧的情况下,PLC所补偿的各个语音帧具有相同的频谱特性(相同的LPC造成)和基音频率,非常容易引入一种可察觉的噪声,尤其是当基音频率较高的时候,这种因为过分的周期性所引起的。通过适当的内插可以缓解这一问题,但往往引入更大的延时。
参考资料:
1、IETF:RFC3951.txt
2、潘搏胜《iLBC解码程序进阶处理之研究》
一家之言,欢迎讨论!
- 深入剖析iLBC的丢包补偿技术(PLC)
- 深入剖析iLBC的语音增强(Enhancer)
- 丢包补偿技术调查
- 深入剖析 iLBC 编码器原理
- 深入剖析iLBC 解码器原理
- 深入剖析 iLBC 编码器原理
- 深入剖析iLBC 解码器原理
- iLBC 技术点
- 什么是高端PLC?高端PLC技术的发展动力
- PLC技术
- 样点自适应补偿(SAO)技术
- 关于BSP技术的深入剖析与详解
- 液晶电视的MEMC(运动画质补偿技术)的优势不足
- iLBC
- plc (数据丢失隐藏技术)
- x264运动补偿技术
- RunLoop的深入剖析
- g723源码详细分析-18-丢包补偿
- 去除DataGrid中无用的ViewState数据的方法
- Linux环境进程间通信(一)
- ASP.NET - CatalogZone Web 服务器控件概述
- ORACLE实例的后台进程
- 【转】Oracle服务器的常用命令行详细讲解
- 深入剖析iLBC的丢包补偿技术(PLC)
- 老虎的屁股摸不得,宝宝的屁屁一样碰不得!
- Smart Device Framework ( SDF )类库
- Limit the current thread to one processor
- 初识加密算法
- 关于javascript控制Windows Media Player
- inux下安装新硬盘并加载使用手记
- 很多日本鬼子
- Linux netfilter源码分析(1)