深入剖析iLBC的丢包补偿技术(PLC)
转自:http://blog.csdn.net/wanggp_2007/article/details/5136609
丢包补偿技术(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)的更多相关文章
- IP视频通信中的"丢包恢复技术”(LPR)
转自:http://blog.csdn.net/blade2001/article/details/9094709 在IP视频通话中,即使是在丢包率很小的情况下也会对使用效果造成较为明显的影响.正是由 ...
- IP通信中音频编解码技术与抗丢包技术概要
此文较长,建议收藏起来看. 一.一个典型的IP通信模型 二.Server2Server技术分类 Server2Server这块也是一个专门的领域,这里只简单分个类. 1.同一国家相同运营商之间: 同一 ...
- 无线路由器wds桥接技术+丢包率
半根毛线http://www.cnblogs.com/hsd-/ 今天下午鼓捣了一下无线路由的wds桥接 算是计算机网络的作业 码来分享一下 1.首先设置主路由 我的主路由是斐讯4线 路由ip为192 ...
- MTU-TCP/IP协议栈-linux kernel-TCP丢包重传-UDP高性能-AI-
http://view.inews.qq.com/a/20161025A0766200窄带时代的QQQQ是窄带时代极具代表性的产品,在那个网络传输效率比较低的年代,大家还记得Google的首页吗?Go ...
- Android IOS WebRTC 音视频开发总结(五五)-- 音视频通讯中的抗丢包与带宽自适应原理
本文主要分析webrtc中的抗丢包与带宽自适应原理,文章来自博客园RTC.Blacker,欢迎关注微信公众号blacker,更多详见www.rtc.help 文章内容主要来自中国电信北京研究院丁博士在 ...
- ping 丢包或不通时链路测试说明【转】
转自:https://help.aliyun.com/knowledge_detail/40573.html?spm=5176.2020520165.121.d157.4fe170291Qdp4l#W ...
- MTU-TCP/IP协议栈-linux kernel-TCP丢包重传-UDP高性能-AI- ip数据报 tcp数据报
1.IP协议首部 TCP报文段的首部 UDP分组结构 ip数据报 tcp数据报 UDP校验 w 报文长度该字段指定UDP报头和数据总共占用的长度.可能的最小长度是8字节,因为UDP报头已经占用了 ...
- Android之网络丢包事件
原文链接 http://www.litrin.net/2013/03/01/android%E4%B9%8B%E7%BD%91%E7%BB%9C%E4%B8%A2%E5%8C%85%E4%BA%8B% ...
- 2018最新mfc作为上位机接收硬件端USB或串口数据显示成图片 解决串口接收数据丢字节丢包问题
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9490616.html 本文用的是VS2013MFC写串口数据接收: 第一步:首先建立一个MFC ...
随机推荐
- C#时间转整型(时间戳),模仿php strtotime函数的部分功能
今天需要将一个基于MS SQL数据库的新闻系统数据导入phpcms v9,源系统新闻日期格式为"2014-01-15 10:45:49",而phpcms中使用的是整型时间戳,在ph ...
- Cannot load supported formats: Cannot run program "svn": CreateProcess error=2
svn CreateProcess error=2, 系统找不到指定的文件 IntelliJ IDEA 13.1.2安装后,SVN checkout时候会出现如下错误: Cannot load sup ...
- 【GoLang】golang 报管理工具 Godep 介绍
使用方法: 提交:cd ${GOPATH}/src/github.com/junneyang/xcloudgodep save -v ./...rm -rf vendor/git checkout - ...
- 常见的SQL语句
1.select decode(a.xh,'','0','1')||decode(b.xh,'','0','1') from A a left join B b on a.xh=b.xh where ...
- Java程序优化的一些最佳实践(转)
衡量程序的标准 衡量一个程序是否优质,可以从多个角度进行分析.其中,最常见的衡量标准是程序的时间复杂度.空间复杂度,以及代码的可读性.可扩展性.针对程序的时间复杂度和空间复杂度,想要优化程序代码,需要 ...
- Django ~module index
https://docs.djangoproject.com/en/1.9/py-modindex/ django.conf.urls django.contrib.admin django.db.m ...
- 【leetcode】Subsets (Medium) ☆
Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...
- cocos2d-x 第三篇 基本概念介绍
场景(scene): 也有人叫做屏幕或舞台,是一个独立的程序流,一个程序可以有很多场景但当前运行的场景就只有一个.比如游戏中可以有介绍场景,菜单场景,第一关场景,过场1场景,第二关场景,胜利场景等.一 ...
- 用fontAwesome代替网页icon小图标
1. 引言 网页小图标到处可见,如果一个网页都是干巴巴的文字和图片,而没有小图标,会显得非常简陋.下面的小图标,你是不是会经常用到? 你可能说——“我们用的都是彩色的,不是黑白的”——别着急,下面会讲 ...
- yii 自定义组件的调用
1,main.php 里面导入 'import' => array( 'application.components.*' ), 2,application/ ...