CN101582832B - VoIP抖动缓冲区的动态处理方法 - Google Patents
VoIP抖动缓冲区的动态处理方法 Download PDFInfo
- Publication number
- CN101582832B CN101582832B CN2008100620297A CN200810062029A CN101582832B CN 101582832 B CN101582832 B CN 101582832B CN 2008100620297 A CN2008100620297 A CN 2008100620297A CN 200810062029 A CN200810062029 A CN 200810062029A CN 101582832 B CN101582832 B CN 101582832B
- Authority
- CN
- China
- Prior art keywords
- jitter
- avg
- var
- buffer
- voice packet
- 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.)
- Expired - Fee Related
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种VoIP抖动缓冲区的动态处理方法,包括以下步骤:1)、初始化抖动缓冲区大小jbs,设置两个不同的阀值(h1,h2)表示抖动缓冲区条件;2)、接收到远端传过来的语音包后,立即插入到抖动缓冲区的末尾;3)、计算平均抖动,在一个固定长度设为N的滑动窗口范围内计算平均抖动;4)计算抖动偏差Jvar(i)和移动平均抖动偏差Javg-var(i)5)如果平均抖动Javg(i)>阀值h1,转到步骤6);否则转到步骤2);6)通过放慢缓冲内的语音包数据节拍的方式来增加缓冲区大小;7)如果平均抖动Javg(i)<阀值h2,则转到步骤8),否则转到步骤2);8)通过加快缓冲内的语音包数据节拍的方式来减小缓冲区大小。本发明有效减小语音时延、减少语音失真。
Description
技术领域
本发明涉及VoIP语音技术,尤其是一种VoIP抖动缓冲区的动态处理方法。
背景技术
在实时的VoIP语音网络会议中,语音数据是经过压缩打包后传输的。每个数据包都包含压缩后的语音数据以及目地IP地址信息.虽然语音包在发送端是按一定间隔有序发送的,但是由于网络传输路径可能不同,不同的数据包到达接收端的时间间隔并不一致。另外,在采用U D P进行语音数据实时传输时,到达接收端的语音次序也有可能发生错乱。这两个现象就是我们通常说的抖动。在一个多人参加的VoIP音频网络会议中,剧烈的数据包抖动会导致声音时断时续,严重影响参会者的语音实时交流。为了有效的解决抖动问题,通常在接收端会引入缓冲区技术来消除抖动的影响。
现有技术中有两种方法设计抖动缓冲区:
1)、一个是固定长度抖动缓冲区:在解码和播放语音数据包之前,放入一个固定长度缓冲区,也就是缓冲内的语音包个数是固定不变的。这个方法的特点是:发送端到接收端的的时延固定不变,并且运算复杂度最小。缺点是为了消除抖动,通常缓冲区的长度设置很长,导致了声音质量下降。
2)可变抖动缓冲区:为了尽可能缩小语音时延,最近几年推出了可变抖动缓冲区技术,目前这种技术在产品上应用越来越普遍。这种技术的核心思路是抖动缓冲区的长度根据当前网络状况快速自适应调整。当网络抖动剧烈时,通过插入静音包来增加缓冲区长度;当网络条件趋向于畅通时,通过删除缓冲区中最老的包来实现减小缓冲区长度的目的。这种方法的优点是语音时延较短。缺点是:在缓冲区中删除或者增加语音包会导致语音失真。
发明内容
为了克服已有可变抖动缓存区方法的语音时延较大、语音失真较大的不足,本发明提供一种有效减小语音时延、减少语音失真的VoIP抖动缓冲区的动态处理方法。
本发明解决其技术问题所采用的技术方案是:
一种VoIP抖动缓冲区的动态处理方法,所述动态处理方法包括以下步骤:
1)、初始化抖动缓冲区大小(jbs),设置两个不同的阈值(h1,h2)表示抖动缓冲区条件;
Jbs=40ms
h1=100ms
h2=50ms
2)、接收到远端传过来的语音包后,立即插入到抖动缓冲区的末尾;
3)、计算平均抖动,在一个固定长度设为N的滑动窗口范围内计算平均抖动,算式为:
上式中,Javg(i)表示平均第i个包的平均抖动,N为滑动窗口长度;
4)计算抖动偏差Jvar(i),Javg-var(i),算式为:
Jvar(i)=|J(i)-Javg(i)|
上式中,Javg-var(i)是移动平均抖动偏差;
5)如果平均抖动Javg(i)>阈值h1,则转到步骤6);否则转到步骤2),继续等待下一个语音包到达;
6)通过放慢缓冲内的语音包数据节拍的方式来增加缓冲区大小,要增加的缓冲区目标时长由以下公式计算获得:
Javg(i)-h1+2×Javg-var(i)
7)如果平均抖动Javg(i)<阈值h2,则转到步骤8),否则转到步骤2),继续等待下一个语音包到达;
8)通过加快缓冲内的语音包数据节拍的方式来减小缓冲区大小,要减少的缓冲区目标时长由以下公式计算获得:
h2-Javg(i)+Javg-var(i)。
本发明的技术构思为:基于在一个固定窗的范围内,通过计算加权抖动缓冲区偏移量的移动平均值和语音包的抖动值来动态的调节抖动缓冲区长度。抖动缓冲区长度将根据收到的数据和平均抖动时长在滑动窗范围内自动收缩或者扩展。收缩或者扩展缓冲区长度是通过改变语音节拍的方式来实现。
采用自适抖动缓冲区算法:假设第i语音包的发送时间戳为Si、接收时间戳记为Ri,则对于两个包i和i-1,变量D可以表示为:
D(i,i-1)=(Ri-Ri-1)-(Si-Si-1)
第i个语音包的抖动可以表示如下:
Ji=(15×Ji-1+abs(D(i,i-1)))/16
为了描述自适应抖动缓冲区算法,我们引入了几个参数:其中pi记为播放时间戳,offi为抖动缓冲区偏移量。自适应抖动缓冲区算法技术描述如下:
1)基于网络抖动和时延实时计算的值进行自适应调整
2)计算每个到达包的抖动偏移量
3)通过缓冲区平均偏移量和抖动管理缓冲区队列。
pi=offi+k×Ji
其中,k为2~4范围内波动的可变系数。系数k值越大,播放的语音包越多,但代价是抖动缓冲区引起的延迟也就越大。
4)抖动缓冲区偏移量offi通过加权移动平均值计算获得:
Li=Oi-Ri
offi=α×Li+(1-α)×offi-1
这里,Oi表示第i包从抖动缓冲区输出时间。
这里也提供另外二种算法来计算抖动缓冲区偏移量offi。设Ωi为当前这段语音的起始点(指静音后收到的第一个语音包)到收到第i包的这段时间内所有缓冲区偏移量集合。抖动缓冲区偏移量offi的二种计算方法:
or
其中,MED表示中值滤波器,FMH为FIR混合MED。
本技术对抖动缓冲区偏移量使用平滑算法。这样,少部分延迟包将不会影响平均抖动缓冲区偏移量和到致抖动缓冲区大小增大。
本发明的有益效果主要表现在:1)实时的改变缓冲区长度,使语音时延尽可能的小;2)通过改变节拍的方式来实现缓冲区长度的调整,比传统的删除或者插入语音包的可变动缓冲区技术失真小;3)采用加权偏移量的计算方法,可以更精确的体现当前网络状态。
附图说明
图1是VoIP抖动缓冲区的动态处理方法的流程图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1,一种VoIP抖动缓冲区的动态处理方法,所述动态处理方法包括以下步骤:
1)、初始化抖动缓冲区大小(jbs),设置两个不同的阈值(h1,h2)表示抖动缓冲区条件;
Jbs=40ms
h1=100ms
h2=50ms
2)、接收到远端传过来的语音包后,立即插入到抖动缓冲区的末尾;
3)、计算平均抖动,在一个固定长度设为N的滑动窗口范围内计算平均抖动,算式为:
上式中,Javg(i)表示平均第i个包的平均抖动,N为滑动窗口长度;
4)计算抖动偏差Jvar(i),Javg-var(i),算式为:
Jvar(i)=|J(i)-Javg(i)|
上式中,Javg-var(i)是移动平均抖动偏差;
5)如果平均抖动Javg(i)>阈值h1,则转到步骤6);否则转到步骤2),继续等待下一个语音包到达;
6)通过放慢缓冲内的语音包数据节拍的方式来增加缓冲区大小,要增加的缓冲区目标时长由以下公式计算获得:
Javg(i)-h1+2×Javg-var(i)
7)如果平均抖动Javg(i)<阈值h2,则转到步骤8),否则转到步骤2),继续等待下一个语音包到达;
8)通过加快缓冲内的语音包数据节拍的方式来减小缓冲区大小,要减少的缓冲区目标时长由以下公式计算获得:
h2-Javg(i)+Javg-var(i)。
本实施例的具体方法包括以下步骤:
1)初始化抖动缓冲区大小(jbs=40ms)(处理框图101)。设置两个不同的阈值(h1,h2)表示抖动缓冲区条件。这里我们置阈值h1为100ms,h2为50ms.
2)接收语音包(处理框图102)。接收到远端传过来的语音包后,立即插入到抖动缓冲区的末尾。
3)计算平均抖动(处理框图103)。在一个固定长度设为N的滑动窗口范围内计算平均抖动。
这里,Javg(i)表示平均第i个包的平均抖动,N为滑动窗口长度。
4)计算抖动偏差Jvar(i),Javg-var(i)(处理框图104)
Jvar(i)=|J(i)-Javg(i)|
5)跟阈值h1做比较(判断框105)。如果平均抖动Javg(i)>阈值h1,则转到步骤6)。
否则转到处理框102,继续等待下一个语音包到达。
6)增加缓冲区大小(处理框106)。在抖动比较厉害时,必须加大缓冲区大小,以消除抖动的影响。我们可以通过放慢缓冲内的语音包数据节拍(即放慢播放速度)的方式来增加缓冲区大小。要增加的缓冲区目标时长由以下公式计算获得:
Javg(i)-h1+2×Javg-var(i)
7)跟阈值h2做比较(判断框107)。如果平均抖动Javg(i)<阈值h2,则转到步骤8)。否则转到步骤2),继续等待下一个语音包到达。
8)减小缓冲区大小(处理框108)。意味着当前网络交通很通畅,抖动很小。
我们可以通过加快缓冲内的语音包数据节拍(即加快播放速度)的方式来减小缓冲区大小,进而达到减小时延的目的。要减少的缓冲区目标时长由以下公式计算获得:
h2-Javg(i)+Javg-var(i)。
Claims (1)
1.一种VoIP抖动缓冲区的动态处理方法,其特征在于:所述动态处理方法包括以下步骤:
1)、初始化抖动缓冲区大小jbs,置两个不同的阈值(h1,h2)表示抖动缓冲区条件;
2)、接收到远端传过来的语音包后,立即插入到抖动缓冲区的末尾;
3)、计算平均抖动,在一个固定长度设为N的滑动窗口范围内计算平均抖动,算式为:
上式中,Javg(i)表示平均第i个包的平均抖动,N为滑动窗口长度;
4)计算抖动偏差Jvar(i),Javg-var(i),算式为:
Jvar(i)=|J(i)-Javg(i)|
上式中,Javg-var(i)是移动平均抖动偏差;
5)如果平均抖动Javg(i)>阈值h1,则转到步骤6),然后转到步骤2),继续等待下一个语音包到达,否则转到步骤7);
6)通过放慢缓冲内的语音包数据节拍的方式来增加缓冲区大小,要增加的缓冲区目标时长由以下公式计算获得:
Javg(i)-h1+2×Javg-var(i)
7)如果平均抖动Javg(i)<阈值h2,则转到步骤8),然后转到步骤2),继续等待下一个语音包到达;
8)通过加快缓冲内的语音包数据节拍的方式来减小缓冲区大小,要减少的缓冲区目标时长由以下公式计算获得:
h2-Javg(i)+Javg-var(i)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100620297A CN101582832B (zh) | 2008-05-17 | 2008-05-17 | VoIP抖动缓冲区的动态处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100620297A CN101582832B (zh) | 2008-05-17 | 2008-05-17 | VoIP抖动缓冲区的动态处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101582832A CN101582832A (zh) | 2009-11-18 |
CN101582832B true CN101582832B (zh) | 2012-10-31 |
Family
ID=41364800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100620297A Expired - Fee Related CN101582832B (zh) | 2008-05-17 | 2008-05-17 | VoIP抖动缓冲区的动态处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101582832B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110634511A (zh) * | 2019-09-27 | 2019-12-31 | 北京西山居互动娱乐科技有限公司 | 一种音频数据处理方法及装置 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102761468B (zh) * | 2011-04-26 | 2015-04-08 | 中兴通讯股份有限公司 | 一种自适应调整语音抖动缓存区的方法及系统 |
CN102843339B (zh) * | 2011-06-21 | 2017-09-19 | 南京中兴新软件有限责任公司 | 一种延时处理方法及装置 |
US9420475B2 (en) * | 2013-02-08 | 2016-08-16 | Intel Deutschland Gmbh | Radio communication devices and methods for controlling a radio communication device |
DE102015104407B4 (de) * | 2015-03-24 | 2023-02-23 | Apple Inc. | Verfahren und Vorrichtungen zum Steuern der Sprachqualität |
WO2017023645A2 (en) * | 2015-08-06 | 2017-02-09 | Qualcomm Incorporated | Methods and systems for virtual conference system using personal communication devices |
CN105119755B (zh) * | 2015-09-10 | 2018-06-19 | 广州市百果园网络科技有限公司 | 一种抖动缓冲区调整方法及装置 |
CN105554019B (zh) * | 2016-01-08 | 2018-07-24 | 全时云商务服务股份有限公司 | 一种音频去抖动系统和方法 |
CN107770124A (zh) * | 2016-08-15 | 2018-03-06 | 北京信威通信技术股份有限公司 | 一种ip语音缓冲区的动态控制方法及装置 |
CN110300429A (zh) * | 2018-03-23 | 2019-10-01 | 中国移动通信集团广东有限公司 | 调整缓存长度的方法、装置、电子设备和存储介质 |
CN112003757B (zh) * | 2019-05-27 | 2022-06-17 | 杭州萤石软件有限公司 | 网络传输延迟确定方法、设备及系统 |
CN113380220B (zh) * | 2021-06-10 | 2024-05-14 | 深圳市同行者科技有限公司 | 语音合成编码方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1627747A (zh) * | 2003-12-09 | 2005-06-15 | 华为技术有限公司 | 语音传输过程中实现动态调整抖动缓存的方法 |
CN1677953A (zh) * | 2004-04-02 | 2005-10-05 | 华为技术有限公司 | 适配网络尖峰的动态抖动缓存的实现方法 |
-
2008
- 2008-05-17 CN CN2008100620297A patent/CN101582832B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1627747A (zh) * | 2003-12-09 | 2005-06-15 | 华为技术有限公司 | 语音传输过程中实现动态调整抖动缓存的方法 |
CN1677953A (zh) * | 2004-04-02 | 2005-10-05 | 华为技术有限公司 | 适配网络尖峰的动态抖动缓存的实现方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110634511A (zh) * | 2019-09-27 | 2019-12-31 | 北京西山居互动娱乐科技有限公司 | 一种音频数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101582832A (zh) | 2009-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101582832B (zh) | VoIP抖动缓冲区的动态处理方法 | |
Liang et al. | Adaptive playout scheduling using time-scale modification in packet voice communications | |
US7324444B1 (en) | Adaptive playout scheduling for multimedia communication | |
US7079486B2 (en) | Adaptive threshold based jitter buffer management for packetized data | |
US7630409B2 (en) | Method and apparatus for improved play-out packet control algorithm | |
US7830862B2 (en) | System and method for modifying speech playout to compensate for transmission delay jitter in a voice over internet protocol (VoIP) network | |
US8279884B1 (en) | Integrated adaptive jitter buffer | |
EP1838066B1 (en) | Jitter buffer controller | |
EP2140635B1 (en) | Method and apparatus for modifying playback timing of talkspurts within a sentence without affecting intelligibility | |
JP6132972B2 (ja) | Voipの帯域幅管理 | |
US8081614B2 (en) | Voice transmission apparatus | |
US7245608B2 (en) | Codec aware adaptive playout method and playout device | |
US20050207342A1 (en) | Communication terminal device, communication terminal receiving method, communication system and gateway | |
US7787500B2 (en) | Packet receiving method and device | |
WO2009039783A1 (fr) | Procédé et dispositif de traitement pour caractère de temps de retard de réseau | |
JPWO2006054442A1 (ja) | 送信装置、受信装置及び通信システム | |
CN102625006A (zh) | 一种回声消除数据同步对齐方法、系统及音频通信设备 | |
EP0986190A3 (en) | Echo controller with compensation for variable delay networks | |
WO2001067436A1 (en) | Sub-packet insertion for packet loss compensation in voice over ip networks | |
CN105142002B (zh) | 音/视频直播方法、装置及控制方法、装置 | |
CN101221765B (zh) | 一种基于语音前向包络预测的差错隐藏方法 | |
CN104168218B (zh) | 抖动缓冲方法及装置 | |
Shallwani et al. | An adaptive playout algorithm with delay spike detection for real-time VoIP | |
CN107770124A (zh) | 一种ip语音缓冲区的动态控制方法及装置 | |
JPS59190757A (ja) | パケツト通信方式 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170420 Address after: Hangzhou City, Zhejiang province 310030 Xihu District three Town Xiyuan Road No. 18 building A1 room 311 Patentee after: Hangzhou Sequoia cloud Peng Information Technology Co. Ltd. Address before: 311200 Jincheng Road, Xiaoshan District, Zhejiang, Hangzhou, China, 1038 Patentee before: InfowareLab (Hangzhou) Information Technologies, Inc |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121031 Termination date: 20200517 |