抖动缓冲器及抖动缓冲方法.pdf

上传人:t**** 文档编号:1090890 上传时间:2018-03-30 格式:PDF 页数:15 大小:662.42KB
返回 下载 相关 举报
摘要
申请专利号:

CN200810302185.6

申请日:

2008.06.18

公开号:

CN101610249A

公开日:

2009.12.23

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):H04L 29/06公开日:20091223|||公开

IPC分类号:

H04L29/06; H04L12/56

主分类号:

H04L29/06

申请人:

鸿富锦精密工业(深圳)有限公司; 鸿海精密工业股份有限公司

发明人:

杨政贤

地址:

518109广东省深圳市宝安区龙华镇油松第十工业区东环二路2号

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

一种抖动缓冲方法,采用缓冲存储队列从网络端接收数据包,该方法包括数据入队:通过比较所接收数据包的时戳、当前所读取语音帧的播放时戳及抖动缓冲器的延时深度,来判断数据包是否正常接收,并根据判断结果计算数据包的存储地址;数据缓冲:根据上述计算出的存储地址,对所述数据包进行缓冲与存储;及数据出队:通过检查抖动缓冲器当前读取位置中语音帧的播放时戳,确定是否有语音帧被输出,如果有则将该语音帧传送给语音信号处理器进行语音解码。另外,本发明还提供一种抖动缓冲器。利用本发明,可改善实时语音传输的质量。

权利要求书

1.  一种抖动缓冲方法,其特征在于,该方法采用缓冲存储队列从网络端接收数据包,并按预定时钟周期重复执行以下步骤:
数据入队:通过比较所接收数据包的时戳、当前所读取语音帧的播放时戳及抖动缓冲器的延时深度,来判断数据包是否正常接收,并根据判断结果计算数据包的存储地址;
数据缓冲:根据上述计算出的存储地址对所述数据包进行缓冲与存储;及
数据出队:通过检查抖动缓冲器当前读取位置中语音帧的播放时戳,确定是否有语音帧被输出,如果有则将该语音帧传送给语音信号处理器进行语音解码。

2.
  如权利要求1所述的抖动缓冲方法,其特征在于,所述数据入队步骤包括以下步骤:
(1)当收到一个数据包后,判断其是否为接收到的第一个数据包,如果是则将该第一个数据包存入抖动缓冲器预缓冲阶段的起始地址进行缓冲,并以该第一个数据包的时戳为基准时戳TS1;
(2)若步骤(1)中收到的数据包不是接收到的第一个数据包,则判断该数据包的时戳TSw与所述基准时戳TS1的差值(TSw-TS1)是否小于抖动缓冲器的延时深度Dn;
(3)若(TSw-TS1)<Dn,则抖动缓冲器处于预缓冲阶段,缓冲该数据包,并根据数据包的时戳的顺序对该数据包进行排序,即确定该数据包的存储地址,反之,若(TSw-TS1)≥Dn,则判断该数据包的时戳TSw是否小于抖动缓冲器当前所读取语音帧的播放时戳TSr;
(4)若TSw<TSr,则所述数据包延时到达,丢弃该数据包,并将所述延时深度的调整值增加一个调整权值,反之,若TSw≥TSr,则判断该数据包的时戳TSw是否小于或等于所述当前所读取语音帧的播放时戳TSr与所述延时深度Dn之和(TSr+Dn);及
(5)若TSw≤(TSr+Dn),则将该数据包中的语音帧及语音帧的播放时戳复制到一第一标示位的存储地址内,然后直接结束流程,反之,若TSw>(TSr+Dn),则将该数据包中的语音帧及语音帧的播放时戳复制到一第二标示位的存储地址内,并将所述延时深度的调整值减少一个调整权值。

3.
  如权利要求2所述的抖动缓冲方法,其特征在于,所述第一标示位的计算公式为(TSw-TS1)/SamplePerFrame+Idx,所述第二标示位的计算公式为Dn/SamplePerFrame+Idx,其中,SamplePerFrame指语音帧传输的时间间隔,Idx指抖动缓冲器当前所读取语音帧的存储地址的标示位。

4.
  如权利要求3所述的抖动缓冲方法,其特征在于,所述延时深度的调整值是指调整延时深度的暂存值,所述调整权值等于SamplePerFrame/2n,其中n的取值范围为0至8中的整数值。

5.
  如权利要求4所述的抖动缓冲方法,其特征在于,该方法在所述步骤(5)之后包括以下步骤:
