【技术实现步骤摘要】
一种语音丢包补偿的方法及系统
本专利技术涉及通信
,尤其涉及一种语音丢包补偿的方法及系统。
技术介绍
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所示),其中基音周期检测只是在发现丢包后的第一 ...
【技术保护点】
一种语音丢包补偿的方法,其特征在于,所述方法包括:当第一次发现丢失语音包时,根据丢失语音包之前的历史语音数据,生成第一语音序列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依次合成...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。