CN116980395A - 抖动缓冲区大小的调整方法、装置和计算机设备 - Google Patents
抖动缓冲区大小的调整方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN116980395A CN116980395A CN202211479479.2A CN202211479479A CN116980395A CN 116980395 A CN116980395 A CN 116980395A CN 202211479479 A CN202211479479 A CN 202211479479A CN 116980395 A CN116980395 A CN 116980395A
- Authority
- CN
- China
- Prior art keywords
- target
- call
- determining
- activity
- jitter
- 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.)
- Pending
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 154
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000000694 effects Effects 0.000 claims abstract description 280
- 230000005540 biological transmission Effects 0.000 claims abstract description 210
- 238000004364 calculation method Methods 0.000 claims abstract description 202
- 238000004590 computer program Methods 0.000 claims abstract description 24
- 238000004891 communication Methods 0.000 claims description 27
- 230000003139 buffering effect Effects 0.000 claims description 10
- 238000012216 screening Methods 0.000 claims description 7
- 238000009432 framing Methods 0.000 claims description 2
- 238000001514 detection method Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 14
- 230000008859 change Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000009499 grossing Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 240000008168 Ficus benjamina Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
Abstract
本申请涉及一种抖动缓冲区大小的调整方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:在第一通话方接收当前通话数据包的情况下,确定第一通话方当前的发言活跃度;发言活跃度反映第一通话方参与语音通话的活跃程度;确定与发言活跃度匹配的目标抖动值计算方式;确定第一通话方已连续接收到的多个通话数据包,并确定多个通话数据包各自的传输时间数据;多个通话数据包包括当前通话数据包;根据传输网络的历史抖动值和多个通话数据包各自的传输时间数据,按照目标抖动值计算方式,确定传输网络的目标抖动值;调整抖动缓冲区的大小,使得调整后的抖动缓冲区的大小与目标抖动值匹配。采用本方法能够动态调整抖动缓冲区的大小。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种抖动缓冲区大小的调整方法、装置和计算机设备。
背景技术
当通过网络进行语音通话时,发送端会将通话方的通话数据包按照一定的时间间隔均匀发送至接收端,从而通话双方即可收听到对方的语音。但是传输过程中由于各种情况,例如拥塞,数据包乱序,网络错误等,接收端收到的数据包间隔就会不一样,可能一会大,一会小,导致时延发生变化,这个时延的变化程度就是抖动。抖动会导致第二通话收听到的音频断断续续的,从而导致通话质量不佳。
目前,主要是在接收端设置固定大小的抖动缓冲区,通过固定大小的抖动缓冲区来抵抗弱网环境下因抖动而导致音频播放卡顿的情况。然而,若抖动缓冲区设置过大则会引入较大时延;若抖动缓冲区设置过小则无法解决因网络抖动导致的接收端信号断续等问题。因此,亟需一种能够在通话过程中动态调整抖动缓冲区大小的方法。
发明内容
基于此,有必要针对上述技术问题,提供一种能够动态调整抖动缓冲区代销的抖动缓冲区大小的调整方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种抖动缓冲区大小的调整方法,所述方法包括:
在第一通话方接收到第二通话方通过传输网络发送的当前通话数据包的情况下,确定所述第一通话方当前的发言活跃度;所述发言活跃度反映所述第一通话方参与与所述第二通话方进行的语音通话的活跃程度;
确定与所述发言活跃度匹配的目标抖动值计算方式;
确定所述第一通话方已连续接收到的多个通话数据包,并确定所述多个通话数据包各自的传输时间数据;所述多个通话数据包包括当前通话数据包;
根据所述传输网络的历史抖动值和所述多个通话数据包各自的传输时间数据,按照所述目标抖动值计算方式,确定所述传输网络的目标抖动值;
调整用以缓存所述第二通话方发送的通话数据包的抖动缓冲区的大小,使得调整后的所述抖动缓冲区的大小与所述目标抖动值匹配。
第二方面,本申请还提供了一种抖动缓冲区大小的调整装置,所述装置包括:
发言活跃度确定模块,用于在第一通话方接收到第二通话方通过传输网络发送的当前通话数据包的情况下,确定所述第一通话方当前的发言活跃度;所述发言活跃度反映所述第一通话方参与与所述第二通话方进行的语音通话的活跃程度;确定与所述发言活跃度匹配的目标抖动值计算方式;
抖动值确定模块,用于确定所述第一通话方已连续接收到的多个通话数据包,并确定所述多个通话数据包各自的传输时间数据;所述多个通话数据包包括当前通话数据包;根据所述传输网络的历史抖动值和所述多个通话数据包各自的传输时间数据,按照所述目标抖动值计算方式,确定所述传输网络的目标抖动值;
调整模块,用于调整用以缓存所述第二通话方发送的通话数据包的抖动缓冲区的大小,使得调整后的所述抖动缓冲区的大小与所述目标抖动值匹配。
在其中一个实施例中,所述发言活跃度确定模块包括综合确定模块,用于在第一通话方接收到第二通话方通过传输网络发送的当前通话数据包的情况下,确定连续的多个活跃度统计周期;所述多个活跃度统计周期包括当前的活跃度统计周期;对于所述多个活跃度统计周期中的每个活跃度统计周期,获取所述第一通话方在所述活跃度统计周期内的语音活跃度;根据所述多个活跃度统计周期各自的所述语音活跃度,确定所述第一通话方当前的发言活跃度。
在其中一个实施例中,以所述多个活跃度统计周期中的每个活跃度统计周期分别作为目标活跃度统计周期;所述综合确定模块,还用于获取在所述目标活跃度统计周期内采集的所述第一通话方的通话音频;对所述通话音频进行分帧处理,得到多个音频帧,并确定所述多个音频帧各自对应的短时能量和短时过零率;根据所述多个音频帧各自对应的短时能量和短时过零率,确定所述多个音频帧各自对应的第一通话方发言概率值;根据所述多个音频帧各自对应的第一通话方发言概率值,确定所述第一通话方在所述目标活跃度统计周期内的语音活跃度。
在其中一个实施例中,所述综合确定模块,还用于根据所述多个音频帧各自对应的第一通话方发言概率值,确定所述多个音频帧各自对应的音频帧类型;所述音频帧类型包括发言类型;确定所述多个音频帧中属于所述发言类型的音频帧的数量,得到目标数量;根据所述目标数量和所述多个音频帧的总数量,确定所述第一通话方在所述目标活跃度统计周期内的语音活跃度。
在其中一个实施例中,所述综合确定模块,用于确定所述多个活跃度统计周期各自的语音活跃度中的最大语音活跃度;对所述最大语音活跃度和所述多个活跃度统计周期中当前的活跃度统计周期的语音活跃度进行加权求和,得到所述第一通话方当前的发言活跃度。
在其中一个实施例中,所述发言活跃度确定模块还包括方式确定模块,用于在所述发言活跃度大于或等于预设发言度阈值的情况下,确定所述第一通话方属于发言活跃类型,并确定所述目标抖动值计算方式为与所述发言活跃类型相对应的第一计算方式;在所述发言活跃度小于预设发言度阈值的情况下,确定所述第一通话方属于音频收听类型,并确定所述目标抖动值计算方式为与所述音频收听类型相对应的第二计算方式;其中,在相同的计算条件下,通过所述第二计算方式计算得到的所述传输网络的目标抖动值,大于通过所述第一计算方式计算得到的目标抖动值。
在其中一个实施例中,以所述多个通话数据包中的每个通话数据包分别作为目标通话数据包;所述抖动值确定模块还包括时间数据确定模块,用于获取时间记录表;从所述时间记录表中查找所述第二通话方发送所述目标通话数据包的发送时间,以及查找所述第一通话方接收所述目标通话数据包的接收时间;将所述目标通话数据的接收时间减去所述目标通话数据的发送时间,得到所述目标通话数据包的传输时间数据。
在其中一个实施例中,所述抖动值确定模块还包括计算模块,用于根据所述多个通话数据包各自的传输时间数据,确定网络时延差异值;根据所述网络时延差异值和所述传输网络的历史抖动值之间的大小关系,从所述目标抖动值计算方式中筛选出目标子计算方式;按照所述目标子计算方式,并根据所述传输网络的历史抖动值和所述网络时延差异值,确定所述传输网络的目标抖动值。
在其中一个实施例中,所述多个通话数据包为两个通话数据包;所述计算模块还用于确定所述两个通话数据各自的传输时间数据之间的差异;将所述两个通话数据各自的传输时间数据之间的差异的绝对值,作为所述传输网络的网络时延差异值。
在其中一个实施例中,所述目标值计算方式包括第一子方式和第二子方式;所述根据所述网络时延差异值和所述传输网络的历史抖动值之间的大小关系,从所述目标抖动值计算方式中筛选出目标子计算方式,包括:当所述网络时延差异值大于所述传输网络的历史抖动值时,将所述第一子方式作为目标子计算方式;当所述网络时延差异值小于或等于所述传输网络的历史抖动值时,将所述第二子方式作为目标子计算方式;其中,所述第一子方式中的与所述历史抖动值相对应的第一计算系数,小于所述第二子方式中的与所述历史抖动值相对应的第一计算系数;所述第一子方式中的与所述网络延时差异值相对应的第二计算系数,大于所述第二子方式中的与所述网络延时差异值相对应的第二计算系数。
在其中一个实施例中,所述计算模块还用于按照所述目标子计算方式,确定与所述传输网络的历史抖动值对应的第一计算系数、及与所述网络时延差异值对应的第二计算系数;将所述第一计算系数与所述历史抖动值相乘,得到目标历史抖动值,并将所述第二计算系数与所述网络时延差异值相乘,得到目标网络时延差异值;将所述目标历史抖动值与所述目标网络时延差异值叠加,得到述传输网络的目标抖动值。
在其中一个实施例中,所述调整模块还用于获取预配置的抖动值与缓冲区大小之间的对应关系;其中,所述缓冲区大小随着抖动值的增大而增大;根据所述对应关系,确定与所述目标抖动值相对应的目标缓冲区大小,并调整所述抖动缓冲区的大小至所述目标缓冲区大小。
第三方面,本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现本申请实施例提供的任一种抖动缓冲区大小的调整方法中的步骤。
第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例提供的任一种抖动缓冲区大小的调整方法中的步骤。
第五方面,本申请还提供了一种计算机程序产品,所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以本申请实施例提供的任一种抖动缓冲区大小的调整方法中的步骤。
上述抖动缓冲区大小的调整方法、装置、计算机设备、存储介质和计算机程序产品,通过接收当前通话数据包,可确定第一通话方当前的发言活跃度,以及确定第一通话方已连续接收到的、截止到当前通话数据包的多个通话数据包。通过确定第一通话方当前的发言活跃度,可确定与发言活跃度匹配的目标抖动值计算方式。通过确定多个通话数据包,可确定多个通话数据包各自的传输时间数据。通过确定目标抖动值计算方式和传输时间数据,可按照目标抖动值计算方式,并根据传输网络的历史抖动值和多个通话数据包各自的传输时间数据,确定传输网络的目标抖动值,从而基于目标抖动值对抖动缓冲区大小进行调整,如此便实现了在通话过程中动态调整抖动缓冲区大小的目的。
此外,由于目标抖动值计算方式是与第一通话方当前的发言活跃度相匹配的,因此,基于目标抖动值计算方式计算得到的目标抖动值不仅与第一通话方当前的发言活跃度相匹配,而且反映了传输网络当前的抖动情况,进而基于该目标抖动值调整得到的抖动缓冲区的大小也与第一通话方当前的发言活跃度和传输网络当前的抖动均匹配。如此,便能基于与第一通话方当前的发言活跃度和传输网络当前的抖动均匹配的抖动缓冲区输出能够满足当前网络抖动和第一通话方当前发言活跃度的语音音频。
附图说明
图1为一个实施例中抖动缓冲区大小的调整方法的应用环境图;
图2为一个实施例中抖动缓冲区大小的调整方法的流程示意图;
图3为一个实施例中语音通话的示意图;
图4为一个实施例中抖动缓冲区的示意图;
图5为一个实施例中发言活跃度的确定示意图;
图6为一个实施例中语音活跃度的确定示意图;
图7为一个实施例中目标抖动值计算方式的确定示意图;
图8为一个实施例中网络时延差异值的确定示意图;
图9为一个具体实施例中抖动缓冲区大小的调整方法的流程示意图;
图10为一个实施例中抖动缓冲区大小的调整整体示意图;
图11为一个实施例中抖动缓冲区大小的调整装置的结构框图;
图12为另一个实施例中抖动缓冲区大小的调整装置的结构框图;
图13为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的抖动缓冲区大小的调整方法,可以应用于如图1所示的应用环境中。其中,第一终端102通过网络与服务器104进行通信,服务器104通过网络与第二终端106进行通信。数据存储系统可以存储服务器104需要处理的数据。当第一通话方与第二通话方通过网络进行语音通话时,第二通话方所对应的第二终端106即可将第二通话方的通话数据包通过服务器104发送至第一通话方所对应的第一终端102。第一终端102可根据连续接收到的多个通话数据包各自的传输时间数据和第一通话方当前的发言活跃度,对抖动缓冲区的大小进行调整,以使得调整后的抖动缓冲区大小与当前传输网络的抖动以及第一通话方当前输出的发言活跃度更为匹配,进而基于更为匹配的抖动缓冲区大小向第一通话方输出具有合适时延和流畅播放的第二通话方的通话音频。
其中,第一终端102和第二终端106均包括但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
需要说明的是,本申请中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。除非上下文另外清楚地指出,否则单数形式“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。本申请各实施例中提及的“多个”或“多份”等的数量均指代“至少两个”的数量,比如,“多个”指“至少两个”,“多份”指“至少两份”。
在一个实施例中,如图2所示,提供了一种抖动缓冲区大小的调整方法,以该方法应用于图1中的第一终端为例进行说明,包括以下步骤:
步骤202,在第一通话方接收到第二通话方通过传输网络发送的当前通话数据包的情况下,确定第一通话方当前的发言活跃度;发言活跃度反映第一通话方参与与第二通话方进行的语音通话的活跃程度。
其中,通话方指的是参与通话的角色。参与通话的角色可包括虚拟通话角色、硬件终端、软件客户端和自然人。其中,虚拟通话角色可为表征自然人的标识信息或者为一个虚拟的用户。自然人的标识信息具体可为通信应用中的应用账号等。硬件终端也称作终端设备,具体可为用以进行语音通话的手机、电脑、车载终端等。软件客户端指的是用以进行语音通话的通信应用的客户端。
通话数据包指的是对通话音频进行编码压缩后得到的数据包。第二终端将通话数据包发送至第一终端时,第一终端即可对接收到的通话数据包进行解码,将通话数据包还原为通话音频,并对通话音频进行播放。发言活跃度反映的是第一通话方参与语音通话的活跃程度。比如,在通话方为自然人或虚拟的用户时,发言活跃度指的是自然人或虚拟的用户在进行语音通话时发言的活跃程度比如可为自然人或虚拟的用户在一段时间内发言的次数,或者,自然人或虚拟的用户在一段时间内发言的时长,等等。在通话方为硬件终端或者软件客户端时,发言活跃度指的是通过硬件终端或者软件客户端进行语音通话的用户在进行语音通话时发言的活跃程度。其中,通过硬件终端或者软件客户端进行语音通话的用户可为上述的自然人或虚拟的用户。
具体地,当第一通话方与第二通话方通过传输网络进行语音通话时,第二通话方所对应的第二终端即可采集第二通话方的通话音频,将第二通话方的通话音频编码为通话数据包,将通话数据包通过传输网络发送至第一通话方所对应的第一终端。当第一通话方所对应的第一终端在当前时刻接收到传输网络发送的当前通话数据包时,第一终端即可确定第一通话方当前的发言活跃度。当前的发言活跃度可为以当前时间点为截止时间点的一段时间内的发言活跃度。
容易理解地,当通话方为虚拟通话角色或者软件客户端时,终端即为运行有该软件客户端或者用以展示虚拟通话角色的终端;当通话方为自然人时,终端即为自然人参与语音通话时使用的终端。当通话方为硬件终端时,终端与通话方为同一对象。当通话方为表征自然人的标识信息或者软件客户端时,第二终端采集第二通话方的通话音频,即为第二终端的用户通过第二通话方进行语音通话时输出的通话音频;当通话方为硬件客户端时,第二终端采集第二通话方的通话音频,为第二通话方的用户进行语音通话时输出的通话音频。在通话方为自然人或者虚拟的角色时,第二终端采集第二通话方的通话音频为自然人或者虚拟的角色在进行语音通话时输出的通话音频。在通话方为自然人时,第一通话方接收到第二通话方通过传输网络发送的当前通话数据包,指的是第一通话方所对应的第一终端接收到当前通话数据包。
在其中一个实施例中,第二通话方包括至少一个通话端;在第二通话方包括一个通话端时,第一通话方与第二通话方为双人通话场景下的通话方;在第二通话方包括多个通话端时,第一通话方与第二通话方为多人通话场景下的通话方。比如,在双人通话的场景下,当两个通话端进行语音通话时,第一通话方可为双人通话中的任意一个通话端,相应的,双人通话中的对方通话端即为第二通话方。示例性地,当双人语音聊天场景下,第一通话方可为双人语音聊天中的其中一个聊天通话端,则第二通话方可为双人语音聊天中另一个聊天通话端。
在多人通话场景下,第一通话方可为多人通话中的任意一个通话端,第二通话方包括多人通话中的除第一通话方之外的至少一个其余通话端。示例性地,当在多人会议场景下,第一通话方可为多人会议中的其中一个参会通话端,第二通话方可包括多人会议中的除第一通话方之外的其余参会通话端。其中,通话端可为参与通话的角色。
在其中一个实施例中,参考图3,第二通话方301所对应的第二终端可实时采集第二通话方的通话音频,将基于实时采集的通话音频编码生成的通话数据包依次发送至第一终端所对应的第一通话方302。从而第一通话方对应的第一终端对接收到的通话数据包进行解码播放。图3示出了一个实施例中语音通话的示意图。
在其中一个实施例中,在第一终端在当前时刻接收到第二通话方发送的当前通话数据包时,也即,在第一通话方接收到当前通话数据包时,第一终端即可获取以当前时间点为截止时间点的一段时间内第一通话方的通话音频,并对获取的通话音频进行发言活跃度检测,得到第一通话方当前的发言活跃度。
在其中一个实施例中,在第一通话方与第二通话方进行语音通话时,第一终端可通过麦克风来采集第一通话方的通话音频。
在其中一个实施例中,通过即时通信应用进行语音通话的过程中,即时通信应用可显示虚拟麦克风图标,当通话方需要发言时,通话方可点击该虚拟麦克风图标,以触发该虚拟麦克风图标变为麦克风开启类型,从而在虚拟麦克风图标为麦克风开启类型时,终端中的麦克风也可对应开启,进而通话方可通过麦克风进行发言。当通话方无需发言仅进行聆听时,可以再次点击该虚拟麦克风图标,以触发该虚拟麦克风图标变更为麦克风关闭类型,从而在虚拟麦克风图标为麦克风关闭类型时,终端中的麦克风也可对应关闭。因此,第一终端可根据当前显示的虚拟麦克风图标的类型确定第一通话方当前的发言活跃度。比如,在虚拟麦克风图标为麦克风开启类型时,确定第一通话方当前的发言活跃度为100%。在虚拟麦克风图标为麦克风关闭类型时,确定第一通话方当前的发言活跃度为0%。
步骤204,确定与发言活跃度匹配的目标抖动值计算方式。
具体地,第一终端预先设置有多种抖动值计算方式,其中,不同的抖动值计算方式与不同的发言活跃度相匹配。其中,抖动值反映的是传输网络时延的变化程度。通信数据包从第二终端传输至第一终端所耗费的时间就是时延。进一步地,当确定第一通话方当前的发言活跃度时,第一终端即可基于第一通话方当前的发言活跃度,从预先设置的多种抖动值计算方式中,筛选出与该发言活跃度相匹配的目标抖动值计算方式。其中,抖动值计算方式用于计算传输网络的抖动值。
在其中一个实施例中,可划分多个发言活跃度区间,并为每一个发言活跃度区间设置一种抖动值计算方式。当获取得到第一通话方当前的发言活跃度时,可判断当前的发言活跃度所属的目标发言活跃度区间,再将为该目标发言活跃度区间设置的抖动值计算方式,作为目标抖动值计算方式。
步骤206,确定第一通话方已连续接收到的多个通话数据包,并确定多个通话数据包各自的传输时间数据;多个通话数据包包括当前通话数据包。
具体地,由于第二终端会按照一定的时间间隔连续不断地将通话数据包发送至第一终端,因此,第一终端也在持续性地接收通话数据包。当第一终端在当前时刻接收到当前通话数据包时,第一终端可确定已连续接收到的、截止到当前通话数据包的多个通话数据包。其中,多个通话数据包包括当前通话数据包。进一步地,第一终端确定多个通话数据包中的每个通话数据包的传输时间数据。其中,传输时间数据指的是与通话数据包的传输时间相关的数据。比如,传输时间数据可包括通话数据包在第一终端和第二终端之间的传输时间、第二终端发送通话数据包的发送时间或者第一终端接收通话数据包的接收时间中的至少一种。
在其中一个实施例中,第一终端设置有数据包记录队列,该数据包记录队列中存储有已接收到的各通话数据包各自的数据包标识,且数据包标识在数据包记录队列中的排列顺序与第一终端接收通话数据包的顺序一致。也就是说,每当第一终端接收到一个通话数据包时,第一终端即可将该通话数据包的数据包标识存储至数据包记录队列的队尾。进而,第一终端可从该数据包记录队列中查找已连续接收到的、截止到当前通话数据包的多个通话数据包。其中,数据包标识指的是唯一标识一个通话数据包的标识。
在其中一个实施例中,第一终端中设置有时间记录表,通过时间记录表可记录接收到的各通话数据包的传输时间数据,其中,该传输时间数据包括通话数据包的接收时间。因此,当第一终端在当前时刻接收到当前通话数据包时,第一终端即可按照时间记录表中记录的接收时间,从时间记录表中确定已连续接收到的、截止到当前通话数据包的多个通话数据包,并从时间记录表中查找多个通话数据包各自的传输时间数据。
在其中一个实施例中,当第一终端接收到通话数据包时,第一终端即可将接收时间增加至该通话数据包中,并将该通话数据包存储至抖动缓冲区中。第一终端可按照通话数据包接收的先后顺序,确定通话数据包在抖动缓冲区中的排列顺序,从而当需要确定已连续接收到的、截止到当前通话数据包的多个通话数据包时,第一终端即可按照通话数据包在抖动缓冲区中的排列顺序,提取出相应的多个通话数据包,并从多个通话数据包中提取出接收时间。
步骤208,根据传输网络的历史抖动值和多个通话数据包各自的传输时间数据,按照目标抖动值计算方式,确定传输网络的目标抖动值。
具体地,当获取得到多个通话数据包各自的传输时间数据时,第一终端还可获取传输网络的历史抖动值。其中,历史抖动值指的是在历史时间点计算得到的传输网络的抖动值,比如,为第一终端在接收到上一个通话数据包时计算得到的传输网络的抖动值。进一步地,第一终端可根据传输网络的历史抖动值和多个通话数据包各自的传输时间数据,并按照目标抖动值计算方式,确定当前时刻的传输网络的目标抖动值。比如,目标抖动值计算方式具体可为一个计算公式,第一终端可将历史抖动值和传输时间数据代入至该计算公式中,从而得到目标抖动值。容易理解地,当需要计算下一时刻的抖动值时,该目标抖动值即变成历史抖动值。
在其中一个实施例中,第一终端可每当接收到一个通话数据包时,即计算一次传输网络的抖动值,也可按照一定的时间间隔计算一次传输网络的抖动值,当按照一定时间间隔来计算传输网络的抖动值时,在最新的计算周期内,第一终端将最新接收到的通话数据包作为当前通话数据包。
在其中一个实施例中,第一终端可根据多个通话数据包中各通话数据包各自的传输时间数据确定传输网络当前的时延变化程度,并将传输网络当前的时延变化程度与历史抖动值进行平滑处理,得到传输网络当前的目标抖动值。其中,可基于目标抖动值计算方式,确定平滑处理过程中传输网络当前的时延变化程度的权重和历史抖动值的权重。
步骤210,调整用以缓存第二通话方发送的通话数据包的抖动缓冲区的大小,使得调整后的抖动缓冲区的大小与目标抖动值匹配。
具体地,当第一终端确定目标抖动值时,第一终端即可根据目标抖动值来调整抖动缓冲区的大小,使得调整后的抖动缓冲区的大小与目标抖动值匹配。比如,第一终端设置有抖动值与缓冲区大小之间的函数对应关系,通过该函数对应关系,可确定与目标抖动值相对应的抖动缓冲区的目标大小,从而将抖动缓冲区调整至该目标大小。其中,抖动缓冲区指的是用以缓存通话数据包的区域,参考图4,通过设置抖动缓冲区,可对缓冲的通话数据包(I1至IN)进行重新排序等处理,以使得接收到的通话数据包能够平稳地输出到下一个环节。图4示出了一个实施例中抖动缓冲区的示意图。
在上述实施例中,抖动缓冲区大小会随着第一通话方发言活跃度的变化而变化,从而基于动态变化的抖动缓冲区使得通话双方在语音通话过程中既能够抵抗基本的网络抖动,又不会引入较大的时延,从而使得通话能够正常进行。
在其中一个实施例中,第一终端可在执行步骤202至204的同时,执行步骤206,也就是说,确定发言活跃度这一步骤,可与确定多个通通话数据包和各自的传输时间数据这一步骤同时执行。第一终端也可先执行步骤206再执行步骤204。
上述抖动缓冲区大小的调整方法中,通过接收当前通话数据包,可确定第一通话方当前的发言活跃度,以及确定第一通话方已连续接收到的、截止到当前通话数据包的多个通话数据包。通过确定第一通话方当前的发言活跃度,可确定与发言活跃度匹配的目标抖动值计算方式。通过确定多个通话数据包,可确定多个通话数据包各自的传输时间数据。通过确定目标抖动值计算方式和传输时间数据,可按照目标抖动值计算方式,并根据传输网络的历史抖动值和多个通话数据包各自的传输时间数据,确定传输网络的目标抖动值,从而基于目标抖动值对抖动缓冲区大小进行调整,如此便实现了在通话过程中动态调整抖动缓冲区大小的目的。此外,由于目标抖动值计算方式是与第一通话方当前的发言活跃度相匹配的,因此,基于目标抖动值计算方式计算得到的目标抖动值不仅与第一通话方当前的发言活跃度相匹配,而且反映了传输网络当前的抖动情况,进而基于该目标抖动值调整得到的抖动缓冲区的大小也与第一通话方当前的发言活跃度和传输网络当前的抖动均匹配。如此,便能基于与第一通话方当前的发言活跃度和传输网络当前的抖动均匹配的抖动缓冲区输出能够满足当前网络抖动和第一通话方当前发言活跃度的语音音频。
在其中一个实施例中,参考图5,步骤502在第一通话方接收到第二通话方通过传输网络发送的当前通话数据包的情况下,确定连续的多个活跃度统计周期;多个活跃度统计周期包括当前的活跃度统计周期。
具体地,第一通话方所对应的第一终端在接收到通过传输网络传输的当前数据包时,第一终端可确定当前的活跃度统计周期,并确定以当前的活跃度统计周期为结尾的连续的多个活跃度统计周期。其中,活跃度统计周期指的是统计通话方发言活跃度的周期。可每隔一定时间来检测通话方的发言活跃度,该一定时间就是一个周期的活跃度统计周期。比如,可将周期值设置为5秒,从而每隔5秒对5秒内的通话音频进行发言活跃度检测。
在其中一个实施例中,第一终端可在第一通话方开始与第二通话方进行语音通话时,即对第一通话方的通话音频进行发言活跃度检测,从而当第一通话方在当前时刻接收到当前通话数据包时,第一终端可判断当前时刻处于的活跃度检测周期,并将当前时刻处于的活跃度检测周期作为当前的活跃度检测周期,从而第一终端获取包括当前的活跃度检测周期的多个连续的活跃度检测周期。容易理解地,获取的多个连续的活跃度检测周期中,除当前的活跃度检测周期之外的其余活跃度检测周期,均为历史的活跃度检测周期。示例性的,在每隔一定时间来检测通话方的发言活跃度的情况下,可约定当到达间隔的一定时间后,才生成一个活跃度检测周期。比如,可将周期值设置为5秒,从而当到达5秒时,才确定一个活跃度检测周期生成,此时可获取生成的活跃度检测周期内的第一通话方的通话音频,并对获取的通话音频进行发言活跃度检测。而每当生成一个活跃度检测周期时,第一终端即可记载该生成的活跃度检测周期,并在接收到当前通话数据包时,可根据记载的信息确定当前时刻最新生成的活跃度检测周期,将最新生成的活跃度检测周期作为当前的活跃度检测周期,将当前的活跃度检测周期及若干个连续的历史生成的活跃度检测周期,共同作为多个活跃度统计周期。
步骤504,对于多个活跃度统计周期中的每个活跃度统计周期,获取第一通话方在活跃度统计周期内的语音活跃度。
具体地,当确定多个活跃度统计周期时,第一终端可获取每个活跃度统计周期的语音活跃度。其中,活跃度统计周期的语音活跃度指的是,通过对在该活跃度统计周期内采集的通话音频进行发言活跃度检测而得到的检测结果。
在其中一个实施例中,对于多个活跃度统计周期中的除当前的活跃度统计周期之外的其余活跃度统计周期,由于除当前的活跃度统计周期之外的其余活跃度统计周期均为历史的活跃度统计周期,而针对历史的活跃度统计周期,第一终端已生成有相应的语音活跃度,因此,第一终端可直接获取除当前的活跃度统计周期之外的其余活跃度统计周期各自的语音活跃度。对于多个活跃度统计周期中的当前的活跃度统计周期,第一终端确定是否已生成当前的活跃度统计周期的语音活跃度,若还未生成当前的活跃度统计周期的语音活跃度,则第一终端等待语音活跃度生成模块生成当前的活跃度统计周期的语音活跃度。若已生成当前的活跃度统计周期的语音活跃度,则第一终端获取当前的活跃度统计周期的语音活跃度。其中,语音活跃度生成模块可为第一终端中的一个模块,该模块可为虚拟模块也可为实体模块。
容易理解地,在通话方为自然人或者虚拟的角色时,第一通话方在活跃度统计周期内的语音活跃度,反映的是该自然人或者虚拟的角色在活跃度统计周期内的语音活跃度。在通话方为表征自然人的标识信息、软件客户端或者硬件终端时,第一通话方在活跃度统计周期内的语音活跃度,反映的是通过自然人的标识信息、软件客户端或者硬件终端进行语音通话的用户在活跃度统计周期内的语音活跃度,该用户可为上述的自然人或者虚拟的角色。
步骤506,根据多个活跃度统计周期各自的语音活跃度,确定第一通话方当前的发言活跃度。
具体地,当获取得到多个活跃度统计周期各自的语音活跃度时,第一终端可根据多个语音活跃度,确定第一通话方当前的发言活跃度。比如,第一终端可将多个语音活跃度的平均值,作为第一通话方当前的发言活跃度,或者,第一终端可对多个语音活跃度进行加权求平均处理,得到第一通话方当前的发言活跃度。
上述实施例中,由于发言活跃度反映的是第一通话方在一定时间段内的发言活跃度,而活跃度统计周期的时间较为短暂,因此,需要综合多个活跃度统计周期的语音活跃度来确定第一通话方当前的发言活跃度。此外通过综合多个连续的活跃度统计周期各自的语音活跃度来确定第一通话方当前的发言活跃度,可减少因单个活跃度统计周期内发言活跃度检测不准确而导致发言活跃度不准确的概率。
在其中一个实施例中,以多个活跃度统计周期中的每个活跃度统计周期分别作为目标活跃度统计周期;第一通话方在目标活跃度统计周期内的语音活跃度的确定步骤包括:获取在目标活跃度统计周期内采集的第一通话方的通话音频;对通话音频进行分帧处理,得到多个音频帧,并确定多个音频帧各自对应的短时能量和短时过零率;根据多个音频帧各自对应的短时能量和短时过零率,确定多个音频帧各自对应的第一通话方发言概率值;根据多个音频帧各自对应的第一通话方发言概率值,确定第一通话方在目标活跃度统计周期内的语音活跃度。
具体地,当需要确定目标活跃度统计周期的语音活跃度时,第一终端可获取在目标活跃度统计周期内采集的第一通话方的通话音频。比如,在目标活跃度统计周期为第10秒至第15秒时,第一终端可获取第一通话方所对应的终端的喇叭采集的第10秒至第15秒的通话音频。进一步地,第一终端可对采集的通话音频进行分帧处理,得到多个音频帧,并将每个音频帧从时域转换至频域,得到每个音频帧各自对应的频谱图。针对每个频谱图,第一终端均可确定短时能量和短时过零率。其中,短时能量指的是音频帧的能量。短时过零率指的是一帧音频帧中波形穿过横轴(零电平)的次数。
进一步地,当获取得到的多个音频帧各自对应的短时能量和短时过零率时,对于多个音频帧中的每帧音频帧,第一终端均根据当前音频帧的短时能量和短时过零率,确定当前音频帧所对应的第一通话方发言概率值,从而在第一通话方发言概率值大于或等于预设概率阈值时,判定当前音频帧属于发言类型。其中,第一通话方发言概率值指的是音频帧中包括第一通话方发言的概率值。
比如,一般来说,包括有用户声音的语音信号的能量大于静默信号的能量,因此,第一终端可在当前音频帧的短时能量大于预设能量阈值时,判定此音频帧包括第一通话方的发言,第一通话方发言概率值大于或等于预设概率阈值,此时当前音频帧属于发言类型;在小于或等于预设能量阈值时,一般来说,包括有用户声音的语音信号的短时过零率是处于一定区间内的,因此,第一终端判断当前音频帧的短时过零率是否处于预设过零率区间内,若处于,则判定此音频帧包括第一通话方的发言,第一通话方发言概率值大于或等于预设概率阈值,此时当前音频帧属于发言类型;若不处于预设过零率区间内、且当前音频帧的短时能量小于或等于预设能量阈值,则判定第一通话方发言概率值小于预设概率阈值,当前音频帧不属于发言类型,属于静默类型。
进一步地,第一终端根据多个音频帧各自对应的第一通话方发言概率值,确定第一通话方在目标活跃度统计周期内的语音活跃度。比如,在基于第一通话方发言概率值确定音频帧是否属于发言类型之后,第一终端可根据属于发言类型的音频帧的数量来确定第一通话方在目标活跃度统计周期内的语音活跃度。或者对各第一通话方的发言概率值进行求平均,将平均值作为语音活跃度。
在其中一个实施例中,第一终端还可通过预训练的语音活跃度检测模型来检测目标活跃度统计周期的语音活跃度。其中,语音活跃度检测模型指的是通过训练样本训练得到的机器学习模型。
容易理解地,在通话方为自然人或者虚拟的角色时,第一通话方发言概率值,反映的是该自然人或者虚拟的角色发言的概率。在通话方为表征自然人的标识信息、软件客户端或者硬件终端时,第一通话方发言概率值,反映的是通过自然人的标识信息、软件客户端或者硬件终端进行语音通话时发言的概率,该用户可为上述的自然人或者虚拟的角色。
上述实施例中,通过确定每帧音频帧各自对应的短时能量和短时过零率,可基于短时能量和短时过零率准确确定音频帧包括第一通话方的发言的概率值,从而通过第一通话方发言概率值,准确得到第一通话方在目标活跃度统计周期内的语音活跃度。
在其中一个实施例中,根据多个音频帧各自对应的第一通话方发言概率值,确定第一通话方在目标活跃度统计周期内的语音活跃度,包括:根据多个音频帧各自对应的第一通话方发言概率值,确定多个音频帧各自对应的音频帧类型;音频帧类型包括发言类型;确定多个音频帧中属于发言类型的音频帧的数量,得到目标数量;根据目标数量和多个音频帧的总数量,确定第一通话方在目标活跃度统计周期内的语音活跃度。
具体地,对于多个音频帧中的每个音频帧,均在当前音频帧的第一通话方发言概率值大于或等于预设概率阈值时,确定当前音频帧属于发言类型;在当前音频帧的第一通话方发言概率值小于预设概率阈值时,确定当前音频帧属于静默类型。其中,当前音频帧为多个音频帧中的任一个音频帧。进一步地,第一终端确定多帧音频帧中,属于发言类型的音频帧的数量,并将属于发言类型的音频帧的数量作为目标数量。第一终端确定目标数量与多个音频帧的总数量之间的比值,根据比值确定第一通话方在目标活跃度统计周期内的语音活跃度。其中,语音活跃度反映一个活跃度统计周期内第一通话方参与通话的活跃程度,在活跃度统计周期内,第一通话方发言的次数越频繁,或者发言的时长越长,则该活跃度统计周期内,语音活跃度就越高。
在其中一个实施例中,参考图6,对于第一通话方的通话音频中的音频帧1至音频帧N,第一终端均确定每帧音频帧所属的类型。其中,vad=1用于代表该音频帧属于发言类型;vad=0用于代表音频帧属于静默类型。第一终端统计通话音频中vad=1的音频帧的数量,以及统计vad=0的音频帧的数量,基于vad=1的音频帧的数量和vad=0的音频帧的数量,并参考公式Ac(i)=C1/(C0+C1),确定第一通话方在目标活跃度统计周期内的语音活跃度。
其中,Ac(i)代表语音活跃度;C1为vad=1的音频帧的数量,也即,为目标数量;C0为vad=0的音频帧的数量;(C0+C1)为音频帧的总数量。图6示出了一个实施例中语音活跃度的确定示意图。
上述实施例中,由于是针对每一音频帧均确定相应的类型,因此,使得类型的确定更细致化,从而能够基于更细致化的类型确定更为准确的语音活跃度。
在其中一个实施例中,根据多个活跃度统计周期各自的语音活跃度,确定第一通话方当前的发言活跃度包括:确定多个活跃度统计周期各自的语音活跃度中的最大语音活跃度;对最大语音活跃度和多个活跃度统计周期中当前的活跃度统计周期的语音活跃度进行加权求和,得到第一通话方当前的发言活跃度。
具体地,当获取得到多个活跃度统计周期各自的语音活跃度时,第一终端可从多个活跃度统计周期各自的语音活跃度中筛选出最大语音活跃度,并将最大语音活跃度与当前的活跃度统计周期的语音活跃度进行加权求和,得到第一通话方当前的发言活跃度。
在其中一个实施例中,可通过下述公式确定第一通话方当前的发言活跃度:
Acc(i)=a*Max(Ac(i-4),Ac(i-3),Ac(i-2),Ac(i-1),Ac(i))+(1-a)*Ac(i)
其中,Acc(i)为第一通话方当前的发言活跃度;Max为选取最大值的函数;Ac(i)代表语音活跃度;a为小于1的参数。该公式仅是以5个活跃度统计周期为例的示意性公式,多个活跃度统计周期还可以为除5之外的其余数量的周期。
上述实施例中,通过对多个活跃度统计周期中的最大语音活跃度和当前的活跃度统计周期的语音活跃度进行加权求和,可使得第一通话方当前的发言活跃度更倾向于最大语音活跃度,又由于是通过发言活跃度来调整抖动缓冲区的大小,且当发言活跃度越小时,抖动缓冲区就越大,基于该抖动缓冲区得到的通话延时也就越大。因此,当第一通话方当前的发言活跃度更倾向于最大语音活跃度时,可使得基于该发言活跃度设置的抖动缓冲区能够小于基于最小语音活跃度所设置的抖动缓冲区,进而减少了当第一通话方积极参与通话时,第一通话方基于大的抖动缓冲区接收到延时较长的第二通话方的语音的概率,进而提升了用户体验。
在其中一个实施例中,确定与发言活跃度匹配的目标抖动值计算方式,包括:在发言活跃度大于或等于预设发言度阈值的情况下,确定第一通话方属于发言活跃类型,并确定目标抖动值计算方式为与发言活跃类型相对应的第一计算方式;在发言活跃度小于预设发言度阈值的情况下,确定第一通话方属于音频收听类型,并确定目标抖动值计算方式为与音频收听类型相对应的第二计算方式;其中,在相同的计算条件下,通过第二计算方式计算得到的传输网络的目标抖动值,大于通过第一计算方式计算得到的目标抖动值。
具体地,当发言活跃度大于或等于预设发言度阈值时,则确定第一通话方属于发言活跃类型,此时,第一终端将预设的多个抖动值计算方式中的、与发言活跃类型相对应的第一计算方式,作为目标抖动值计算方式。在通话方为自然人或者虚拟的角色时,第一通话方属于发言活跃类型反映的是自然人或者虚拟的角色在一段时间内,积极参与语音通话,多次发言;在通话方为表征自然人的标识信息、软件客户端或者硬件终端时,第一通话方属于发言活跃类型反映的是,通过自然人的标识信息、软件客户端或者硬件终端进行语音通话的用户在一段时间内,积极参与语音通话,多次发言。当发言活跃度小于预设发言度阈值时,则确定第一通话方属于音频收听类型,此时,第一终端将预设的多个抖动值计算方式中的、与音频收听类型相对应的第二计算方式,作为目标抖动值计算方式。在通话方为自然人或者虚拟的角色,第一通话方属于音频收听类型反映的是自然人或者虚拟的角色在一段时间内,少量或者不发言,仅聆听对方的发言;在通话方为表征自然人的标识信息、软件客户端或者硬件终端时,第一通话方属于音频收听类型反映的是,通过自然人的标识信息、软件客户端或者硬件终端进行语音通话的用户在一段时间内,少量或不发言,仅聆听对方的发言。比如,参考图7,当第一通话方在一段时间内,积极参与语音通话,多次发言时,可将第一计算方式作为目标抖动值计算方式;当第一通话方在一段时间内,少量或者不发言,仅聆听对方的发言时,则将第二计算方式作为目标抖动值计算方式。图7示出了一个实施例中目标抖动值计算方式的确定示意图。
在其中一个实施例中,第一计算方式可为下述公式:
在(|d(i-1,i)|>jitter_value(i-1))的情况下:
jitter_value(i)=0.5*jitter_value(i-1)+0.5*|d(i-1,i)|;
在(|d(i-1,i)|≤jitter_value(i-1))的情况下:
jitter_value(i)=0.97*jitter_value(i-1)+0.03*|d(i-1,i)|;
在其中一个实施例中,第二计算方式可为下述公式:
在(|d(i-1,i)|>jitter_value(i-1))的情况下:
jitter_value(i)=0.95*jitter_value(i-1)+0.05*|d(i-1,i);
在(|d(i-1,i)|≤jitter_value(i-1))的情况下:
jitter_value(i)=0.9*jitter_value(i-1)+0.1*|d(i-1,i)|;
其中,上述公式中|d(i-1,i)|代表第i-1个通话数据包与第i个通话数据包的时延之间的差异,也即,为网络时延差异值;jitter_value(i-1)代表历史抖动值;jitter_value(i)代表目标抖动值。
在d(i-1,i)>jitter_value(i))的情况下,0.5*jitter_value(i-1)+0.5*|d(i-1,i)|-0.95*jitter_value(i-1)-0.05*|d(i-1,i)|=0.45|d(i-1,i)|-0.45jitter_value(i-1)>0;且在d(i-1,i)<jitter_value(i))的情况下,0.97*jitter_value(i-1)+0.03*|d(i-1,i)|-0.9*jitter_value(i-1)+0.1*|d(i-1,i)|=0.07jitter_value(i-1)-0.07|d(i-1,i)|>0,因此,在相同的计算条件下,通过第二计算方式计算得到的目标抖动值,大于通过第一计算方式计算得到的目标抖动值。其中,相同的计算条件指的是,通过第一计算方式和第二计算方式计算目标抖动值时,输入的计算参数相同。
上述实施例中,由于目标抖动值越大,则抖动缓冲区也就越大,因此,通过在相同的计算参数下,基于第二计算方式计算得到的传输网络的目标抖动值大于基于第一计算方式计算得到的目标抖动值,可使得第一通话方为音频收听类型时,设置尺寸更大的抖动缓冲区,从而通过更大尺寸的抖动缓冲区对抗网络乱序抖动问题,确保第一通话方可以获得更为流畅的第二通话方的通话音频。在第一通话方为发言活跃类型时,设置尺寸稍小的抖动缓冲区,通过尺寸稍小的抖动缓冲区不仅能够抵抗基本的网络抖动要求,还能当抖动较大时会通过缓冲区及时快播处理,对满盈的缓冲数据进行压缩并即时输出处理,虽然听感上会感觉播放速度有所变化,但能最大程度避免抖动导致的通话过程“不可接受的”大延时体验,保障了通话的流畅性。
此外,由于当第一通话方为音频收听类型时,其更关注的是收听的音频的质量,通过设置尺寸更大的抖动缓冲区,可使得第一通话方收听到高质量的音频,从而提高了用户体验。当第一通话方为发言活跃类型时,其更关注的是通话的流畅性,通过设置尺寸稍小的抖动缓冲区,可通过尺寸稍小的抖动缓冲区保障通话的流畅性,进一步提升了用户体验。如此,便实现了在高通话质量和短时延之间达到动态平衡。
在其中一个实施例中,以多个通话数据包中的每个通话数据包分别作为目标通话数据包;目标通话数据包的传输时间数据的确定步骤包括:获取时间记录表;从时间记录表中查找第二通话方发送目标通话数据包的发送时间,以及查找第一通话方接收目标通话数据包的接收时间;将目标通话数据的接收时间减去目标通话数据的发送时间,得到目标通话数据包的传输时间数据。
具体地,当获取得到以当前通话数据包为截止的多个连续接收到的通话数据包时,以多个通话数据包中的每个通话数据包分别作为目标通话数据包。第一终端可获取时间记录表,并从时间记录表中查找第二通话方发送该目标通话数据包的发送时间,以及从时间记录表中查找第一通话方接收该目标通话数据包的接收时间。第一终端将目标通话数据的接收时间减去发送时间,从而得到目标通话数据包在传输网络中的传输时间,并将该传输时间作为传输时间数据。
在其中一个实施例中,当接收到通话数据包时,第一终端可从通话数据包的包头中提取出第二通话方的发送时间,并将该时间记录至时间记录表中。
本实施例中,由于时间记录表中可记载有各通话数据包的发送时间和接收时间,因此,通过获取时间记录表,可基于时间记录表中记载的时间,快速确定各通话数据包各自对应的传输时间数据。
在其中一个实施例中,根据传输网络的历史抖动值和多个通话数据包各自的传输时间数据,按照目标抖动值计算方式,确定传输网络的目标抖动值,包括:根据多个通话数据包各自的传输时间数据,确定网络时延差异值;根据网络时延差异值和传输网络的历史抖动值之间的大小关系,从目标抖动值计算方式中筛选出目标子计算方式;按照目标子计算方式,并根据传输网络的历史抖动值和网络时延差异值,确定传输网络的目标抖动值。
具体地,第一终端根据多个通话数据包各自的传输时间数据,确定网络时延差异值。其中,网络时延差异值反映了传输网络时延的变化情况。第一终端可确定网络延时差异与历史抖动值之间的大小关系,并根据该大小关系筛选出目标子计算方式,从而按照目标子计算方式,确定传输网络的目标抖动值。
在其中一个实施例中,目标值计算方式包括第一子方式和第二子方式;根据网络时延差异值和传输网络的历史抖动值之间的大小关系,从目标抖动值计算方式中筛选出目标子计算方式,包括:当网络时延差异值大于传输网络的历史抖动值时,将第一子方式作为目标子计算方式;当网络时延差异值小于或等于传输网络的历史抖动值时,将第二子方式作为目标子计算方式;其中,第一子方式中的与历史抖动值相对应的第一计算系数,小于第二子方式中的与历史抖动值相对应的第一计算系数;第一子方式中的与网络延时差异值相对应的第二计算系数,大于第二子方式中的与网络延时差异值相对应的第二计算系数。
具体地,目标抖动值计算方式包括与“网络时延差异值大于传输网络的历史抖动值”相对应的第一子方式、及与“网络延时差异值小于或等于传输网络的历史抖动值”相对应的第二子方式。当网络时延差异值大于传输网络的历史抖动值时,将目标抖动值计算方式中的第一子方式,作为目标子计算方式;当网络延时差异值小于或等于传输网络的历史抖动值时,将目标抖动值计算方式中的第二子方式,作为目标子计算方式。其中,第一子方式中的与历史抖动值相对应的第一计算系数,小于第二子方式中的与历史抖动值相对应的第一计算系数;第一子方式中的与网络延时差异值相对应的第二计算系数,大于第二子方式中的与网络延时差异值相对应的第二计算系数。
比如,在目标抖动值计算方式为与发言活跃类型相对应的第一计算方式时,当网络时延差异值大于传输网络的历史抖动值时,目标子计算方式即可为第一子方式:jitter_value(i)=0.5*jitter_value(i-1)+0.5*|d(i-1,i)|;在目标抖动值计算方式为第一计算方式时,当网络时延差异值小于或等于传输网络的历史抖动值时,目标子计算方式即可为第二子方式:jitter_value(i)=0.97*jitter_value(i-1)+0.03*|d(i-1,i)|。
又比如,在目标抖动值计算方式为与发言活跃类型相对应的第二计算方式时,当网络时延差异值大于传输网络的历史抖动值时,目标子计算方式即可为第一子方式:jitter_value(i)=0.95*jitter_value(i-1)+0.05*|d(i-1,i);在目标抖动值计算方式为第二计算方式时,当网络时延差异值小于或等于传输网络的历史抖动值时,目标子计算方式即可为第二子方式:jitter_value(i)=0.9*jitter_value(i-1)+0.1*|d(i-1,i)|。
本实施例中,在网络时延差异值大于历史抖动值时,可表征传输网络的抖动正在增大,因此,相比于第二子方式,第一子方式中的网络时延差异值的占比会增大(比如,0.5大于0.03),从而通过增大的占比增大计算得到的目标抖动值,进而基于增大的目标抖动值,增加抖动缓冲区的大小,以避免因抖动缓冲区过小而抖动过大导致的输出语音断断续续的概率。在网络时延差异值小于或等于历史抖动值时,可表征传输网络的抖动不变或者减小,因此,相比于第一子方式,与“网络时延差异值小于或等于历史抖动值”相对应的第二子方式中的历史抖动值的占比会增大(比如,0.97大于0.5),从而通过增大的历史抖动值的占比使得所确定的目标抖动值可与历史抖动值相差不大,进而基于相差不大的目标抖动值减小抖动缓冲区频繁变化的概率,如此,不仅可以减少因抖动缓冲区尺寸变化过于频繁而导致第一终端运行错误的概率,而且可以减少因变化抖动缓冲区尺寸而耗费的计算机等资源。
在其中一个实施例中,多个通话数据包为两个通话数据包;根据多个通话数据包各自的传输时间数据,确定网络时延差异值,包括:确定两个通话数据各自的传输时间数据之间的差异;将两个通话数据各自的传输时间数据之间的差异的绝对值,作为传输网络的网络时延差异值。
具体地,在多个通话数据包具体为两个通话数据包时,第一终端将两个通话数据包中的其中一个通话数据包的传输时间数据减去另一个通话数据包的传输时间数据,得到两个通话数据各自的传输时间数据之间的差异,并将该差异的绝对值,作为传输网络的网络时延差异值。
示例性地,第一终端可根据公式|d(i,j)|=|(r(j)–r(i))-(s(j)–s(i))|=|(r(j)–s(j))-(r(i)–s(i))|,确定网络时延差异值。其中,|d(i,j)|为网络时延差异值;i为第i个通话数据包;j为第j个通话数据包;r(j)为第j个通话数据包的接收时间,s(j)为第j个通话数据包的发送时间;r(i)为第i个通话数据包的接收时间,s(i)为第i个通话数据包的发送时间。(r(j)–s(j))为第j个通话数据包的传输时间数据;(r(i)–s(i))为第i个通话数据包的传输时间数据。
在其中一个实施例中,多个通话数据包还可为两个或两个以上的通话数据包,从而第一终端确定接收到的每两个相邻的通话数据包之间的传输时间数据的差异,并将多个差异的平均值,作为传输网络的网络时延差异值。
在其中一个实施例中,参考图8,对于通话数据包i和通话数据包j,可基于通话数据包i的发送时间s(i)和接收时间r(i)、以及基于通话数据j的发送时间s(j)和接收时间r(j),确定传输网络的网络时延差异值。图8示出了一个实施例中网络时延差异值的确定示意图。
上述实施例中,由于传输时间数据反映的是通话数据包在传输网络中的时延,因此,各传输时间之间的差异能够反映时延的变化情况,因此,通过确定各传输时间之间的差异,可基于该差异确定传输网络的目标抖动值。
在其中一个实施例中,按照目标子计算方式,并根据传输网络的历史抖动值和网络时延差异值,确定传输网络的目标抖动值,包括:按照目标子计算方式,确定与传输网络的历史抖动值对应的第一计算系数、及与网络时延差异值对应的第二计算系数;将第一计算系数与历史抖动值相乘,得到目标历史抖动值,并将第二计算系数与网络时延差异值相乘,得到目标网络时延差异值;将目标历史抖动值与目标网络时延差异值叠加,得到传输网络的目标抖动值。
具体地,当确定目标子计算方式时,第一终端可根据目标子计算方式,确定与传输网络的历史抖动值对应的第一计算系数、及与网络时延差异值对应的第二计算系数。比如,在目标子计算方式为jitter_value(i)=0.97*jitter_value(i-1)+0.03*|d(i-1,i)|时,可确定与传输网络的历史抖动值对应的第一计算系数为0.97,与网络时延差异值对应的第二计算系数为0.03。此时,第一终端按照相应的计算系数,对历史抖动值和网络时延差异值进行加权求和处理,得到目标抖动值。
本实施例中,对历史抖动值和网络时延差异值进行加权求和处理,可认为是基于历史抖动值对目标抖动值进行平滑处理,从而通过平滑处理使得所确定的目标抖动值更为准确。
在其中一个实施例中,调整用以缓存第二通话方发送的通话数据包的抖动缓冲区的大小,使得调整后的抖动缓冲区的大小与目标抖动值匹配,包括:获取预配置的抖动值与缓冲区大小之间的对应关系;其中,缓冲区大小随着抖动值的增大而增大;根据对应关系,确定与目标抖动值相对应的目标缓冲区大小,并调整抖动缓冲区的大小至目标缓冲区大小。
具体地,第一终端中预存储有抖动值与缓冲区大小之间的对应关系,该对应关系具体可为一个映射表。通过抖动值与缓冲区大小之间的对应关系,第一终端可确定与目标抖动值相对应的目标缓冲区大小,并调整抖动缓冲区的大小至该目标缓冲区大小。通常情况下,目标抖动值越大,则所对应的抖动缓冲区越大,相反则越小。当接收到的通话数据包超过抖动缓冲区的尺寸时,缓冲区数据将通过时间压扩算法,例如SOLA算法对抖动缓冲区的通话数据包进行时域压缩后进行播放,即快速播放的方式。
在其中一个实施例中,当进行多人通话时,对于除第一通话方所对应的通话端之外的其余通话端,每个通话端均可为一个第二通话方,从而可在第一通话方所对应的第一终端中,设置每个第二通话方各自对应的抖动缓冲区,用于缓存相应的第二通话方发送的通话数据包。第一终端可按照上述方法,分别调整每个抖动缓冲区大小,使得其与传输网络的抖动值与第一通话方的发言积极性相对应。当进行多人通话时,对于除第一通话方所对应的通话端之外的其余通话端,可将其余通话端共同作为一个第二通话方,从而可在第一通话方所对应的第一终端中,设置第二通话方所对应的抖动缓冲区,用以缓存各其余通话端发送的通话数据包。第一终端可按照上述方法,分别调整每个抖动缓冲区大小,使得其与传输网络的抖动值和第一通话方的发言积极性相对应。
本实施例中,抖动值越大则传输网络越不稳定或抖动越大,例如短时间接收到异常多的通话数据包,或者收到的通话数据包是乱序的。当抖动值增大时,通过增加抖动缓冲区的尺寸,可使之有足够大的缓存空间接收更多的数据,避免传输进来的通话数据包因缓冲区不足而溢出被迫丢弃的问题,随后通过对抖动缓冲区的通话数据包重新排序等处理,让接收到的通话数据包可以平稳地输出到下一环节,即解码环节,让解码后输出的音视频信号播放流畅。而当抖动值减小时,也即当接收到的数据包量恢复正常时,可减小抖动缓冲区的尺寸,比如,将恢复至常规的抖动缓冲区的长度,以避免引入额外的端到端时延。
在其中一个实施例中,参考图9,示出了一个具体实施例中抖动缓冲区大小的调整方法,包括以下步骤:
步骤902,第一终端在第一通话方接收到第二通话方通过传输网络发送的当前通话数据包的情况下,确定连续的多个活跃度统计周期;多个活跃度统计周期包括当前的活跃度统计周期。
步骤904,对于多个活跃度统计周期中的每个活跃度统计周期,第一终端获取第一通话方在活跃度统计周期内的语音活跃度。
步骤906,第一终端确定多个活跃度统计周期各自的语音活跃度中的最大语音活跃度;对最大语音活跃度和多个活跃度统计周期中当前的活跃度统计周期的语音活跃度进行加权求和,得到第一通话方当前的发言活跃度。
步骤908,在发言活跃度大于或等于预设发言度阈值的情况下,第一终端确定第一通话方属于发言活跃类型,并确定目标抖动值计算方式为与发言活跃类型相对应的第一计算方式。
步骤910,在发言活跃度小于预设发言度阈值的情况下,第一终端确定第一通话方属于音频收听类型,并确定目标抖动值计算方式为与音频收听类型相对应的第二计算方式;其中,在相同的计算条件下,通过第二计算方式计算得到的传输网络的目标抖动值,大于通过第一计算方式计算得到的目标抖动值。
步骤912,第一终端确定第一通话方已连续接收到的包括当前通话数据包的多个通话数据包;对于多个通话数据包中的每个通话数据包,均获取时间记录表,从时间记录表中查找第二通话方发送通话数据包的发送时间,以及查找第一通话方接收通话数据包的接收时间,将目标通话数据的接收时间减去目标通话数据的发送时间,得到通话数据包的传输时间数据。
步骤914,第一终端根据多个通话数据包各自的传输时间数据,确定网络时延差异值;根据网络时延差异值和传输网络的历史抖动值之间的大小关系,从目标抖动值计算方式中筛选出目标子计算方式。
步骤916,第一终端按照目标子计算方式,确定与传输网络的历史抖动值对应的第一计算系数、及与网络时延差异值对应的第二计算系数;将第一计算系数与历史抖动值相乘,得到目标历史抖动值,并将第二计算系数与网络时延差异值相乘,得到目标网络时延差异值;将目标历史抖动值与目标网络时延差异值叠加,得到述传输网络的目标抖动值。
步骤918,第一终端获取预配置的抖动值与缓冲区大小之间的对应关系;其中,缓冲区大小随着抖动值的增大而增大;根据对应关系,确定与目标抖动值相对应的目标缓冲区大小,并调整抖动缓冲区的大小至目标缓冲区大小。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
本申请还提供一种应用场景,该应用场景应用上述的抖动缓冲区大小的调整方法。具体地,该抖动缓冲区大小的调整方法在该应用场景的应用如下:
参考图10,图10示出了一个实施例中抖动缓冲区大小的调整整体示意图。当第一通话方与第二通话方通过即时通信应用进行语音通话时,第一通话方所对应的第一终端可接收第二通话方发送的通话数据包,并基于接收到的通话数据包进行抖动检测,得到网络时延差异值。与此同时,第一通话方所对应的第一终端还可以采集第一通话方的通话音频,并对通话音频进行发言活跃度检测,得到第一通话方的发言活跃度。第一终端综合网络时延差异值和发言活跃度确定传输网络的目标抖动值,并基于目标抖动值调整抖动缓冲区的大小,从而第一终端可通过调整后的抖动缓冲区来存储第二通话方发送的通话数据包,并对通话数据包进行解码播放。如此,第一通话方即可实现与第二通话方进行语音通话。
上述应用场景仅为示意性的说明,可以理解,本申请各实施例所提供的抖动缓冲区大小的调整方法的应用不局限于上述场景。比如,可应用于第一通话方与第二通话方在直播过程中进行直播连麦、第一通话方与第二通话方在游戏过程中进行语音通话、第一通话方与第二通话方在视频时进行语音通话,等等
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的抖动缓冲区大小的调整方法的抖动缓冲区大小的调整装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个抖动缓冲区大小的调整装置实施例中的具体限定可以参见上文中对于抖动缓冲区大小的调整方法的限定,在此不再赘述。
在一个实施例中,如图11所示,提供了一种抖动缓冲区大小的调整装置1100,包括:发言活跃度确定模块1102、抖动值确定模块1104和调整模块1106,其中:
发言活跃度确定模块1102,用于在第一通话方接收到第二通话方通过传输网络发送的当前通话数据包的情况下,确定第一通话方当前的发言活跃度;发言活跃度反映第一通话方参与与第二通话方进行的语音通话的活跃程度;确定与发言活跃度匹配的目标抖动值计算方式。
抖动值确定模块1104,用于确定第一通话方已连续接收到的多个通话数据包,并确定多个通话数据包各自的传输时间数据;多个通话数据包包括当前通话数据包;根据传输网络的历史抖动值和多个通话数据包各自的传输时间数据,按照目标抖动值计算方式,确定传输网络的目标抖动值。
调整模块1106,用于调整用以缓存第二通话方发送的通话数据包的抖动缓冲区的大小,使得调整后的抖动缓冲区的大小与目标抖动值匹配。
在其中一个实施例中,参考图12,发言活跃度确定模块1102包括综合确定模块1121,用于在第一通话方接收到第二通话方通过传输网络发送的当前通话数据包的情况下,确定连续的多个活跃度统计周期;多个活跃度统计周期包括当前的活跃度统计周期;对于多个活跃度统计周期中的每个活跃度统计周期,获取第一通话方在活跃度统计周期内的语音活跃度;根据多个活跃度统计周期各自的语音活跃度,确定第一通话方当前的发言活跃度。
在其中一个实施例中,以多个活跃度统计周期中的每个活跃度统计周期分别作为目标活跃度统计周期;综合确定模块1121还用于获取在目标活跃度统计周期内采集的第一通话方的通话音频;对通话音频进行分帧处理,得到多个音频帧,并确定多个音频帧各自对应的短时能量和短时过零率;根据多个音频帧各自对应的短时能量和短时过零率,确定多个音频帧各自对应的第一通话方发言概率值;根据多个音频帧各自对应的第一通话方发言概率值,确定第一通话方在目标活跃度统计周期内的语音活跃度。
在其中一个实施例中,综合确定模块1121还用于根据多个音频帧各自对应的第一通话方发言概率值,确定多个音频帧各自对应的音频帧类型;音频帧类型包括发言类型;确定多个音频帧中属于发言类型的音频帧的数量,得到目标数量;根据目标数量和多个音频帧的总数量,确定第一通话方在目标活跃度统计周期内的语音活跃度。
在其中一个实施例中,综合确定模块1121用于确定多个活跃度统计周期各自的语音活跃度中的最大语音活跃度;对最大语音活跃度和多个活跃度统计周期中当前的活跃度统计周期的语音活跃度进行加权求和,得到第一通话方当前的发言活跃度。
在其中一个实施例中,发言活跃度确定模块1102还包括方式确定模块1122,用于在发言活跃度大于或等于预设发言度阈值的情况下,确定第一通话方属于发言活跃类型,并确定目标抖动值计算方式为与发言活跃类型相对应的第一计算方式;在发言活跃度小于预设发言度阈值的情况下,确定第一通话方属于音频收听类型,并确定目标抖动值计算方式为与音频收听类型相对应的第二计算方式;其中,在相同的计算条件下,通过第二计算方式计算得到的传输网络的目标抖动值,大于通过第一计算方式计算得到的目标抖动值。
在其中一个实施例中,以多个通话数据包中的每个通话数据包分别作为目标通话数据包;抖动值确定模块1104还包括时间数据确定模块1141,用于获取时间记录表;从时间记录表中查找第二通话方发送目标通话数据包的发送时间,以及查找第一通话方接收目标通话数据包的接收时间;将目标通话数据的接收时间减去目标通话数据的发送时间,得到目标通话数据包的传输时间数据。
在其中一个实施例中,抖动值确定模块还包括计算模块1142,用于根据多个通话数据包各自的传输时间数据,确定网络时延差异值;根据网络时延差异值和传输网络的历史抖动值之间的大小关系,从目标抖动值计算方式中筛选出目标子计算方式;按照目标子计算方式,并根据传输网络的历史抖动值和网络时延差异值,确定传输网络的目标抖动值。
在其中一个实施例中,目标值计算方式包括第一子方式和第二子方式;计算模块1142还用于当网络时延差异值大于传输网络的历史抖动值时,将第一子方式作为目标子计算方式;当网络时延差异值小于或等于传输网络的历史抖动值时,将第二子方式作为目标子计算方式;其中,第一子方式中的与历史抖动值相对应的第一计算系数,小于第二子方式中的与历史抖动值相对应的第一计算系数;第一子方式中的与网络延时差异值相对应的第二计算系数,大于第二子方式中的与网络延时差异值相对应的第二计算系数。
在其中一个实施例中,多个通话数据包为两个通话数据包;计算模块1142还用于确定两个通话数据各自的传输时间数据之间的差异;将两个通话数据各自的传输时间数据之间的差异的绝对值,作为传输网络的网络时延差异值。
在其中一个实施例中,计算模块1142还用于按照目标子计算方式,确定与传输网络的历史抖动值对应的第一计算系数、及与网络时延差异值对应的第二计算系数;将第一计算系数与历史抖动值相乘,得到目标历史抖动值,并将第二计算系数与网络时延差异值相乘,得到目标网络时延差异值;将目标历史抖动值与目标网络时延差异值叠加,得到述传输网络的目标抖动值。
在其中一个实施例中,调整模块1106还用于获取预配置的抖动值与缓冲区大小之间的对应关系;其中,缓冲区大小随着抖动值的增大而增大;根据对应关系,确定与目标抖动值相对应的目标缓冲区大小,并调整抖动缓冲区的大小至目标缓冲区大小。
上述抖动缓冲区大小的调整装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图13所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种抖动缓冲区大小的调整方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (16)
1.一种抖动缓冲区大小的调整方法,其特征在于,所述方法包括:
在第一通话方接收到第二通话方通过传输网络发送的当前通话数据包的情况下,确定所述第一通话方当前的发言活跃度;所述发言活跃度反映所述第一通话方参与与所述第二通话方进行的语音通话的活跃程度;
确定与所述发言活跃度匹配的目标抖动值计算方式;
确定所述第一通话方已连续接收到的多个通话数据包,并确定所述多个通话数据包各自的传输时间数据;所述多个通话数据包包括当前通话数据包;
根据所述传输网络的历史抖动值和所述多个通话数据包各自的传输时间数据,按照所述目标抖动值计算方式,确定所述传输网络的目标抖动值;
调整用以缓存所述第二通话方发送的通话数据包的抖动缓冲区的大小,使得调整后的所述抖动缓冲区的大小与所述目标抖动值匹配。
2.根据权利要求1所述的方法,其特征在于,所述在第一通话方接收到第二通话方通过传输网络发送的当前通话数据包的情况下,确定所述第一通话方当前的发言活跃度,包括:
在第一通话方接收到第二通话方通过传输网络发送的当前通话数据包的情况下,确定连续的多个活跃度统计周期;所述多个活跃度统计周期包括当前的活跃度统计周期;
对于所述多个活跃度统计周期中的每个活跃度统计周期,获取所述第一通话方在所述活跃度统计周期内的语音活跃度;
根据所述多个活跃度统计周期各自的所述语音活跃度,确定所述第一通话方当前的发言活跃度。
3.根据权利要求2所述的方法,其特征在于,以所述多个活跃度统计周期中的每个活跃度统计周期分别作为目标活跃度统计周期;所述第一通话方在所述目标活跃度统计周期内的语音活跃度的确定步骤包括:
获取在所述目标活跃度统计周期内采集的所述第一通话方的通话音频;
对所述通话音频进行分帧处理,得到多个音频帧,并确定所述多个音频帧各自对应的短时能量和短时过零率;
根据所述多个音频帧各自对应的短时能量和短时过零率,确定所述多个音频帧各自对应的第一通话方发言概率值;
根据所述多个音频帧各自对应的第一通话方发言概率值,确定所述第一通话方在所述目标活跃度统计周期内的语音活跃度。
4.根据权利要求3所述的方法,其特征在于,所述根据所述多个音频帧各自对应的第一通话方发言概率值,确定所述第一通话方在所述目标活跃度统计周期内的语音活跃度,包括:
根据所述多个音频帧各自对应的第一通话方发言概率值,确定所述多个音频帧各自对应的音频帧类型;所述音频帧类型包括发言类型;
确定所述多个音频帧中属于所述发言类型的音频帧的数量,得到目标数量;
根据所述目标数量和所述多个音频帧的总数量,确定所述第一通话方在所述目标活跃度统计周期内的语音活跃度。
5.根据权利要求2所述的方法,其特征在于,所述根据所述多个活跃度统计周期各自的所述语音活跃度,确定所述第一通话方当前的发言活跃度,包括:
确定所述多个活跃度统计周期各自的语音活跃度中的最大语音活跃度;
对所述最大语音活跃度和所述多个活跃度统计周期中当前的活跃度统计周期的语音活跃度进行加权求和,得到所述第一通话方当前的发言活跃度。
6.根据权利要求1所述的方法,其特征在于,所述确定与所述发言活跃度匹配的目标抖动值计算方式,包括:
在所述发言活跃度大于或等于预设发言度阈值的情况下,确定所述第一通话方属于发言活跃类型,并确定所述目标抖动值计算方式为与所述发言活跃类型相对应的第一计算方式;
在所述发言活跃度小于预设发言度阈值的情况下,确定所述第一通话方属于音频收听类型,并确定所述目标抖动值计算方式为与所述音频收听类型相对应的第二计算方式;
其中,在相同的计算条件下,通过所述第二计算方式计算得到的所述传输网络的目标抖动值,大于通过所述第一计算方式计算得到的目标抖动值。
7.根据权利要求1所述的方法,其特征在于,以所述多个通话数据包中的每个通话数据包分别作为目标通话数据包;所述目标通话数据包的传输时间数据的确定步骤包括:
获取时间记录表;
从所述时间记录表中查找所述第二通话方发送所述目标通话数据包的发送时间,以及查找所述第一通话方接收所述目标通话数据包的接收时间;
将所述目标通话数据的接收时间减去所述目标通话数据的发送时间,得到所述目标通话数据包的传输时间数据。
8.根据权利要求1所述的方法,其特征在于,所述根据所述传输网络的历史抖动值和所述多个通话数据包各自的传输时间数据,按照所述目标抖动值计算方式,确定所述传输网络的目标抖动值,包括:
根据所述多个通话数据包各自的传输时间数据,确定网络时延差异值;
根据所述网络时延差异值和所述传输网络的历史抖动值之间的大小关系,从所述目标抖动值计算方式中筛选出目标子计算方式;
按照所述目标子计算方式,并根据所述传输网络的历史抖动值和所述网络时延差异值,确定所述传输网络的目标抖动值。
9.根据权利要求8所述的方法,其特征在于,所述多个通话数据包为两个通话数据包;所述根据所述多个通话数据包各自的传输时间数据,确定网络时延差异值,包括:
确定所述两个通话数据各自的传输时间数据之间的差异;
将所述两个通话数据各自的传输时间数据之间的差异的绝对值,作为所述传输网络的网络时延差异值。
10.根据权利要求8所述的方法,其特征在于,所述目标值计算方式包括第一子方式和第二子方式;所述根据所述网络时延差异值和所述传输网络的历史抖动值之间的大小关系,从所述目标抖动值计算方式中筛选出目标子计算方式,包括:
当所述网络时延差异值大于所述传输网络的历史抖动值时,将所述第一子方式作为目标子计算方式;
当所述网络时延差异值小于或等于所述传输网络的历史抖动值时,将所述第二子方式作为目标子计算方式;
其中,所述第一子方式中的与所述历史抖动值相对应的第一计算系数,小于所述第二子方式中的与所述历史抖动值相对应的第一计算系数;
所述第一子方式中的与所述网络延时差异值相对应的第二计算系数,大于所述第二子方式中的与所述网络延时差异值相对应的第二计算系数。
11.根据权利要求8所述的方法,其特征在于,所述按照所述目标子计算方式,并根据所述传输网络的历史抖动值和所述网络时延差异值,确定所述传输网络的目标抖动值,包括:
按照所述目标子计算方式,确定与所述传输网络的历史抖动值对应的第一计算系数、及与所述网络时延差异值对应的第二计算系数;
将所述第一计算系数与所述历史抖动值相乘,得到目标历史抖动值,并将所述第二计算系数与所述网络时延差异值相乘,得到目标网络时延差异值;
将所述目标历史抖动值与所述目标网络时延差异值叠加,得到述传输网络的目标抖动值。
12.根据权利要求1所述的方法,其特征在于,所述调整用以缓存所述第二通话方发送的通话数据包的抖动缓冲区的大小,使得调整后的所述抖动缓冲区的大小与所述目标抖动值匹配,包括:
获取预配置的抖动值与缓冲区大小之间的对应关系;其中,所述缓冲区大小随着抖动值的增大而增大;
根据所述对应关系,确定与所述目标抖动值相对应的目标缓冲区大小,并调整所述抖动缓冲区的大小至所述目标缓冲区大小。
13.一种抖动缓冲区大小的调整装置,其特征在于,所述装置包括:
发言活跃度确定模块,用于在第一通话方接收到第二通话方通过传输网络发送的当前通话数据包的情况下,确定所述第一通话方当前的发言活跃度;所述发言活跃度反映所述第一通话方参与所述第二通话方进行的语音通话的活跃程度;确定与所述发言活跃度匹配的目标抖动值计算方式;
抖动值确定模块,用于确定所述第一通话方已连续接收到的多个通话数据包,并确定所述多个通话数据包各自的传输时间数据;所述多个通话数据包包括当前通话数据包;根据所述传输网络的历史抖动值和所述多个通话数据包各自的传输时间数据,按照所述目标抖动值计算方式,确定所述传输网络的目标抖动值;
调整模块,用于调整用以缓存所述第二通话方发送的通话数据包的抖动缓冲区的大小,使得调整后的所述抖动缓冲区的大小与所述目标抖动值匹配。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12中任一项所述的方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
16.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211479479.2A CN116980395A (zh) | 2022-11-24 | 2022-11-24 | 抖动缓冲区大小的调整方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211479479.2A CN116980395A (zh) | 2022-11-24 | 2022-11-24 | 抖动缓冲区大小的调整方法、装置和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116980395A true CN116980395A (zh) | 2023-10-31 |
Family
ID=88475450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211479479.2A Pending CN116980395A (zh) | 2022-11-24 | 2022-11-24 | 抖动缓冲区大小的调整方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116980395A (zh) |
-
2022
- 2022-11-24 CN CN202211479479.2A patent/CN116980395A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106063255B (zh) | 显示视频会议期间的演讲者的方法和系统 | |
US7664246B2 (en) | Sorting speakers in a network-enabled conference | |
US9325809B1 (en) | Audio recall during voice conversations | |
US20220174357A1 (en) | Simulating audience feedback in remote broadcast events | |
CN105099949A (zh) | 基于对延迟抖动和对话动态的监视的抖动缓冲器控制 | |
CN110634511B (zh) | 一种音频数据处理方法及装置 | |
US9628630B2 (en) | Method for improving perceptual continuity in a spatial teleconferencing system | |
CN108234790A (zh) | 多人语音通信方法、装置、终端设备和存储介质 | |
CN105099795A (zh) | 抖动缓冲器水平估计 | |
US20230410815A1 (en) | Transcription generation technique selection | |
US11343301B2 (en) | Managing jitter buffer length for improved audio quality | |
US10439951B2 (en) | Jitter buffer apparatus and method | |
CN113572898B (zh) | 语音通话中的无声异常检测方法及对应的装置 | |
Ries et al. | Audiovisual quality estimation for mobile video services | |
CN116980395A (zh) | 抖动缓冲区大小的调整方法、装置和计算机设备 | |
US9368127B2 (en) | Method and device for providing distributed telepresence service | |
CN118075246A (zh) | 抖动缓冲区大小的调整方法、装置和计算机设备 | |
US11783837B2 (en) | Transcription generation technique selection | |
CN114242067A (zh) | 语音识别方法、装置、设备和存储介质 | |
EP3259906B1 (en) | Handling nuisance in teleconference system | |
CN114945097A (zh) | 视频流处理方法及装置 | |
CN102891977A (zh) | 基于iPhone平台下实现的语音视频通话方法 | |
CN114974273B (zh) | 一种会议音频混音方法和装置 | |
CN108924465A (zh) | 视频会议发言人终端的确定方法、装置、设备和存储介质 | |
US9548998B1 (en) | Asynchronous communication system architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |