CN116095395A - 一种调整缓冲区长度的方法、装置、电子设备和存储介质 - Google Patents
一种调整缓冲区长度的方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN116095395A CN116095395A CN202111312574.9A CN202111312574A CN116095395A CN 116095395 A CN116095395 A CN 116095395A CN 202111312574 A CN202111312574 A CN 202111312574A CN 116095395 A CN116095395 A CN 116095395A
- Authority
- CN
- China
- Prior art keywords
- length
- audio
- target
- data packet
- audio data
- 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 254
- 238000000034 method Methods 0.000 title claims abstract description 84
- 238000001514 detection method Methods 0.000 claims abstract description 237
- 230000005236 sound signal Effects 0.000 claims abstract description 113
- 238000012545 processing Methods 0.000 claims abstract description 18
- 230000000875 corresponding effect Effects 0.000 claims description 109
- 230000006870 function Effects 0.000 claims description 30
- 230000005540 biological transmission Effects 0.000 claims description 25
- 238000011217 control strategy Methods 0.000 claims description 15
- 238000009499 grossing Methods 0.000 claims description 8
- 230000002596 correlated effect Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 15
- 230000006854 communication Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 210000001260 vocal cord Anatomy 0.000 description 4
- 230000001186 cumulative effect Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/439—Processing of audio elementary streams
- H04N21/4392—Processing of audio elementary streams involving audio buffer management
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L25/00—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
- G10L25/78—Detection of presence or absence of voice signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/233—Processing of audio elementary streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
- H04N21/2402—Monitoring of the downstream path of the transmission network, e.g. bandwidth available
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/442—Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
- H04N21/44245—Monitoring the upstream path of the transmission network, e.g. its availability, bandwidth
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种调整缓冲区长度的方法、装置、电子设备和存储介质,涉及音频处理技术领域,方法包括:接收发送端发送的各音频数据包;分别确定各音频数据包各自对应的抖动值;其中,抖动值表征接收端接收到各音频数据包的时间间隔的变化程度;获取各音频帧各自对应的语音检测结果和所述音频信号的语速检测结果;其中,语音检测结果表征相应的音频帧是否包含语音数据;语速检测结果表征对音频信号在单位时间内包含的语音内容进行检测获得的结果;基于语速检测结果、各语音检测结果和各抖动值,结合预设缓冲区长度调整策略,对缓冲区当前的缓冲区长度进行相应调整,本申请可以提高动态调整缓冲区长度的精度,从而提高播放音频信号的流畅度。
Description
背景技术
目前,随着网络技术的发展,在将音频信号的各音频数据包传输至接收端的过程中,可能会因为各种网络问题,如拥塞、网络错误等,导致接收端接收到的各音频数据包出现丢包、延迟到达的问题,从而降低了解码后获得的音频信号的播放质量。
为了解决上述问题,可以在接收端接收到各音频数据包之后,将各音频数据包存储至缓冲区中进行缓存,并按照相同的时间间隔发送至解码端中进行解码,使得解码后获得的音频信号能够流畅播放。
在实际应用中,当缓冲区长度设置过长时,会增加非必要的信号延迟;当缓冲区长度设置过短时,会发生缓冲区过载,导致数据包丢失,引发通话声音卡顿的问题。因此,如何能够实现对于缓冲区长度的动态调整,成为了一个亟待解决的问题。
发明内容
本申请实施例提供一种调整缓冲区长度的方法、装置、电子设备和存储介质,用于提高动态调整缓冲区长度的精度,从而提高播放音频信号的流畅度。
一方面,本申请实施例提供一种调整缓冲区长度的方法,包括:
接收发送端发送的各音频数据包,其中,每个音频数据包为对音频信号的至少一个音频帧进行编码获得的;
分别获得接收所述各音频数据包时检测到的抖动值;
获取各音频帧各自对应的语音检测结果和所述音频信号的语速检测结果;其中,所述语音检测结果表征相应的音频帧是否包含语音数据;所述语速检测结果为对音频信号在单位时间内包含的语音内容进行检测获得的结果;
基于所述语速检测结果、各语音检测结果和各抖动值,结合预设缓冲区长度调整策略,对缓冲区当前的缓冲区长度进行相应调整。
一方面,本申请实施例提供一种调整缓冲区长度的装置,包括:
接收模块,用于接收发送端发送的各音频数据包,其中,每个音频数据包为对音频信号的至少一个音频帧进行编码获得的;
抖动检测模块,用于分别获得接收所述各音频数据包时检测到的抖动值;
处理模块,用于获取各音频帧各自对应的语音检测结果和所述音频信号的语速检测结果;其中,所述语音检测结果表征相应的音频帧是否包含语音数据;所述语速检测结果为对音频信号在单位时间内包含的语音内容进行检测获得的结果;
调整模块,用于基于所述语速检测结果、各语音检测结果和各抖动值,结合预设缓冲区长度调整策略,对缓冲区当前的缓冲区长度进行相应调整。
在一种可能的实施例中,所述调整模块还用于:
基于所述各音频数据包各自对应的接收时间,从所述各音频数据包中,确定出满足接收时间条件的音频数据包;
若确定各语音检测结果均为未包含语音数据,则基于非语音控制策略和确定出的音频数据包的目标抖动值,对缓冲区当前的缓冲区长度进行相应调整;
若确定至少一个语音检测结果为包含语音数据,则基于所述语速检测结果和所述目标抖动值,结合语音控制策略,对所述缓冲区长度进行相应调整。
在一种可能的实施例中,所述基于非语音控制策略和确定出的音频数据包的目标抖动值,对缓冲区当前的缓冲区长度进行相应调整时,所述调整模块还用于:
若确定出的音频数据包的目标抖动值小于抖动值门限值,则将预设的第一长度作为缓冲区当前的缓冲区长度;
若确定所述目标抖动值不小于所述抖动值门限值,则从预设长度范围内,选取任意一个目标长度,作为所述缓冲区长度,其中,所述长度范围是基于所述第一长度和第二长度生成的,所述第一长度小于所述第二长度。
在一种可能的实施例中,所述基于所述语速检测结果和所述目标抖动值,结合语音控制策略,对所述缓冲区长度进行相应调整时,所述调整模块还用于:
若确定所述目标抖动值小于抖动值门限值,则从预设长度范围内,选取任意一个目标长度,作为所述缓冲区长度,其中,所述长度范围是基于所述第一长度和第二长度生成的,所述第一长度小于所述第二长度;
若确定所述目标抖动值不小于所述抖动值门限值,则基于所述语速检测结果和所述目标抖动值,确定所述缓冲区长度。
在一种可能的实施例中,所述基于所述语速检测结果和所述目标抖动值,确定所述缓冲区长度时,所述调整模块还用于:
基于所述语速检测结果,确定所述音频信号的语速调节参数;
基于所述语速调节参数、所述目标抖动值,以及预设的抖动值调节函数,确定第三长度;
从所述第三长度和所述第二长度中,选取出满足长度条件的目标长度,作为所述缓冲区长度。
在一种可能的实施例中,所述基于所述语速调节参数、所述目标抖动值,以及预设的抖动值调节函数,确定第三长度,所述处理模块还用于:
将所述目标抖动值作为预设的抖动值调节函数的变量,并基于所述目标抖动值和所述抖动值调节函数,获得第四长度;
基于所述语速调节参数和所述第四长度,获得第三长度,其中,所述语速调节参数与所述第四长度呈正相关。
在一种可能的实施例中,所述从所述第三长度和所述第二长度中,选取出满足长度条件的目标长度,所述处理模块还用于:
若确定所述第三长度大于所述第二长度,则将所述第二长度作为目标长度;
若确定所述第三长度不大于所述第二长度,则将所述第三长度作为目标长度。
在一种可能的实施例中,所述获取所述音频信号的语速检测结果时,所述处理模块还用于:
从各音频帧中,确定出语音检测结果为包含语音数据的各目标音频帧;
获得所述各目标音频帧各自对应的基音周期状态;
基于各基音周期状态,确定所述音频信号的状态切换次数;
根据所述状态切换次数、所述各目标音频帧对应的音频帧数量,以及预设的语速门限值,确定所述音频信号的语速检测结果。
在一种可能的实施例中,所述获得所述各目标音频帧各自对应的基音周期状态时,所述处理模块还用于:
针对所述各目标音频帧,分别执行以下操作:
对一个目标音频帧进行基音周期检测,获得所述一个目标音频帧对应的基音周期值;
基于所述一个目标音频帧的基音周期值,所述一个目标音频帧的前一目标音频帧对应的基音周期值,确定基音周期值差值;
根据所述基音周期值差值和差值门限值,确定所述一个目标音频帧对应的基音周期状态。
在一种可能的实施例中,所述分别确定所述各音频数据包各自对应的抖动值时,所述抖动检测模块还用于:
针对所述各音频数据包,分别执行以下操作:
基于一个音频数据包的接收时间和发送时间,以及所述一个音频数据包的前一音频数据包的接收时间和发送时间,确定所述一个音频数据包和所述前一音频数据包之间的时间差值;
基于所述时间差值、平滑系数,以及所述前一音频数据包对应的抖动值,获得所述一个音频数据包对应的抖动值。
一方面,本申请实施例提供一种电子设备,其包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行上述任一种调整缓冲区长度的方法的步骤。
一方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行上述任一种调整缓冲区长度的方法的步骤。
一方面,本申请实施例一种计算机程序产品,其包括计算机指令,所述计算机指令存储在计算机可读存储介质中;当电子设备的处理器从所述计算机可读存储介质读取所述计算机指令时,所述处理器执行该计算机指令,使得所述电子设备执行上述任一种调整缓冲区长度的方法的步骤。
由于本申请实施例采用上述技术方案,至少具有如下技术效果:
在本申请实施例的方案中,在分别获得接收各音频数据包时检测到的抖动值后,基于各抖动值,获取到的各音频帧各自对应的语音检测结果和音频信号的语速检测结果,结合相应的缓冲区长度调整策略,对缓冲区当前的缓冲区长度进行相应调整。
采用上述方案,对音频信号进行分析,结合抖动值、语音检测结果和语速检测结果,动态调整缓冲区长度。由于丢失未包含语音数据的音频帧不会降低通话过程中的通话质量,因此,当音频信号中未包含语音数据时,尽可能减少缓冲区长度,能够避免因缓冲区长度过长而造成的信号延迟问题;由于丢失包含语音数据的音频帧会降低音频信号播放的流畅度,造成通话卡顿,因此,在包含语音数据且语速较快的情况下,尽可能增加缓冲区长度,从而避免缓冲区过载导致音频信号丢失。因此,采用上述方案,能够提高音频信号播放的精度,从而提高了音频信号播放的流畅度。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中的应用场景示意图;
图2为本申请实施例中一种调整缓冲区长度的方法的实施流程图;
图3为本申请实施例中获得抖动值的流程示意图;
图4为本申请实施例中一种获取语音检测结果的流程示意图;
图5为本申请实施例中另一种获取语音检测结果的流程示意图;
图6为本申请实施例中一种获取语速检测结果的流程示意图;
图7为本申请实施例中另一种获取语速检测结果的流程示意图;
图8为本申请实施例中对音频信号进行语速检测的流程示意图;
图9为本申请实施例中获得基音周期状态方法的流程示意图;
图10为本申请实施例中确定音频信号的状态切换次数的示例图;
图11为本申请实施例中对缓冲区长度进行调整的方法的流程示意图;
图12为本申请实施例中基于非语音控制策略调整缓冲区长度的方法的流程示意图;
图13为本申请实施例中基于语音控制策略调整缓冲区长度的方法的流程示意图;
图14为本申请实施例中确定缓冲区长度的方法的流程图;
图15为本申请实施例中确定第三长度的方法的流程示意图;
图16为本申请实施例中选取缓冲区长度的方法的流程图;
图17为本申请实施例中一种确定缓冲区长度的方法的逻辑示意图;
图18为本申请实施例中调整缓冲区长度的方法的示例图;
图19为本申请实施例中检测流程部署在发送端的示意图;
图20为本申请实施例中检测流程部署在接收端的示意图;
图21本申请实施例中一种调整缓冲区长度的装置的结构示意图;
图22为本申请实施例提供的一种电子设备的结构示意图;
图23为本申请实施例中的另一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
为了便于本领域技术人员更好地理解本申请的技术方案,下面对本申请涉及的部分概念进行介绍。
抖动值:在音频信号传输的过程中,发送端发送每个音频数据包的发送时间间隔是相同的,也就是说,发送端均匀发送各音频数据包,然而,可能会由于各种网络问题,例如,拥塞,丢包,网络错误等,导致接收端收到每个音频数据包之间的时间间隔不一样,可能会突然变大,或突然变小,从而使得传输时延发生变化,抖动值即为传输时延的变化程度的量值。
缓冲区:也即抖动缓冲区,是实时音视频应用的一个重要模块,缓冲区用于对接收到的音频数据包的丢失、乱序、延迟到达等情况进行处理,平稳地向接收端发送音频数据包。
缓冲区的核心思想是通过增大发送端到接收端的延迟,提高音视频通话的流畅性,当传输网络出现不稳定、抖动时,例如,短时间接收到异常多的音频数据包,又例如,接收到的音频数据包为乱序状态,缓冲区通过加大缓冲区长度,使得缓冲区能够有足够大的缓存空间接收更多的音频数据包,避免传输进来的音频数据包因缓冲区长度不足而溢出被迫丢弃的问题,然后,对缓冲区的音频数据包进行重新排序等处理,使得接收到的音频数据包可以平稳地输出到解码端,从而解码后输出的音频信号能够流畅播放,当接收到的音频数据包的数量恢复正常时,缓冲区将恢复常规的缓冲区长度,避免引入额外的端到端时延。
音频数据包:音频数据包为对音频信号的一个音频帧进行编码后获得的。
语音检测结果:语音检测结果表征相应的音频数据包是否包含语音数据,也即,相应的音频数据包的音频信息量。当语音检测结果为包含语音数据时,则确定通话过程中包含有效信息,且音频数据包对应的音频帧为语音帧,当语音检测结果为未包含语音数据时,则确定通话过程中未包含有效信息,且音频数据包对应的音频帧为非语音帧,非语音帧起到一定的语音帧间的过渡衔接作用,因此,语音帧的音频信息量高于非语音帧。
语速检测结果:语速检测结果为对音频信号在单位时间内包含的语音内容进行检测获得的结果,可以分为低语速、中语速和高语速,语速越高,表征单位时间内含有的语音内容更多,则信息密度越高。
缓冲区长度:表征缓冲区能够存储的音频数据包的数量,缓冲区长度越长,则能够存储的音频数据包的数量越多,缓冲区长度越短,则能够存储的音频数据包的数量越少。
基音周期值:当人在发声的过程中,根据声带震动的方式的不同,将声音信号分为清音和浊音。其中,清音不需要声带周期性震动,而浊音需要声带周期性震动,因此,对于浊音来说,具有明显的周期性,声带震动的周期即为基音周期值。
基音周期状态:基音周期状态表征当前的音频数据包的基音周期值相对于上一个音频数据包的基音周期值的变化状态,基音周期状态可以分为“升”、“平”和“降”三种状态。
文中的术语“第一”、“第二”仅用于描述目的,而不能理解为明示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
下面对本申请实施例的设计思想进行简要介绍:
目前,随着网络技术的发展,通常发送端发送各音频数据包的时间间隔是相同的,但是,在将音频信号的各音频数据包传输至接收端的过程中,可能会因为各种网络问题,如拥塞、网络错误等,导致接收端接收到的各音频数据包的时间间隔不一样,导致出现丢包、延迟到达的问题,从而降低了解码后获得的音频信号的播放质量。
为了解决上述问题,可以在接收端接收到各音频数据包之后,将各音频数据包存储至缓冲区中进行缓存,对缓冲区中的各音频数据包进行重新排序等处理,并按照相同的时间间隔发送至解码端中进行解码,使得解码后的音频信号能够流畅播放。
在实际应用过程中,缓冲区通常分为两种,一种为静态缓冲区,另一种为动态缓冲区:
静态缓冲区:静态缓冲区采用固定的缓冲区长度,可以对抗缓冲区长度以下的抖动。例如,由于在一些固话应用中线路稳定,因此,会使用固定的缓冲区长度,静态缓冲区长度存在固定延迟,然而,当缓冲区长度设置过长时,会增加非必要的信号延迟;当缓冲区长度设置过短时,会发生缓冲区过载,导致数据包丢失,引发通话声音卡顿的问题。
动态缓冲区:通过检测到的音频数据包的抖动值,对缓冲区长度进行动态调整,如,当前检测到抖动值发生变化,当抖动值增大时,则增加缓冲区长度,当抖动值减小时,则减少缓冲区长度。
然而,相关技术中的静态调整缓冲区长度的方式不适用于非稳定网络传输场景,如基于网际协议的语音传输(Voice over Internet Protocol,VoIP)、互联网直播、广播等,当网络较大抖动下容易导致声音卡顿、音质损伤问题;而动态调整缓冲区长度的方式,若检测到抖动值减小后,立刻降低缓冲区长度,可能会因为缓冲区无法存储接收到的音频数据包,发生缓冲区过载,导致数据包丢失,若在检测到传输时延变化值增大后,立刻增加缓冲区长度,可能会因为缓冲区的存储空间过大,导致音频播放时的信号延迟较大,从而降低播放音频信号的流畅度。
因此,相关技术中的这种调整缓冲区长度的方式精度不高。
有鉴于此,本申请实施例提出了一种调整缓冲区长度的方法、装置、电子设备和存储介质,在确定出各音频数据包各自对应的抖动值后,基于各抖动值,获取到的各音频帧各自对应的语音检测结果和音频信号的语速检测结果,结合相应的缓冲区长度调整策略,对缓冲区当前的缓冲区长度进行相应调整。这样,基于各抖动值、各音频帧各自对应的语音检测结果和音频信号的语速检测结果,以及相应的缓冲区长度调整策略,动态调整当前的缓冲区长度,能够在不存在语音数据的情况下,尽可能减少缓冲区长度,从而降低端到端的延迟问题,而在音频信号语速较快的情况下,留有更大的缓冲区冗余空间,以避免网络抖动中,音频数据包瞬态冲击下导致缓冲区中的音频数据包溢出,丢失音频信号,从而提高了音频信号播放的流畅度。
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图1所示,其为本申请实施例中的应用场景示意图。该应用场景图中包括发送端110和接收端120,发送端110与接收端120之间可以通过通信网络进行通信。
在一种可选的实施方式中,通信网络可以是有线网络或无线网络。
在本申请实施例中,发送端110和接收端120为用户使用的电子设备,该电子设备包括但不限于个人计算机、手机、平板电脑、笔记本、电子书阅读器、智能语音交互设备、智能家电、车载终端等设备。
需要说明的是,本申请实施例中的调整缓冲区长度的方法可以由发送端或者接收端单独执行,也可以由发送端和接收端共同执行。在发送端和接收端共同执行时,比如,可由发送端将音频数据包发送给接收端,从而接收端进行后续处理。在下文中,主要是以接收端单独执行为例进行举例说明的,在此不做具体限定。
在具体实施中,接收端可以接收音频信号的各音频数据包,然后采用本申请实施例的调整缓冲区长度的方法对音频数据包进行处理,以实现对缓冲区当前的缓冲区长度进行调整。
下面结合上述描述的应用场景,参考附图来描述本申请示例性实施方式提供的调整缓冲区长度的方法,需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。并且,本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、信号传输、语音通话等。
参阅图2所示,为本申请实施例中一种调整缓冲区长度的方法的实施流程图,这里是以接收端为执行主体为例进行介绍的,该方法的具体实施流程如下:
S20:接收发送端发送的各音频数据包。
其中,每个音频数据包为对音频信号的至少一个音频帧进行编码获得的。
本申请实施例中,发送端对音频信号进行分帧,获得音频信号的各音频帧,分别对音频信号的至少一个音频帧进行编码,获得相应的音频数据包,并将编码后获得的各音频数据包按照预设的时间间隔,分别通过通信网络发送给接收端,从而接收端接收发送端发送的各音频数据包。
需要说明的是,发送端在发送各音频数据包时的时间间隔是固定的,例如,发送端在发送第一个音频数据包和第二个音频数据包之间的时间间隔,与第二个音频数据包和第三个音频数据包之间的时间间隔是相同的。
另外,需要说明的是,本申请实施例中,每个音频数据包可以是对音频信号的一个音频帧进行编码获得的,也可以是对音频信号的多个音频帧进行编码获得的,本申请实施例中对此并不进行限制。
S21:分别获得接收各音频数据包时检测到的抖动值。
其中,抖动值表征接收端接收到各音频数据包的时间间隔的变化程度。
本申请实施例中,分别对各音频数据包进行抖动检测,从而获得接收到各音频数据包时检测到的抖动值。
可选的,本申请实施例中,在执行S21时,需要分别获得接收到各音频数据包时检测到的抖动值,具体的,以任意一个音频数据包(以下称为音频数据包i)为例,介绍获得抖动值过程如下,参阅图3所示,为本申请实施例中获得抖动值的流程示意图,下面结合附图3对本申请实施例中分别获得各抖动值的过程进行详细说明:
S211:基于音频数据包i的接收时间和发送时间,以及音频数据包i的前一音频数据包i-1的接收时间和发送时间,确定音频数据包i和前一音频数据包i-1之间的时间差值。
本申请实施例中,由于每个音频数据包各自对应有发送时间和接收时间,因此,确定音频数据包i的接收时间和发送时间,以及,确定音频数据包i的前一音频数据包i-1的接收时间和发送时间,并基于音频数据包i的接收时间和发送时间,确定音频数据包i的传输时间,基于音频数据包i-1的接收时间和发送时间,确定音频数据包i-1的传输时间,然后,计算音频数据包i的传输时间与音频数据包i-1的传输时间之间的差值,获得音频数据包i与音频数据包i-1之间的时间差值。
例如,时间差值可以表示为:
d(i,i-1)=(r(i)-r(i-1))-(s(i)-s(i-1))=(r(i)-s(i))-(r(i-1)-s(i-1))
其中,d(i,i-1)表征音频数据包i与音频数据包i-1之间的时间差值,r(i)表征音频数据包i到达接收端的时间,s(i)表征发送端发送音频数据包i的时间,r(i-1)表征音频数据i-1到达接收端的时间,s(i-1)表征发送端发送音频数据包i-1的时间。
需要说明的是,接收时间和发送时间的单位均为采样率。
S212:基于时间差值、平滑系数,以及音频数据包i-1对应的抖动值,确定接收音频数据包i时检测到的抖动值。
本申请实施例中,在确定出时间差值之后,采用音频数据包i-1对应的抖动值、音频数据包i与音频数据包i-1之间的时间差值,以及平滑系数,确定出接收音频数据包i时的抖动值。
例如,抖动值可以表示为:
其中,jitter_value(i)表征音频数据包i的抖动值,jitter_value(i-1)表征音频数据包i-1的抖动值,|d(i-1,i)|表征音频数据包i与音频数据包i-1之间的时间差值的绝对值,x为平滑系数。
需要说明的是,音频数据包是基于请求评论(Request For Comments,RFC)3550通信协议发送的,发送的音频数据包为实时传输协议(Real-time Transport Protocol,RTP)包,因此,音频数据包i-1指的是前一个接收到的音频数据包,并非是按照RTP序列号计数的。
这样,本申请实施例中,基于平滑系数、前一音频数据包对应的抖动值,以及时间差值计算接收到当前音频数据包时的抖动值,能够消除噪声影响,使抖动收敛在较合理范围内,避免突发数据的影响。
S22:获取各音频帧各自对应的语音检测结果和音频信号的语速检测结果。
其中,语音检测结果表征相应的音频帧是否包含语音数据。
本申请实施例中,在确定出各音频数据包各自对应的抖动值之后,获取各音频帧各自对应的语音检测结果,以及,获取音频信号的语速检测结果。
首先,对本申请实施例中获取各音频帧各自对应的语速检测结果的方式进行详细说明。
本申请实施例中,为获取各音频帧各自对应的语音检测结果提供了两种可能的实施方式,具体包括:
第一种方式:从音频数据包中获取语音检测结果。
本申请实施例中,参阅图4所示,为本申请实施例中一种获取语音检测结果的流程示意图,发送端在获取到音频信号之后,按照预设的固定时间间隔,对音频信号进行分帧,获得各音频帧,并分别对每个音频帧进行语音活跃检测,确定各音频帧各自对应的语音检测结果,然后,分别对各音频帧进行音频编码,从而获得各音频帧各自对应的音频数据包,然后,将各音频帧各自对应的语音检测结果,与对应的音频数据包进行打包,并通过通信网络,按照固定的时间间隔将各音频数据包发送至接收端,接收端在接收到各音频数据包后,分别对各音频数据包进行解析,从各音频数据包中获取到相应的语音检测结果。
第二种方式:接收端识别音频帧的语音检测结果。
本申请实施例中,参阅图5所示,为本申请实施例中另一种获取语音检测结果的流程示意图,发送端在获取到音频信号之后,按照预设的固定时间间隔,对音频信号进行分帧,获得各音频帧,并分别对各音频帧进行音频编码,从而获得各音频帧各自对应的音频数据包,然后,通过通信网络,按照固定的时间间隔将各音频数据包发送至接收端,接收端在接收到各音频数据包后,分别对各音频数据包进行解码,获得各音频数据包各自对应的音频帧,最后,分别对各音频帧进行语音活跃检测,确定各音频帧各自对应的语音检测结果。
需要说明的是,本申请实施例中的语音活跃检测方式例如可以为语音活跃检测(voice activity detection,VAD),每个音频帧经过VAD识别出是否包含语音数据,即,VAD的结果为1,则确定音频帧包含语音数据,VAD结果为0,则确定音频帧未包含语音数据,音频帧未包含语音数据表征音频帧为静音或噪音信号,本申请实施例中对获得音频帧的语音检测结果的方式并不进行限制。
另外,需要说明的是,预设的时间间隔例如可以为20ms,也即,每20ms划分为1帧。
其次,对本申请实施例中获取音频信号的语速检测结果提供了两种可能的实施方式,具体包括:
第一种方式:从音频数据包中获取语速检测结果。
本申请实施例中,参阅图6所示,为本申请实施例中一种获取语速检测结果的流程示意图,发送端在获取到音频信号之后,对音频信号进行语速检测,获得音频信号的语速检测结果,同时,按照预设的固定时间间隔,对音频信号进行分帧,获得各音频帧,并分别对各音频帧进行音频编码,从而获得各音频帧各自对应的音频数据包,然后,将语速检测结果打包至任意一个音频数据包中,并通过通信网络,按照固定的时间间隔,将各音频数据包发送至接收端,接收端在接收到各音频数据包后,分别对各音频数据包进行解析,从而获得各音频数据包各自对应的音频帧,以及音频信号的语速检测结果。
需要说明的是,本申请实施例中,还可以将语速检测结果分别打包至各音频数据包中,本申请实施例中对此并不进行限制。
第二种方式:接收端对音频信号进行语速检测。
本申请实施例中,参阅图7所示,为本申请实施例中另一种获取语速检测结果的流程示意图,发送端在获取到音频信号之后,按照预设的固定时间间隔,对音频信号进行分帧,获得各音频帧,并分别对各音频帧进行音频编码,从而获得各音频帧各自对应的音频数据包,然后,通过通信网络,按照固定的时间间隔将各音频数据包发送至接收端,接收端在接收到各音频数据包后,分别对各音频数据包进行解码,获得各音频数据包各自对应的音频帧,最后,基于各音频帧确定音频信号的语速检测结果。
可选的,本申请实施例中,为接收端对音频信号进行语速检测提供了一种可能的实施方式,参阅图8所示,为本申请实施例中对音频信号进行语速检测的流程示意图,具体包括:
S221:从各音频帧中,确定出语音检测结果为包含语音数据的各目标音频帧。
本申请实施例中,由于每个音频帧对应的语音检测结果为包含语音数据或未包含语音数据,因此,基于各音频帧各自对应的语音检测结果,从各音频帧中,筛选出语音检测结果为包含语音数据的音频帧,作为目标音频帧。
例如,假设共有10个音频帧,该10个音频帧的语音检测结果分别为0011101001,其中,0表征音频帧的语音检测结果为未包含语音数据,1表征音频帧的语音检测结果为包含语音数据,然后,从上述10个音频帧中,筛选出语音检测结果为包含语音数据的音频帧,分别为第3、4、5、7、10个音频帧,并将第3、4、5、7、10个音频帧作为目标音频帧。
S222:获得各目标音频帧各自对应的基音周期状态。
本申请实施例中,分别对各目标音频帧进行识别,获得各目标音频帧各自对应的基音周期状态。
可选的,本申请实施例中,在执行S22-1时,需要获得各目标音频帧各自对应的基音周期状态,具体的,以任意一个目标音频帧(以下称为目标音频帧b)为例,介绍获得基音周期状态过程如下,参阅图9所示,为本申请实施例中获得基音周期状态方法的流程示意图,下面结合附图9,对本申请实施例中分别获得基音周期状态的过程进行详细说明:
S2221:对目标音频帧b进行基音周期检测,获得目标音频帧b对应的基音周期值。
本申请实施例中,采用预设的基音周期检测方式,对目标音频帧b进行基音周期检测,从而获得目标音频帧b对应的基音周期值。
其中,预设的基音周期检测方式例如可以为基于自相关的基音周期检测,又例如,可以为基于线性预测编码的基音周期检测,本申请实施例中对此并不进行限制。
S2222:基于目标音频帧b的基音周期值、目标音频帧b的前一目标音频帧b-1对应的基音周期值,确定基音周期值差值。
本申请实施例中,获取目标音频帧b的前一目标音频帧b-1对应的基音周期值,并将目标音频帧b的音频周期值,减去前一目标音频帧b-1对应的基音周期值,获得目标音频帧b与前一目标音频帧b-1之间的基音周期值差值。
S2223:根据基音周期值差值和差值门限值,确定目标音频帧b对应的基音周期状态。
本申请实施例中,每个目标音频数据包可以通过“升”、“平”、“降”三种基音周期状态进行划分,具体的,预先设定基音差值门限值,在确定出目标音频帧b对应的基音周期值差值之后,判断基音周期值差值是否大于预设的差值门限值,具体可以分为以下三种情况:
第一种情况:基音周期值差值小于预设的差值门限值。
本申请实施例中,若确定基音周期值差值小于预设的差值门限值,也即,目标音频帧b的基音周期值与前一目标音频帧b-1的基音周期值相等或差别较小,则确定音频帧b对应的基音周期状态为“平”。
第二种情况:基音周期值差值不小于预设的差值门限值,且目标音频帧b的基音周期值大于前一目标音频帧b-1的基音周期值。
本申请实施例中,若确定基音周期值差值不小于预设的差值门限值,则判断目标音频帧b的基音周期值是否大于前一目标音频帧b-1的基音周期值,若确定目标音频帧b的基音周期值大于前一目标音频帧b-1的基音周期值,则确定目标音频帧b对应的基音周期状态为“升”,也即,若确定目标音频帧b的基音周期值比前一目标音频帧b-1的基音周期值大,且该基音周期值差值大于预设的差值门限值,则确定目标音频帧b的基音周期状态为“升”。
第三种情况:基音周期值差值不小于预设的差值门限值,且目标音频帧b的基音周期值小于前一目标音频帧b-1的基音周期值。
本申请实施例中,若确定基音周期值差值不小于预设的差值门限值,则判断目标音频帧b的基音周期值是否大于前一目标音频帧b-1的基音周期值,若确定目标音频帧b的基音周期值小于前一目标音频帧b-1的基音周期值,则确定目标音频帧b对应的基音周期状态为“降”,也即,若确定目标音频帧b的基音周期值比前一目标音频帧b-1的基音周期值小,且该基音周期值差值大于预设的差值门限值,则确定目标音频帧b的基音周期状态为“降”。
这样,通过基音周期值差值和预设的差值门限值,确定目标音频帧的基音周期状态,能够提高确定基音周期状态的准确性。
S223:基于各基音周期状态,确定音频信号的状态切换次数。
本申请实施例中,由于每个目标音频帧通过“升”、“平”、“降”三种基音周期状态进行划分,因此,对处于相同基音周期状态的相邻目标音频帧进行统计,获得基音周期状态统计结果,并基于基音周期状态统计结果,确定出音频信号的状态切换次数。
例如,参阅图10所示,为本申请实施例中确定音频信号的状态切换次数的示例图,假设十个相邻的目标音频帧各自对应的基音周期状态分别为0000111122,其中,“0”表征目标音频帧的基音周期状态为“升”,“1”表征目标音频帧的基音周期状态为“平”,“2”表征目标音频帧的基音周期状态为“降”,因此,十个相邻的目标音频帧的统计结果为连续“升”的基音周期状态的累积值为4,也即,连续四个0,连续“平”的基音周期状态的累积值为4,也即,连续四个1,连续“降”的基音周期状态的累积值为2,也即,连续两个2,因此,十个相邻的目标音频帧,一共切换了3次,为“升”、“平”、“降”。
S224:根据状态切换次数、各目标音频帧对应的音频帧数量,以及预设的语速门限值,确定音频信号的语速检测结果。
本申请实施例中,首先,计算状态切换次数与各目标音频帧对应的音频帧数量,获得语速值。
例如,语速值可以表示为:rate_V=Cnt_P/Cnt_V。
其中,Cnt_V表征目标音频帧对应的音频帧数量,也即,语音检测结果为包含语音数据的音频帧的数量,Cnt_P表征各基音周期状态的状态切换次数,rate_V表征语速值,用于近似代表音频信号的语速情况。
然后,基于语速值和预设的语速门限值,确定音频信号的语速检测结果。
具体的,本申请实施例中,基于语速值和预设的语速门限值,确定音频信号的语速检测结果时,具体可以分为以下三种情况:
第一种情况:语速值小于等于第一语速门限值。
本申请实施例中,若确定语速值小于等于第一语速门限值,则确定语速检测结果为低语速。
例如,假设第一语速门限值为0.08,若确定音频信号的语速值rate_V小于等于0.08,则确定音频信号的语速检测结果为低语速。
第二种情况:语速值大于第一语速门限值,且小于等于第二语速门限值。
本申请实施例中,若确定音频信号的语速值大于第一语速门限值,且小于等于第二语速门限值,则确定语速检测结果为中语速。
例如,假设第一语速门限值为0.08,第二语速门限值为0.15,若确定音频信号的语速值rate_V介于0.08至0.15之间,则确定音频信号的语速检测结果为中语速。
需要说明的是,本申请实施例中,第一语速门限值与第二语速门限值为基于经验值确定出的,第一语速门限值小于第二语速门限值,例如,第一语速门限值为0.08,第二语速门限值为0.1,本申请实施例中对此并不进行限制。
第三种情况,语速值大于第二语速门限值。
本申请实施例中,若确定音频信号的语速值大于第二语速门限值,则确定语速检测结果为高语速。
例如,假设第二语速门限值为0.15,若确定音频信号的语速值rate_V高于0.15,则确定音频信号的语速检测结果为高语速。
这样,基于基音周期状态的状态切换次数、音频帧数量和语速门限值确定语速检测结果,能够提高确定语速检测结果的准确度,为后续调整缓冲区长度提供更加准确的语速检测结果。
S23:基于语速检测结果、各语音检测结果和各抖动值,结合预设缓冲区长度调整策略,对缓冲区当前的缓冲区长度进行相应调整。
本申请实施例中,基于语音检测结果,确定出相应的缓冲区长度调整策略,并基于语速检测结果和各抖动值,结合确定出的缓冲区长度调整策略,对缓冲区当前的缓冲区长度进行相应调整。
可选的,本申请实施例中,为对缓冲区当前的缓冲区长度进行相应调整提供了一种可能的实施方式,参阅图11所示,为本申请实施例中对缓冲区长度进行调整的方法的流程示意图,具体包括:
S231:基于各音频数据包各自对应的接收时间,从各音频数据包中,确定出满足接收时间条件的音频数据包。
本申请实施例中,预先设置接收时间条件,由于接收端在接收到每个音频数据包后,会记录接收到的音频数据包对应的接收时间,因此,基于记录的各音频数据包各自对应的接收时间,从各音频数据包中,筛选出满足接收时间条件的音频数据包。
其中,接收时间条件例如可以为接收时间最晚,则从各音频数据包中,确定出接收时间最晚的音频数据包,也即,将接收到的最后一个音频数据包作为满足接收时间条件的音频数据包。
S232:若确定各语音检测结果均为未包含语音数据,则基于非语音控制策略和确定出的音频数据包的目标抖动值,对缓冲区当前的缓冲区长度进行相应调整。
本申请实施例中,若确定各语音检测结果均为未包含语音数据,则确定缓冲区长度调整策略为非语音控制策略,并基于非语音控制策略和确定出的音频数据包的目标抖动值,对缓冲区当前的缓冲区长度进行相应调整。
例如,假设5个音频帧各自对应的语音检测结果为00000,则确定音频信号的各音频帧各自对应的语音检测结果VAD均为未包含语音数据,则确定对应的缓冲区长度调整策略为非语音控制策略。
可选的,本申请实施例中,为基于非语音控制策略调整缓冲区长度提供了一种可能的实施方式,参阅图12所示,为本申请实施例中基于非语音控制策略调整缓冲区长度的方法的流程示意图,具体包括:
S2321:若确定出的音频数据包的目标抖动值小于抖动值门限值,则将预设的第一长度作为缓冲区当前的缓冲区长度。
本申请实施例中,判断音频数据包的目标抖动值是否小于抖动值门限值,若确定音频数据包的目标抖动值小于抖动值门限值,则将预设的第一长度作为缓冲区当前的缓冲区长度。
例如,抖动值门限值为THRD_1,若确定出的音频数据包的目标抖动值jitter_value小于抖动值门限值THRD_1,则获取预设的第一长度MIN_LEN,并将预设的第一长度MIN_LEN作为缓冲区当前的缓冲区长度len,也即,len=MIN_LEN,即最小缓冲区长度。
需要说明的是,本申请实施例中的抖动值门限值与采样率相关。
S2322:若确定目标抖动值不小于抖动值门限值,则从预设长度范围内,选取任意一个目标长度,作为缓冲区长度。
其中,长度范围是基于第一长度和第二长度生成的,第一长度小于第二长度。
本申请实施例中,判断音频数据包的目标抖动值是否小于抖动值门限值,若确定音频数据包的目标抖动值不小于抖动值门限值,则从预设的长度范围内选取任意一个目标长度,作为缓冲区当前的缓冲区长度。
例如,若确定目标抖动值jitter_value大于等于抖动值门限值THRD_1,则确定缓冲区长度为默认长度,即,len=DEFAULT_LEN,默认长度DEFAULT_LEN可以为缓冲区jitterbuffer允许的第二长度MAX_LEN和第一长度MIN_LEN之间,可以取两者的中值,也可以是任意一个长度,本申请实施例中对此并不进行限制。
其中,THRD_1例如可以为500ms、MIN_LEN例如可以为1000ms,MAX_LEN例如可以为2000ms,本申请实施例中对此并不进行限制。
这样,当音频信号中未包含语音数据时,即使在接收音频数据包的过程中发生丢包,或,对缓存的数据包进行压缩,也不会对语音通话质量造成影响,因此,在音频信号未包含语音数据的情况下,尽量减少缓冲区长度,能够减少非必要的通话延迟。
S233:若确定至少一个语音检测结果为包含语音数据,则基于语速检测结果和目标抖动值,结合语音控制策略,对缓冲区长度进行相应调整。
本申请实施例中,若确定各语音检测结果均为未包含语音数据,则确定缓冲区长度调整策略为语音控制策略,并基于语音控制策略、确定出的音频数据包的目标抖动值和语速检测结果,对缓冲区当前的缓冲区长度进行相应调整。
例如,假设5个音频帧各自对应的语音检测结果为00100,则确定对应的缓冲区长度调整策略为语音控制策略。
可选的,本申请实施例中,为基于语音控制策略调整缓冲区长度提供了一种可能的实施方式,参阅图13所示,为本申请实施例中基于语音控制策略调整缓冲区长度的方法的流程示意图,具体包括:
S2331:若确定目标抖动值小于抖动值门限值,则从预设长度范围内,选取任意一个目标长度,作为缓冲区长度。
其中,长度范围是基于第一长度和第二长度生成的,第一长度小于第二长度。
本申请实施例中,判断音频数据包的目标抖动值是否小于抖动值门限值,若确定音频数据包的目标抖动值不小于抖动值门限值,则从预设的长度范围内选取任意一个目标长度,作为缓冲区当前的缓冲区长度。
例如,若确定目标抖动值jitter_value大于等于抖动值门限值THRD_1,则确定缓冲区长度为默认长度,即,len=DEFAULT_LEN,默认长度DEFAULT_LEN可以为缓冲区jitterbuffer允许的第二长度MAX_LEN和第一长度MIN_LEN之间,可以取两者的中值,也可以是任意一个长度,本申请实施例中对此并不进行限制。
其中,第一长度是基于实验过程中的经验值确定出的,第二长度也为实验过程中的经验值确定出的,第一长度为保证缓冲区不会过载的情况下的最小长度,第二长度在保证缓冲区不会产生额外的通话时延的情况下的最大长度。
S2332:若确定目标抖动值不小于抖动值门限值,则基于语速检测结果和目标抖动值,确定缓冲区长度。
本申请实施例中,若确定目标抖动值不小于抖动值门限值,则基于语速检测结果和目标抖动值,确定缓冲区长度。
这样,当音频信号中包含语音数据时,若在接收音频数据包的过程中发生丢包,或,对缓存的数据包进行压缩,会对语音通话质量造成影响,因此,在音频信号包含语音数据的情况下,基于语速检测结果和抖动值确定缓冲区长度,能够提高对于缓冲区长度调整的准确度,从而能够避免因缓冲区过载而导致有效音频数据丢失引发通话声音卡顿的问题,提高了音频信号播放的流畅度。
可选的,本申请实施例中,为确定缓冲区长度提供了一种可能的实施方式,参阅图14所示,为本申请实施例中确定缓冲区长度的方法的流程图,具体包括:
S2332-1:基于语速检测结果,确定音频信号的语速调节参数。
本申请实施例中,基于语速检测结果,以及语速检测结果与语速调节参数之间的关联关系,确定出与语速检测结果关联的语速调节参数。
例如,当语速检测结果为低语速时,语速调节参数a为0.8,当语速检测结果为中语速时,语速调节参数a为1,当语速检测结果为高语速时,语速调节参数a为1.2。因此,语速调节参数的取值根据语速检测结果会相应变化。
S2332-2:基于语速调节参数、目标抖动值,以及预设的抖动值调节函数,确定第三长度。
本申请实施例中,基于语速调节参数、目标抖动值和抖动值调节函数,确定第三长度。
可选的,本申请实施例中,为确定第三长度提供了一种可能的实施方式,参阅图15所示,为本申请实施例中确定第三长度的方法的流程示意图,具体包括:
S2332-2-1:将目标抖动值作为预设的抖动值调节函数的变量,并基于目标抖动值和抖动值调节函数,获得第四长度。
本申请实施例中,以目标抖动值为抖动值调节函数的变量,也即,抖动值调节函数是以目标抖动值为变量的函数,然后,基于目标抖动值和抖动值调节函数,获得第四长度。
例如,第四长度为f(jitter_value),其中,f(jitter_value)是以目标抖动值jitter_value为变量的抖动值调节函数。
需要说明的是,本申请实施例中的抖动值调节参数可以为单调递增函数,本申请实施例中对此并不进行限制。
S2332-2-2:基于语速调节参数和第四长度,获得第三长度。
其中,语速调节参数与第四长度呈正相关。
本申请实施例中,计算以目标抖动值为变量的抖动值调节函数和语速调节参数之间的乘积,获得第三长度,因此,第三长度与第四长度呈正相关。
例如,第三长度为a*f(jitter_value),其中,f(jitter_value)是以目标抖动值jitter_value为变量的抖动值调节函数,a为语速调节参数。
S2332-3:从第三长度和第二长度中,选取出满足长度条件的目标长度,作为缓冲区长度。
本申请实施例中,分别判断第三长度和第二长度是否满足预设的长度条件,从第三长度和第二长度中,选择出满足预设的长度条件的目标长度,并将选取出的目标长度作为缓冲区长度。
可选的,本申请实施例中,为选取缓冲区长度提供了一种可能的实施方式,参阅图16所示,为本申请实施例中选取缓冲区长度的方法的流程图,具体包括:
S2332-3-1:若确定第三长度大于第二长度,则将第二长度作为目标长度。
本申请实施例中,判断第三长度是否大于第二长度,若确定第三长度大于第二长度,则将第二长度作为目标长度。
例如,len=min(MAX_LEN,a*f(jitter_value))。
其中,len为缓冲区长度,MAX_LEN为第二长度,a*f(jitter_value)为第三长度。
当确定第三长度a*f(jitter_value)大于第二长度MAX_LEN时,则将第二长度MAX_LEN作为目标长度,也即缓冲区长度。
S2332-3-2:若确定第三长度不大于第二长度,则将第三长度作为目标长度。
本申请实施例中,判断第三长度是否大于第二长度,若确定第三长度不大于第二长度,则将第三长度作为目标长度。
例如,len=min(MAX_LEN,a*f(jitter_value))。
其中,len为缓冲区长度,MAX_LEN为第二长度,a*f(jitter_value)为第三长度。
当确定第三长度a*f(jitter_value)不大于第二长度MAX_LEN时,则将第三长度a*f(jitter_value)作为目标长度,也即缓冲区长度。
这样,通过以目标抖动值为变量的抖动值调节函数,以及语速调节参数,确定出缓冲区长度,能够提高确定缓冲区长度的准确性,并且,从第三长度和第二长度中选择出较小的目标长度作为缓冲区长度,能够在保证缓冲区不过载的同时,尽量减少缓冲区长度,从而避免端到端的通话延迟。
本申请实施例中,通过各语音检测结果、语速检测结果和各抖动值,对缓冲区当前的缓冲区长度进行相应调整,能够避免缓冲区引入非必要的端到端的通话延迟,同时,通过缓冲区长度调整,能够减少因缓冲区过载导致有效音频数据丢失,引发的通话声音卡顿的问题,提升整体通话质量和主观体验。
基于上述实施例,下面对本申请实施例中另一种确定缓冲区长度的方法的流程示意图,参阅图17所示,为本申请实施例中一种确定缓冲区长度的方法的逻辑示意图,具体包括:
S170:判断各音频帧各自对应的VAD是否均为0,若是,则执行S171,若否,则执行S174。
本申请实施例中,VAD为0表征音频数据包中未包含语音数据,VAD为1表征音频数据包中包含语音数据。
S171:判断jitter_value是否小于THRD_1,若是,则执行S172,若否,则执行S173。
本申请实施例中,确定各音频数据包中均未包含语音数据时,判断目标抖动值jitter_value是否小于预设的抖动值门限值THRD_1,若确定目标抖动值jitter_value小于预设的抖动值门限值THRD_1,则将预设的第一长度作为抖动值门限值,作为调整后的缓冲区长度len,若确定目标抖动值jitter_value不小于预设的抖动值门限值THRD_1,则从预设的长度范围内任意选取一个长度,作为缓冲区长度len。
S172:len=MIN_LEN。
其中,len表征缓冲区长度,MIN_LEN表征第一长度,也即,最小缓冲区长度。
S173:len=DEFAULT_LEN。
其中,len表征缓冲区长度,DEFAULT_LEN介于目标抖动值jitter_value允许的最大长度MAX_LEN和第一长度MIN_LEN之间,可以选取最大长度MAX_LEN和第一长度MIN_LEN的中间值。
S174:判断jitter_value是否小于THRD_1,若是,则执行S175,若否,则执行S176。
本申请实施例中,确定各音频数据包中的其中一个音频数据包中包含语音数据时,判断目标抖动值jitter_value是否小于预设的抖动值门限值THRD_1,若确定目标抖动值jitter_value小于预设的抖动值门限值THRD_1,则从预设的长度范围内任意选取一个长度,作为缓冲区长度len,若确定目标抖动值jitter_value不小于预设的抖动值门限值THRD_1,则基于以目标抖动值jitter_value为变量的抖动值调节函数f(jitter_value)和语速调节参数a,确定第三长度a*f(jitter_value),并从第二长度MAX_LEN和第三长度a*f(jitter_value)中选取出数值较小的目标长度,作为缓冲区长度。
S175:len=DEFAULT_LEN。
本申请实施例中,len表征缓冲区长度,DEFAULT_LEN介于目标抖动值jitter_value允许的最大长度MAX_LEN和第一长度MIN_LEN之间,可以选取最大长度MAX_LEN和第一长度MIN_LEN的中间值。
S176:len=min(MAX_LEN,a*f(jitter_value))。
本申请实施例中,len表征缓冲区长度,MAX_LEN表征第二长度,f(jitter_value)表征以目标抖动值jitter_value为变量的抖动值调节函数,a表征语速调节参数。
基于上述实施例,下面采用一个具体的例子,对本申请实施例中调整缓冲区长度的方法进行详细阐述,参阅图18所示,为本申请实施例中调整缓冲区长度的方法的示例图,具体包括:
首先,发送端对音频信号X进行分帧,获得音频信号X的各音频帧x1、x2、x3、x4、x5。
然后,发送端对音频帧x1进行语音检测,获得音频帧x1的语音检测结果为0,对音频帧x2进行语音检测,获得音频帧x2的语音检测结果为0,对音频帧x3进行语音检测,获得音频帧x3的语音检测结果为1,对音频帧x4进行语音检测,获得音频帧x4的语音检测结果为1,对音频帧x5进行语音检测,获得音频帧x5的语音检测结果为0,并对音频信号进行语速检测,获得音频信号X的语速检测结果为中语速。
然后,发送端对音频帧x1进行音频编码,获得音频数据包A1,并将语音检测结果0打包至音频数据包A1中,对音频帧x2进行音频编码,获得音频数据包A2,并将语音检测结果0打包至音频数据包A2中,对音频帧x3进行音频编码,获得音频数据包A3,并将语音检测结果1打包至音频数据包A3中,对音频帧x4进行音频编码,获得音频数据包A4,并将语音检测结果1打包至音频数据包A4中,对音频帧x5进行音频编码,获得音频数据包A5,并将语音检测结果0和语速检测结果中语速打包至音频数据包A5中。
发送端按照预设的时间间隔,分别将音频数据包A1、音频数据包A2、音频数据包A3、音频数据包A4和音频数据包A5发送至接收端。
接收端在接收到音频数据包A1、音频数据包A2、音频数据包A3、音频数据包A4和音频数据包A5后,分别读取各音频数据包中的语音检测结果,获得音频数据包A1中的语音检测结果0、音频数据包A2中的语音检测结果0、音频数据包A3中的语音检测结果1、音频数据包A4中的语音检测结果1、音频数据包A5中的语音检测结果0和语速检测结果中语速,并对音频数据包A5进行抖动检测,获得音频数据包A5的目标抖动值0.65。
最后,接收端基于语音检测结果0、语音检测结果0、语音检测结果1、语音检测结果1、语音检测结果0、语速检测结果中语速、目标抖动值0.65,结合缓冲区长度调整策略,确定缓冲区当前的缓冲区长度为1500ms。
基于上述实施例,本申请实施例中的语速检测流程和语音检测流程可部署在发送端,参阅图19所示,为本申请实施例中检测流程部署在发送端的示意图,具体包括:
首先,发送端对音频信号进行分帧,获得音频信号的各音频帧,并分别对各音频帧进行语音检测,获得各音频帧各自对应的语音检测结果,并进行语速检测,获得音频信号的语速检测结果,然后,对各音频帧进行编码,获得各音频帧各自对应的音频数据包,分别将各语音检测结果和语速检测结果,打包至相应的音频数据包中,并按照预设的时间间隔,分别发送各音频数据包至接收端。
接收端在接收到各音频数据包后,分别从各音频数据包中,解析获得相应的语音检测结果和语速检测结果,并分别对各音频数据包进行抖动检测,获得各音频数据包各自对应的抖动值,以及,将各音频数据包存储至缓冲区中,然后,分别对缓冲区中的各音频数据包进行解码,获得各音频数据包各自对应的音频帧,并播放各音频帧。同时,基于语速检测结果、各语音检测结果和从各抖动值中确定出的目标抖动值,调整缓冲区长度。
基于上述实施例,本申请实施例中的语速检测流程和语音检测流程可部署在接收端,参阅图20所示,为本申请实施例中检测流程部署在接收端的示意图,具体包括:
首先,发送端对音频信号进行分帧,获得音频信号的各音频帧,然后,分别对各音频帧进行编码,获得各音频帧各自对应的音频数据包,并按照预设的时间间隔,分别将各音频数据包发送至接收端。
接收端在接收到各音频数据包后,分别对各音频数据包进行抖动检测,获得各音频数据包各自对应的抖动值,以及,将各音频数据包存储至缓冲区中,然后,分别对缓冲区中的各音频数据包进行解码,获得各音频数据包各自对应的音频帧,并播放各音频帧。同时,分别对解析获得的各音频帧进行语音检测,获得各音频帧各自对饮的语音检测结果,并进行语速检测,获得音频信号的语速检测结果,基于语速检测结果、各语音检测结果和从各抖动值中确定出的目标抖动值,调整缓冲区长度。
与本申请上述方法实施例基于同一发明构思,本申请实施例中还提供了一种调整缓冲区长度的装置,该装置解决问题的原理与上述实施例的方法相似,因此该装置的实施可以参见上述方法的实施,重复之处不再赘述。
参考图21所示,本申请实施例中一种调整缓冲区长度的装置的结构示意图,包括接收模块211、抖动检测模块212、处理模块213和调整模块214。
接收模块211,用于接收发送端发送的各音频数据包,其中,每个音频数据包为对音频信号的至少一个音频帧进行编码获得的;
抖动检测模块212,用于分别获得接收各音频数据包时检测到的抖动值;
处理模块213,用于获取各音频帧各自对应的语音检测结果和音频信号的语速检测结果;其中,语音检测结果表征相应的音频帧是否包含语音数据;语速检测结果为对音频信号在单位时间内包含的语音内容进行检测获得的结果;
调整模块214,用于基于语速检测结果、各语音检测结果和各抖动值,结合预设缓冲区长度调整策略,对缓冲区当前的缓冲区长度进行相应调整。
在一种可能的实施例中,调整模块214还用于:
基于各音频数据包各自对应的接收时间,从各音频数据包中,确定出满足接收时间条件的音频数据包;
若确定各语音检测结果均为未包含语音数据,则基于非语音控制策略和确定出的音频数据包的目标抖动值,对缓冲区当前的缓冲区长度进行相应调整;
若确定至少一个语音检测结果为包含语音数据,则基于语速检测结果和目标抖动值,结合语音控制策略,对缓冲区长度进行相应调整。
在一种可能的实施例中,基于非语音控制策略和确定出的音频数据包的目标抖动值,对缓冲区当前的缓冲区长度进行相应调整时,调整模块214还用于:
若确定出的音频数据包的目标抖动值小于抖动值门限值,则将预设的第一长度作为缓冲区当前的缓冲区长度;
若确定目标抖动值不小于抖动值门限值,则从预设长度范围内,选取任意一个目标长度,作为缓冲区长度,其中,长度范围是基于第一长度和第二长度生成的,第一长度小于第二长度。
在一种可能的实施例中,基于语速检测结果和目标抖动值,结合语音控制策略,对缓冲区长度进行相应调整时,调整模块214还用于:
若确定目标抖动值小于抖动值门限值,则从预设长度范围内,选取任意一个目标长度,作为缓冲区长度,其中,长度范围是基于第一长度和第二长度生成的,第一长度小于第二长度;
若确定目标抖动值不小于抖动值门限值,则基于语速检测结果和目标抖动值,确定缓冲区长度。
在一种可能的实施例中,基于语速检测结果和目标抖动值,确定缓冲区长度时,调整模块214还用于:
基于语速检测结果,确定音频信号的语速调节参数;
基于语速调节参数、目标抖动值,以及预设的抖动值调节函数,确定第三长度;
从第三长度和第二长度中,选取出满足长度条件的目标长度,作为缓冲区长度。
在一种可能的实施例中,基于语速调节参数、目标抖动值,以及预设的抖动值调节函数,确定第三长度,处理模块213还用于:
将目标抖动值作为预设的抖动值调节函数的变量,并基于目标抖动值和抖动值调节函数,获得第四长度;
基于语速调节参数和第四长度,获得第三长度,其中,语速调节参数与第四长度呈正相关。
在一种可能的实施例中,从第三长度和第二长度中,选取出满足长度条件的目标长度,处理模块213还用于:
若确定第三长度大于第二长度,则将第二长度作为目标长度;
若确定第三长度不大于第二长度,则将第三长度作为目标长度。
在一种可能的实施例中,获取音频信号的语速检测结果时,处理模块213还用于:
从各音频帧中,确定出语音检测结果为包含语音数据的各目标音频帧;
获得各目标音频帧各自对应的基音周期状态;
基于各基音周期状态,确定音频信号的状态切换次数;
根据状态切换次数、各目标音频帧对应的音频帧数量,以及预设的语速门限值,确定音频信号的语速检测结果。
在一种可能的实施例中,获得各目标音频帧各自对应的基音周期状态时,处理模块213还用于:
针对各目标音频帧,分别执行以下操作:
对一个目标音频帧进行基音周期检测,获得一个目标音频帧对应的基音周期值;
基于一个目标音频帧的基音周期值,一个目标音频帧的前一目标音频帧对应的基音周期值,确定基音周期值差值;
根据基音周期值差值和差值门限值,确定一个目标音频帧对应的基音周期状态。
在一种可能的实施例中,分别确定各音频数据包各自对应的抖动值时,抖动检测模块212还用于:
针对各音频数据包,分别执行以下操作:
基于一个音频数据包的接收时间和发送时间,以及一个音频数据包的前一音频数据包的接收时间和发送时间,确定一个音频数据包和前一音频数据包之间的时间差值;
基于时间差值、平滑系数,以及前一音频数据包对应的抖动值,获得一个音频数据包对应的抖动值。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
在介绍了本申请示例性实施方式的调整缓冲区长度的方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的调整缓冲区长度的装置。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本申请的调整缓冲区长度的装置可以至少包括处理器和存储器。其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行本说明书中描述的根据本申请各种示例性实施方式的调整缓冲区长度的方法中的步骤。例如,所述处理器可以执行如图2中所示的步骤。
在介绍了本申请示例性实施方式的调整缓冲区长度的方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的电子设备。
与本申请上述方法实施例基于同一发明构思,本申请实施例中还提供了一种电子设备,该电子设备解决问题的原理与上述实施例的方法相似,因此该电子设备的实施可以参见上述方法的实施,重复之处不再赘述。
参阅图22所示,电子设备220可以至少包括处理器221、以及存储器222。其中,存储器222存储有程序代码,当程序代码被处理器221执行时,使得处理器221执行上述任意一种调整缓冲区长度的方法中的步骤。
在一些可能的实施方式中,根据本申请的电子设备可以至少包括至少一个处理器、以及至少一个存储器。其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行本说明书上述描述的根据本申请各种示例性实施方式的调整缓冲区长度的方法中的步骤。例如,处理器可以执行如图2中所示的步骤。
在示例性实施例中,本申请还提供了一种包括程序代码的存储介质,例如包括程序代码的存储器222,上述程序代码可由电子设备220的处理器221执行以完成上述调整缓冲区长度的方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
下面参照图23来描述根据本申请的这种实施方式的电子设备230。图23的电子设备230仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图23,电子设备230以通用电子设备的形式表现。电子设备230的组件可以包括但不限于:上述至少一个处理单元231、上述至少一个存储单元232、连接不同系统组件(包括存储单元232和处理单元231)的总线233。
总线233表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元232可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)2321和/或高速缓存存储单元2322,还可以进一步包括只读存储器(ROM)2323。
存储单元232还可以包括具有一组(至少一个)程序模块2324的程序/实用工具2325,这样的程序模块2324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
电子设备230也可以与一个或多个外部设备234(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与电子设备230交互的设备通信,和/或与使得该电子设备230能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口235进行。并且,电子设备230还可以通过网络适配器236与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器236通过总线233与用于电子设备230的其它模块通信。应当理解,尽管图中未示出,可以结合电子设备230使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在一些可能的实施方式中,本申请提供的调整缓冲区长度的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述描述的根据本申请各种示例性实施方式的调整缓冲区长度的方法中的步骤,例如,电子设备可以执行如图2中所示的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算装置上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算装置上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算装置上部分在远程计算装置上执行、或者完全在远程计算装置或服务器上执行。在涉及远程计算装置的情形中,远程计算装置可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算装置,或者,可以连接到外部计算装置(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (15)
1.一种调整缓冲区长度的方法,其特征在于,包括:
接收发送端发送的各音频数据包,其中,每个音频数据包为对音频信号的至少一个音频帧进行编码获得的;
分别获得接收所述各音频数据包时检测到的抖动值;
获取各音频帧各自对应的语音检测结果和所述音频信号的语速检测结果;其中,所述语音检测结果表征相应的音频帧是否包含语音数据;所述语速检测结果为对音频信号在单位时间内包含的语音内容进行检测获得的结果;
基于所述语速检测结果、各语音检测结果和各抖动值,结合预设缓冲区长度调整策略,对缓冲区当前的缓冲区长度进行相应调整。
2.如权利要求1所述的方法,其特征在于,所述基于所述语速检测结果、各语音检测结果和各抖动值,结合预设缓冲区长度调整策略,对缓冲区当前的缓冲区长度进行相应调整,包括:
基于所述各音频数据包各自对应的接收时间,从所述各音频数据包中,确定出满足接收时间条件的音频数据包;
若确定各语音检测结果均为未包含语音数据,则基于非语音控制策略和确定出的音频数据包的目标抖动值,对缓冲区当前的缓冲区长度进行相应调整;
若确定至少一个语音检测结果为包含语音数据,则基于所述语速检测结果和所述目标抖动值,结合语音控制策略,对所述缓冲区长度进行相应调整。
3.如权利要求2所述的方法,其特征在于,所述基于非语音控制策略和确定出的音频数据包的目标抖动值,对缓冲区当前的缓冲区长度进行相应调整,包括:
若确定出的音频数据包的目标抖动值小于抖动值门限值,则将预设的第一长度作为缓冲区当前的缓冲区长度;
若确定所述目标抖动值不小于所述抖动值门限值,则从预设长度范围内,选取任意一个目标长度,作为所述缓冲区长度,其中,所述长度范围是基于所述第一长度和第二长度生成的,所述第一长度小于所述第二长度。
4.如权利要求2所述的方法,其特征在于,所述基于所述语速检测结果和所述目标抖动值,结合语音控制策略,对所述缓冲区长度进行相应调整,包括:
若确定所述目标抖动值小于抖动值门限值,则从预设长度范围内,选取任意一个目标长度,作为所述缓冲区长度,其中,所述长度范围是基于所述第一长度和第二长度生成的,所述第一长度小于所述第二长度;
若确定所述目标抖动值不小于所述抖动值门限值,则基于所述语速检测结果和所述目标抖动值,确定所述缓冲区长度。
5.如权利要求4所述的方法,其特征在于,所述基于所述语速检测结果和所述目标抖动值,确定所述缓冲区长度,包括:
基于所述语速检测结果,确定所述音频信号的语速调节参数;
基于所述语速调节参数、所述目标抖动值,以及预设的抖动值调节函数,确定第三长度;
从所述第三长度和所述第二长度中,选取出满足长度条件的目标长度,作为所述缓冲区长度。
6.如权利要求5所述的方法,其特征在于,所述基于所述语速调节参数、所述目标抖动值,以及预设的抖动值调节函数,确定第三长度,具体包括:
将所述目标抖动值作为预设的抖动值调节函数的变量,并基于所述目标抖动值和所述抖动值调节函数,获得第四长度;
基于所述语速调节参数和所述第四长度,获得第三长度,其中,所述语速调节参数与所述第四长度呈正相关。
7.如权利要求6所述的方法,其特征在于,所述从所述第三长度和所述第二长度中,选取出满足长度条件的目标长度,具体包括:
若确定所述第三长度大于所述第二长度,则将所述第二长度作为目标长度;
若确定所述第三长度不大于所述第二长度,则将所述第三长度作为目标长度。
8.如权利要求1-7任一项所述的方法,其特征在于,所述获取所述音频信号的语速检测结果,包括:
从各音频帧中,确定出语音检测结果为包含语音数据的各目标音频帧;
获得所述各目标音频帧各自对应的基音周期状态;
基于各基音周期状态,确定所述音频信号的状态切换次数;
根据所述状态切换次数、所述各目标音频帧对应的音频帧数量,以及预设的语速门限值,确定所述音频信号的语速检测结果。
9.如权利要求8所述的方法,其特征在于,所述获得所述各目标音频帧各自对应的基音周期状态,包括:
针对所述各目标音频帧,分别执行以下操作:
对一个目标音频帧进行基音周期检测,获得所述一个目标音频帧对应的基音周期值;
基于所述一个目标音频帧的基音周期值,所述一个目标音频帧的前一目标音频帧对应的基音周期值,确定基音周期值差值;
根据所述基音周期值差值和差值门限值,确定所述一个目标音频帧对应的基音周期状态。
10.如权利要求1-7任一项所述的方法,其特征在于,所述分别获得接收所述各音频数据包时检测到的抖动值,包括:
针对所述各音频数据包,分别执行以下操作:
基于一个音频数据包的接收时间和发送时间,以及所述一个音频数据包的前一音频数据包的接收时间和发送时间,确定所述一个音频数据包和所述前一音频数据包之间的时间差值;
基于所述时间差值、平滑系数,以及所述前一音频数据包对应的抖动值,确定接收所述一个音频数据包时检测到的抖动值。
11.一种调整缓冲区长度的装置,其特征在于,包括:
接收模块,用于接收发送端发送的各音频数据包,其中,每个音频数据包为对音频信号的至少一个音频帧进行编码获得的;
抖动检测模块,用于分别获得接收所述各音频数据包时检测到的抖动值;
处理模块,用于获取各音频帧各自对应的语音检测结果和所述音频信号的语速检测结果;其中,所述语音检测结果表征相应的音频帧是否包含语音数据;所述语速检测结果为对音频信号在单位时间内包含的语音内容进行检测获得的结果;
调整模块,用于基于所述语速检测结果、各语音检测结果和各抖动值,结合预设缓冲区长度调整策略,对缓冲区当前的缓冲区长度进行相应调整。
12.如权利要求11所述的装置,其特征在于,所述调整模块还用于:
基于所述各音频数据包各自对应的接收时间,从所述各音频数据包中,确定出满足接收时间条件的音频数据包;
若确定各语音检测结果均为未包含语音数据,则基于非语音控制策略和确定出的音频数据包的目标抖动值,对缓冲区当前的缓冲区长度进行相应调整;
若确定至少一个语音检测结果为包含语音数据,则基于所述语速检测结果和所述目标抖动值,结合语音控制策略,对所述缓冲区长度进行相应调整。
13.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行权利要求1~10中任一所述方法的步骤。
14.一种计算机可读存储介质,其特征在于,其包括程序代码,当所述程序代码在电子设备上运行时,所述程序代码用于使所述电子设备执行权利要求1~10中任一所述方法的步骤。
15.一种计算机程序产品,其特征在于,其包括计算机指令,所述计算机指令存储在计算机可读存储介质中;当电子设备的处理器从所述计算机可读存储介质读取所述计算机指令时,所述处理器执行该计算机指令,使得所述电子设备执行权利要求1~10中任一方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111312574.9A CN116095395A (zh) | 2021-11-08 | 2021-11-08 | 一种调整缓冲区长度的方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111312574.9A CN116095395A (zh) | 2021-11-08 | 2021-11-08 | 一种调整缓冲区长度的方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116095395A true CN116095395A (zh) | 2023-05-09 |
Family
ID=86201213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111312574.9A Pending CN116095395A (zh) | 2021-11-08 | 2021-11-08 | 一种调整缓冲区长度的方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116095395A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117729588A (zh) * | 2023-06-28 | 2024-03-19 | 荣耀终端有限公司 | 一种缓存队列调整方法及电子设备 |
-
2021
- 2021-11-08 CN CN202111312574.9A patent/CN116095395A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117729588A (zh) * | 2023-06-28 | 2024-03-19 | 荣耀终端有限公司 | 一种缓存队列调整方法及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100938032B1 (ko) | V o I P 용 적응성 디-지터 버퍼 | |
US7246057B1 (en) | System for handling variations in the reception of a speech signal consisting of packets | |
US20070263672A1 (en) | Adaptive jitter management control in decoder | |
US8194706B2 (en) | Method of transmitting data in a communication system | |
US10135707B2 (en) | Playout delay adjustment method and electronic apparatus thereof | |
KR20120115961A (ko) | 멀티 레이트 스피치와 오디오 코덱을 위한 프레임 손실 은닉 방법 및 장치 | |
US7573907B2 (en) | Discontinuous transmission of speech signals | |
CN107534618B (zh) | 传输装置、传输方法和程序 | |
KR101002405B1 (ko) | 오디오 신호의 타임-스케일링 제어 | |
US20070201656A1 (en) | Time-scaling an audio signal | |
CN116095395A (zh) | 一种调整缓冲区长度的方法、装置、电子设备和存储介质 | |
KR101516113B1 (ko) | 음성 복호 장치 | |
US20210105513A1 (en) | Communication apparatus, media distribution system, media distribution method, and non-transitory computer readable medium | |
JP2014068087A (ja) | バッファ制御装置、バッファ制御装置による制御方法、メディア通信装置、並びにコンピュータ・プログラム | |
CN116259322A (zh) | 音频数据压缩方法及相关产品 | |
US20070186146A1 (en) | Time-scaling an audio signal | |
WO2004053837A1 (en) | A user terminal and method for distributed speech recognition | |
KR20140084589A (ko) | 음성 트래픽의 중요도를 고려한 적응적 버퍼 관리 방법 및 이의 저장 매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |