一种语音数据包的处理方法及装置转让专利

申请号 : CN201710272196.3

文献号 : CN108737349B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 程岳

申请人 : 大唐移动通信设备有限公司

摘要 :

本发明公开了一种语音数据包的处理方法及装置,确定接收到的第一语音数据包的数据包类型以及对应第一语音数据包类型的第一语音数据包头压缩报文的TS_STRIDE值,根据设定数量的第一语音数据包头压缩报文的TS_SCALED值,以及第一语音数据包头压缩报文的TS_STRIDE值,在设定数量范围内,依次确定第一语音数据包头压缩报文的时间戳TS值,直至确定出的TS值能够还原得到正确的第一语音数据包。即通过多次尝试确定正确的TS值,提高了根据确定出的TS值还原语音数据包的准确率。

权利要求 :

1.一种语音数据包的处理方法,其特征在于,包括:

确定接收到的第一语音数据包的数据包类型以及对应所述第一语音数据包类型的第一语音数据包头压缩报文的时间戳倍数TS_STRIDE值;

其中,数据包类型包括宽带语音数据包和窄带语音数据包,且宽带语音数据包头压缩报文的TS_STRIDE值和窄带语音数据包头压缩报文的TS_STRIDE值不同;

根据设定数量的第一语音数据包头压缩报文的时间戳比例TS_SCALED值,以及所述第一语音数据包头压缩报文的TS_STRIDE值,在所述设定数量范围内,依次确定所述第一语音数据包头压缩报文的时间戳TS值,直至确定出的TS值能够还原得到正确的第一语音数据包;

所述设定数量的第一语音数据包头压缩报文的TS_SCALED值采用如下方式确定:确定第二语音数据包头压缩报文的TS_SCALED值,所述第二语音数据包为在接收所述第一语音数据包之前接收并已正确还原出的语音数据包;

按照公式TS_SCALEDi=TS_SCALEDi-n+n+p,确定所述第一语音数据包头压缩报文的至少一个TS_SCALED值;

其中,TS_SCALEDi为所述第一语音数据包头压缩报文的TS_SCALED值,TS_SCALEDi-n为所述第二语音数据包头压缩报文的TS_SCALED值,p为根据语音采样周期确定的0到8的正整数,i和n分别为正整数,且n小于i,n为所述第一语音数据包的接收序列号与所述第二语音数据包的接收序列号之差。

2.如权利要求1所述的方法,其特征在于,所述在所述设定数量范围内,依次确定所述第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包,包括:将p的初始值设置为0,通过将p逐次加1,逐次确定所述第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包。

3.如权利要求2所述的方法,其特征在于,所述确定出的TS值能够还原得到正确的第一语音数据包是指:确定出的TS值还原得到的第一语音数据包能够通过CRC校验以及UDP校验。

4.如权利要求1-3任一项所述的方法,其特征在于,所述第一语音数据包是在语音激活期与语音静默期互转时接收到的语音数据包。

5.一种语音数据包的处理装置,其特征在于,包括:

确定单元,用于确定接收到的第一语音数据包的数据包类型以及对应所述第一语音数据包类型的第一语音数据包头压缩报文的时间戳倍数TS_STRIDE值,其中,数据包类型包括宽带语音数据包和窄带语音数据包,且宽带语音数据包头压缩报文的TS_STRIDE值和窄带语音数据包头压缩报文的TS_STRIDE值不同;

处理单元,用于根据设定数量的第一语音数据包头压缩报文的时间戳比例TS_SCALED值,以及所述确定单元确定的所述第一语音数据包头压缩报文的TS_STRIDE值,在所述设定数量范围内,依次确定所述第一语音数据包头压缩报文的时间戳TS值,直至确定出的TS值能够还原得到正确的第一语音数据包;

所述确定单元用于采用如下方式确定所述设定数量的第一语音数据包头压缩报文的TS_SCALED值:确定第二语音数据包头压缩报文的TS_SCALED值,所述第二语音数据包为在接收所述第一语音数据包之前接收并已正确还原出的语音数据包;

按照公式TS_SCALEDi=TS_SCALEDi-n+n+p,确定所述第一语音数据包头压缩报文的至少一个TS_SCALED值;

其中,TS_SCALEDi为所述第一语音数据包头压缩报文的TS_SCALED值,TS_SCALEDi-n为所述第二语音数据包头压缩报文的TS_SCALED值,p为根据语音采样周期确定的0到8的正整数,i和n分别为正整数,且n小于i,n为所述第一语音数据包的接收序列号与所述第二语音数据包的接收序列号之差。

