CN1627747A - 语音传输过程中实现动态调整抖动缓存的方法 - Google Patents

语音传输过程中实现动态调整抖动缓存的方法 Download PDF

Info

Publication number
CN1627747A
CN1627747A CNA200310121961XA CN200310121961A CN1627747A CN 1627747 A CN1627747 A CN 1627747A CN A200310121961X A CNA200310121961X A CN A200310121961XA CN 200310121961 A CN200310121961 A CN 200310121961A CN 1627747 A CN1627747 A CN 1627747A
Authority
CN
China
Prior art keywords
time
depth
degree
vop
delay
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA200310121961XA
Other languages
English (en)
Other versions
CN100525281C (zh
Inventor
王麒
樊荣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB200310121961XA priority Critical patent/CN100525281C/zh
Publication of CN1627747A publication Critical patent/CN1627747A/zh
Application granted granted Critical
Publication of CN100525281C publication Critical patent/CN100525281C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明涉及一种语音传输过程中实现动态调整抖动缓存的方法。该方法通过实时统计网络的平均延时和平均抖动以准确地反映出当前网络的状况,并根据不断变化的网络中的平均延时和平均抖动状况对JB深度进行实时调整,从而使得接收网关的抗抖动机制能够动态地适配变化的IP网络,降低了在网络中传输语音的过程中的丢包率。同时,改变了原有的静态JB的技术方案所存在的因JB无法灵活地适应网络状况的变化而导致丢包率上升的问题。在相应产品中的测试结果表明本发明能很好地达到语音传输过程中的较佳的抗抖动效果,特别在网络质量较差的情况下可以较大地提高VOIP的语音质量。

Description

语音传输过程中实现动态调整抖动缓存的方法
技术领域
本发明涉及语音传输技术领域,尤其涉及一种语音传输过程中实现动态调整抖动缓存的方法。
背景技术
随着Internet(互联网)使用的普及和技术的不断成熟,使得传统的语音信息承载在Internet上传输成为可能,因此,VOIP(基于互联网协议的语音)业务的各项技术也就应运而生。通过目前IP(互联网协议)网进行语音包传递主要面临的是:IP网中固有的延时、抖动、丢包、乱序等问题均会对VOIP的语音质量造成影响,所谓网络抖动,即延时变化。
在VOIP的应用中,发送网关的DSP(数字信号处理)是以相同时间间隔发送经过编码压缩后的语音包,如10毫秒、20毫秒、30毫秒。语音包经过IP网后产生了抖动,到达接收网关时,相邻语音包的时间间隔发生了变化,因此不再是发送时的相同间隔。这时,接收网关如果将收到的这些已经产生抖动的语音包直接播放,则接收端用户所听到的就不是发送端用户所说的话,从而影响了语音通信的质量。
目前,解决这种网络抖动的方法是在接收网关上增加一个抗抖动机制,即JB(抖动缓存,Jitter Buffer),将收到的语音包进行一定时间的缓存,使得接收网关在播放接收到的语音包时,能以发送时的相同间隔进行播放。这样,通过在接收端增加一定的延时,从而消除了IP网产生的抖动问题。JB在网络中的位置如图1所示,通常位于接收网关处。
下面将要介绍一下现有技术中所采用的JB机制,为了便于理解相应的JB机制首先需要对JB涉及的两个重要概念进行说明,即JB深度和JB长度。JB深度为:第一个包到达JB队列的时间与该包被播放(即出JB队列)的时间之差,一旦第一个包的播放时间确定了,其后续包的播放时间也就跟着确定了,因此,JB深度用来描述一开始由JB队列所产生的初始延时。JB长度则为:JB队列的物理长度,即在实现中JB队列所能存放语音包的个数所对应的时间长度,因此,JB长度反映的是JB队列容纳提早到达的语音包的能力。为此,JB长度的设置应大于或等于JB深度。
目前所采用的解决抖动问题的技术方案主要是静态的JB机制。所谓的静态JB机制是指在整个通话过程中,JB深度保持不变。如图2所示,发送方的阶梯曲线表示发送方以相同的时间间隔发送数据包。由于网络中的抖动,使得数据包到达接收方后就不再是等间距的阶梯曲线了。静态JB方案根据第一个包到达的时间t1和事先设定的JB深度确定出第一个包的播放时间,即确定了图中的虚线,此后JB深度就不再改变了,后续包就按照图中的虚线时间播放。当数据包到达点落在虚线的左侧时,表示该数据包提早到;当落在右侧时,表示数据包迟到,即错过了该包应该播放的时间,视为丢包。例如图中虚线t2表示JB深度为(t2-t1),这个不变的JB深度导致了后续的第6、7、8个包丢失;而虚线t3表示JB深度设为(t3-t1),这个JB深度没有造成丢包,但对前5个包造成了不必要的较大延时。
因此,上述方案中,由于语音包在IP网络中经历的延时是随当前网络状况而不断发生变化的,而且这种变化是无法预知的。因此,使用固定JB深度的静态JB方案并不能很好地达到抗抖动的效果。如图2所示,固定JB深度如果设小了,则会导致丢失率增加;如果设大了,会增加不必要的延时。丢包率和延时正是衡量VOIP语音质量的两个重要的参数,这两个参数的增大都会降低VOIP的语音质量。
静态JB方案的另外一个缺点是,后续语音包的播放时间受到第一个语音包的影响。因为图2中的虚线是由第一个包到达时间和固定JB深度所确定的,而第一个包的到达时间也是随机的,这样,由于第一个包的早到或迟到都会影响静态JB方案的效果。
发明内容
鉴于上述现有技术所存在的缺点,本发明的目的是提供一种语音传输过程中实现动态调整抖动缓存的方法,从而使得接收网关的抗抖动机制能够动态地适配变化的IP网络。
本发明的目的是通过以下技术方案实现的:
本发明提供了一种语音传输过程中实现动态调整抖动缓存的方法,该方法包括:
A、统计并计算语音传输过程中的延时和抖动;
B、根据所述的延时和抖动对接收端的抖动缓存进行深度的调整。
所述的步骤A包括:
统计并计算语音传输过程中的平均延时和平均抖动,或者统计并计算语音传输过程中的最小延时和平均抖动,且所述的延时为语音数据包从发送方到接收方需要的时间,所述的抖动为各个语音数据包的延时的变化。
在上述步骤A中:
所述的平均延时dI和对应的平均抖动vi分别为:di=α×di-1+(1-α)×ni,vi=α×vi-1+(1-α)|di-ni|,α为通过测试获得的权值因子,且0≤α≤1,i为语音数据包的序号;
所述的最小延时为dmin和对应的平均抖动为vi分别为:dmin=min(dmin,ni),vi=α×vi-1+(1-α)(ni-dmin)。
所述的步骤A进一步包括:
A1、接收语音数据包,计算该语音数据包的平均延时和平均抖动值;
A2、将该语音数据包分拆为若干个以基本单位为打包时长的数据包,所述的基本单位是指JB(抖动缓存)队列中每个元素的打包时长;
A3、将拆分后的数据包加入抖动缓存队列中,同时,统计其中的丢包数量,并在丢包数量超过设定值时重新启动JB队列。
所述的步骤B包括:
B1、计算当前语音数据包的实际播放时间,即为旧播放时间,并根据计算获得的平均延时和平均抖动或最小延时和平均抖动计算当前语音数据包的播放时间,称为新播放时间;
B2、根据所述的旧播放时间和所述的新播放时间,对接收端的抖动缓存队列进行深度的调整。
所述的步骤B1包括:
根据当前的系统时间确定当前语音包的旧播放时间;
确定当前语音数据包的新播放时间:如果为基于平均延时和平均抖动计算,则所述的当前的第一个语音数据包的新播放时间为:pi=tsi+di+γ×vi,所述的后续的语音数据包的新播放时间为:pj=pi+tsj-tsi,所述的i为当前语音段的第一个语音数据包的序号,所述的j为后续的语音数据包的序号,所述的γ为对平均抖动的放大倍数,所述的tsi和tsj分别为发送端发送第i个和第j个语音数据包的时间;如果为基于最小延时dmin和平均抖动计算,则所述的当前语音数据包的新播放时间pi为:pi=tsi+dmin+γ×vi,所述的后续的语音数据包的新播放时间pj为:pj=pi+tsj-tsi
所述的步骤B2包括:
当语音传输过程中发生语音数据包丢失的情况时,或处于静音期间时,则根据所述的语音数据包的旧播放时间和所述的新播放时间,对接收端的抖动缓存队列进行深度的调整。
所述的步骤B2包括:
B21、确定语音传输过程中的相应静音段的开始点;
B22、在所述的静音段的开始点根据所述的旧播放时间和所述的新播放时间,对接收端的抖动缓存队列进行深度的调整。
所述的步骤B22包括:
B221、计算新播放时间与旧播放时间间的差值,并判断该差值的绝对值是否大于允许的最大调整幅度值,如果大于,则令允许的最大调整幅度值为本次JB调整的幅度值,否则,以所述的差值的绝对值作为本次JB调整的幅度值;
B222、根据确定的本次JB调整的幅度值对所述的JB进行深度调整。
所述的步骤B222包括:
根据确定的本次JB调整的幅度值,并通过调整JB的出队指针进行JB长度的调整,包括进行增加JB深度的操作和缩短JB长度的操作。
本发明还包括,当进行所述的缩短JB深度的操作时,如果确定遇到语音数据包,则停止相应的缩短JB深度的操作。
本发明中,所述的步骤B包括:
判断上一次抖动缓存深度调整的时间距本次抖动缓存深度调整的时间的间隔值是否大于设定的允许进行抖动缓存深度调整的最小间隔时间,如果是,则根据所述的延时和抖动对接收端的抖动缓存进行深度的调整,否则,不进行抖动缓存的浓度调整。
由上述本发明所提供的技术方案可以看出,本发明中,通过实时统计网络的平均延时和平均抖动以准确地反映出当前网络的状况,并根据不断变化的网络中的平均延时和平均抖动状况对JB深度进行实时调整,从而使得接收网关的抗抖动机制能够动态地适配变化的IP网络,降低了在网络中传输语音的过程中的丢包率。本发明改变了原有的静态JB的技术方案所存在的因JB无法灵活地适应网络状况的变化而导致丢包率上升的问题。本发明中,在接收网关处可以根据实际需要灵活地选择相应的动态JB调整方案,以有效地改善网络中的语音传输效果。在相应产品中的测试结果表明本发明能很好地达到语音传输过程中的较佳的抗抖动效果,特别在网络质量较差的情况下可以较大地提高VOIP的语音质量。
附图说明
图1为JB应用的网络环境示意图;
图2为基于静态JB的语音数据包收发延时示意图;
图3为本发明中各个变量的含义的示意图;
图4为本发明中所述的随机调整方式的示意图;
图5为本发明中所述的静音期间调整方式的示意图;
图6为本发明中所述的入队处理过程的流程图;
图7A、7B、7C为本发明中所述的出队处理过程的流程图;
图8为本发明中所述的动态调整JB深度处理过程的流程图。
具体实施方式
本发明提出了一种语音传输过程中实现动态调整抖动缓存的方法,该方法首先针对现有的静态JB提出了动态调整JB的概念,其次该方法提供了基于语音传输过程中产生的延时和抖动对接收端的JB的深度进行动态的调整,即兼顾了网络中进行语音传输时所产生的抖动和延时对JB的深度的不同要求,并进行相应的调整,从而有效地改善语音传输的质量,针对无法预计其延时变化的IP网络,采用动态JB可以达到很好的达到抗抖动效果,减少不必要丢包率或延时。如果仅根据平均抖动的变化作为JB深度需要调整的幅度,则当网络的平均延时增大,但平均抖动是不变时,无需对JB深度进行调整,而实际上由于平均延时增大,JB深度是需要进行增加调整的;因此,单纯依据平均抖动变化而不引入平均延时是无法准确地进行JB深度的调整,以适应不同的网络传输状况。
本发明中,可以采用实时地计算当前网络的平均延时和平均抖动,并根据实时统计的网络信息,动态调整JB深度的方便,从而使JB的深度可以适应当前的网络状况,降低了网络中的丢包率和延时,提高了VOIP(基于IP的语音业务)的语音质量。本发明的实现使得JB的深度不再仅与第一个语音数据包的到达时间的相关,如果第一个语音数据包早到或迟到导致JB的深度无法适应以后的需要,则可以通过后续的动态调整过程对JB深度进行调整补偿。
本发明所述的语音传输过程中实现动态调整抖动缓存的方法具体包括以下处理过程:
步骤1:实时统计并计算语音传输过程中的延时和抖动,以便于根据所述的延时和抖动确定所述的JB深度需要调整的幅度值;
为准确地衡量每次JB深度调整需要调整的幅度值,以保证调整后的JB可以很好地适应相应的网络传输情况,减少语音数据包的丢包率,并保证语音的质量;为此,可以根据语音传输过程中的平均延时和平均抖动进行相应的JB深度的调整,还可以根据语音传输过程中的最小延时和平均抖动进行相应的JB深度的调整,下面分别说明如何计算所述的各值:
(1)实时统计网络状况、计算每个包的播放时间,并通过如下公式对每个收到的语音数据包计算当前网络的平均延时di和平均抖动vi,其中涉及的ni为第i个语音数据包在网络中的总延时,ai为第i个语音数据包到达接收网送的时间(取自接收网关的系统时间),tsi为发送第i个语音数据包的时间(取自发送网关的DSP采样时间),α为可调的权植因子:
ni=ai-tsi→(算式1)
di=α×di-1+(1-α)×ni→(算式2)
vi=α×vi-1+(1-α)×|di-ni|→(算式3)    其中:0≤α≤1
语音数据包到达接收网关的时间和时戳之差就是语音数据包在网络中的相对延时ni;在此,我们并不考虑发送网关和接收网关的时钟同步问题。动态JB关注的问题是网络中的抖动,即延时的变化;而并不关注网络中产生的绝对延时,因此,只要保证发送网关和接收网关的相对时钟同步即可;上式中,通过对所述的α的调整可以设置本次数据包的计算值对平均值的影响程度,α可在实现中根据实际网络状况选择最优的权值;
(2)在对每个语音数据包进行网络状况统计时,所述的最小延时dmin和平均抖动vi2为根据如下算式进行计算:
ni=ai-tsi→(算式4)
dmin=min(dmin,ni)→(算式5)
vi=α×vi-1+(1-α)×(ni-dmin)→(算式6)
ni为第i个语音数据包在网络中的延时,dmin为最小延时,记录最小的网络延时;vi为平均抖动,与(1)中计算过程不同的是第i个语音数据包的抖动只要把第i个语音数据包的网络延时减去最小延时即可,而不必再进行取绝对值操作了,所述的α仍然是可调的权植因子。
步骤2:根据所述的平均延时和平均抖动,或者根据所述的最小延时和平均抖动计算每个语音数据包的播放时间,即语音数据包的新的播放时间;同时,还需要计算语音数据包的实际播放时间,即旧的播放时间;
即:以实时统计的网络中的语音传输的平均延时和平均抖动或最小延时和平均抖动作为计算依据,计算每个语音数据包的播放时间;以系统的当前时间为依据计算当前语音数据包的实际播放时间,
如果以平均延时和平均抖动为依据计算所述的语音数据包的播放时间时,具体计算可以采用以下算式进行,公式如下:
pi=tsi+di+γ×vi→(算式7)
pj=pi+tsj-tsi→(算式8)
其中,i为当前语音段的第一个语音数据包的序号,且pi为当前的第一个语音数据包的新的播放时间;j为当前语音段的后续的语音数据包的序号,且pj为后续的语音数据包的新的播放时间;γ表示对平均抖动的放大倍数,可在实现中根据实际网络状况选择最优的放大倍数;
如果以最小延时和平均抖动为依据计算所述的语音数据包的播放时间,则在计算每个语音数据包的播放时间可以采用如下算式:
Figure A20031012196100131
pj=pi+tj-ti→(算式10)
其中,i为当前语音段的第一个语音数据包的序号,且pi为当前的第一个语音数据包的新的播放时间,j为当前语音段的后续的语音数据包的序号;且pj为后续的语音数据包的新的播放时间;γ表示对平均抖动的放大倍数,可在实现中根据实际网络状况选择最优的放大倍数;与前面不同的是,在计算pi时,不再使用平均延时,而是使用最小延时和平均抖动;
根据最小延时和平均抖动计算所述的语音数据包的播放时间时,因只要进行比较操作,所以计算量减小;而且,计算平均抖动时可以不必考虑取绝对值操作;然而,依据该方法计算出的播放时间进行JB深度调整,将可能导致JB深度不断增长,即计算出的pi值会偏大,例如,当网络正常时最小延时为dmin,经过一段时间后,由于某台关键路径上的路由器瘫痪而导致网络延时增加并且持续了一段时间,此时仍然使用网络正常状况下记录的dmin,将导致平均抖动增大,再经过γ倍的放大后,最终导致每次计算出的pi都会偏大;因此,如果要使用该方法还需要避免JB深度不断增大,例如可以采用当dmin值在设定的一段时间内没有更新时,则强迫更新其值,从而避免JB深度不断增大。
步骤3:根据所述的当前语音数据包的新的播放时间与旧的播放时间的差值进行JB深度的调整,即根据所述的差值确定JB深度需要调整的幅度值;
对JB深度通常采用调整JB队列出队指针的方式进行,如果增大JB的深度,则将相应的出队指针作递减处理,如果减小JB的深度,则将相应的出队指针作递增处理,所述的递增或递减的量则由所述的JB深度需要调整的幅度值确定;
通常在对JB深度进行调整时,为保证语音传输过程的相对稳定,还需要考虑两方面的问题,一方面是确定合适的对JB深度进行调整的频度,过于频繁的调整将导致JB深度的反复振荡,而频度大小又无法很好地体现出动态JB的优点,另一方面是对JB深度进行调整的幅度,如果一次调整的幅度过大,会出现JB深度瞬间大幅度伸长或大幅度缩减,对语音的瞬间传输效果产生较大的影响;
另外,对JB深度进行动态调整时,还需要确定一个调整的时间点;由于在一个持续通话中,通话双方传送的语音数据通常是一段语音和一段静音交替出现,因此,动态调整JB深度时间点可以采用两种方式确定:
一种是随机调整的方式,即语音传输过程中一旦出现丢包情况便立刻进行JB深度的调整,如图4所示,语音段K的第i+1个语音数据包迟到导致丢包,这时立刻根据相应的计算结果进行JB深度增长调整,从而使得后续的第i+2、i+3、i+4个包不被丢弃;随机调整方式的优点是减少丢包率,但会损坏通话的语音质量,影响交互通话的可理解性,例如当调整点恰好落在语音段时,此时如果增加JB深度会使一句连贯的话中出现了不应该的停顿;相反,如果减少JB深度会使一句话中的若干部分丢失,这些都会造成语音质量的下降;
另一种方案是静音期间调整的方式,即动态调整的时间点选择在静音期间,采用这种方案就可以避免第一种方案中造成的语音质量下降;如果在静音期间进行动态JB的调整,增加和减小JB深度只会影响静音阶段持续时间的长短,而静音阶段持续时间的稍微增长或缩短并不会影响到语音质量;如图5所示,在语音段K中,即使出现了丢包也不进行调整,在静音段K中进行动态JB深度增长调整,使得后续的语音段K+1不再出现丢包,所产生的影响只是静音段K的稍微增长。
下面以静音期间调整的方式为例,对本发明所述的的基于平均延时和平均抖动的动态调整JB的实现方法作进一步说明,具体的实现过程可以包括三个处理过程,分别为:语音数据包入队的处理过程、出队的处理过程、动态调整JB深度的处理过程。JB中的JB队列按时戳进行排序,JB队列的每个元素代表不同编解码打包时长的基本单位,如G.711规定基本单位为10ms、G.729规定基本单位为10ms、G.723规定基本单位为30ms。
首先,对语音数据包入队的处理过程进行说明,语音数据包入队过程中除了对所述的语音数据包进行加入JB队列的处理外,还需要计算所述的语音数据包的ni、di、vi,以便于后面的动态调整JB深度的处理过程根据该计算结果进行相应的调整,对ni、di、vi的计算可以采用前面描述过的算式实现,其中,考虑到算法在CPU(中央处理器)上的运行效率,所述的α的取值都应为2的N次幂的倒数,如0.875,0.75等,这样,在实现时可使用移位运算完成,例如,通过在网上实际测试得出α取值0.75时效果最佳,故α取值0.75。除上述计算外,对语音数据包进行加入JB队列的处理过程如图6所示,具体包括以下步骤:
步骤61:进行语音数据包的拆包处理,即将各种编解码各种打包时长的单个数据包拆成若干个以基本单位为打包时长的数据包,除了拆分语音数据包净荷部分外,还包括对拆分后各个RTP(实时传输协议)包首部时戳的重新计算,以确定新的时间戳。
步骤62:定义一个丢包计数器变量ucLossCounter,用于记录连续的无法进入JB队列的数据包个数,即语音数据包因迟到或早到导致丢包时,该变量开始计数。
步骤63:判断当前的拆分获得的数据包能否入JB队列,如果能,则执行步骤64,否则,执行步骤65;
步骤64:令丢包计数器变量ucLossCounter=0,并保存当前的数据包;另外,为确定保存的数据包不是重复的数据包,该步骤中在保存当前的数据包前还需要判断所述的数据包是否为重复的数据包,如果是,则作丢弃处理,如果不是,则保存。
步骤65:确定该数据包为迟到或早到的数据包而无法加入JB队列,即该数据包为丢弃的数据包,将丢包计数器变量ucLossCounter作加1处理;
此处还需要分别对迟到、早到的数据包进行统计,作为测试JB效果的参数,以便于根据该参数确定本发明中涉及的可调的参数,如α和γ等。
步骤66:判断丢包计数器变量ucLossCounter是否小于设定的丢包数量,如果小于,则执行步骤67,不对JB队列作处理,否则,执行步骤68,重新启动JB队列;
例如可以设定允许的丢包数量为3,则当连续三个数据包无法入JB队列时,便重启JB队列,同时为监测网络在一段时间内的语音传输性能,还需要对JB重新启动的次数进行统计,如果重新启动的次数过多则说明网络中存在着较严重的延时和抖动,如不进行维护已经无法再进行语音数据的传输。
相应的数据包进入JB队列缓存后,经过一定的延时后,接着,还需要对所述的数据包进行出队处理,具体的处理过程如图7所示,包括以下步骤:
步骤71:定义静态变量:空包计数器变量和调整频度变量,分别用于统计连续的空包的数量,及连续两次调整间隔的时间值;
所述的空包计数器变量用于确定当前是否处于静音期间;
所述的JB队列初始延时计数器用于实现一个设定的JB队列的初始延时,如初始可以设置为50ms,则经过50ms后JB队列中的数据包方可出队;具体的计数方式为:当需要执行一次出队处理时,判断初始延时计数器值是否小于或等于0,如果不是,则减去JB队列元素的基本单位(如10ms),如此循环操作,直到所述的初始延时计数器值小于或等于0时,开始进行出队处理,即执行以下步骤。
步骤72:判断出JB队列的数据包的类型,即根据数据包中的记录其类型的字段值确定数据包的类型,如果是空包,则执行步骤73,如果是静音包,则执行步骤74,对于语音包,则执行步骤75。
步骤73:对所述的空包进行进一步的处理,包括:
步骤731:根据静间标志判断当前是否处于静音期间,如果该标志为true,则为处于静音期间,如果为false,则不处于静音期间,从而进一步确定该空包是否为静音包,如果是,则执行步骤732,否则,执行步骤733;
步骤732:令空包计数器值为“0”,并创建非传输帧,执行步骤736;
步骤733:令空包计数器值加1,并判断空包计数器计数值是否大于设定值,如果大于,则执行步骤734,否则,执行步骤735;
步骤734:将所述的静音标志设置为true,确定当前处于静音期间,并确定该数据包为静音包,创建非传输帧,执行步骤736;
步骤735:创建丢包指示帧,以便于进行相应的丢包数量的统计,并执行步骤736;
步骤731至步骤735的处理过程主要为区分当出队的元素为空(即为空包)且当前不是处于静音期间时所存在的两种可能:一种是当前出队的数据包应该为语音包,但由于该数据包迟于其播放时间到达,造成丢包,这时应向DSP下发丢包指示帧;第二种可能是在此之前,丢失了一个静音帧,因而没有将静音标志置为静音期间,这时向DSP下发的应是非传输帧而不是丢包指示帧;例如,可以设定当空包计数器变量ucEmptyCounter记录的连续出现次数小于2次时,将当前空包当成丢包指示帧下发;当次数大于等于2次时,当成非传输帧下发,同时把当前静音标志改为静音期间;
步骤736:将数据包出队,统计出队数据包数量,并更新出队指针和出队时戳。
步骤74:对静音包作进一步的处理,具体包括:
步骤741:令空包计数器计数值为“0”,且记录当前最静音包大序列号,并将数据包的RTP头部转换成DSP头部;
步骤742:将数据包出队,统计出队数据包数量,并更新出队指针和出队时戳;
步骤743:判断静间标志是否为静音期间的标志,如果是,则执行步骤744,即不作任何处理,如果不是,则将静音标志设置为静音期间的标志,并执行步骤745;
步骤745:判断当前调整频度变量的统计值是否大于设定的允许的两次JB深度调整的间隔时间(即调整频度控制因子),如果是,则执行步骤746,否则,执行步骤747;
所述的调整频度控制因子为通过一个计时器进行统计,每进行一次JB深度调整,则该计时器清“0”,并始重新计时,当需要进行新的一次的JB深度的调整时,判断该计时值是否大于设定的值(即设定的允许的两次JB深度调整的间隔时间),如果大于,则执行步骤746,否则,执行步骤747;
所述的调整频度控制因子为通过测试获得,可以在实际网或模拟实际网上测试获得,例如可以取值为100毫秒,即控制两次动态JB调整的时间间隔至少为100毫秒;
步骤746:进行JB深度的调整,具体的调整过程,将在后面的动态调整JB深度的处理过程中进行说明;
步骤747:针对该静音包的处理过程结束。
步骤75:对所述的语音包进行处理,具体包括:
步骤751:令空包计数器变量为“0”,如果所述的静音标志为静音期间的标志,还需要将所述的静音标志改为非静音期间的标志;
步骤752:记录当前的数据包的最大序列号,并将所述的RTP头部转换成DSP头部;
步骤753:出队并统计出队的数据包的数量,更新出队指针和出队时戳,本次语音包的处理过程结束。
最后,对所述的动态调整JB深度的处理过程进行说明。对JB深度进行调整时,具体的调整点选择在每个静音段的开始点,以避免在语音段开始点进行缩短JB深度的调整,导致丢弃该语音段的前面若干语音包,造成语音质量下降的现象出现;具体的处理过程参见图8,包括以下步骤:
步骤81:为判断是否需要进行JB深度的动态调整时,首先需要计算当前静音包的实际播放时间,定义为旧播放时间,所述的旧播放时间为根据当前的系统时间确定,即旧播放时间=系统当前时间×时间转换变量,所述的时间转换变量为将毫秒转换为系统的计时单位1/8毫秒;
步骤82:根据前面所述的算式7或算式9,计算出当前静音包的播放时间,定义为新播放时间,新播放时间就是符合当前网络抖动状况的播放时间;
步骤83:计算新播放时间和旧播放时间之差,即为JB深度需要调整的幅度,为便于进行调整还需要将所得的差值除以JB的元素长度值(即打包时长的基本单位),获得最终的JB深度需要调整的幅度值,如果所得的差值为“0”,则不需要进行调整;
步骤84:比较确定所述的幅度值的绝对值与设定的允许的一次最大调整的幅度值中较小的一个,作为实际针对JB调整的幅度值;
所述的允许的一次最大调整的幅度值即为调整幅度控制因子,通过实际网或模拟实际网上测试,取值可以为10,单位为JB队列单元格所对应的时间(即基本单位),例如编解码为G.711时,动态JB一次调整的幅度范围允许为增长或缩短JB深度(10×10)毫秒;
步骤85:判断所述的计算获得的幅度值是否小于“0”,如果是执行步骤86,否则,执行步骤87;
步骤86:对JB进行深度缩短的调整,具体为:
步骤861:建立循环变量,并令其初始值为“0”;
步骤862:判断循环变量是否小于实际针对JB调整的幅度值,如果是,则执行步骤863,否则,执行步骤88;
步骤863:判断当前数据包是否为语音包,如果是语音包,则执行步骤88,否则,执行步骤864;
即在进行JB深度缩短操作时,只要遇到语音包就立刻停止缩短调整,以保证JB深度调整时不删除任何语音包,避免由于JB深度动态调整造成的语音质量下降;
步骤864:将当前数据包类型置为空包,并将出队指针递增1,循环变量加1,执行步骤862;
步骤87:对JB进行深度增长调整,具体为:
步骤871:建立循环变量,并令其初始值为“0”;
步骤872:判断循环变量是否小于实际针对JB调整的幅度值,如果是,则执行步骤863,否则,执行步骤88;
步骤873:将出队指针递减1,并将当前数据包类型置为空包,循环变量加1,执行步骤872;
步骤88:根据调整的结果更新JB的深度值,过程结束。
由上述针对本发明的详细的描述可以看出,与静态JB相比,本发明能根据不断变化的网络状况进行动态JB深度的实时调整,使得接收网关的抗抖动机制能够动态地适配变化的IP网络。通过实时统计网络的平均延时和平均抖动可以准确地反映出当前网络的状况。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

Claims (12)

1、一种语音传输过程中实现动态调整抖动缓存的方法,其特征在于包括:
A、统计并计算语音传输过程中的延时和抖动;
B、根据所述的延时和抖动对接收端的抖动缓存进行深度的调整。
2、根据权利要求1所述的语音传输过程中实现动态调整抖动缓存的方法,其特征在于所述的步骤A包括:
统计并计算语音传输过程中的平均延时和平均抖动,或者统计并计算语音传输过程中的最小延时和平均抖动,且所述的延时为语音数据包从发送方到接收方需要的时间,所述的抖动为各个语音数据包的延时的变化。
3、根据权利要求2所述的语音传输过程中实现动态调整抖动缓存的方法,其特征在于,在所述的步骤A中:
所述的平均延时dI和对应的平均抖动vi分别为:di=α×di-1+(1-α)×ni,vi=α×vi-1+(1-α)|di-ni|,α为通过测试获得的权值因子,且0≤α≤1,i为语音数据包的序号;
所述的最小延时为dmin和对应的平均抖动为vi分别为:dmin=min(dmin,ni),vi=α×vi-1+(1-α)(ni-dmin)。
4、根据权利要求1所述的语音传输过程中实现动态调整抖动缓存的方法,其特征在于所述的步骤A包括:
A1、接收语音数据包,计算该语音数据包的平均延时和平均抖动值;
A2、将该语音数据包分拆为若干个以基本单位为打包时长的数据包,所述的基本单位是指JB(抖动缓存)队列中每个元素的打包时长;
A3、将拆分后的数据包加入抖动缓存队列中,同时,统计其中的丢包数量,并在丢包数量超过设定值时重新启动JB队列。
5、根据权利要求1或4所述的语音传输过程中实现动态调整抖动缓存的方法,其特征在于所述的步骤B包括:
B1、计算当前语音数据包的实际播放时间,即为旧播放时间,并根据计算获得的平均延时和平均抖动或最小延时和平均抖动计算当前语音数据包的播放时间,称为新播放时间;
B2、根据所述的旧播放时间和所述的新播放时间,对接收端的抖动缓存队列进行深度的调整。
6、根据权利要求5所述的语音传输过程中实现动态调整抖动缓存的方法,其特征在于所述的步骤B1包括:
根据当前的系统时间确定当前语音包的旧播放时间;
确定当前语音数据包的新播放时间:如果为基于平均延时和平均抖动计算,则所述的当前的第一个语音数据包的新播放时间为:pi=tsi+di+γ×vi,所述的后续的语音数据包的新播放时间为:pj=pi+tsj-tsi,所述的i为当前语音段的第一个语音数据包的序号,所述的j为后续的语音数据包的序号,所述的γ为对平均抖动的放大倍数,所述的tsi和tsj分别为发送端发送第i个和第j个语音数据包的时间;如果为基于最小延时dmin和平均抖动计算,则所述的当前语音数据包的新播放时间pi为:pi=tsi+dmin+γ×vi,所述的后续的语音数据包的新播放时间pj为:pj=pi+tsj-tsi
7、根据权利要求5所述的语音传输过程中实现动态调整抖动缓存的方法,其特征在于所述的步骤B2包括:
当语音传输过程中发生语音数据包丢失的情况时,或处于静音期间时,则根据所述的语音数据包的旧播放时间和所述的新播放时间,对接收端的抖动缓存队列进行深度的调整。
8、根据权利要求5所述的语音传输过程中实现动态调整抖动缓存的方法,其特征在于所述的步骤B2包括:
B21、确定语音传输过程中的相应静音段的开始点;
B22、在所述的静音段的开始点根据所述的旧播放时间和所述的新播放时间,对接收端的抖动缓存队列进行深度的调整。
9、根据权利要求8所述的语音传输过程中实现动态调整抖动缓存的方法,其特征在于所述的步骤B22包括:
B221、计算新播放时间与旧播放时间间的差值,并判断该差值的绝对值是否大于允许的最大调整幅度值,如果大于,则令允许的最大调整幅度值为本次JB调整的幅度值,否则,以所述的差值的绝对值作为本次JB调整的幅度值;
B222、根据确定的本次JB调整的幅度值对所述的JB进行深度调整。
10、根据权利要求9所述的语音传输过程中实现动态调整抖动缓存的方法,其特征在于所述的步骤B222包括:
根据确定的本次JB调整的幅度值,并通过调整JB的出队指针进行JB长度的调整,包括进行增加JB深度的操作和缩短JB长度的操作。
11、根据权利要求10所述的语音传输过程中实现动态调整抖动缓存的方法,其特征在于,当进行所述的缩短JB深度的操作时,如果确定遇到语音数据包,则停止相应的缩短JB深度的操作。
12、根据权利要求1或4所述的语音传输过程中实现动态调整抖动缓存的方法,其特征在于所述的步骤B包括:
判断上一次抖动缓存深度调整的时间距本次抖动缓存深度调整的时间的间隔值是否大于设定的允许进行抖动缓存深度调整的最小间隔时间,如果是,则根据所述的延时和抖动对接收端的抖动缓存进行深度的调整,否则,不进行抖动缓存的浓度调整。
CNB200310121961XA 2003-12-09 2003-12-09 语音传输过程中实现动态调整抖动缓存的方法 Expired - Fee Related CN100525281C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB200310121961XA CN100525281C (zh) 2003-12-09 2003-12-09 语音传输过程中实现动态调整抖动缓存的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB200310121961XA CN100525281C (zh) 2003-12-09 2003-12-09 语音传输过程中实现动态调整抖动缓存的方法

Publications (2)

Publication Number Publication Date
CN1627747A true CN1627747A (zh) 2005-06-15
CN100525281C CN100525281C (zh) 2009-08-05

Family

ID=34761614

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200310121961XA Expired - Fee Related CN100525281C (zh) 2003-12-09 2003-12-09 语音传输过程中实现动态调整抖动缓存的方法

Country Status (1)

Country Link
CN (1) CN100525281C (zh)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008043304A1 (fr) * 2006-09-29 2008-04-17 Huawei Technologies Co., Ltd. Méthode de détection de qualité de service
WO2009030146A1 (fr) * 2007-08-28 2009-03-12 Hanmin Yang Procédé destiné à exprimer la qualité de communication d'un téléphone de réseau
WO2009109069A1 (en) * 2008-03-07 2009-09-11 Arcsoft (Shanghai) Technology Company, Ltd. Implementing a high quality voip device
CN1960315B (zh) * 2005-10-31 2010-08-25 康佳集团股份有限公司 流媒体去抖动方法
CN101335796B (zh) * 2008-07-25 2011-01-19 华为技术有限公司 解码调度方法和装置
CN102044248B (zh) * 2009-10-10 2012-07-04 北京理工大学 一种针对流媒体音频质量的客观评测方法
CN102044247B (zh) * 2009-10-10 2012-07-04 北京理工大学 一种针对VoIP语音的客观评测方法
CN101582832B (zh) * 2008-05-17 2012-10-31 红杉树(杭州)信息技术有限公司 VoIP抖动缓冲区的动态处理方法
CN102761468A (zh) * 2011-04-26 2012-10-31 中兴通讯股份有限公司 一种自适应调整语音抖动缓存区的方法及系统
CN102843339A (zh) * 2011-06-21 2012-12-26 中兴通讯股份有限公司 一种延时处理方法及装置
CN102972079A (zh) * 2011-06-22 2013-03-13 华为技术有限公司 基于互联网协议的语音业务数据包传输的处理方法和基站
CN101924683B (zh) * 2009-06-09 2013-04-24 华为技术有限公司 一种动态调整抖动缓存的方法、装置和电子设备
CN103905444A (zh) * 2014-03-31 2014-07-02 深圳市邦彦信息技术有限公司 一种综合业务通信指挥系统
CN104506455A (zh) * 2014-12-26 2015-04-08 深圳市兰丁科技有限公司 数据包排序去抖方法及装置
CN104618106A (zh) * 2014-12-29 2015-05-13 芜湖乐锐思信息咨询有限公司 一种安全可靠的互联网在线交易系统
CN108933786A (zh) * 2018-07-03 2018-12-04 公安部第研究所 用于改善无线数字通信系统接收方密文语音质量的方法
CN109104263A (zh) * 2017-06-20 2018-12-28 阿里巴巴集团控股有限公司 存储容量的调整方法、装置和系统
CN109379168A (zh) * 2018-11-23 2019-02-22 竞技世界(北京)网络技术有限公司 一种用于前端实时语音聊天的语音平滑播放方法
CN109743263A (zh) * 2019-01-14 2019-05-10 北京三体云联科技有限公司 动态抖动缓冲方法、装置和计算机设备
CN110933233A (zh) * 2020-01-21 2020-03-27 翱捷科技(上海)有限公司 一种移动终端及其处理语音通信的方法
CN111478924A (zh) * 2020-05-09 2020-07-31 西安烽火电子科技有限责任公司 一种超短波电台多跳中继语音通信方法
CN111711992A (zh) * 2020-06-23 2020-09-25 瓴盛科技有限公司 Cs语音下行链路抖动的校准方法
CN116506077A (zh) * 2023-06-28 2023-07-28 微网优联科技(成都)有限公司 一种信号处理方法及基于xpon的通信系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0921666A3 (en) * 1997-12-02 1999-07-14 Nortel Networks Corporation Speech reception via a packet transmission facility
US6452950B1 (en) * 1999-01-14 2002-09-17 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive jitter buffering
US6683889B1 (en) * 1999-11-15 2004-01-27 Siemens Information & Communication Networks, Inc. Apparatus and method for adaptive jitter buffers
CN1119890C (zh) * 2000-09-30 2003-08-27 华为技术有限公司 一种ip语音数据包的抗丢包处理方法

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1960315B (zh) * 2005-10-31 2010-08-25 康佳集团股份有限公司 流媒体去抖动方法
WO2008043304A1 (fr) * 2006-09-29 2008-04-17 Huawei Technologies Co., Ltd. Méthode de détection de qualité de service
WO2009030146A1 (fr) * 2007-08-28 2009-03-12 Hanmin Yang Procédé destiné à exprimer la qualité de communication d'un téléphone de réseau
WO2009109069A1 (en) * 2008-03-07 2009-09-11 Arcsoft (Shanghai) Technology Company, Ltd. Implementing a high quality voip device
CN101582832B (zh) * 2008-05-17 2012-10-31 红杉树(杭州)信息技术有限公司 VoIP抖动缓冲区的动态处理方法
CN101335796B (zh) * 2008-07-25 2011-01-19 华为技术有限公司 解码调度方法和装置
CN101924683B (zh) * 2009-06-09 2013-04-24 华为技术有限公司 一种动态调整抖动缓存的方法、装置和电子设备
CN102044247B (zh) * 2009-10-10 2012-07-04 北京理工大学 一种针对VoIP语音的客观评测方法
CN102044248B (zh) * 2009-10-10 2012-07-04 北京理工大学 一种针对流媒体音频质量的客观评测方法
CN102761468A (zh) * 2011-04-26 2012-10-31 中兴通讯股份有限公司 一种自适应调整语音抖动缓存区的方法及系统
CN102761468B (zh) * 2011-04-26 2015-04-08 中兴通讯股份有限公司 一种自适应调整语音抖动缓存区的方法及系统
CN102843339A (zh) * 2011-06-21 2012-12-26 中兴通讯股份有限公司 一种延时处理方法及装置
CN102843339B (zh) * 2011-06-21 2017-09-19 南京中兴新软件有限责任公司 一种延时处理方法及装置
CN102972079B (zh) * 2011-06-22 2016-05-18 华为技术有限公司 基于互联网协议的语音业务数据包传输的处理方法和基站
CN102972079A (zh) * 2011-06-22 2013-03-13 华为技术有限公司 基于互联网协议的语音业务数据包传输的处理方法和基站
CN103905444A (zh) * 2014-03-31 2014-07-02 深圳市邦彦信息技术有限公司 一种综合业务通信指挥系统
CN104506455A (zh) * 2014-12-26 2015-04-08 深圳市兰丁科技有限公司 数据包排序去抖方法及装置
CN104506455B (zh) * 2014-12-26 2017-11-14 深圳市兰丁科技有限公司 数据包排序去抖方法及装置
CN104618106A (zh) * 2014-12-29 2015-05-13 芜湖乐锐思信息咨询有限公司 一种安全可靠的互联网在线交易系统
CN109104263A (zh) * 2017-06-20 2018-12-28 阿里巴巴集团控股有限公司 存储容量的调整方法、装置和系统
CN108933786A (zh) * 2018-07-03 2018-12-04 公安部第研究所 用于改善无线数字通信系统接收方密文语音质量的方法
CN108933786B (zh) * 2018-07-03 2021-04-09 公安部第一研究所 用于改善无线数字通信系统接收方密文语音质量的方法
CN109379168B (zh) * 2018-11-23 2021-04-13 竞技世界(北京)网络技术有限公司 一种用于前端实时语音聊天的语音平滑播放方法
CN109379168A (zh) * 2018-11-23 2019-02-22 竞技世界(北京)网络技术有限公司 一种用于前端实时语音聊天的语音平滑播放方法
CN109743263A (zh) * 2019-01-14 2019-05-10 北京三体云联科技有限公司 动态抖动缓冲方法、装置和计算机设备
CN109743263B (zh) * 2019-01-14 2022-06-17 北京世纪好未来教育科技有限公司 动态抖动缓冲方法、装置和计算机设备
CN110933233A (zh) * 2020-01-21 2020-03-27 翱捷科技(上海)有限公司 一种移动终端及其处理语音通信的方法
CN110933233B (zh) * 2020-01-21 2020-08-07 翱捷科技(上海)有限公司 一种移动终端及其处理语音通信的方法
CN111478924A (zh) * 2020-05-09 2020-07-31 西安烽火电子科技有限责任公司 一种超短波电台多跳中继语音通信方法
CN111478924B (zh) * 2020-05-09 2022-05-24 西安烽火电子科技有限责任公司 一种超短波电台多跳中继语音通信方法
CN111711992A (zh) * 2020-06-23 2020-09-25 瓴盛科技有限公司 Cs语音下行链路抖动的校准方法
CN111711992B (zh) * 2020-06-23 2023-05-02 瓴盛科技有限公司 Cs语音下行链路抖动的校准方法
CN116506077A (zh) * 2023-06-28 2023-07-28 微网优联科技(成都)有限公司 一种信号处理方法及基于xpon的通信系统
CN116506077B (zh) * 2023-06-28 2023-10-20 微网优联科技(成都)有限公司 一种信号处理方法及基于xpon的通信系统

Also Published As

Publication number Publication date
CN100525281C (zh) 2009-08-05

Similar Documents

Publication Publication Date Title
CN1627747A (zh) 语音传输过程中实现动态调整抖动缓存的方法
US20200266839A1 (en) Media Controller with Buffer Interface
KR100902456B1 (ko) 단 대 단 VoIP 매체 지연을 관리하는 방법 및 장치
EP2514162B1 (en) Real-time voip transmission quality predictor and quality-driven de-jitter buffer
EP2074761B1 (en) Playout based delay scheduler
US20140226476A1 (en) Methods Providing Packet Communications Including Jitter Buffer Emulation and Related Network Nodes
EP1763175B1 (en) Stream data reception/reproduction device and stream data reception/reproduction method
CN1969321A (zh) 在接收器终端提供话音分组缓冲器的连续自适应控制的方法和装置
CN1901431A (zh) 一种丢帧隐藏方法和装置
CN1902864A (zh) 在接收终端上提供分组的平滑自适应管理的方法和设备
WO2004102850A3 (en) Adaptive scheduling window management for a quality of service enabled local area network
EP3466001B1 (en) Media buffering
JP2006135974A (ja) 適応的バッファ遅延を有する音声受信機
TW201644239A (zh) 用於控制語音品質的方法和裝置
CN1879351A (zh) 根据音频突发长度适配播出缓冲器
CN1268080C (zh) 用于在电信系统中发送信息的方法
CN102843339B (zh) 一种延时处理方法及装置
CN1182685C (zh) 用于报文转发系统的队列管理方法
CN1677954A (zh) 语音传输过程中动态调整抖动缓存的实现方法
CN1889526A (zh) 语音数据帧的接收方法及终端、无线分组网网关和系统
JP2008085822A (ja) 通信端末装置およびパケット送信制御方法
CN1514581A (zh) 利用压缩与解压缩技术的感知动态播放法及播放装置
CN1571416A (zh) 无线接入网与核心网接口用户平面的时间调整方法
CN1581743A (zh) 一种第三代移动通信Iu口用户平面时间调整方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Assignee: Hangzhou Huawei Enterprise Communication Technology Co., Ltd.

Assignor: Huawei Technologies Co., Ltd.

Contract record no.: 2010440020126

Denomination of invention: Method of realizing dynamic adjusting dithered buffer in procedure of voice transmission

Granted publication date: 20090805

License type: Exclusive License

Open date: 20050615

Record date: 20100804

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090805

Termination date: 20141209

EXPY Termination of patent right or utility model