一种语音丢包补偿的方法及系统技术方案

技术编号:15517847 阅读:136 留言:0更新日期:2017-06-04 08:17
本发明专利技术提供了一种语音丢包补偿的方法及系统,该方法包括:当第一次发现丢失语音包时,根据丢失语音包之前的历史语音数据,生成第一语音序列vec1;若能够获取丢失语音包之后的下一包语音数据,则根据丢失语音包之后的下一包语音数据,生成第二语音序列vec2,根据第一语音序列vecl和所述第二语音序列vec2进行丢包补偿,以提高合成语音质量;若不能获取丢失包的下一个语音包时,则仅利用第一语音序列vecl进行丢包补偿。

【技术实现步骤摘要】
一种语音丢包补偿的方法及系统
本专利技术涉及通信
,尤其涉及一种语音丢包补偿的方法及系统。
技术介绍
Voice-over-IP(VoIP,一种由IP网络传送话音的技术服务)使用IP网络对打包后的语音数据进行传输。由于IP网络分布广泛,VoIP电话费用低廉,可实现多媒体通信、语音与数据的整合,因此近些年来VoIP发展迅猛,正有逐步替代传统电路交换网络(如PSTN-公共服务电话网络)的趋势。鉴于目前IP网络主要用于传输数据业务,其采用一种尽力而为的无连接传输技术,由此没有相应的服务质量保证。当网络出现拥塞时,会导致在接收端有包丢失和延迟抖动的问题出现,这将严重影响接收端的语音质量。因此在VoIP系统的接收端,一般采用丢包补偿技术来重建丢失的语音包,应用抗网络延迟抖动技术消除延迟抖动带来的不良影响。PLC(PacketLossConcealment,丢包补偿)算法的目的是为了产生能够替代丢失的语音的合成语音,理想的合成语音应该具有与丢失语音相同的音色和频谱特性。因此最为常用的方法就是利用丢失语音数据前的历史数据产生合理的近似语音。如果丢失的数据长度不是太长,并且丢失语音段不位于语音快速变化的区域,经过PLC算法补偿后的语音听起来还是比较自然的。现有的一些标准中提出的基于接收端的PLC技术有ANSITI.521(AnnexB),ITU-TRec.G.711(AppendixI),ITU-TRec.G.722(AppendixIII)等等。上面提及的标准中几种PLC算法的共性就是基音检测和合成语音两个部分(如图1所示),其中基音周期检测只是在发现丢包后的第一次丢包补偿时进行,如果连续做丢包补偿时则用第一次检测出的基音周期。由于检测基音周期的运算复杂度较高,因此一般都会分两步实现:首先对降采样后的历史数据(原始信号或残差信号)进行基音周期粗估,再在粗估出的基音周期附近细搜出更加精确的基音周期。之后按此长度合成出与原始语音近似的一帧语音,并且要在真实语音数据与合成的语音数据之间或合成语音与合成语音之间要做平滑过渡以免产生尖锐的噪声,同时在连续丢包的时候要通过能量递减的方式来减少后帧语音与前帧语音的相关性。现有的PLC方法均仅利用丢失包前的历史数据来补偿丢失语音包数据,这样不能达到补偿效果的最优,尤其是在基音到基音的转折处,补偿的效果不太理想。
技术实现思路
鉴于上述技术问题,本专利技术提供一种语音丢包补偿的方法及系统,解决现有技术中语音丢包补偿的补偿效果不理想的问题。依据本专利技术的一个方面,提供了一种语音丢包补偿的方法,所述方法包括:第一次发现丢失语音包时(即第一次做丢包补偿时),根据丢失语音包之前的历史语音数据,生成第一语音序列vec1;若能够获取丢失语音包之后的下一包语音数据,则根据丢失语音包之后的下一包语音数据,生成第二语音序列vec2;根据所述第一语音序列vecl和所述第二语音序列vec2进行丢包补偿。可选地,若不能获取所述下一包语音数据,所述方法还包括:根据所述第一语音序列vecl进行丢包补偿。可选地,所述根据丢失语音包之前的历史语音数据,生成第一语音序列,具体包括:对所述历史语音数据进行基音粗估,得到基音粗估结果;根据所述基音粗估结果,进行基音细搜索,确定出第一基音周期Lag1;根据所述第一基音周期Lag1从所述历史语音数据生成所述第一语音序列vecl。可选地,所述根据丢失语音包之后的下一包语音数据,生成第二语音序列vec2,具体为:从丢失语音包之后的下一包语音数据中找出一个与所述第一语音序列vecl相位对齐的第二语音序列vec2。可选地,所述从丢失语音包之后的下一包语音数据中找出一个与所述第一语音序列vecl相位对齐的第二语音序列vec2,具体包括:根据所述第一基音周期Lag1,在所述下一包语音数据中进行基音细搜索,确定出下一包语音数据的第二基音周期Lag2;在所述下一包语音数据中找出与所述第一语音序列vecl相关性最强的位置;根据所述相关性最强的位置和第二基音周期Lag2,从所述下一包语音数据中确定出所述第二语音序列vec2。可选地,在根据所述第一语音序列vecl和所述第二语音序列vec2进行丢包补偿之前,所述方法还包括:计算出所述第一语音序列vecl和所述第二语音序列vec2的归一化互相关值;比较所述归一化互相关值与设定的门限值;若所述归一化互相关值大于所述设定的门限值,则进入根据所述第一语音序列vecl和所述第二语音序列vec2进行丢包补偿的步骤;若所述归一化互相关值小于或等于所述设定的门限值,则进入根据所述第一语音序列vecl进行丢包补偿的步骤。可选地,所述根据所述第一语音序列vecl和所述第二语音序列vec2进行丢包补偿,具体包括:根据所述第一语音序列vec1和所述第二语音序列vec2,计算要填充的基音数据的个数;根据所述填充的基音数据的个数,计算要填充的各个基音数据的长度;对所述第一语音序列vec1和所述第二语音序列vec2分别进行平滑处理;根据所述各个基音数据的长度,对平滑后的第一语音序列vec1和第二语音序列vec2合成一个基音周期长度的语音序列。可选地,所述第一语音序列vec1和所述第二语音序列vec2,计算要填充的基音数据的个数,具体包括:根据丢失语音包的长度d、所述第一语音序列vec1和所述第二语音序列vec2相位对齐后确定的长度rd、所述第一基音周期Lag1和第二基音周期Lag2,采用如下公式计算要填充的基音数据的个数numPitch;numPitch=(rd+(avgLag/2))/avgLag,其中avgLag表示平均基音周期长度,avgLag=(Lag1+Lag2)/2。可选地,所述根据所述第一语音序列vecl和所述第二语音序列vec2进行丢包补偿,还包括:计算用numPitch个基音长度为avgLag的数据进行填充的长度与实际要填充长度的差值与平均基音周期长度avgLag的比值;根据所述比值判断是否存在基音加倍;若是,则根据校正的基音长度重新生成第二语音序列vec2;若否,则根据所述填充的基音数据的个数,计算要填充的各个基音数据的长度。可选地,所述根据所述各个基音数据的长度,利用平滑后的第一语音序列vec1和第二语音序列vec2合成一个基音周期长度的语音序列,具体包括:根据待合成语音的位置分别与所述第一语音序列vec1和所述第二语音序列vec2的距离关系,确定合成时所述第一语音序列vec1的权重w1和所述第二语音序列vec2的权重w2;根据所述第一语音序列vec1和其权重w1,以及所述第二语音序列vec2和其权重w2,利用平滑后的语音序列vec1和vec2合成得到一个基音周期长度的语音序列,若填充此合成的一个基音周期长度语音序列后,丢失的数据包还未到达,则只需要再次利用平滑后的第一语音序列vec1和第二语音序列vec2依次合成得其它的语音序列,每次合成一个基音周期长的数据后都会去检查丢失的数据包是否到达,若是则进行平滑衔接,若否则继续用上述方法补偿。依据本专利技术的另一个方面,还提供了一种语音丢包补偿的系统,所述系统包括:第一语音序列模块,用于当第一次发现丢失语音包时,根据丢失语音包之前的历史语音数据,生成第一语音序列vec1;第二语音序列模本文档来自技高网
...
一种语音丢包补偿的方法及系统

【技术保护点】
一种语音丢包补偿的方法,其特征在于,所述方法包括:当第一次发现丢失语音包时,根据丢失语音包之前的历史语音数据,生成第一语音序列vec1;若能够获取丢失语音包之后的下一包语音数据,则根据丢失语音包之后的下一包语音数据,生成第二语音序列vec2;根据所述第一语音序列vecl和所述第二语音序列vec2进行丢包补偿。

【技术特征摘要】
1.一种语音丢包补偿的方法,其特征在于,所述方法包括:当第一次发现丢失语音包时,根据丢失语音包之前的历史语音数据,生成第一语音序列vec1;若能够获取丢失语音包之后的下一包语音数据,则根据丢失语音包之后的下一包语音数据,生成第二语音序列vec2;根据所述第一语音序列vecl和所述第二语音序列vec2进行丢包补偿。2.根据权利要求1所述的方法,其特征在于,若不能获取所述下一包语音数据,所述方法还包括:根据所述第一语音序列vecl进行丢包补偿。3.根据权利要求1所述的方法,其特征在于,所述根据丢失语音包之前的历史语音数据,生成第一语音序列,具体包括:对所述历史语音数据进行基音粗估,得到基音粗估结果;根据所述基音粗估结果,进行基音细搜索,确定出第一基音周期Lag1;根据所述第一基音周期Lag1从所述历史语音数据生成所述第一语音序列vecl。4.根据权利要求1所述的方法,其特征在于,所述根据丢失语音包之后的下一包语音数据,生成第二语音序列vec2,具体为:从丢失语音包之后的下一包语音数据中找出一个与所述第一语音序列vecl相位对齐的第二语音序列vec2。5.根据权利要求4所述的方法,其特征在于,所述从丢失语音包之后的下一包语音数据中找出一个与所述第一语音序列vecl相位对齐的第二语音序列vec2,具体包括:根据所述第一基音周期Lag1,在所述下一包语音数据中进行基音细搜索,确定出所述下一包语音数据的第二基音周期Lag2;在所述下一包语音数据中找出与所述第一语音序列vecl相关性最强的位置;根据所述相关性最强的位置和第二基音周期Lag2,从所述下一包语音数据中确定出所述第二语音序列vec2。6.根据权利要求5所述的方法,其特征在于,在根据所述第一语音序列vecl和所述第二语音序列vec2进行丢包补偿之前,所述方法还包括:计算出所述第一语音序列vecl和所述第二语音序列vec2的归一化互相关值;比较所述归一化互相关值与设定的门限值;若所述归一化互相关值大于所述设定的门限值,则进入根据所述第一语音序列vecl和所述第二语音序列vec2进行丢包补偿的步骤;若所述归一化互相关值小于或等于所述设定的门限值,则进入根据所述第一语音序列vecl进行丢包补偿的步骤。7.根据权利要求6所述的方法,其特征在于,所述根据所述第一语音序列vecl和所述第二语音序列vec2进行丢包补偿,具体包括:根据所述第一语音序列vec1和所述第二语音序列vec2,计算要填充的基音数据的个数;根据所述填充的基音数据的个数,计算要填充的各个基音数据的长度;对所述第一语音序列vec1和所述第二语音序列vec2分别进行平滑处理;根据所述各个基音数据的长度,利用平滑后的第一语音序列vec1和第二语音序列vec2合成一个基音周期长度的语音序列。8.根据权利要求7所述的方法,其特征在于,所述根据所述第一语音序列vec1和所述第二语音序列vec2,计算要填充的基音数据的个数,具体包括:根据丢失语音包的长度d、在所述第一语音序列vec1和所述第二语音序列vec2相位对齐后确定的长度rd、所述第一基音周期Lag1和第二基音周期Lag2,采用如下公式计算要填充的基音数据的个数numPitch;numPitch=(rd+(avgLag/2))/avgLag,其中avgLag表示平均基音周期长度,avgLag=(Lag1+Lag2)/2。9.根据权利要求8所述的方法,其特征在于,所述根据所述第一语音序列vecl和所述第二语音序列vec2进行丢包补偿,还包括:计算用numPitch个基音周期长度为avgLag的数据进行填充后的长度与实际要填充长度的差值与平均基音周期长度avgLag的比值;根据所述比值判断是否存在基音加倍;若是,则要根据校正过的基音重新生成第二语音序列vec2;若否,则根据所述填充的基音数据的个数,计算要填充的各个基音数据的长度。10.根据权利要求8所述的方法,其特征在于,所述根据所述各个基音数据的长度,利用平滑后的第一语音序列vec1和第二语音序列vec2合成一个基音周期长度的语音序列,具体包括:根据待合成语音的位置分别与所述第一语音序列vec1和所述第二语音序列vec2的距离关系,确定合成时所述第一语音序列vec1的权重w1和所述第二语音序列vec2的权重w2;根据所述第一语音序列vec1和其权重w1,以及所述第二语音序列vec2和其权重w2,对平滑后的第一语音序列vec1和第二语音序列vec2合成得到一个基音周期长度的语音序列,其中若填充此合成的一个基音周期长度语音序列后,丢失的语音数据包还未到达,则只需要再次利用平滑后的第一语音序列vec1和第二语音序列vec2依次合成...

【专利技术属性】
技术研发人员:邹莹
申请(专利权)人:电信科学技术研究院
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1