判断抖动缓冲器当前的延时深度是否大于或等于所述SamplePerFrame;
若Dn≥SamplePerFrame,则将所述延时深度增加或减少一个SamplePerFrame,且将所述延时深度的调整值归零;或
若Dn<SamplePerFrame,则结束流程。

6.
  如权利要求1所述的抖动缓冲方法,其特征在于,所述数据出队步骤包括以下步骤:
当语音信号处理器预播放一个语音帧时,检查抖动缓冲器是否处于预缓冲阶段;
若是,则发送一个无声语音帧给所述语音信号处理器,反之,若抖动缓冲器不处于预缓冲阶段,则检查抖动缓冲器当前读取位置中语音帧的播放时戳是否为空值;
若抖动缓冲器当前读取位置中语音帧的播放时戳为空值,则将该当前读取位置中语音帧的播放时戳设定为前一个语音帧的播放时戳加上一个语音帧传输的时间间隔,记录有一个语音帧被播放,并执行语音帧的补偿;及
若抖动缓冲器当前读取位置中语音帧的播放时戳不是空值,则将所述当前读取位置中的语音帧发送给语音信号处理器,抖动缓冲器的读取计数加1。

7.
  如权利要求6所述的抖动缓冲方法,其特征在于,所述语音帧的补偿包括如下步骤:
检查抖动缓冲器中当前读取位置之前一个语音帧的播放时戳是否为空值;
若检查的结果为否,则将抖动缓冲器读取位置之前一个语音帧发送给语音信号处理器,反之,若检查的结果为是,则检查抖动缓冲器当前读取位置之后一个语音帧的播放时戳是否为空值;
若该当前读取位置之后一个语音帧的播放时戳不为空值,则将该后一个语音帧发送至语音信号处理器,反之,若所述后一个语音帧的播放时戳为空值,则检查抖动缓冲器当前读取位置之前两个语音帧的播放时戳是否为空值;及
若检查的结果为所述当前读取位置之前两个语音帧的播放时戳不为空值,则将该前两个语音帧发送至所述语音信号处理器,反之,若检查的结果为所述当前读取位置之前两个语音帧的播放时戳为空值,则发送一个无声语音帧给所述语音信号处理器。

8.
  一种抖动缓冲器,其特征在于,该抖动缓冲器采用缓冲存储队列从网络端接收数据包,该抖动缓冲器包括数据入队模块、缓冲模块和数据出队模块,该数据入队模块与数据出队模块分别按预定时钟周期重复且同步执行数据入队和数据出队,其中:
所述数据入队模块用于通过比较所接收数据包的时戳、所述数据出队模块当前所读取语音帧的播放时戳及抖动缓冲器的延时深度,来判断数据包是否正常接收,并根据判断结果计算数据包的存储地址;
所述缓冲模块用于根据上述计算出的存储地址,对所述数据包进行缓冲与存储;及
所述数据出队模块用于通过检查抖动缓冲器当前读取位置中语音帧的播放时戳,确定是否有语音帧被输出,如果有则将该语音帧传送给语音信号处理器进行语音解码。

9.
  如权利要求8所述的抖动缓冲器,其特征在于,所述数据出队模块还用于当抖动缓冲器当前读取位置中没有语音帧被输出时,将该当前读取位置中语音帧的播放时戳设定为前一个语音帧的播放时戳加上一个语音帧传输的时间间隔,记录有一个语音帧被播放,并执行语音帧的补偿。

10.
  如权利要求8所述的抖动缓冲器,其特征在于,所述数据出队模块还用于当语音信号处理器预播放一个语音帧时判断所述抖动缓冲器是否处于预缓冲阶段,及当判断的结果为抖动缓冲器处于预缓冲阶段时发送一个无声语音帧给所述语音信号处理器。

说明书

