CN105554019B - 一种音频去抖动***和方法 - Google Patents
一种音频去抖动***和方法 Download PDFInfo
- Publication number
- CN105554019B CN105554019B CN201610012572.0A CN201610012572A CN105554019B CN 105554019 B CN105554019 B CN 105554019B CN 201610012572 A CN201610012572 A CN 201610012572A CN 105554019 B CN105554019 B CN 105554019B
- Authority
- CN
- China
- Prior art keywords
- jitter
- time
- buffer
- maximum
- 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.)
- Active
Links
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/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/764—Media network packet handling at the destination
-
- 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)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Telephone Function (AREA)
Abstract
本发明实施例提供音频去抖动***和方法,涉及音频数据处理领域。能够在音频数据的传输过程中,持续捕捉音频数据的抖动时间的相关参数,自动学习不同的网络抖动规律和环境,根据捕捉到的多方面的相关参数选择更为优化的方案对抖动缓冲区的大小进行调整,取得了更好的音频去抖动效果。
Description
技术领域
本发明涉及音频数据处理领域,具体而言,涉及一种音频去抖动***和方法。
背景技术
在VoIP通信中,极易受到网络延迟/抖动因素的影响。网络延迟会导致语音延迟;为解决抖动,一般增加抖动缓冲区,实现对乱序包的重排序,并实现抖动平滑。通常采用的抖动缓冲技术,即在接收方设定一个缓冲区,当话音包到达时首先进入缓冲池暂存,随后***再以稳定平滑的速率将话音包从缓冲池中取出,经解压后播放给受话者。这种缓冲技术可以在一定限度内有效消除话音抖动并提高音质。常见的去抖动缓冲方法是动态的改变抖动缓冲区大小,现在使用的去抖动缓冲方法,缓冲区调整方法较简单、抖动时间粒度大,导致声音失真,去抖动效果不理想。因此,如何对动态调整抖动缓冲区的方法进行优化是目前面临的一大课题。
发明内容
有鉴于此,本发明实施例的目的在于提供一种音频去抖动***和方法。
本发明实施例提供的音频去抖动***,应用于音频处理装置,所述音频去抖动***包括:
音频数据接收模块,用于接收音频数据;
平均抖动时间获取模块,用于按照预设的时间周期获取所述音频数据在每一个所述时间周期内的平均抖动时间;
平均抖动时间比较模块,用于将当前时间周期内的平均抖动时间与前一个时间周期内的平均抖动时间进行比较;
抖动缓冲区调整模块,用于在当前时间周期内的平均抖动时间大于前一个时间周期内的平均抖动时间时,按照预设的抖动缓冲区增长速度,对抖动缓冲区的大小进行增加;以及在当前时间周期内的平均抖动时间小于前一个时间周期内的平均抖动时间时,按照预设的抖动缓冲区减小速度,对抖动缓冲区的大小进行减小;
抖动缓冲区调整控制模块,用于用于当所述抖动缓冲区的大小达到预设的最大尺寸时,停止增加抖动缓冲区的大小;以及当抖动缓冲区的大小达到预设的最小尺寸时,停止减小抖动缓冲区的大小;
所述音频数据接收模块还用于将接收的音频数据写入所述抖动缓冲区;
音频数据读取模块,用于按照预设的速度从所述抖动缓冲区中读取音频数据并输出。
本发明实施例提供的音频去抖动方法,应用于音频去抖动***,所述音频去抖动方法包括:
音频数据接收步骤,接收音频数据;
获取平均抖动时间步骤,按照预设的时间周期获取所述音频数据在每一个所述时间周期内的平均抖动时间;
比较平均抖动时间步骤,将当前时间周期内的平均抖动时间与前一个时间周期内的平均抖动时间进行比较;
调整抖动缓冲区模步骤,在当前时间周期内的平均抖动时间大于前一个时间周期内的平均抖动时间时,按照预设的抖动缓冲区增长速度,对抖动缓冲区的大小进行增加;在当前时间周期内的平均抖动时间小于前一个时间周期内的平均抖动时间时,按照预设的抖动缓冲区减小速度,对抖动缓冲区的大小进行减小;
抖动缓冲区调整控制步骤,用于当所述抖动缓冲区的大小达到预设的最大尺寸时,停止增加抖动缓冲区的大小;以及当抖动缓冲区的大小达到预设的最小尺寸时,停止减小抖动缓冲区的大小;
写入音频数据步骤,将接收的音频数据写入所述抖动缓冲区;
读取音频数据步骤,按照预设的速度从所述抖动缓冲区中读取音频数据并输出。
与现有技术相比,本发明的音频去抖动***和方法,能够在音频数据的传输过程中,持续捕捉音频数据的抖动时间的相关参数,自动学习不同的网络抖动规律和环境,根据捕捉到的多方面的相关参数选择更为优化的方案对抖动缓冲区的大小进行调整,取得了更好的音频去抖动效果。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的包括音频去抖动***的音频处理装置的方框示意图。
图2为本发明较佳实施例提供的音频去抖动***的功能模块示意图。
图3本发明较佳实施例提供的一种音频去抖动方法的流程图。
图4本发明较佳实施例提供的另一种音频去抖动方法的流程图。
图5本发明较佳实施例提供的又一种音频去抖动方法的流程图。
主要元件符号说明
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如图1所示,是本发明实施例提供的包括音频去抖动***的音频处理装置100的方框示意图。所述音频处理装置100可以是计算机如个人电脑(personal computer,PC)、平板电脑等,也可以是移动设备如智能手机、个人数字助理(personal digital assistant,PDA)等。在本实施例中,所述音频处理装置100包括音频去抖动***10、存储器20以及处理器30。
所述存储器20以及处理器30之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述音频去抖动***10包括至少一个可以软件或固件(firmware)的形式存储于所述存储器中或固化在所述音频处理装置100的操作***(operating system,OS)中的软件功能模块。所述处理器用于执行存储器中存储的可执行模块,例如所述音频去抖动***10包括的软件功能模块或计算机程序。
其中,存储器20可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器20用于存储程序,所述处理器30在接收到执行指令后,执行所述程序,下述本发明实施例任一实施例揭示的流过程定义的音频处理装置100所执行的方法可以应用于处理器30中,或者由处理器30实现。
处理器30可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。在一些实施例中,处理器30可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
请参阅图2,是本发明较佳实施例提供的应用于图1所示的音频处理装置100的音频去抖动***10的功能模块示意图。下面将对图2所示的音频去抖动***10所包括的功能模块进行详细阐述。所述音频去抖动***10包括:
平均抖动时间获取模块101,用于按照预设的时间周期获取所述音频数据在每一个所述时间周期内的平均抖动时间。
平均抖动时间反映的是音频去抖动***10接收到的音频数据在一个时间周期内的抖动情况,时间周期长度的是预先进行设置的。时间周期越短,平均抖动时间反映的抖动情况就越准确。可以根据实际的需求,选择合适的时间周期长度进行预先设置。
平均抖动时间比较模块102,用于将当前时间周期内的平均抖动时间与前一个时间周期内的平均抖动时间进行比较。
对比相邻时间周期的平均抖动时间,可以判断出音频数据的抖动变化的趋势,作为调整抖动缓冲区的参考。
抖动缓冲区是设置于音频处理装置的缓存空间,抖动缓冲区的大小是时间为单位,表示抖动缓冲区能够保存对应时间长度的音频数据。
如果当前时间周期内的平均抖动时间大于前一个时间周期,则说明当前的网络状况有所恶化,音频数据的向抖动更加剧烈的方向变化。反之,如果前时间周期内的平均抖动时间小于前一个时间周期,则说明当前的网络状况正在改善,音频数据的向抖动更加轻微的方向变化。
抖动缓冲区调整模块103,用于在当前时间周期内的平均抖动时间大于前一个时间周期内的平均抖动时间时,按照预设的抖动缓冲区增长速度,对抖动缓冲区的大小进行增加;以及在当前时间周期内的平均抖动时间小于前一个时间周期内的平均抖动时间时,按照预设的抖动缓冲区减小速度,对抖动缓冲区的大小进行减小。
当前时间周期内的平均抖动时间大于前一个时间周期内的平均抖动时间,即平均抖动时间增加,为了能达到更好的去抖动效果,需要将抖动缓冲区的大小也随之进行增加,使得抖动缓冲区能够覆盖音频数据的抖动部分。对应的,平均抖动时间减小时,将抖动缓冲区的大小也随之进行减小。抖动缓冲区的大小是以时间为单位的,抖动缓冲区越大进入的音频数据就越多。当抖动时间较长时,较大的抖动缓冲区能够取得更好的去抖动效果,但是容易出现因等待数据导致输出的声音卡顿的情况。因此,当抖动时间减小时,适当地减小抖动缓冲区的大小,以取得更好的声音输出效果。
抖动缓冲区增长速度和抖动缓冲区减小速度是预先设定的数值,该数值的选择是根据当前网络状况的相关参数或者音频处理装置100的相关配置决定的,也可以是根据使用者的经验设置,然后再在使用过程中进行调整。
抖动缓冲区调整控制模块104,用于当所述抖动缓冲区的大小达到预设的最大尺寸时,停止增加抖动缓冲区的大小;以及当抖动缓冲区的大小达到预设的最小尺寸时,停止减小抖动缓冲区的大小。
在抖动缓冲区的大小随着平均抖动时间进行对应调整时,为了确保对于一些突发状态的应对和保证较好的声音输出效果,不能无限制的增大或者减小抖动缓冲区的大小。因此,对应的预先设置了抖动缓冲区最大尺寸和抖动缓冲区最小尺寸,以限定抖动缓冲区的大小的变化范围。
音频数据接收模块105,用于接收音频数据以及将接收的音频数据写入所述抖动缓冲区。
音频数据接收模块105持续地接收音频数据,并不断地将音频数据写入抖动缓冲区。在将音频数据写入抖动缓冲区的过程中,抖动缓冲区的大小也根据上述相关模块的操作持续地进行调整。
在本实施例中,抖动缓冲区对接收到的音频数据进行处理时,以当前编码数据的实际最小编码单元为单位(如10毫秒)。例如,对于G711编码的音频数据,当每个数据包大小是40毫秒时,可以使用10毫秒为单位处理,每次接收到一个包分拆为4个包,分别解码。当粒度变小后,抖动缓冲区大小的调整将更精细和均匀,最终输出的声音质量也更舒适。
音频数据读取模块106,用于按照预设的速度从所述抖动缓冲区中读取音频数据并输出。
由于抖动的存在,音频数据写入抖动缓冲区的速率是不稳定的。为了保证从抖动缓冲区输出的音频数据在播放时不会失真或者卡顿,需要按照对应的速度将音频数据从所述抖动缓冲区中读出。
具体的,在当前时间周期内的平均抖动时间大于前一个时间周期内的平均抖动时间时,采用语速调整算法降低将音频数据从所述抖动缓冲区中读出的速度,采用音调调整算法提升音频数据的音调;在当前时间周期内的平均抖动时间小于前一个时间周期内的平均抖动时间时,采用语速调整算法增大将音频数据从所述抖动缓冲区中读出的速度,采用音调调整算法降低音频数据的音调。
当前时间周期内的平均抖动时间大于前一个时间周期内的平均抖动时间,说明平均抖动时间增加,进入抖动缓存取的音频数据量减小,为了保证输出的连贯性,降低从将音频数据从所述抖动缓冲区中读出的速度。如果音频数据的读取速度降低,在播放时就会导致声音的音调降低、出现失真,因此在降低读取速度的同时,再将音频数据的音调进行提升,使其恢复原始的音调。对应的,当平均抖动时间减少时,进入抖动缓存取的音频数据量增加,增大将音频数据从所述抖动缓冲区中读出的速度并降低音频数据的音调,以获得更好的声音质量。
最大抖动时间获取模块201,用于按照预设的时间周期获取所述音频数据在每一个所述时间周期内的最大抖动时间。
最大抖动时间是指在一个时间周期内发生的多次抖动中,时间最长的一次抖动的抖动时间。最大抖动时间反映的是在一个时间周期内,网络波动的峰值,是该时间内抖动最剧烈的程度。除了平均抖动时间,最大抖动时间也可以作为调整抖动缓冲区的参考数据。
最大抖动时间比较模块202,用于将当前时间周期内的最大抖动时间与前一个时间周期内的最大抖动时间进行比较。
将相邻时间周期内最大抖动时间进行比较,同样可以判断出音频数据的抖动变化的趋势。平均抖动时间反映的是一个时间周期的整体情况,而最大抖动时间反映的是具体的突发状态。比较相邻时间周期是,平均抖动时间和最大抖动时间的比较结果可能会完全不同,平均抖动时间较小的时间周期内,可能会出现较大的最大抖动时间。
抖动缓冲区增长速度调整模块203,用于在当前时间周期内的最大抖动时间大于前一个时间周期内的最大抖动时间时,增大所述抖动缓冲区增长速度;以及在当前时间周期内的最大抖动时间小于前一个时间周期内的最大抖动时间时,减小所述抖动缓冲区增长速度。
当前时间周期内的最大抖动时间大于前一个时间周期内的最大抖动时间,说明音频数据有出现的峰值更大抖动的趋势,将抖动缓冲区增长速度增大,使得抖动缓冲区增大的速度更快,以应对突然出现的高峰值抖动。对应的,当前时间周期内的最大抖动时间小于前一个时间周期内的最大抖动时间,音频数据的抖动有趋向平缓的趋势,进而减小所述抖动缓冲区增长速度。
抖动缓冲区最大尺寸调整模块204,用于在当前时间周期内的最大抖动时间大于前一个时间周期内的最大抖动时间时,判断当前时间周期内的最大抖动时间是否大于所述预设的抖动缓冲区最大尺寸,如果是,则令抖动缓冲区最大尺寸等于当前时间周期内的最大抖动时间。
通过抖动缓冲区有效实现对音频数据去抖动操作的条件是抖动缓冲区的大小大于抖动时间,如果抖动时间大于抖动缓冲区的大小,该次抖动发生时,对应的音频数据没有存入抖动缓冲区,音频数据在输出时可能会出现空白,影响声音质量。为了保证去抖动的效果,当出现最大抖动时间大于预设的抖动缓冲区最大尺寸的情况时,立刻对抖动缓冲区最大尺寸进行调整。预设的抖动缓冲区最大尺寸实质是对可能出现的最大的抖动的预估,在出现比预估的最大抖动更大的抖动时间时,进行对应的调整,以达到更好的去抖动的目的。
在本实施例中,抖动缓冲区最大尺寸调整模块204还用于判断是否出现连续M个时间周期内的最大抖动时间小于当前的抖动缓冲区最大尺寸,如果是,令抖动缓冲区最大尺寸等于该M个时间周期的最大抖动时间中的最大值,其中,M为预设的整数值。
如果连续M个时间周期内的最大抖动时间小于当前的抖动缓冲区最大尺寸,说明在一段较长的时间内,音频数据的抖动剧烈的程度都不高,有趋向平缓的趋势,可以适当的将令抖动缓冲区最大尺寸减小,令其等于该M个时间周期的最大抖动时间中的最大值。在保证去抖动的效果的情况下,以获得更好的音频输出质量。
在去抖动的过程中,偶尔还会出现最大抖动时间发生超大范围内增长或减小的状态,即在一个包括多个时间周期的较长的时间段内,连续出现最大抖动时间的支持增长或者减小时,则认为是网络出现异常,将抖动缓冲区的大小恢复为预先设置的初始值。
峰值抖动时间获取模块301,用于获取所述音频数据的峰值抖动时间,所述峰值抖动时间为连续N所述时间周期中,出现当前时间周期内的最大抖动时间小于前一个时间周期内的最大抖动时间情况的平均间隔时间,其中,N为预设的整数值。
峰值抖动时间反映的是音频数据在一段较长时间内的抖动变化的趋势。峰值抖动时间的值越小,表示音频数据的抖动变化频率越低,网络状态趋于平缓。峰值抖动时间的值越大,表示音频数据的抖动变化频率越大,抖动的峰值变化更加频繁。
峰值抖动时间比较模块302,用于将新获取的峰值抖动时间与前一个获取的峰值抖动时间进行比较。
如果新获取的峰值抖动时间大于前一个获取的峰值抖动时间,表示了音频数据的抖动变化频率在向提高的方向变化,抖动的峰值变化向更加频繁的方向变化。如果新获取的峰值抖动时间小于前一个获取的峰值抖动时间,表示了音频数据的抖动变化频率在向降低的方向变化,网络状态趋于更加平缓的状态,抖动的峰值也越来越小。
抖动缓冲区减小速度调整模块303,用于当新获取的峰值抖动时间大于前一个获取的峰值抖动时间时,增大所述抖动缓冲区减小速度;以及当新获取的峰值抖动时间小于前一个获取的峰值抖动时间时,则减小所述抖动缓冲区减小速度。
对于音频数据的抖动变化频率在向提高的方向变化时,增大所述抖动缓冲区减小速度,使得抖动缓冲区的大小的变化速度更快,能够适应抖动的峰值变化向更加频繁的网络状态。而网络状态趋于更加平缓的状态时,出现较大抖动情况的几率降低,不需要更大的抖动缓冲区减小速度,减小所述抖动缓冲区减小速度。
时间周期调整模块304,用于当新获取的峰值抖动时间大于前一个获取的峰值抖动时间时,减少所述时间周期的长度。
音频数据的抖动变化频率在向提高的方向变化时,通过减少时间周期的长度,使得在相同的时间段内,时间周期的数量更多,对与音频数据相关参数如上述的平均抖动时间、最大抖动时间以及峰值抖动时间获取的频率更高,抖动缓冲区的尺寸的变化也更频繁,对于网络状态的变化也更加敏感,提高了去抖动的效果。
请参阅图3,是本发明较佳实施例提供的应用于图2所示的音频去抖动***10的一种音频去抖动方法的流程图。所述音频去抖动方法包括:
步骤S101,接收音频数据;
步骤S102,按照预设的时间周期获取所述音频数据在每一个所述时间周期内的平均抖动时间。
步骤S103,比较相邻时间周期内所述音频数据的平均抖动时间,判断当前时间周期内的平均抖动时间是否大于前一个时间周期内的平均抖动时间。如果是则执行步骤S104,如果否则执行步骤S107。
步骤S104,按照预设的抖动缓冲区增长速度,对抖动缓冲区的大小进行增加。
步骤S105,判断抖动缓冲区的大小是否等于预设的抖动缓冲区最大尺寸,如果是,则执行步骤S106。
步骤S106,停止增加抖动缓冲区的大小。
步骤S107,判断当前时间周期内的平均抖动时间是否小于前一个时间周期内的平均抖动时间,如果是,则执行步骤S108。
步骤S108,按照预设的抖动缓冲区减小速度,对抖动缓冲区的大小进行减小。
步骤S109,判断用于判断抖动缓冲区的大小是否等于预设的抖动缓冲区最小尺寸,如果是,则执行步骤S110。
步骤S110,停止减小抖动缓冲区的大小。
步骤S111,将接收音频数据写入所述抖动缓冲区。
步骤S112,按照预设的速度将音频数据从所述抖动缓冲区中读出。
上述步骤中,步骤S101由音频数据接收模块105执行,关于步骤S101的具体描述可以参对上述音频数据接收模块105的描述。步骤S102由平均抖动时间获取模块101执行,关于步骤S102的具体描述可以参对上述平均抖动时间获取模块101的描述。步骤S103和步骤S107由平均抖动时间比较模块102执行,关于步骤S103和步骤S107的具体描述可以参对上述平均抖动时间比较模块102的描述。步骤S104和步骤S108由抖动缓冲区调整模块103执行,关于步骤S104和步骤S108的具体描述可以参对上述抖动缓冲区调整模块103的描述。步骤S105、步骤S106、步骤S109和步骤S110由抖动缓冲区调整控制模块104执行,关于步骤S105、步骤S106、步骤S109和步骤S110的具体描述可以参对上述抖动缓冲区调整控制模块104描述。步骤S111由音频数据接收模块105执行,关于步骤S111的具体描述可以参对上述音频数据接收模块105的描述。步骤S112由音频数据读取模块106执行,关于步骤S112的具体描述可以参对上述音频数据读取模块106的描述。
请参阅图4,是本发明较佳实施例提供的应用于图2所示的音频去抖动***10的另一种音频去抖动方法的流程图。所述音频去抖动方法包括:
步骤S201,按照预设的时间周期获取所述音频数据在每一个所述时间周期内的最大抖动时间。
步骤S202,比较相邻时间周期内所述音频数据的最大抖动时间,判断当前时间周期内的最大抖动时间是否大于前一个时间周期内的最大抖动时间。如果是,则执行步骤S203,如果否,则执行步骤S204。
步骤S203,增大所述抖动缓冲区增长速度。
步骤S204,判断当前时间周期内的最大抖动时间是否小于前一个时间周期内的最大抖动时间,如果是则执行步骤S205。
步骤S205,减小所述抖动缓冲区增长速度。
步骤S206,当前时间周期内的最大抖动时间大于前一个时间周期内的最大抖动时间时,判断当前时间周期内的最大抖动时间是否大于所述预设的抖动缓冲区最大尺寸,如果是,则执行步骤S207,如果否,则执行步骤S208。
步骤S207,令抖动缓冲区最大尺寸等于当前时间周期内的最大抖动时间。
步骤S208,判断是否出现连续M个时间周期内的最大抖动时间小于当前的抖动缓冲区最大尺寸,如果是,则执行步骤S209。
步骤S209,令抖动缓冲区最大尺寸等于该M个时间周期的最大抖动时间中的最大值。
上述步骤中,步骤S201由最大抖动时间获取模块201执行,关于步骤S201的具体描述可以参对上述最大抖动时间获取模块201的描述。步骤S202和步骤S204由最大抖动时间比较模块202执行,关于步骤S202和步骤S204的具体描述可以参对上述最大抖动时间比较模块202的描述。步骤S203和步骤S205由抖动缓冲区增长速度调整模块203执行,关于步骤S203和步骤S205的具体描述可以参对上述抖动缓冲区增长速度调整模块203的描述。步骤S206、步骤S207、步骤S208和步骤S209由抖动缓冲区最大尺寸调整模块204执行,关于步骤S206、步骤S207、步骤S208和步骤S209的具体描述可以参对上述抖动缓冲区最大尺寸调整模块204描述。
请参阅图5,是本发明较佳实施例提供的应用于图2所示的音频去抖动***10的又一种音频去抖动方法的流程图。所述音频去抖动方法包括:
步骤S301,按照预设的时间周期获取所述音频数据在每一个所述时间周期内的平均抖动时间。
步骤S302,比较相邻时间周期内所述音频数据的平均抖动时间,判断当前时间周期内的平均抖动时间是否大于前一个时间周期内的平均抖动时间。如果是,则执行步骤S303、步骤S304,如果否,则执行步骤S305。
步骤S303,增大所述抖动缓冲区减小速度。
步骤S304,减少所述时间周期的长度。
步骤S305,判断新获取的峰值抖动时间是否小于前一个获取的峰值抖动时间,如果是,则执行步骤S306。
步骤S306,减小所述抖动缓冲区减小速度。
上述步骤中,步骤S301由峰值抖动时间获取模块301执行,关于步骤S301的具体描述可以参对上述峰值抖动时间获取模块301的描述。步骤S302和步骤S305由峰值抖动时间比较模块302执行,关于步骤S302和步骤S305的具体描述可以参对上述峰值抖动时间比较模块302的描述。步骤S303和步骤S306由抖动缓冲区减小速度调整模块303执行,关于步骤S303和步骤S306的具体描述可以参对上述抖动缓冲区减小速度调整模块303的描述。步骤S304由时间周期调整模块304执行,关于步骤S304的具体描述可以参对上述时间周期调整模块3304描述。
在具体的实施过程中,图3、图4以及图5所示的方法,均已可以在图2所示的音频去抖动***10中同时执行。
综上所述,本发明实施例提供的音频去抖动***和方法,能够在音频数据的传输过程中,持续捕捉音频数据的抖动时间的相关参数,自动学习不同的网络抖动规律和环境,根据捕捉到的多方面的相关参数选择更为优化的方案对抖动缓冲区的大小进行调整,取得了更好的音频去抖动效果。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (8)
1.一种音频去抖动***,应用于音频处理装置,其特征在于,所述音频去抖动***包括:
音频数据接收模块,用于接收音频数据;
平均抖动时间获取模块,用于按照预设的时间周期获取所述音频数据在每一个所述时间周期内的平均抖动时间;
平均抖动时间比较模块,用于将当前时间周期内的平均抖动时间与前一个时间周期内的平均抖动时间进行比较;
抖动缓冲区调整模块,用于在当前时间周期内的平均抖动时间大于前一个时间周期内的平均抖动时间时,按照预设的抖动缓冲区增长速度,对抖动缓冲区的大小进行增加;以及在当前时间周期内的平均抖动时间小于前一个时间周期内的平均抖动时间时,按照预设的抖动缓冲区减小速度,对抖动缓冲区的大小进行减小;
抖动缓冲区调整控制模块,用于当所述抖动缓冲区的大小达到预设的最大尺寸时,停止增加抖动缓冲区的大小;以及当抖动缓冲区的大小达到预设的最小尺寸时,停止减小抖动缓冲区的大小;
所述音频数据接收模块还用于将接收的音频数据写入所述抖动缓冲区;
音频数据读取模块,用于按照预设的速度从所述抖动缓冲区中读取音频数据并输出;
最大抖动时间获取模块,用于按照预设的时间周期获取所述音频数据在每一个所述时间周期内的最大抖动时间,其中,最大抖动时间是指在一个时间周期内发生的多次抖动中,时间最长的一次抖动的抖动时间;
最大抖动时间比较模块,用于将当前时间周期内的最大抖动时间与前一个时间周期内的最大抖动时间进行比较;
抖动缓冲区增长速度调整模块,用于在当前时间周期内的最大抖动时间大于前一个时间周期内的最大抖动时间时,增大所述抖动缓冲区增长速度;以及在当前时间周期内的最大抖动时间小于前一个时间周期内的最大抖动时间时,减小所述抖动缓冲区增长速度;
抖动缓冲区最大尺寸调整模块,用于在当前时间周期内的最大抖动时间大于前一个时间周期内的最大抖动时间时,判断当前时间周期内的最大抖动时间是否大于所述预设的抖动缓冲区最大尺寸,如果是,则令抖动缓冲区最大尺寸等于当前时间周期内的最大抖动时间。
2.根据权利要求1所述的音频去抖动***,其特征在于,所述抖动缓冲区最大尺寸调整模块还用于:
判断是否出现连续M个时间周期内的最大抖动时间小于当前的抖动缓冲区最大尺寸,如果是,令抖动缓冲区最大尺寸等于该M个时间周期的最大抖动时间中的最大值,其中,M为预设的整数值。
3.根据权利要求2所述的音频去抖动***,其特征在于,所述音频去抖动***还包括:
峰值抖动时间获取模块,用于获取所述音频数据的峰值抖动时间,所述峰值抖动时间为连续N所述时间周期中,出现当前时间周期内的最大抖动时间小于前一个时间周期内的最大抖动时间情况的平均间隔时间,其中,N为预设的整数值;
峰值抖动时间比较模块,用于将新获取的峰值抖动时间与前一个获取的峰值抖动时间进行比较;
抖动缓冲区减小速度调整模块,用于当新获取的峰值抖动时间大于前一个获取的峰值抖动时间时,增大所述抖动缓冲区减小速度;以及当新获取的峰值抖动时间小于前一个获取的峰值抖动时间时,则减小所述抖动缓冲区减小速度;
时间周期调整模块,用于当新获取的峰值抖动时间大于前一个获取的峰值抖动时间时,减少所述时间周期的长度。
4.根据权利要求1-3任意一项所述的音频去抖动***,其特征在于,所述音频数据读取模块还用于:
在当前时间周期内的平均抖动时间大于前一个时间周期内的平均抖动时间时,采用语速调整算法降低将音频数据从所述抖动缓冲区中读出的速度,采用音调调整算法提升音频数据的音调;
在当前时间周期内的平均抖动时间小于前一个时间周期内的平均抖动时间时,采用语速调整算法增大将音频数据从所述抖动缓冲区中读出的速度,采用音调调整算法降低音频数据的音调。
5.一种音频去抖动方法,应用于音频去抖动***,其特征在于,所述音频去抖动方法包括:
音频数据接收步骤,接收音频数据;
获取平均抖动时间步骤,按照预设的时间周期获取所述音频数据在每一个所述时间周期内的平均抖动时间;
比较平均抖动时间步骤,将当前时间周期内的平均抖动时间与前一个时间周期内的平均抖动时间进行比较;
调整抖动缓冲区模步骤,在当前时间周期内的平均抖动时间大于前一个时间周期内的平均抖动时间时,按照预设的抖动缓冲区增长速度,对抖动缓冲区的大小进行增加;在当前时间周期内的平均抖动时间小于前一个时间周期内的平均抖动时间时,按照预设的抖动缓冲区减小速度,对抖动缓冲区的大小进行减小;
抖动缓冲区调整控制步骤,用于当所述抖动缓冲区的大小达到预设的最大尺寸时,停止增加抖动缓冲区的大小;以及当抖动缓冲区的大小达到预设的最小尺寸时,停止减小抖动缓冲区的大小;
写入音频数据步骤,将接收的音频数据写入所述抖动缓冲区;
读取音频数据步骤,按照预设的速度从所述抖动缓冲区中读取音频数据并输出;
获取最大抖动时间步骤,按照预设的时间周期获取所述音频数据在每一个所述时间周期内的最大抖动时间,其中,最大抖动时间是指在一个时间周期内发生的多次抖动中,时间最长的一次抖动的抖动时间;
最大抖动时间比较步骤,将当前时间周期内的最大抖动时间与前一个时间周期内的最大抖动时间进行比较;
调整抖动缓冲区增长速度步骤,在当前时间周期内的最大抖动时间大于前一个时间周期内的最大抖动时间时,增大所述抖动缓冲区增长速度;在当前时间周期内的最大抖动时间小于前一个时间周期内的最大抖动时间时,减小所述抖动缓冲区增长速度;
调整抖动缓冲区最大尺寸步骤,在当前时间周期内的最大抖动时间大于前一个时间周期内的最大抖动时间时,判断当前时间周期内的最大抖动时间是否大于所述预设的抖动缓冲区最大尺寸,如果是,则令抖动缓冲区最大尺寸等于当前时间周期内的最大抖动时间。
6.根据权利要求5所述的音频去抖动方法,其特征在于,所述抖动缓冲区最大尺寸调整模块还用于:
判断是否出现连续M个时间周期内的最大抖动时间小于当前的抖动缓冲区最大尺寸,如果是,令抖动缓冲区最大尺寸等于该M个时间周期的最大抖动时间中的最大值,其中,M为预设的整数值。
7.根据权利要求6所述的音频去抖动方法,其特征在于,所述音频去抖动方法还包括:
获取峰值抖动时间步骤,获取所述音频数据的峰值抖动时间,所述峰值抖动时间为连续N所述时间周期中,出现当前时间周期内的最大抖动时间小于前一个时间周期内的最大抖动时间情况的平均间隔时间,其中,N为预设的整数值;
比较峰值抖动时间步骤,将新获取的峰值抖动时间与前一个获取的峰值抖动时间进行比较;
调整抖动缓冲区减小速度步骤,当新获取的峰值抖动时间大于前一个获取的峰值抖动时间时,增大所述抖动缓冲区减小速度;当新获取的峰值抖动时间小于前一个获取的峰值抖动时间时,则减小所述抖动缓冲区减小速度;
调整时间周期步骤,当新获取的峰值抖动时间大于前一个获取的峰值抖动时间时,减少所述时间周期的长度。
8.根据权利要求5-7任意一项所述的音频去抖动方法,其特征在于,所述读取音频数据步骤包括:
在当前时间周期内的平均抖动时间大于前一个时间周期内的平均抖动时间时,采用语速调整算法降低将音频数据从所述抖动缓冲区中读出的速度,采用音调调整算法提升音频数据的音调;
在当前时间周期内的平均抖动时间小于前一个时间周期内的平均抖动时间时,采用语速调整算法增大将音频数据从所述抖动缓冲区中读出的速度,采用音调调整算法降低音频数据的音调。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610012572.0A CN105554019B (zh) | 2016-01-08 | 2016-01-08 | 一种音频去抖动***和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610012572.0A CN105554019B (zh) | 2016-01-08 | 2016-01-08 | 一种音频去抖动***和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105554019A CN105554019A (zh) | 2016-05-04 |
CN105554019B true CN105554019B (zh) | 2018-07-24 |
Family
ID=55832953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610012572.0A Active CN105554019B (zh) | 2016-01-08 | 2016-01-08 | 一种音频去抖动***和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105554019B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110634511B (zh) * | 2019-09-27 | 2021-09-14 | 北京西山居互动娱乐科技有限公司 | 一种音频数据处理方法及装置 |
CN114466241A (zh) * | 2022-01-27 | 2022-05-10 | 海信视像科技股份有限公司 | 显示设备及音频处理方法 |
CN114501114A (zh) * | 2022-02-11 | 2022-05-13 | 福建星网智慧科技有限公司 | 一种音频网络自适应方法和存储设备 |
CN114979091B (zh) * | 2022-07-28 | 2022-11-11 | 腾讯科技(深圳)有限公司 | 一种数据传输的方法、相关装置、设备以及存储介质 |
CN117061827B (zh) * | 2023-08-17 | 2024-06-14 | 广州开得联软件技术有限公司 | 图像帧处理方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7099820B1 (en) * | 2002-02-15 | 2006-08-29 | Cisco Technology, Inc. | Method and apparatus for concealing jitter buffer expansion and contraction |
CN101582832A (zh) * | 2008-05-17 | 2009-11-18 | 红杉树(杭州)信息技术有限公司 | VoIP抖动缓冲区的动态处理方法 |
CN102761468A (zh) * | 2011-04-26 | 2012-10-31 | 中兴通讯股份有限公司 | 一种自适应调整语音抖动缓存区的方法及*** |
CN103533451A (zh) * | 2013-09-30 | 2014-01-22 | 广州华多网络科技有限公司 | 抖动缓存调节方法及其*** |
CN103888381A (zh) * | 2012-12-20 | 2014-06-25 | 杜比实验室特许公司 | 用于控制抖动缓冲器的装置和方法 |
CN103916716A (zh) * | 2013-01-08 | 2014-07-09 | 北京信威通信技术股份有限公司 | 一种无线网络下视频实时传输的码率平滑方法 |
CN105099949A (zh) * | 2014-04-16 | 2015-11-25 | 杜比实验室特许公司 | 基于对延迟抖动和对话动态的监视的抖动缓冲器控制 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1382143B1 (en) * | 2001-04-24 | 2007-02-07 | Nokia Corporation | Methods for changing the size of a jitter buffer and for time alignment, communications system, receiving end, and transcoder |
US20030115320A1 (en) * | 2001-12-19 | 2003-06-19 | Yarroll Lamonte H.P. | Method for tuning voice playback ratio to optimize call quality |
US8069260B2 (en) * | 2007-01-12 | 2011-11-29 | Microsoft Corporation | Dynamic buffer settings for media playback |
US20150172154A1 (en) * | 2013-12-18 | 2015-06-18 | Alcatel-Lucent Canada Inc. | Minimizing symmetrical latency impact by jitter buffer for tdm ces |
-
2016
- 2016-01-08 CN CN201610012572.0A patent/CN105554019B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7099820B1 (en) * | 2002-02-15 | 2006-08-29 | Cisco Technology, Inc. | Method and apparatus for concealing jitter buffer expansion and contraction |
CN101582832A (zh) * | 2008-05-17 | 2009-11-18 | 红杉树(杭州)信息技术有限公司 | VoIP抖动缓冲区的动态处理方法 |
CN102761468A (zh) * | 2011-04-26 | 2012-10-31 | 中兴通讯股份有限公司 | 一种自适应调整语音抖动缓存区的方法及*** |
CN103888381A (zh) * | 2012-12-20 | 2014-06-25 | 杜比实验室特许公司 | 用于控制抖动缓冲器的装置和方法 |
CN103916716A (zh) * | 2013-01-08 | 2014-07-09 | 北京信威通信技术股份有限公司 | 一种无线网络下视频实时传输的码率平滑方法 |
CN103533451A (zh) * | 2013-09-30 | 2014-01-22 | 广州华多网络科技有限公司 | 抖动缓存调节方法及其*** |
CN105099949A (zh) * | 2014-04-16 | 2015-11-25 | 杜比实验室特许公司 | 基于对延迟抖动和对话动态的监视的抖动缓冲器控制 |
Non-Patent Citations (1)
Title |
---|
无线IP移动终端VoIP技术的研究与实现;张朝娟;《中国优秀硕士学位论文全文数据库 信息科技辑》;20080815;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN105554019A (zh) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105554019B (zh) | 一种音频去抖动***和方法 | |
KR102225483B1 (ko) | 에러 정정이 향상된 메모리 디바이스 | |
US11217279B2 (en) | Method and device for adjusting video playback speed | |
CN108211352B (zh) | 一种调节画质的方法及终端 | |
CN107835988A (zh) | 用于高速存储器接口的低功率时钟定时 | |
US20200026872A1 (en) | User Permission Allocation Method and Device | |
US20170031822A1 (en) | Control method and electronic device | |
CN103605975A (zh) | 一种图像处理的方法、装置及终端设备 | |
US10719695B2 (en) | Method for pushing picture, mobile terminal, and storage medium | |
CN105245496A (zh) | 一种播放音频数据的方法和装置 | |
CN103888377A (zh) | 报文缓存方法及装置 | |
CN109389412A (zh) | 一种训练模型的方法及装置 | |
CN111816178A (zh) | 语音设备的控制方法、装置和设备 | |
CN105187692A (zh) | 视频拍摄方法及装置 | |
CN108390883A (zh) | 刷人气用户的识别方法、装置及终端设备 | |
CN109766913A (zh) | 用户分群方法、装置、计算机可读存储介质及电子设备 | |
CN109271587A (zh) | 一种页面生成方法和装置 | |
CN111400755A (zh) | 一种基于指数机制的个性化差分隐私保护方法及*** | |
WO2022199370A1 (zh) | 护眼提示方法、装置、存储介质和计算机设备 | |
CN108432216B (zh) | 音量调整的方法、装置和电子设备 | |
CN111586529A (zh) | 音频数据处理方法、装置、终端和计算机可读存储介质 | |
WO2019233144A1 (zh) | 一种图形码的解码方法及客户端 | |
US8648870B1 (en) | Method and apparatus for performing frame buffer rendering of rich internet content on display devices | |
CN110400573A (zh) | 一种数据处理的方法及装置 | |
CN106372003B (zh) | 缓存数据清理方法、装置及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: Room 203-35, 2 / F, building 2, No.1 and 3, Qinglong Hutong, Dongcheng District, Beijing Patentee after: G-NET CLOUD SERVICE Co.,Ltd. Address before: Room 1102, Ninth Floor, Pengyuan International Building, Building 4, No. 1 Courtyard, Shangdi East Road, Haidian District, Beijing Patentee before: G-NET CLOUD SERVICE Co.,Ltd. |