6.如权利要求5所述的装置,其特征在于,所述处理单元采用如下方式在所述设定数量范围内,依次确定所述第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包:将p的初始值设置为0,通过将p逐次加1,逐次确定所述第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包。

7.如权利要求6所述的装置,其特征在于,所述处理单元确定出的TS值能够还原得到正确的第一语音数据包是指:确定出的TS值还原得到的第一语音数据包能够通过CRC校验以及UDP校验。

8.如权利要求5-7任一项所述的装置,其特征在于,所述处理单元处理的所述第一语音数据包是在语音激活期与语音静默期互转时接收到的语音数据包。

说明书 :

一种语音数据包的处理方法及装置

技术领域

[0001] 本发明涉及无线通信技术领域,尤其涉及一种语音数据包的处理方法及装置。

背景技术

[0002] 长期演进(Long Term Evolution,LTE)移动通信网络中,语音通信使用基于网络之间互连协议承载语音(Voice over Internet Protocol,VoIP)技术,即在无线链路上按照网络之间互连协议(Internet Protocol,IP)数据包格式来传送语音数据包。
[0003] 基于VoIP技术传输语音数据包时,首先采用自适应多速率(Adaptive Multi-Rate,AMR)方案进行压缩编码,然后封装为IP数据包进行传输,由于AMR方案将语音数据包承载在实时传输协议(Real-time Transport Protocol,RTP)和用户数据报协议(User Datagram Protocol,UDP)上,相对于语音净荷而言,经AMR压缩的语音数据包的报文头占很大的带宽开销(例如,互联网协议版本4(Internet Protocol Version 4,IPv4)的语音数据包的报文头占40字节,互联网协议版本6(Internet Protocol Version 6,IPv6)的语音数据包的报文头占60字节),这给无线空口资源带来很大的浪费,即额外的报文头开销很大,导致带宽利用率较低。
[0004] LTE系统通过对语音数据包的报文头进行压缩,可有效提高空口带宽的利用率。其中,健壮性报头压缩(Robust Header Compression,ROHC)压缩方案是比较常用的报文头压缩方法,采用ROHC方案对语音数据包的报文头进行压缩时,采用发送按比例缩减的时间戳比例(Timestamp Scaled,TS_SCALED)值代替发送原始的时间戳(Timestamp,TS)值,可将语音数据包的报文头压缩到1至3个字节的程度,带宽利用率可高达90%以上,解压方根据协商好的定值时间戳倍数(Timestamp Stride,TS_STRIDE)和已保存的相对TS-STRIDE的偏移量就可以还原出原始的TS值,这样就减少了需要传送比特的数目,从而达到压缩的目的。
[0005] LTE系统中语音数据包在接入网协议中一般采取不确认模式(Unacknowledged Mode,UM)传输,由于空口质量不稳定,因此,采取UM模式传输的语音数据包,在无线链路上经常存在丢包的情况。如果丢包发生在语音静默期与语音激活期互转时,语音数据包RTP包头中的TS值增量非按序递增,进而导致解压当前语音数据包时TS值还原错误,还原错误的当前语音数据包还会导致后续语音数据包的还原错误,导致错误扩散,使得语音数据包的还原准确率降低。

发明内容

