具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对本发明实施例中的一些专用名词进行解释:
网络延时:即是语音包从发送端到接收端的传输时间。
播放延时:即是语音包最终播放的时间与该语音包从发送端进行发送的时间之差。
本发明实施例公开了一种抖动缓冲区调整方法及装置可以应用于互联网的VOIP电话中,在VOIP电话中,语音数据在网络传输中是以语音包的形式进行传输的,由于存在网络抖动,导致各个语音包的网络延时不同,若某一个语音包的网络延时过长,则在播放时会导致通话卡顿。因此通常为语音包设置抖动缓冲区以解决通话卡顿,不流畅的问题,如图3所示,即语音包到达接收端后,先在抖动缓冲区中暂存,调整各个语音包的间隔以及顺序,然后再播放抖动缓冲区中的语音包,这样以确保各个语音包在在播放前到达,从而解决通话卡顿的问题,为了能够确保通话流畅,传统方法中通常将抖动缓冲区调整得很大,但是将抖动缓冲区调整得过大,会导致通话延时增大,实时性差。在本发明实施例中,可以根据历史接收语音包的网络延时对应的统计特征值实时预测当前网络中预接收语音包的网络延时,并根据当前网络中语音包的预测网络延时动态调整抖动缓冲区的大小,从而降低通话延时,实时性强,并且确保通话流畅。
请参阅图1,图1是本发明实施例公开的一种抖动缓冲区调整方法的流程图。如图1所示,该方法可以包括以下步骤。
S100、获取用于表示历史接收语音包网络延时的加权统计特征的目标统计特征值,所述历史接收语音包包括当前时间单元以及所述当前时间单元之前所接收的语音包;
本发明实施例中,历史接收语音包可以包括当前时间单元以及当前时间单元之前所接收的语音包,目标统计特征值可以包括目标均值和目标标准差。
具体的,在计算历史接收语音包的目标统计特征值时,可以采用以下计算方式,需要说明的是,以下计算方式采用迭代计算方式,即是将与当前语音包相邻的第一语音包对应的网络延时的统计特征值与当前语音包的网络延时的加权平均值作为当前语音包对应的网络延时的目标统计特征值:
m(i)=(1-a)*m(i-1)+a*d(i)
v(i)=(1-a)*v(i-1)+a*abs(d(i)-m(i))
其中,d(i)是第i个语音包的网络延时,第i个语音包即当前语音包,如图3所示,标号为4的语音包即是当前语音包,m(i)、m(i-1)分别是第i、(i-1)个语音包的网络延时的均值,第(i-1)个语音包即第一语音包,如图3所示,标号为3的语音包即是第一语音包,v(i)、v(i-1)分别是是第i、(i-1)个语音包的网络延时的标准差,a为更新速率,0<a<1,abs()表示取绝对值。接收端每接收到一个语音包,即采用上述公式进行更新,m(0)=d(0),v(0)=0。
上述可知,m和v将反映近期语音包样本的平均水平和波动大小,同时和越近的样本相关性越大。为了更快地响应网络的变化,在网络延时增加(即是d(i)>m(i))时取较大的a值,这样m和v更新得越快,和最近的样本相关性越大。
可选的,实际网络经常会出现网络抖动突然变得很大,即是网络突然卡了一下,然后连续n个语音包几乎同时到达的情况,从网络延时上看,某个语音包网络延时突然变得非常大,然后该语音包后面若干个包的网络延时几乎线性减小。通过语音包的网络延时的值可以判断发生这种情况的时刻。具体的,判断发生的条件为:
abs(d(i)–d(i-1))>2*v(i-1)+800
即是当前接收语音包的网络延时与第一语音包的网络延时差值大于预设阈值,上述预设阈值设置为2*v(i-1)+800;这只是一种举例,还可以是其它预设阈值,在此不作限定。
当出现某一个语音包的网络延时明显增加,当前语音包对应的网络延时的目标均值m更新方式调整为:
m(i)=m(i-1)+d(i)–d(i-1)
其中,标准差v的更新方式不变,只是更新速率a可以取一个较大的值。这样可以适应网络延时的突然增大。
若网络延时恢复,则仍然按照原来的目标均值和目标标准差的更新方式;
其中,判断恢复的条件为:x(i)=x(i-1)/2+(2*d(i)–d(i-1)–d(i-2))/8,x(i)<64;
其中,x(i)、x(i-1)分别表示每次第i个语音包、(i–1)个语音包网络延时的变化大小,x(i)初始值为0。
S101、根据所述目标统计特征值,计算预接收语音包的预测网络延时;
本发明实施例中,预接收语音包可以是发送端向接收端发送的,但接收端还未接收的语音包,预接收语音包的预测网络延时能够表明当前网络状况,将抖动缓冲区大小调整为与当前网络状况相适应的大小,既可以保证通话流程,又可以减小通话延时。
本发明实施例中,为了预测该预接收语音包的预测网络延时,需要根据与预接收语音包的网络延时关联度最大的历史接收语音包对应的网络延时的统计特征值进行预测,通常关联度最大的历史接收语音包为接收端所接收的语音包中接收时间离当前时间最近的语音包,例如可以是接收端刚接收的语音包,即是当前语音包。当前语音包对应的网络延时的目标统计特征值用于表示历史接收语音包的加权统计特征,例如,目标统计特征值可以为目标均值,用于表示历史接收语音包的网络延时的平均水平,统计特征值也可以为标准差,用于表示历史接收语音包的网络延时的波动大小。
本发明实施例中,当计算出目标统计特征值后,即根据所计算得到的目标统计特征值计算下一个预接收语音包的预测网络延时,并将该预测网络延时确定为抖动缓冲区中待播放语音包的播放延时。
具体的,目标统计特征值可以包括目标均值和目标标准差,根据目标统计特征值计算预接收语音包的预测网络延时的计算方式可以是采用如下公式:
d_(i+1)=m(i)+b*v(i)
其中,d_(i+1)为预接收语音包的预测网络延时,m(i)为当前语音包对应的网络延时的目标均值,v(i)为当前语音包对应的网络延时的目标标准差,b为权值因子,其中0<b<5,为了更加准确,通常b取4。
有时候因为v(i)过大,导致d_(i+1)很大,可以通过限制d_(i+1)和d(i)的差值或者取较小的b值来限制d_(i+1)的大小。
在对抖动缓冲区的长度进行调整的过程中,将所计算得到的预接收语音包的预测网络延时确定为抖动缓冲区中待播放语音包的播放延时,从而对抖动缓冲区进行调整。
S102,根据所述预测网络延时调整所述抖动缓冲区的长度。
本发明实施例中,预接收语音包的预测网络延时确定为抖动缓冲区中待播放语音包的播放延时,基于待播放语音包的发送时间和播放延时,可以对抖动缓冲区的长度进行调整,如图3所示,标号为1的语音包即是待播放语音包。本发明实施例中,抖动缓冲区的长度调整不是通过直接计算长度来调整的,而是通过计算预播放语音包的预计播放时间来调整的。
具体的,将预接收语音包的预测网络延时d_(i+1)作为待播放语音包的播放延时,即从发送待播放语音包到最终播放的时间之差,显然,播放延时等于待播放语音包的网络延时加上待播放语音包在抖动缓冲区中停留的时间。通过待播放语音包的播放延时和待播放语音包的发送时间可以得到待播放语音包的预计播放时间,如果预计播放时间大于当前时间,则需要增加抖动缓冲区长度,否则需要减小抖动缓冲区长度。
本发明实施例中,获取用于表示历史接收语音包网络延时的加权统计特征的目标统计特征值,根据目标统计特征值,计算预接收语音包的预测网络延时,根据预测网络延时调整抖动缓冲区的长度。这种抖动缓冲区的调整方式能够通过计算预接收语音包的预测网络延时灵活调整抖动缓冲区的大小,既能保证通话的流畅度,又能降低通话延时,实时性强。
请参阅图2,图2是本发明实施例公开的另一种抖动缓冲区调整方法的流程图。如图2所示,该方法可以包括以下步骤。
S200、获取用于表示历史接收语音包网络延时的加权统计特征的目标统计特征值,所述历史接收语音包包括当前时间单元以及所述当前时间单元之前所接收的语音包;
S201,根据所述目标统计特征值,计算预接收语音包的预测网络延时;
本发明实施例步骤S200-S201请参照图1的实施例步骤S100-S101,在此不再赘述。
S202、将所述预测网络延时确定为抖动缓冲区中待播放语音包的播放延时;
本发明实施例中,预接收语音包的预测网络延时确定为抖动缓冲区中待播放语音包的播放延时,基于待播放语音包的发送时间和播放延时,可以对抖动缓冲区的长度进行调整,如图3所示,标号为1的语音包即是待播放语音包。本发明实施例中,抖动缓冲区的长度调整不是通过直接计算长度来调整的,而是通过计算预播放语音包的预计播放时间来调整的。
S203,根据所述待播放语音包的发送时间和所述播放延时,调整所述抖动缓冲区的长度。
可选的,若根据所述发送时间和所述播放延时所确定的所述待播放语音包的预计播放时间小于当前时间,则减小所述抖动缓冲区长度;
本发明实施例中,当根据待播放语音包的发送时间和播放延时所确定的待播放语音包的预计播放时间小于当前时间,则说明该待播放语音包早就应该播放,可延至当前时间还未播放,说明抖动缓冲区过长,不能适应当前网络延时状况,因此需要减小抖动缓冲区长度。
可选的,所述减小所述抖动缓冲区长度包括:删除所述抖动缓冲区内的静音包;或者,增加所述缓冲区内语音包的播放速度;
本发明实施例中,当出现抖动缓冲区长度过大,需要减小抖动缓冲区长度时,可以删除抖动缓冲区内语音信息不丰富的语音包(例如:静音包),以减少调整带来的语音质量改变。当通过删除静音包不足以及时缩短抖动缓冲区长度时,可以通过增加播放速度(即变语速)来将抖动缓冲区的语音包快速播完,这样既避免了通话延时长的问题,又有效保留了语音信息。
可选的,若根据所述发送时间和所述播放延时所确定的所述待播放语音包的预计播放时间大于当前时间,则增加所述抖动缓冲区长度。
本发明实施例中,当根据待播放语音包的发送时间和播放延时所确定的待播放语音包的预计播放时间大于当前时间,则说明该待播放语音包当前时间不能播放,需要等待一段时间后才能播放,即是抖动缓冲区过小,不能适应当前网络延时状况,可能出现语音包的到达时间晚于播放时间,因此需要增加抖动缓冲区长度。
可选的,所述增加所述抖动缓冲区长度包括:在所述抖动缓冲区增加静音包;或者,减小所述缓冲区内语音包的播放速度。
本发明实施例中,当出现抖动缓冲区长度过小,需要增加抖动缓冲区长度时,可以在抖动缓冲区中增加静音包。当通过增加静音包不足以及时增加抖动缓冲区长度时,可以通过减小抖动缓冲区中语音包播放速度(即变语速)来将抖动缓冲区的语音包进行播放,这样可以有效增加抖动缓冲区的长度。
本发明实施例中,获取用于表示历史接收语音包网络延时的加权统计特征的目标统计特征值,根据目标统计特征值,计算预接收语音包的预测网络延时,根据预测网络延时调整抖动缓冲区的长度。这种抖动缓冲区的调整方式能够通过计算预接收语音包的预测网络延时灵活调整抖动缓冲区的大小,既能保证通话的流畅度,又能降低通话延时,实时性强。
请参阅图4,图4是本发明实施例公开的一种抖动缓冲区调整装置的结构图。如图4所示,该抖动缓冲区调整装置包括:
获取单元100,用于获取用于表示历史接收语音包网络延时的加权统计特征的目标统计特征值,所述历史接收语音包包括当前时间单元以及所述当前时间单元之前所接收的语音包;
本发明实施例中,历史接收语音包可以包括当前时间单元以及当前时间单元之前所接收的语音包,目标统计特征值可以包括目标均值和目标标准差。
具体的,在计算历史接收语音包的目标统计特征值时,可以采用以下计算方式,需要说明的是,以下计算方式采用迭代计算方式,即是将与当前语音包相邻的第一语音包对应的网络延时的统计特征值与当前语音包的网络延时的加权平均值作为当前语音包对应的网络延时的目标统计特征值:
m(i)=(1-a)*m(i-1)+a*d(i)
v(i)=(1-a)*v(i-1)+a*abs(d(i)-m(i))
其中,d(i)是第i个语音包的网络延时,第i个语音包即当前语音包,如图3所示,标号为4的语音包即是当前语音包,m(i)、m(i-1)分别是第i、(i-1)个语音包的网络延时的均值,第(i-1)个语音包即第一语音包,如图3所示,标号为3的语音包即是第一语音包,v(i)、v(i-1)分别是是第i、(i-1)个语音包的网络延时的标准差,a为更新速率,0<a<1,abs()表示取绝对值。接收端每接收到一个语音包,即采用上述公式进行更新,m(0)=d(0),v(0)=0。
上述可知,m和v将反映近期语音包样本的平均水平和波动大小,同时和越近的样本相关性越大。为了更快地响应网络的变化,在网络延时增加(即是d(i)>m(i))时取较大的a值,这样m和v更新得越快,和最近的样本相关性越大。
可选的,实际网络经常会出现网络抖动突然变得很大,即是网络突然卡了一下,然后连续n个语音包几乎同时到达的情况,从网络延时上看,某个语音包网络延时突然变得非常大,然后该语音包后面若干个包的网络延时几乎线性减小。通过语音包的网络延时的值可以判断发生这种情况的时刻。具体的,判断发生的条件为:
abs(d(i)–d(i-1))>2*v(i-1)+800
即是当前接收语音包的网络延时与第一语音包的网络延时差值大于预设阈值,上述预设阈值设置为2*v(i-1)+800;这只是一种举例,还可以是其它预设阈值,在此不作限定。
当出现某一个语音包的网络延时明显增加,当前语音包对应的网络延时的目标均值m更新方式调整为:
m(i)=m(i-1)+d(i)–d(i-1)
其中,标准差v的更新方式不变,只是更新速率a可以取一个较大的值。这样可以适应网络延时的突然增大。
若网络延时恢复,则仍然按照原来的目标均值和目标标准差的更新方式;
其中,判断恢复的条件为:x(i)=x(i-1)/2+(2*d(i)–d(i-1)–d(i-2))/8,x(i)<64;
其中,x(i)、x(i-1)分别表示每次第i个语音包、(i–1)个语音包网络延时的变化大小,x(i)初始值为0。
计算单元101,用于根据所述目标统计特征值,计算预接收语音包的预测网络延时;
本发明实施例中,预接收语音包可以是发送端向接收端发送的,但接收端还未接收的语音包,预接收语音包的预测网络延时能够表明当前网络状况,将抖动缓冲区大小调整为与当前网络状况相适应的大小,既可以保证通话流程,又可以减小通话延时。
本发明实施例中,为了预测该预接收语音包的预测网络延时,计算单元101需要根据与预接收语音包的网络延时关联度最大的历史接收语音包对应的网络延时的统计特征值进行预测,通常关联度最大的历史接收语音包为接收端所接收的语音包中接收时间离当前时间最近的语音包,例如可以是接收端刚接收的语音包,即是当前语音包。当前语音包对应的网络延时的目标统计特征值用于表示历史接收语音包的加权统计特征,例如,目标统计特征值可以为目标均值,用于表示历史接收语音包的网络延时的平均水平,统计特征值也可以为标准差,用于表示历史接收语音包的网络延时的波动大小。
本发明实施例中,当计算出目标统计特征值后,即根据所计算得到的目标统计特征值计算下一个预接收语音包的预测网络延时,并将该预测网络延时确定为抖动缓冲区中待播放语音包的播放延时。
具体的,目标统计特征值可以包括目标均值和目标标准差,根据目标统计特征值计算预接收语音包的预测网络延时的计算方式可以是采用如下公式:
d_(i+1)=m(i)+b*v(i)
其中,d_(i+1)为预接收语音包的预测网络延时,m(i)为当前语音包对应的网络延时的目标均值,v(i)为当前语音包对应的网络延时的目标标准差,b为权值因子,其中0<b<5,为了更加准确,通常b取4。
有时候因为v(i)过大,导致d_(i+1)很大,可以通过限制d_(i+1)和d(i)的差值或者取较小的b值来限制d_(i+1)的大小。
在对抖动缓冲区的长度进行调整的过程中,将所计算得到的预接收语音包的预测网络延时确定为抖动缓冲区中待播放语音包的播放延时,从而对抖动缓冲区进行调整。
第一调整单元102,用于根据所述预测网络延时调整所述抖动缓冲区的长度。
本发明实施例中,预接收语音包的预测网络延时确定为抖动缓冲区中待播放语音包的播放延时,第一调整单元102基于待播放语音包的发送时间和播放延时,可以对抖动缓冲区的长度进行调整,如图3所示,标号为1的语音包即是待播放语音包。本发明实施例中,抖动缓冲区的长度调整不是通过直接计算长度来调整的,而是通过计算预播放语音包的预计播放时间来调整的。
具体的,将预接收语音包的预测网络延时d_(i+1)作为待播放语音包的播放延时,即从发送待播放语音包到最终播放的时间之差,显然,播放延时等于待播放语音包的网络延时加上待播放语音包在抖动缓冲区中停留的时间。通过待播放语音包的播放延时和待播放语音包的发送时间可以得到待播放语音包的预计播放时间,如果预计播放时间大于当前时间,则需要增加抖动缓冲区长度,否则需要减小抖动缓冲区长度。
进一步可选的,第一调整单元102可以包括确定单元和第二调整单元;
确定单元,用于将所述预测网络延时确定为抖动缓冲区中待播放语音包的播放延时;
本发明实施例中,预接收语音包的预测网络延时确定为抖动缓冲区中待播放语音包的播放延时,基于待播放语音包的发送时间和播放延时,可以对抖动缓冲区的长度进行调整,如图3所示,标号为1的语音包即是待播放语音包。本发明实施例中,抖动缓冲区的长度调整不是通过直接计算长度来调整的,而是通过计算预播放语音包的预计播放时间来调整的。
第二调整单元,用于根据所述待播放语音包的发送时间和所述播放延时,调整所述抖动缓冲区的长度。
可选的,若根据所述发送时间和所述播放延时所确定的所述待播放语音包的预计播放时间小于当前时间,则减小所述抖动缓冲区长度;
本发明实施例中,当根据待播放语音包的发送时间和播放延时所确定的待播放语音包的预计播放时间小于当前时间,则说明该待播放语音包早就应该播放,可延至当前时间还未播放,说明抖动缓冲区过长,不能适应当前网络延时状况,因此需要减小抖动缓冲区长度。
可选的,所述减小所述抖动缓冲区长度包括:删除所述抖动缓冲区内的静音包;或者,增加所述缓冲区内语音包的播放速度;
本发明实施例中,当出现抖动缓冲区长度过大,需要减小抖动缓冲区长度时,可以删除抖动缓冲区内语音信息不丰富的语音包(例如:静音包),以减少调整带来的语音质量改变。当通过删除静音包不足以及时缩短抖动缓冲区长度时,可以通过增加播放速度(即变语速)来将抖动缓冲区的语音包快速播完,这样既避免了通话延时长的问题,又有效保留了语音信息。
可选的,若根据所述发送时间和所述播放延时所确定的所述待播放语音包的预计播放时间大于当前时间,则增加所述抖动缓冲区长度。
本发明实施例中,当根据待播放语音包的发送时间和播放延时所确定的待播放语音包的预计播放时间大于当前时间,则说明该待播放语音包当前时间不能播放,需要等待一段时间后才能播放,即是抖动缓冲区过小,不能适应当前网络延时状况,可能出现语音包的到达时间晚于播放时间,因此需要增加抖动缓冲区长度。
可选的,所述增加所述抖动缓冲区长度包括:在所述抖动缓冲区增加静音包;或者,减小所述缓冲区内语音包的播放速度。
本发明实施例中,当出现抖动缓冲区长度过小,需要增加抖动缓冲区长度时,可以在抖动缓冲区中增加静音包。当通过增加静音包不足以及时增加抖动缓冲区长度时,可以通过减小抖动缓冲区中语音包播放速度(即变语速)来将抖动缓冲区的语音包进行播放,这样可以有效增加抖动缓冲区的长度。
本发明实施例中,获取用于表示历史接收语音包网络延时的加权统计特征的目标统计特征值,根据目标统计特征值,计算预接收语音包的预测网络延时,根据预测网络延时调整抖动缓冲区的长度。这种抖动缓冲区的调整方式能够通过计算预接收语音包的预测网络延时灵活调整抖动缓冲区的大小,既能保证通话的流畅度,又能降低通话延时,实时性强。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上对本发明实施例公开的一种抖动缓冲区调整方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。