抖动缓冲器及抖动缓冲方法
技术领域
本发明涉及一种因特网协议(Internet protocol,IP)技术,尤其涉及一种能够动态调整抖动缓冲器的延时深度的方法。
背景技术
在IP网络中,语音的实时数据都通过封装在用户数据协议(UDP)数据包中的实时传输协议(Real-time Transport Protocol,RTP)来传输。使用UDP传输数据,可能会产生乱序和收到重复包。为了使语音能在数据网络上有效地传输并保证其通话质量,就必须考虑网络延时、网络延时抖动、丢包、乱序、重复包等因素所带来的不利影响。
为了解决因网络流量不稳定而产生的抖动问题,通常采用抖动缓冲存储器(jitterbuffer),并配合适当的方法以消除网络抖动。jitter buffer的实质思想是以在接收端增加延时为代价消除网络的抖动,引入延时的大小决定了去除网络抖动的能力。但并不是引入的延时越大越好,因为极大的延时会使得实时语音传输无法达到实时的效果,而影响到通话双方的语音互动。在网络流量不稳定且进行数据语音通话过程中,引入jitter buffer之后,即使数据包发生延迟,仍能够正常地将语音数据发送给语音信号处理器,而不会影响语音播放质量。但是如果数据包的抖动超过了一定时间同样会当作丢包处理,否则在发生了网络延时抖动过大的情况下,数据的实时性不能保证,而数据的实时性对语音的传输质量起到很重要的作用。
在以往静态jitter buffer的架构下,一般会采用固定延时。若固定延时的值设定过大,则会丧失语音的实时性;反之,若固定延时的值设定过小,则会出现许多因抖动过大而造成的丢包,严重影响了语音的播放质量。
因此,延时深度的动态调整具体是指:能够实时地调整jitter buffer的延时深度,以达到不丧失语音的实时性又能保持语音质量。
在现有技术中,出现了一些动态jitter buffer系统,其依据语音的播放将jitterbuffer的声波分为:有声脉冲(talk-spurt)和无声脉冲(silence-spurt),其可通过DSP的语音行为侦测(voice activity detection,VAD)功能侦测出。如果用户想调整jitter buffer能容忍的网络延迟,该调整最好发生在silence-spurt阶段,其好处是:接听者无法感觉出调整时声音的细微变化。而此方法还存在一定的缺陷:当VAD功能关闭时,因语音信号处理器不能分辨有声脉冲与无声脉冲,而使此种调整方法无法运作。
发明内容
鉴于以上内容,有必要提供一种抖动缓冲器,可在语音行为侦测功能关闭或不存在的情况下,实现实时语音传送质量的改善。
还有必要提供一种抖动缓冲方法,可在语音行为侦测功能关闭或不存在的情况下,实现实时语音传送质量的改善。
一种抖动缓冲器,采用缓冲存储队列从网络端接收数据包,该抖动缓冲器包括数据入队模块、缓冲模块和数据出队模块,该数据入队模块与数据出队模块分别按预定时钟周期重复且同步执行数据入队和数据出队。其中:所述数据入队模块用于通过比较所接收数据包的时戳、所述数据出队模块当前所读取语音帧的播放时戳及抖动缓冲器的延时深度,来判断数据包是否正常接收,并根据判断结果计算数据包的存储地址;所述缓冲模块用于根据上述计算出的存储地址,对所述数据包进行缓冲与存储;及所述数据出队模块用于通过检查抖动缓冲器当前读取位置中语音帧的播放时戳,确定是否有语音帧被输出,如果有则将该语音帧传送给语音信号处理器进行语音解码。
一种抖动缓冲方法,采用缓冲存储队列从网络端接收数据包,并按预定时钟周期重复执行以下步骤:
数据入队:通过比较所接收数据包的时戳、当前所读取语音帧的播放时戳及抖动缓冲器的延时深度,来判断数据包是否正常接收,并根据判断结果计算数据包的存储地址;数据缓冲:根据上述计算出的存储地址对所述数据包进行缓冲与存储;及数据出队:通过检查抖动缓冲器当前读取位置中语音帧的播放时戳,确定是否有语音帧被输出,如果有则将该语音帧传送给语音信号处理器进行语音解码。
相较于现有技术,所述的抖动缓冲器及抖动缓冲方法,可实现数据包延迟与数据包损失率的折中,即使在语音行为侦测功能关闭或不存在的情况下,也可以实现实时语音传送质量的改善。
附图说明
图1是本发明抖动缓冲方法的运行环境示意图。
图2是本发明抖动缓冲方法的作业流程图。
图3是本发明数据入队和数据缓冲的具体作业流程图。
图4是本发明数据出队的具体作业流程图。
图5是本发明语音帧的补偿作业流程图。
具体实施方式
如图1所示,是本发明抖动缓冲方法的运行环境图。该运行环境示意图包括一个抖动缓冲器1和一个语音信号处理器2。所述抖动缓冲器1包括一个数据入队模块10、一个缓冲模块12和一个数据出队模块14。该抖动缓冲器1用于从IP网络接收实时传输协议(real-timetransport protocol,RTP)数据包(以下简称为“数据包”),并按照预定时钟周期重复且同步执行数据入队和数据出队,以完成缓冲存储功能。也就是说,所述数据入队模块10和数据出队模块14是同步工作的,缓冲模块12相当于一个中间站,用于实现数据的缓冲与存储功能。
在本实施例里,每个数据包根据其写入的时间会带有一个时戳,数据包本身代表着语音数据。在数据出队过程中,数据包是以语音帧为单位进行读取的,每个语音帧带有一个时戳,且每个语音帧及其时戳存储在抖动缓冲器1的读取位置中。该抖动缓冲器1还用于将读取位置中的语音帧及其时戳发送给语音信号处理器2,抖动缓冲器1每发送一个语音帧及时戳,其读取计数主动加1。所述语音信号处理器2用于将所述语音帧进行语音解码并播放。
如图2所示,是本发明抖动缓冲方法的作业流程图。
步骤S10,数据入队:数据入队模块10通过比较所接收数据包的时戳、数据出队模块14当前所读取语音帧的播放时戳及抖动缓冲器1的延时深度,来判断数据包是否正常接收,并根据判断结果计算数据包的存储地址。
步骤S20,数据缓冲:缓冲模块12根据上述计算出的存储地址,缓冲并存储所述数据包。
步骤S30,数据出队:由于每个数据包由多个语音帧组成,因此,数据出队模块14通过检查抖动缓冲器1当前读取位置中语音帧的播放时戳,确定是否有语音帧被输出,如果有则将该语音帧传送给语音信号处理器2进行语音解码。
如图3所示,是本发明图2中步骤S10和步骤S20的具体作业流程图。
步骤S100,数据入队模块10接收一个数据包。
步骤S102,数据入队模块10根据数据包的时戳判断所接收的数据包是否为接收到的第一个数据包。
若步骤S102中的判断结果为是,则于步骤S104,数据入队模块10将该第一个数据包存入抖动缓冲器1预缓冲阶段的起始地址上,缓冲模块12对该第一个数据包进行缓冲,并以该第一个数据包的时戳为基准时戳,设为TS1,然后返回步骤S100。
若步骤S102中的判断结果为否,则于步骤S106,数据入队模块10将该数据包的时戳记为TSw,并判断该数据包的时戳TSw与所述基准时戳TS1的差值(TSw-TS1)是否小于抖动缓冲器的延时深度Dn。
若(TSw-TS1)<Dn,则于步骤S108,数据入队模块10确定抖动缓冲器1处于预缓冲阶段,缓冲模块12缓冲该数据包,并根据数据包的时戳的顺序对该数据包进行排序,即确定该数据包的存储地址,然后结束流程。
若(TSw-TS1)≥Dn,则于步骤S110,数据入队模块10判断该数据包的时戳TSw是否小于抖动缓冲器1当前所读取语音帧的播放时戳TSr。
若TSw<TSr,则于步骤S112,数据入队模块10确定所述数据包延时到达,丢弃该数据包,并将抖动缓冲器1的延时深度的调整值(以下简称为“调整值”)增加一个调整权值,然后直接进入步骤S120。在本实施例中,所述调整值为调整延时深度的暂存值,而所述调整权值是指当数据包延迟或过早到达时,增加或减少所述调整值的权值。该调整权值与语音帧传输的时间间隔(SamplePerFrame)之间存在一个倍数关系,即调整权值等于SamplePerFrame/2n,其中n可以为0到8之间的任意整数值,其在具体实施过程中,可由实验得出n的具体数值。
所述SamplePerFrame直译出来是指每个语音帧的抽样数,但在此可理解成语音帧传输的时间间隔,解释如下:在语音数据包中,每个语音帧的样本可以为1/8毫秒,而依据不同的语音编码,每个语音帧的时长可以为5毫秒或10毫秒,例如,若本实施例中的语音帧的时长为5毫秒,则SamplePerFrame等于40;若本实施例中的语音帧的时长为10毫秒,则SamplePerFrame等于80。
若步骤S110中的判断结果为:TSw≥TSr,则于步骤S114,数据入队模块10判断该数据包的时戳TSw是否小于或等于抖动缓冲器1当前所读取语音帧的播放时戳TSr与所述延时深度Dn之和(TSr+Dn)。
若TSw≤(TSr+Dn),则于步骤S116,数据入队模块10将该数据包中的语音帧及其时戳复制到一标示位为(TSw-TS1)/SamplePerFrame+Idx的存储地址内,然后结束流程。其中,所述Idx指抖动缓冲器1当前所读取语音帧的存储地址的标示位。
若TSw>(TSr+Dn),则表明数据包过早到达,于步骤S118,数据入队模块10将该数据包中的语音帧及其时戳复制到一标示位为Dn/SamplePerFrame+Idx的存储地址内,并将所述调整值减少一个调整权值。
步骤S120,数据入队模块10通过检查抖动缓冲器1的当前延时深度Dn的调整值以判断该调整值是否大于或等于所述SamplePerFrame。
若Dn≥SamplePerFrame,则于步骤S122,数据入队模块10将所述延时深度增加或减少一个SamplePerFrame,且将所述调整值归零;反之,若Dn<SamplePerFrame,则结束流程。
另外,在本实施例中,数据入队模块10所接收数据包的时戳TSw、数据出队模块14当前所读取语音帧的播放时戳TSr、新播放语音帧的播放时戳及抖动缓冲器1的延时深度均以1/8毫秒为单位,且抖动缓冲器1的延时深度必须为SamplePerFrame的倍数。
如图4所示,是本发明图2中步骤S30的具体作业流程图。
步骤S300,语音信号处理器2预播放一个语音帧,也就是说,数据出队模块14需要从抖动缓冲器1的读取位置读取语音帧。
步骤S302,数据出队模块14检查抖动缓冲器1是否处于预缓冲阶段。
若步骤S302中检查出抖动缓冲器1处于预缓冲阶段,则于步骤S304,数据出队模块14发送一个无声语音帧给语音信号处理器2。
反之,若步骤S302中检查出抖动缓冲器1未处在预缓冲阶段,则于步骤S306,数据出队模块14检查抖动缓冲器1当前读取位置中语音帧的播放时戳TSr是否为空值。
若该当前读取位置中语音帧的播放时戳TSr为空值,则于步骤S308,数据出队模块14将该当前读取位置中语音帧的播放时戳TSr设定为:前一个语音帧的播放时戳加上一个SamplePerFrame,记录有一个语音帧被播放,并执行语音帧的补偿。
若该当前读取位置中语音帧的播放时戳TSr不是空值,则于步骤S310,数据出队模块14将所述当前读取位置中的语音帧发送给语音信号处理器2,同时,抖动缓冲器1的读取计数加1。
如图5所示,是本发明语音帧的补偿作业流程图。
步骤S500,数据出队模块14检查抖动缓冲器1当前读取位置之前一个语音帧的播放时戳是否为空值。
若检查的结果为否,则于步骤S502,数据出队模块14将抖动缓冲器1当前读取位置之前一个语音帧发送给语音信号处理器2。
反之,若检查的结果为是,则于步骤S504,数据出队模块14检查抖动缓冲器1当前读取位置之后一个语音帧的播放时戳是否为空值。
若该当前读取位置之后一个语音帧的播放时戳不为空值,则于步骤S506,数据出队模块14将该后一个语音帧发送至语音信号处理器2。
反之,若所述后一个语音帧的播放时戳为空值,则于步骤S508,数据出队模块14检查抖动缓冲器1当前读取位置之前两个语音帧的播放时戳是否为空值。
若检查的结果为所述当前读取位置之前两个语音帧的播放时戳不为空值,则步骤S510,数据出队模块14将该前两个语音帧发送至所述语音信号处理器2进行播放。
反之,若检查的结果为所述当前读取位置之前两个语音帧的播放时戳为空值,则步骤S512,数据出队模块14发送一个无声语音帧给所述语音信号处理器2。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

抖动缓冲器及抖动缓冲方法.pdf_第1页
第1页 / 共15页
抖动缓冲器及抖动缓冲方法.pdf_第2页
第2页 / 共15页
抖动缓冲器及抖动缓冲方法.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《抖动缓冲器及抖动缓冲方法.pdf》由会员分享,可在线阅读,更多相关《抖动缓冲器及抖动缓冲方法.pdf(15页珍藏版)》请在专利查询网上搜索。

一种抖动缓冲方法,采用缓冲存储队列从网络端接收数据包,该方法包括数据入队:通过比较所接收数据包的时戳、当前所读取语音帧的播放时戳及抖动缓冲器的延时深度,来判断数据包是否正常接收,并根据判断结果计算数据包的存储地址;数据缓冲:根据上述计算出的存储地址,对所述数据包进行缓冲与存储;及数据出队:通过检查抖动缓冲器当前读取位置中语音帧的播放时戳,确定是否有语音帧被输出,如果有则将该语音帧传送给语音信号处理。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1