[0006] 本发明的目的是提供一种语音数据包的处理方法及装置,以提高还原语音数据包的准确度。
[0007] 本发明的目的是通过以下技术方案实现的:
[0008] 第一方面,提供一种语音数据包的处理方法,在该方法中,确定接收到的第一语音数据包的数据包类型以及对应所述第一语音数据包类型的第一语音数据包头压缩报文的TS_STRIDE值,根据设定数量的第一语音数据包头压缩报文的TS_SCALED值,以及所述第一语音数据包头压缩报文的TS_STRIDE值,在所述设定数量范围内,依次确定所述第一语音数据包头压缩报文的时间戳TS值,直至确定出的TS值能够还原得到正确的第一语音数据包。
[0009] 其中,数据包类型包括宽带语音数据包和窄带语音数据包,且宽带语音数据包头压缩报文的TS_STRIDE值和窄带语音数据包头压缩报文的TS_STRIDE值不同。
[0010] 本发明实施例中,通过设定数量的第一语音数据包头压缩报文的TS_SCALED值,以及所述第一语音数据包头压缩报文的TS_STRIDE值,在所述设定数量范围内,通过使用设定数量的第一语音数据包头压缩报文的TS_SCALED值逐次确定TS值,根据确定的TS值逐一还原第一语音数据包,直至确定出的TS值能够还原得到正确的第一语音数据包,即通过多次尝试确定正确的TS值,提高了根据确定出的TS值还原语音数据包的准确率。
[0011] 较佳的,所述设定数量的第一语音数据包头压缩报文的TS_SCALED值采用如下方式确定:
[0012] 确定第二语音数据包头压缩报文的TS_SCALED值,所述第二语音数据包为在接收所述第一语音数据包之前接收并已正确还原出的语音数据包;按照公式TS_SCALEDi=TS_SCALEDi-n+n+p,确定所述第一语音数据包头压缩报文的至少一个TS_SCALED值;其中,TS_SCALEDi为所述第一语音数据包头压缩报文的TS_SCALED值,TS_SCALEDi-n为所述第二语音数据包头压缩报文的TS_SCALED值,p为根据语音采样周期确定的0到8的正整数,i和n分别为正整数,且n小于i,n为所述第一语音数据包的接收序列号与所述第二语音数据包的接收序列号之差。
[0013] 本发明实施例中,通过已正确还原出的语音数据包的TS_SCALED值,在根据一个语音采样周期确定的数量范围内,逐次尝试确定所述第一语音数据包的TS_SCALED值,在语音数据包正常传输的情况下,按照公式TS_SCALEDi=TS_SCALEDi-n+n+p,确定的所述第一语音数据包头压缩报文的TS_SCALED值中一定有一个是正确的,在正确确定TS_SCALED值的基础上,可确定正确的TS值,进而提高了根据确定出的TS值还原语音数据包的准确率。
[0014] 较佳的,在所述设定数量范围内,依次确定所述第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包,包括:
[0015] 将p的初始值设置为0,通过将p逐次加1,逐次确定所述第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包。
[0016] 较佳的,所述确定出的TS值能够还原得到正确的第一语音数据包是指:
[0017] 确定出的TS值还原得到的第一语音数据包能够通过CRC校验以及UDP校验。
[0018] 本发明实施例中,由于CRC校验时使用的校验位数有限,CRC校验很容易出错,故,即使还原得到的第一语音数据包能够通过CRC校验,还原得到的第一语音数据包也可能是错误的,本发明为了提高误检率,在CRC校验的基础上增加了UDP校验,即通过CRC校验和UDP校验的二次校验,使得还原得到的第一语音数据包的准确率更高。
[0019] 较佳的,所述第一语音数据包是在语音激活期与语音静默期互转时接收到的语音数据包。
[0020] 第二方面,提供一种语音数据包的处理装置,所述装置包括确定单元和处理单元,其中:
[0021] 确定单元,用于确定接收到的第一语音数据包的数据包类型以及对应所述第一语音数据包类型的第一语音数据包头压缩报文的TS_STRIDE值,其中,数据包类型包括宽带语音数据包和窄带语音数据包,且宽带语音数据包头压缩报文的TS_STRIDE值和窄带语音数据包头压缩报文的TS_STRIDE值不同。
[0022] 处理单元,用于根据设定数量的第一语音数据包头压缩报文的TS_SCALED值,以及所述确定单元确定的所述第一语音数据包头压缩报文的TS_STRIDE值,在所述设定数量范围内,依次确定所述第一语音数据包头压缩报文的时间戳TS值,直至确定出的TS值能够还原得到正确的第一语音数据包。
[0023] 较佳的,所述确定单元用于采用如下方式确定所述设定数量的第一语音数据包头压缩报文的TS_SCALED值:
[0024] 确定第二语音数据包头压缩报文的TS_SCALED值,所述第二语音数据包为在接收所述第一语音数据包之前接收并已正确还原出的语音数据包;按照公式TS_SCALEDi=TS_SCALEDi-n+n+p,确定所述第一语音数据包头压缩报文的至少一个TS_SCALED值;其中,TS_SCALEDi为所述第一语音数据包头压缩报文的TS_SCALED值,TS_SCALEDi-n为所述第二语音数据包头压缩报文的TS_SCALED值,p为根据语音采样周期确定的0到8的正整数,i和n分别为正整数,且n小于i,n为所述第一语音数据包的接收序列号与所述第二语音数据包的接收序列号之差。
[0025] 较佳的,所述处理单元采用如下方式在所述设定数量范围内,依次确定所述第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包:
[0026] 将p的初始值设置为0,通过将p逐次加1,逐次确定所述第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包。
[0027] 较佳的,所述处理单元确定出的TS值能够还原得到正确的第一语音数据包是指:
[0028] 确定出的TS值还原得到的第一语音数据包能够通过CRC校验以及UDP校验。
[0029] 较佳的,所述处理单元处理的所述第一语音数据包是在语音激活期与语音静默期互转时接收到的语音数据包。

附图说明

[0030] 图1为现有的一种双模基站的工作流程示意图;
[0031] 图2为本发明实施例提供的一种语音数据包的处理方法流程图;
[0032] 图3为本发明实施例提供的一种确定第一语音数据包头压缩报文的TS_SCALED值的方法流程图;
[0033] 图4为本发明实施例提供的一种语音数据包接收端接收到的语音数据包示意图;
[0034] 图5为本发明实施例提供的一种还原后的语音数据包示意图;
[0035] 图6为本发明实施例提供的一种语音数据包处理流程图;
[0036] 图7为本发明实施例提供的一种语音数据包的处理装置。

具体实施方式

[0037] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0038] 在LTE系统中,采用IP数据包格式来传送语音数据包时,语音报文格式如图1所示,语音报文包括报文头和有效负载,报文头由IP报文头部分、UDP报文头部分以及RTP报文头部分组成,有效负载即为待传输的语音,由图1可知采用IP数据包格式来传送语音数据包时报文头占40或60字节,报文头开销相当大。为了减小报文头开销,提高空口带宽的利用率,LTE系统对语音数据包的报文头进行了压缩。本发明实施例中以下仅以使用ROHC方案对报文头进行压缩进行详细说明。
[0039] 采用ROHC压缩方案对RTP报文头进行压缩时,发送按比例缩减的TS_SCALED值代替发送原始的TS值,可将语音数据包的报文头压缩到1至3个字节的程度,其中,压缩比最高的语音数据包为双向优化模式(O模式)下的UO-0包。在TS_SCALED值改变的情况下,需要使用更大的压缩包传递TS_SCALED值变化,可使用发送UOR-2数据包携带更长字节的扩展数据包传递TS_SCALED值变化。例如,连续发送3包,SN1和SN2包之间TS相差320,SN2和SN3之间TS相差2560,发送第一包和第二包采用UO-0包,第二包的TS_SCALED值为2,在发送SN2包时,TS_SCALED值变为为2+8=10,因此,需要在TS_SCALED参考值为2基础上采用基于窗口的最低有效位进行编码(Window-Base Least Significant Bits,WLSB)的方法发送出去,此时,只需要3个字节就可以表示出TS之间差值的变化。这在语音静默期和语音激活期互转较频繁时,能获得更好的压缩效率和带宽利用率。一般设置连续N次(N>3)后相同TS差值重复出现后,通过UOR-2携带扩展数据包通知TS_STRIDE值变化。
[0040] LTE系统中,在用户通话的语音激活期,每20ms传输一次语音数据包,在用户通话停顿的语音静默期,每160ms发送一次语音静默数据包,为了节省带宽,语音静默数据包会放弃一些采样点(通常放弃前7个采样点),在语音激活期中偶尔插入语音静默期的语音数据包之后又转语音激活期(即语音静默期与语音激活期互转时),TS_STRIDE值变化未超过N(N>3),如果此时在空口发生丢包,语音数据包的RTP报文头中的TS值增量非按序递增,语音数据包发送方仅通过修改TS_SCALED值来体现TS差值的变化时,语音数据包接收方仍按增加1递交TS_SCALED值是不正确的,会导致解压当前语音数据包时TS值还原错误,还原错误的当前语音数据包还会导致后续语音数据包的还原错误,导致错误扩散,使得语音数据包的还原准确率降低。
[0041] 由于在语音激活期中偶尔插入语音静默期的语音数据包之后又转语音激活期时,语音数据包接收方按增加1递交TS_SCALED值是不正确的,会导致语音数据包还原错误以及错误扩散问题,为了提高语音数据包的还原准确率,本发明实施例给出一种语音数据包的处理方法。
[0042] 图2所示为本发明实施例提供的一种语音数据包的处理方法流程图,如图2所示,包括:
[0043] S101:确定接收到的第一语音数据包的数据包类型以及对应第一语音数据包类型的第一语音数据包头压缩报文的TS_STRIDE值。
[0044] 其中,数据包类型包括宽带语音数据包和窄带语音数据包,且宽带语音数据包头压缩报文的TS_STRIDE值和窄带语音数据包头压缩报文的TS_STRIDE值不同。
[0045] 需要说明的是,第一语音数据包是在语音激活期与语音静默期互转时接收到的语音数据包,语音激活期与语音静默期互转包括语音激活期转换为语音静默期或语音静默期转换为语音激活期。其中,在用户通话期间,用户通话持续时为语音激活期,用户通话停顿为语音静默期,语音激活期与语音静默期的转换也可理解为是用户通话期间通话持续和通话停顿的转换。
[0046] 本发明实施例中,使用ROHC方案对语音报文进行压缩,实质是对语音报文头中的包括的RTP报文头部分的TS值进行压缩,RFC3095协议中给出了TS值与压缩后的TS值(即TS_SCALED)之间的关系,如下公式所示:
[0047] TS=TS_SCALED*TS_SCALED+TS_OFFSET,其中,TS_OFFSET值为定值。
[0048] 本发明实施例中,语音数据包接收端还原语音数据包时,需确定TS值,而确定TS值的关键在于确定TS_SCALED值和TS_SCALED值。
[0049] 本发明实施例中,通过确定接收到的第一语音数据包的数据包类型为宽带语音数据包或窄带语音数据包,进而确定接收到的第一语音数据包头压缩报文的TS_STRIDE值。具体的,通过解析接收到的第一语音数据包,得到第一语音数据包净荷,根据第一语音数据包净荷大小以及第一语音数据包净荷中的帧类型(Frame Type,FT)字段,确定第一语音数据包的数据包类型为宽带语音数据包或窄带语音数据包,若确定第一语音数据包的数据包类型为宽带语音数据包,则可确定对应于宽带语音数据包的TS_STRIDE值,例如可将第一语音数据包头压缩报文的TS_STRIDE值确定为320,若确定第一语音数据包的数据包类型为窄带语音数据包,则可确定对应于窄带语音数据包的TS_STRIDE值,例如可则将第一语音数据包头压缩报文的TS_STRIDE值确定为160。
[0050] S102:根据设定数量的第一语音数据包头压缩报文的TS_SCALED值,以及第一语音数据包头压缩报文的TS_STRIDE值,在设定数量范围内,依次确定第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包。
[0051] 本发明实施例中,在第一语音数据包头压缩报文的TS_STRIDE值确定的情况下,确定第一语音数据包头压缩报文的TS值的关键在于确定第一语音数据包头压缩报文的TS_SCALED值,本发明通过在设定数量范围内,多次尝试确定第一语音数据包头压缩报文的TS_SCALED值,进而确定TS值,直至确定出的TS值能够还原得到正确的第一语音数据包,克服了通过直接递增1的方式确定TS_SCALED值导致的语音数据包的还原准确率低的问题。
[0052] 本发明实施例中,设定数量的第一语音数据包头压缩报文的TS_SCALED值具体可采用如图3所示的方式确定:
[0053] S201:确定第二语音数据包头压缩报文的TS_SCALED值,第二语音数据包为在接收第一语音数据包之前接收并已正确还原出的语音数据包。
[0054] 本发明实施例中,语音数据包接收端按序接收语音数据包,第二语音数据包可以是第一语音数据包的前一语音数据包,也可以是第一语音数据包的前N(N大于等于1)个语音数据包。若第二语音数据包是第一语音数据包的前一语音数据包,即没发生语音数据包丢包,此时,既可采用现有技术来还原第一语音数据包,也可采用本发明中提供的语音数据包处理方法还原第一语音数据包。下面重点以第二数据包是第一语音数据包的前N(N大于等于1)个语音数据包进行详细说明。
[0055] S202:按照公式TS_SCALEDi=TS_SCALEDi-n+n+p,确定第一语音数据包头压缩报文的至少一个TS_SCALED值。
[0056] 其中,TS_SCALEDi为第一语音数据包头压缩报文的TS_SCALED值,TS_SCALEDi-n为第二语音数据包头压缩报文的TS_SCALED值,p为根据语音采样周期确定的正整数,i和n分别为正整数,且n小于i,n为第一语音数据包的接收序列号与第二语音数据包的接收序列号之差。
[0057] 本发明实施例中,可根据语音采样周期将p的值确定为8。假设第二语音数据包为第一语音数据包的前两个语音数据包,则可确定第一语音数据包的接收序列号与第二语音数据包的接收序列号之差为2,进而可确定计算第一语音数据包头压缩报文的TS_SCALED值的公式为:
[0058] TS_SCALEDi=TS_SCALEDi-2+2+p,由已正确还原出的第二语音数据包可直接确定出TS_SCALEDi-2值,故,通过上述公式可计算得到9个TS_SCALEDi值。
[0059] 本发明实施例中,通过上述计算公式可得到多个TS_SCALEDi值,而根据RFC3095协议可知,TS值与TS_SCALED以及TS_STRIDE值满足如下关系式:
[0060] TS=TS_SCALED*TS_STRIDE+TS_OFFSET,其中TS_OFFSET为定值,故,通过确定TS_SCALED以及TS_STRIDE值,即可确定TS值。
[0061] 本发明实施例中,按照公式TS_SCALEDi=TS_SCALEDi-2+2+p可确定多个TS_SCALEDi值,故可确定多个TS值,本发明通过在设定数量范围内,依次确定第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包。一种可能的实施方式中,可将p的初始值设置为0,通过将p逐次加1,逐次确定所述第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包。
[0062] 本发明实施例中,确定出的TS值能够还原得到正确的第一语音数据包是指:确定出的TS值还原得到的第一语音数据包能够通过认证校验。
[0063] 一种实施方式中,确定出的TS值能够还原得到正确的第一语音数据包是指:确定出的TS值还原得到的第一语音数据包能够通过CRC校验。
[0064] 另一种实施方式中,确定出的TS值能够还原得到正确的第一语音数据包是指:确定出的TS值还原得到的第一语音数据包在通过CRC校验的基础上进一步通过UDP校验。
[0065] 本发明实施例中,由于CRC校验时使用的校验位数有限,CRC校验很容易出错,故,即使还原得到的第一语音数据包能够通过CRC校验,还原得到的第一语音数据包也可能是错误的,本发明为了提高误检率,在CRC校验的基础上增加了UDP校验,即通过CRC校验和UDP校验的二次校验,使得还原得到的第一语音数据包的准确率更高。
[0066] 本发明实施例中,下面主要以确定出的TS值还原得到的第一语音数据包能够通过CRC校验以及UDP校验为例进行详细说明。
[0067] 需要说明的是,本发明实施例中第一语音数据包是在语音激活期与语音静默期互转时接收到的语音数据包。
[0068] 下面以一个具体的实例对本发明提供的语音数据包处理方法进行详细说明。
[0069] 需要说明的是,目前基于VoIP技术传输的语音数据包,通常封装为IPv6数据包进行传输,以下均以封装为IPv6数据包进行说明。
[0070] 假设语音数据包接收端,收到从0x8633到0x863a的7个语音数据包,如图4所示,长度为66的语音数据包为处于语音激活期的数据包,长度为12和17的语音数据包为处于语音静默期的数据包,UO-0和UOR-2分别表示不同的数据包格式,其中,0x8637语音数据包在语音静默期和激活期转换时丢失。
[0071] 图5示出语音数据包接收端根据现有技术对接收到的图4中的语音数据包进行还原得到的语音数据包示意图,具体还原过程如下所述:
[0072] 由图4可以看出,从0x8633至0x8634未发生丢包,SN按序递增1,TS_SCALE按序递增1,故由0x8633和0x8634两个语音数据包可计算得到语音数据包0x8633的TS_STRIDE值、TS_OFFSET值以及TS_SCALED1值,分别如下:
[0073] TS_STRIDE=0x041d24d4-0x041d2394=0x140=320;
[0074] TS_OFFSET=0x041d24d4%TS_STRIDE=0x114=276;
[0075] TS_SCALED1=TS1/TS_STRIDE=215683,其中,TS1表示数据包0x8633的TS值;
[0076] 且,由图5可知语音数据包0x8633的SN值为:SN1=0x0a43;
[0077] 进而,通过上述正确还原的值可还原得到语音数据包0x8633和0x8634。
[0078] 对于接收到的第三个语音数据包0x8635,格式为UOR-2,可确定语音数据包0x8635的TS_SCALED值为:TS_SCALED3=215686,因此可计算出语音数据包0x8635的TS值:TS3=215686*320+276=0x4182d94,进而正确还原语音数据包0x8635。
[0079] 对于接收到的第四个语音数据包0x8636,格式为UOR-2,可确定语音数据包0x8636的TS_SCALED值为:TS_SCALED4=215694,因此可计算出语音数据包0x8636的TS值:TS4=215694*320+276=0x41d3294,进而正确还原语音数据包0x8636。
[0080] 由于语音数据包0x8637丢失,且丢失的语音数据包0x8637是什么类型的数据包接收端不清楚,按照现有技术,接收端对于接收到的格式为UO-0的第六个语音数据包0x8638可依据第四个语音数据包0x8636还原,可计算出语音数据包0x8638的TS值:TS6=(215694+2)*320+276=0x41d3514,而实际中第五个语音数据包0x8637可能是UOR-2包,TS_SCALED值已经更新为非(215694+2)的值,故通过上述方法还原的TS值可能已出错,导致还原出的语音数据包0x8638出错,进而导致后续语音数据包校验失败引起丢包,或者CRC误校验通过,更新参考值后后续语音数据包继续CRC校验失败引起更多的丢包。
[0081] 通过本发明实施例提供的语音数据包处理方法处理上述语音静默期和激活期转换时丢包的过程,如图6所示,假设语音数据包接收端在语音静默期接收到数据包格式为UOR-2的第二语音数据包a(i-2),并正常递交,接着接收到数据包格式为UO-0的第一语音数据包a(i),根据最低效位(Least SignificantBit,LSB)算法计算当前语音数据包SN值,判断a(i-1)语音数据包丢失。
[0082] 判断a(i-1)语音数据包丢失之后,通过解析第一语音数据包,得到第一语音数据包净荷,在确定RTP数据包格式为字节对齐或效率优先的情况下,根据第一语音数据包净荷长度以及第一语音数据包净荷中的帧类型(Frame Type,FT)字段,确定第一语音数据包为宽带语音数据包或窄带语音数据包。
[0083] 具体的,若FT字段以及第一语音数据包净荷长度与下表中宽带语音数据包匹配则确定为宽带语音数据包,若FT字段以及第一语音数据包净荷长度与下表中窄带语音数据包匹配则确定为窄带语音数据包。
[0084] 其中,表1为RTP数据包格式为效率优先情况下,宽带/窄带语音数据包的FT和净荷长度对应表,表2为RTP数据包格式为字节对齐的情况下,宽带/窄带语音数据包的FT和净荷长度对应表。
[0085] 表1如下:
[0086]
[0087] 表2如下:
[0088]
[0089] 若通过上述表格中的对应关系确定第一语音数据包为宽带语音数据包,则将第一语音数据包携带的TS_STRIDE值设置为320,若确定第一语音数据包为窄带语音数据包,则将第一语音数据包携带的TS_STRIDE值设置为160。
[0090] 图6主要以通过数据包a(i-2)还原数据包a(i)为例进行详细说明。
[0091] 按照公式TS_SCALEDi=TS_SCALEDi-2+2+p,将p的初始值设置为0,还原第一语音数据包a(i)的包头,进而对还原的数据包头进行CRC校验,判断计算得到的CRC校验和同第一语音数据包a(i)中携带CRC校验和是否相等,若相等,进一步对还原的语音数据包进行UDP校验,若校验通过,则确定正确还原第一语音数据包。若还原的第一语音数据包仅通过CRC校验或者通过CRC校验但不能通过UDP校验,则将p的值加1继续上面的步骤,直至确定出能够通过CRC校验和UDP校验的第一语音数据包。
[0092] 例如,针对上述丢失语音数据包0x8637的例子,通过本发明实施例提供的语音数据包处理方法,还原语音数据包0x8638的过程如下:
[0093] 首先,解析语音数据包0x8638的语音净荷:11110100 0110,为效率优先,FT字段为1000=0x8,因此可确定为宽带语音数据包,故,可确定语音数据包0x8638的TS_STRIDE值为
320。
[0094] 其次,将p的初始值设置为0逐次计算语音数据包0x8638的TS值。
[0095] 当p=0时,计算出的TS值为:TS6=(215694+2)*320+276=0x41d3514,进而计算出CRC校验和为1,与语音数据包0x8638中携带的CRC校验和4不相同,因此,当p=0时,CRC校验失败。
[0096] 将p值加1,计算出的TS值为:TS6=(215694+2+1)*320+276=0x41d3654,进而计算出CRC校验和为7,与语音数据包0x8638中携带的CRC校验和4不相同,因此,当p=1时,CRC校验失败。
[0097] 将p值继续加1,计算出的TS值为:TS6=(215694+2+2)*320+276=0x41d3794,进而计算出CRC校验和为1,与语音数据包0x8638中携带的CRC校验和4不相同,因此,当p=2时,CRC校验失败。
[0098] 将p值继续加1,计算出的TS值为:TS6=(215694+2+3)*320+276=0x41d38d4,进而计算出CRC校验和为4,与语音数据包0x8638中携带的CRC校验和4相同,因此,当p=3时,CRC校验成功。
[0099] 最后,通过如下方法计算UDP校验和:
[0100] 将还原的UDP数据包头中的CheckSum字段清零,若确定还原的语音数据包长度为奇数字节,则将奇数字节补零为偶数字节,将还原的语音数据包按两字节累加求和,得到四字节数值,若确定四字节数值的高两字节不为零,则将四字节数值的高两字节和低两字节的值相加再次得到一个四字节数值,重复上述步骤直至四字节数值的高两字节为0,将得到的高两字节为0的四字节数值逐比特取反,得到UDP校验和为0x2d0e,将计算得到的UDP校验和同语音数据包0x8638中携带的UDP校验和比较确定相同,故,上面的例子当p=3时,确定的TS值能够正确还原语音数据包0x8638,基于以上,接收端可正确还原第7语音数据包和第8语音数据包。
[0101] 基于上述实施例提供的语音数据包的处理方法,本发明实施例提供一种语音数据包的处理装置,图7所示为本发明实施例提供的语音数据包的处理装置的结构示意图,如图7所示,该装置包括确定单元101和处理单元102,其中:
[0102] 确定单元101,用于确定接收到的第一语音数据包的数据包类型以及对应第一语音数据包类型的第一语音数据包头压缩报文的TS_STRIDE值,其中,数据包类型包括宽带语音数据包和窄带语音数据包,且宽带语音数据包头压缩报文的TS_STRIDE值和窄带语音数据包头压缩报文的TS_STRIDE值不同。
[0103] 处理单元102,用于根据设定数量的第一语音数据包头压缩报文的TS_SCALED值,以及确定单元101确定的第一语音数据包头压缩报文的TS_STRIDE值,在设定数量范围内,依次确定第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包。
[0104] 本发明实施例中,确定单元101还用于采用如下方式确定设定数量的第一语音数据包头压缩报文的TS_SCALED值:
[0105] 确定第二语音数据包头压缩报文的TS_SCALED值,第二语音数据包为在接收第一语音数据包之前接收并已正确还原出的语音数据包,按照公式TS_SCALEDi=TS_SCALEDi-n+n+p,确定第一语音数据包头压缩报文的至少一个TS_SCALED值。
[0106] 其中,TS_SCALEDi为第一语音数据包头压缩报文的TS_SCALED值,TS_SCALEDi-n为第二语音数据包头压缩报文的TS_SCALED值,p为根据语音采样周期确定的0到8的正整数,i和n分别为正整数,且n小于i,n为第一语音数据包的接收序列号与第二语音数据包的接收序列号之差。
[0107] 具体的,处理单元102采用如下方式在设定数量范围内,依次确定第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包:
[0108] 将p的初始值设置为0,通过将p逐次加1,逐次确定第一语音数据包头压缩报文的TS值,直至确定出的TS值能够还原得到正确的第一语音数据包。
[0109] 具体的,处理单元102确定出的TS值能够还原得到正确的第一语音数据包是指:
[0110] 确定出的TS值还原得到的第一语音数据包能够通过CRC校验以及UDP校验。
[0111] 本发明实施例中,处理单元102处理的第一语音数据包是在语音激活期与语音静默期互转时接收到的语音数据包。
[0112] 本发明实施例中,通过设定数量的第一语音数据包头压缩报文的TS_SCALED值,以及第一语音数据包头压缩报文的TS_STRIDE值,在设定数量范围内,通过使用设定数量的第一语音数据包头压缩报文的TS_SCALED值逐次确定TS值,根据确定的TS值逐一还原第一语音数据包,直至确定出的TS值能够还原得到正确的第一语音数据包,即通过多次尝试确定正确的TS值,提高了根据确定出的TS值还原语音数据包的准确率。
[0113] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。