语音实时传输中的丢包恢复方法(转载)

来源:互联网 发布:php网站源代码下载 编辑:程序博客网 时间:2024/05/17 09:17
因为视讯项目的原因,近来主要精力都放在多路混音和回声消除上。当然这些都是和语音质量有莫大的关系,在一定意义上,语音质量比视频质量或语音/视频同步更加重要,因为其承载的语义较之视频信息更短暂和直接,也要求更强的连续性,一旦其质量受到影响必然对语义的传达产生更大的影响。
    在实时的视频会议系统中,影响音质的因素主要是本地环境和
网络传输。本地环境主要由语音处理设备造成,这些可由用户在终端自行解决。网络传输造成音质下降的原因主要是时延、静电干扰和包丢失,其中,包丢失是音质下降的最主要原因。尽管协议低层有纠错编码,但只能解决包内误码,无法解决丢包问题。此外,由于实时语音业务有严格的延时限制,长时间的延迟是不能忍受的。分组延迟超过一个极限也将被视为丢失。关于丢包的恢复在一些资料都有提及,这里略将之总结罗列。在解决了多路混音和回声消除以后,丢包处理能力将需要一个整体的提升,这也是下一步将需要做的。语音实时传输中的丢包恢复技术按照连接关系可以划分为两个大类:基于发送端的修复和基于接收端的修复。

一、基于发送端的修复技术
    基于发送端的丢包恢复由发送端发起,并需要发送端和接收端协同进行。

    1、增加冗余度
    最简单的方法,是让每个数据包除了自身数据之外还包含前k个包的数据备份。为了尽量降低冗余度,当前分组所包含的前k个分组的冗余数据可以用一个码率更低的编码器产生。增加数据的冗余度可以提高系统的容错能力,但是同时增加了带宽。这种方式与语音编码方式无关,只是在分组时针对这些语音数据作了冗余数据备份。 

    2、分类处理
    为了在收端更好地采用波形替换技术,发端可以根据语音信号的特性分类处理,具体做法是对于浊音信号先估算其基音周期L,然后把两段长度为L的波形封装到一个分组内。对于非浊音信号(包括清音、噪声和静音)则全部封装到一个分组内。即用小数据包传送浊音信号,用大数据包传送其它信号。这种方式与语音编码方式有关,主要对语音的内容分类,区分有用信息和无用信息,然后对这些信息分别编码,分组采用自适应策略;一旦分组丢失,接收端可根据收到的分组来推测丢失的分组所含信号的类型并采取相应的策略。

    3、前向纠错
    信道编码用前向纠错(FEC)码来恢复在传输中发生差错的比特,现在人们把FEC应用到语音分组传输中来恢复丢失的数据分组,有多种FEC码可用于此目的。最简单的是奇偶校验码,其基本原理是为每k个信息分组加入一个奇偶校验分组,奇偶校验分组的数据由k个信息分组的相应比特的校验比特组成。这种方式与具体的语音编码方式无关,主要在分组时增加对分组的校验位信息。

    4、交织
    当语音信号发生大段的突发缺失,各种差错掩盖方法的效果就会大大降低,许多方法甚至无法工作,而突发的连续丢包是在Intemet上遇到的典型现象。为了最大限度地发挥这些差错掩盖技术,可以采用交织技术打乱数据的发送顺序,把大段的突发连续语音丢失转化为随机的小段丢失。这种方式与具体的语音编码方式无关,也与分组的编码方式无关,主要是对编码后的数据重新组织,但采用交织方法会给系统带来很大的时延。

    5、优先级设置
    优先级设置方法是指发端依据某个准则为不同的语音分组设置不同的优先级,如依据语音的能量、与前一个分组的相似度、语音信号的平稳特性或者当前分组能否用前一个分组较好地预测等。当网络发生阻塞时,网络保留高优先级的分组,丢弃低优先级的分组。这种方式与语音的编码方式有关,因为需要了解语音信息的优先级,这种技术需要网络支持并按优先级传输分组,否则无法实现。

二、基于接收端的修复技术
    基于收端的修复技术不需要发端的参与,本质上是对接收到的数据通过一系列的方法来估计丢失的数据,并根据人的生理特点进行优化,基本上是一种被动的修补,通常比较容易实现且不增加带宽需求。

    1、插入方式
    插人是指用固定的波形来填补缺口,这种固定的波形与缺口处的实际波形是不相关的。这类技术包括接合、静音和噪声替代等方法。接合技术是最简单的方法,它会扰乱系统的定时关系,对听觉效果的改善也不大。静音替代的适用范围非常有限,当数据包的丢失频率很低(小于2%)且缺口宽度小于4 ms时,这种方法比较有效;当缺口宽度达40 ms时,其效果会让人无法接受。与静音替代相比,噪声替代可给人带来更好的主观听觉感受,同时能改善语音信号的可分辨性。当采用背景噪声而不是静音的时候,人脑能下意识地用正确的声音来修补语音信号中丢失的部分。插人方式与语音编码无关,也与分组的编码无关,只是对解码后丢失的语音进行处理。

    2、插值
    与插人技术相比,插值技术对缺口处的实际波形做了估计,并试图用与其相似的波形来修补波形缺口,这使得处理得到的声音能给人带来相对更好的主观感受。目前属于插值方法的有波形替代和时域修正两种技术。

    (1)波形替代
    其原理是在缺口前面(或后面)的波形中寻找出和缺口处波形相似的一段信号并对其加工用来填补缺口。执行一般由两个步骤构成,第一步是储存最新重建的信号波形,第二步是对所存储的波形进行分析,从中提取一段波形并加以改造用来替代缺口处原有的波形。这类技术常用重复、模式匹配、基音波形复制三种实现方式。基音波形复制是通过峰值检测来计算基音周期T并判断语音信号是清音还是浊音。对于清音,它简单地采用重复技术来填补波形缺口;对于浊音,它用缺口位置之前长度为T的一段波形通过重复来填补波形缺口。其效果最好,但是实现较复杂。模式匹配从存储的缺口左侧的重建波形中按某种匹配原则进行搜索,找到一段最佳匹配波
形,对它进行必要的修饰之后用来填补重建波形的缺口。它也可以同时从缺口两侧的重建波形中各找出一段最佳匹配波形,对它们进行加权合并,用来填补缺口。双侧搜索比单侧搜索的听觉效果好,但是它的代价是引入了很长的时延。其效果次于基音复制方式,但实现较简单。重复方式用缺口前面最近的波彤来替代缺口处的实际波形。效果最差,但实现简单。波形替代技术可使得填补缺口的波形与其前后的波形间的过渡比较平滑,但在缺口边界,波形的相位存在突变。这种方式对解码后的语音信息的修补,与具体的语音编码和分组编码无关。

    (2)时域修正
    这种技术采用缺口两侧的波形向缺口方向延展的方式来填补缺口。该方法计算量很大,但是由于它能够避免边界的相位不连续现象,听觉效果优于波形替代法。该种方法也同样也是一种对解码后的语音信号进行处理的技术,与具体的语音编码和分组编码无关。

    无论是基于发送端还是基于接收端的修复技术,针对丢包恢复的要求,上述这些技术在设计时,一般的出发点有:
    ①针对语音本身。考虑的方面主要是分析和区分语音本身的不同内容,如:浊音,噪音,背景音等,对这些内容分别编码传输。
    ②针对分组。通过对分组增加冗余信息和校验信息来获取容错能力,但会引起带宽的增加;
    ③针对比特位。这里主要指交织技术,它是对编码结果的再处理;
    ④针对语音复原后的信号。基于收端的技术都采用这种原理来设计;

    各种技术只在语音、分组、传输和语音复原阶段采取了措施,而通常在发端采取的措施比在收端采取的措施有效,或者说发端采取的措施将直接影响收端对数据复原的效果,因此为了最大化丢包后数据的复原效果,应重点在发端采取措施,使收端在不增加带宽的情况下,当丢包情况发生时,尽量减少对数据的影响。一般来说,采用基于发端修复的效果比基于收端的技术好,但是技术复杂,一般会增加网络的带宽和传输延迟,收端的技术简单,取得的效果更适于人的听觉生理特点。若能够综合考虑发端和收端过程中的不同阶段的特点,既能取得好的修复效果,又能用简单的方式实现,将是今后丢包恢复技术研究的一个重要方向。

原创粉丝点击