语音通信方法和设备、操作抖动缓冲器的方法和设备转让专利

申请号 : CN201210080132.0

文献号 : CN103325385B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 格伦·N·迪金森孙学京布朗东·科斯塔

申请人 : 杜比实验室特许公司

摘要 :

描述了语音通信方法和设备、操作抖动缓冲器的方法和设备。顺序获得音频块。音频块中的每个音频块包括一个或更多个音频帧。对音频块进行语音活动检测。响应于针对音频块中的当前音频块做出发声起始的判决,取得所获得的音频块的序列的子序列。子序列包括紧临在当前音频块之前的多个音频块。子序列具有预定长度。针对子序列中的每个音频块做出了非语音的判决。将当前音频块和子序列中的音频块发送给接收方。子序列中的音频块被标识为再处理的音频块,以向接收方通知这些音频块与当前音频块不同并且被再处理为包括语音。响应于针对当前音频块做出非语音的判决,缓冲存储当前音频块。

权利要求 :

1.一种基于语音活动检测来进行语音通信的方法,包括:

顺序获得音频块,其中,所述音频块中的每个音频块包括一个或更多个音频帧;

对所述音频块进行所述语音活动检测;以及

响应于针对所述音频块中的当前音频块做出发声起始的判决,

取得所获得的音频块的序列的子序列,所述子序列包括紧临在所述当前音频块之前的多个音频块,其中,所述子序列具有预定长度,并且,针对所述子序列中的每个音频块做出了非语音的判决;以及将所述当前音频块和所述子序列中的音频块发送给接收方,其中,所述子序列中的音频块被标识为再处理的音频块,以向所述接收方通知这些音频块与所述当前音频块不同并且被再处理为包括语音;以及响应于针对所述当前音频块做出非语音的判决,缓冲存储所述当前音频块。

2.根据权利要求1所述的方法,其中,在所述发送步骤之前,所述方法还包括:通过将所述子序列中的最早音频块看作发声起始并且将所述子序列中的每个随后的音频块和所述当前音频块看作语音延续来再处理所述子序列。

3.根据权利要求2所述的方法,其中,所述子序列的所述再处理包括:对所述子序列的所述音频块应用适于语音的增益。

4.根据权利要求3所述的方法,其中,对于通过所述语音活动检测确定为非语音的每个音频块,将所述增益应用于所述音频块。

5.根据权利要求2所述的方法,其中,所述子序列的所述再处理包括:对所述子序列的开始部分施加逐渐增强。

6.根据权利要求1所述的方法,其中,在一个分组中发送所述当前音频块和所述子序列中的所述音频块。

7.一种用于基于语音活动检测来进行语音通信的设备,包括:

音频输入单元,所述音频输入单元被配置成顺序获得音频块,其中,所述音频块中的每个音频块包括一个或更多个音频帧;

语音活动检测器,所述语音活动检测器被配置成对所述音频块进行所述语音活动检测;

传输控制器,所述传输控制器被配置成:

响应于针对所述音频块中的当前音频块做出发声起始的判决,取得所获得的音频块的序列的子序列,所述子序列包括紧临在所述当前音频块之前的多个音频块,其中,所述子序列具有预定长度,并且,针对所述子序列中的每个音频块做出了非语音的判决;以及响应于针对所述当前音频块做出非语音的判决,缓冲存储所述当前音频块;以及发送器,所述发送器被配置成将所述当前音频块和所述子序列中的音频块发送给接收方,其中,所述子序列中的音频块被标识为再处理的音频块,以向所述接收方通知这些音频块与所述当前音频块不同并且被再处理为包括语音。

8.根据权利要求7所述的设备,其中,所述传输控制器还被配置成:在所述发送器进行所述发送之前,通过将所述子序列中的最早音频块看作发声起始并且将所述子序列中的每个随后的音频块和所述当前音频块看作语音延续来再处理所述子序列。

9.根据权利要求8所述的设备,其中,所述子序列的所述再处理包括:对所述子序列的所述音频块应用适于语音的增益。

10.根据权利要求9所述的设备,其中,对于通过所述语音活动检测确定为非语音的每个音频块,将所述增益应用于所述音频块。

11.根据权利要求8所述的设备,其中,所述子序列的所述再处理包括:对所述子序列的开始部分施加逐渐增强。

12.根据权利要求7所述的设备,其中,在一个分组中发送所述当前音频块和所述子序列中的所述音频块。

说明书 :

语音通信方法和设备、操作抖动缓冲器的方法和设备

技术领域

[0001] 本发明总体上涉及语音通信。更具体地,本发明的实施例涉及语音通信中的基于语音活动检测(VAD)的音频数据的传输以及抖动缓冲器管理。

背景技术

[0002] VAD是一种在判决人声的存在与否的语音处理中使用的技术。VAD可以用在语音通信应用中,以在音频会话的非语音部分期间停用某些处理。例如,VAD可以避免在通过因特网协议传送语音的应用中的静默分组的不必要的编码/传输,以节省开销和网络带宽。VAD是不同语音通信系统如音频会议、回波消除、语音识别、语音编码和免提通话技术的组成部分。
[0003] 在典型的联网环境中,存在某种与接收的分组在从一个末端发送到另一末端时的出现和定时有关的不确定性。对于被传输的数据是间接或者不是实时的应用,这可以通过使用如下技术来克服,其中,监控传输并且通过重新传输数据和/或提供合适的传输延迟来纠正传输以克服任何网络故障。对于各方彼此实时交互的应用,如在语音通信中,这种方法是不可行的,因为通信延迟可能表示效用和感知品质的显著下降。
[0004] 传统的解决这个问题的方法是:引入足以给某些等级的网络抖动提供弹性(resilence)的抖动缓冲器或者排队缓冲器,而不需要确保用于语音流的所有数据分组都到达。在某些方法中,这种抖动缓冲器的长度被设置成能够通过使用统计信息或历史信息来给某个等级提供回弹力,以提供允许及时接收某个百分比的分组以用于处理、发送或解码和使用的缓冲和延迟。
[0005] 这种抖动缓冲器给整个通信路径中引入了不必要的延迟。已经提出了很多方法来管理品质与延迟之间的这种平衡和折衷,以及改善编码、解码或处理,以减小丢失数据分组对于输出语音流的影响。

发明内容

[0006] 描述了语音通信方法和设备、操作抖动缓冲器的方法和设备。顺序获得音频块。音频块中的每个音频块包括一个或更多个音频帧。对音频块进行语音活动检测。响应于针对音频块中的当前音频块做出发声起始的判决,取得所获得的音频块的序列的子序列。子序列包括紧临在所述当前音频块之前的多个音频块。子序列具有预定长度。针对子序列中的每个音频块做出了非语音的判决。将当前音频块和子序列中的音频块发送给接收方。子序列中的音频块被标识为再处理的音频块,以向所述接收方通知这些音频块与所述当前音频块不同并且被再处理为包括语音。响应于针对当前音频块做出非语音的判决,缓冲存储当前音频块。
[0007] 下面,参照附图来详细描述本发明的其他特征和优点以及本发明各种实施例的结构和操作。应当注意,本发明不限于本文中所描述的具体实施例。本文中给出的这些实施例仅用于说明。基于本文中包含的教示,其他实施例对于相关领域的技术人员而言也是清楚的。

附图说明

[0008] 在附图的各图中,以示例性和非限制性的方式对本发明进行阐释,在附图中,类似的附图标记指代类似的元素,其中:
[0009] 图1A是示意性地示出了本发明实施例可以应用于其中的示例语音通信系统的图;
[0010] 图1B是示意性地示出了本发明实施例可以应用于其中的另外的示例语音通信系统的图;
[0011] 图2是示出了根据本发明实施例的用于基于VAD来进行语音通信的示例设备的框图;
[0012] 图3A是示出了对音频块的示例序列进行VAD的示例场景的图;
[0013] 图3B是示意性地示出了在图3A所示的场景下发送方与接收方之间的音频块传输的示例过程的图;
[0014] 图4是示出了根据本发明实施例的基于VAD来进行语音通信的示例方法的流程图;
[0015] 图5是示出了根据本发明实施例的用于在语音通信中操作一个或更多个抖动缓冲器的示例设备的框图;
[0016] 图6是示出了根据本发明实施例的在语音通信中操作一个或更多个抖动缓冲器的示例方法的流程图;
[0017] 图7是示出了根据本发明实施例的用于在语音通信中操作一个或更多个抖动缓冲器的示例设备的框图;
[0018] 图8是示出了根据本发明实施例的在语音通信中操作一个或更多个抖动缓冲器的示例方法的流程图;
[0019] 图9A是示出了对音频块的示例序列进行VAD的示例场景的图;
[0020] 图9B是示意性地示出了发送方与接收方之间的音频块传输的示例过程的图;以及[0021] 图10是示出了用于实施本发明实施例的示例性系统的框图。具体实施例
[0022] 下面通过参考附图来描述本发明实施例。应注意,为清楚起见,在附图和描述中省略了哪些本领域技术人员已知而对于理解本发明并非必需的组件和过程的陈述和描述。
[0023] 本领域的技术人员可以理解,本发明的各方面可以被实施为系统、装置(例如蜂窝电话、便携媒体播放器、个人计算机、电视机顶盒、或数字录像机、或任意其它媒体播放器)、方法或计算机程序产品。因此,本发明的各方面可以采取以下形式:完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合软件部分与硬件部分的实施例,本文可以一般地称之为“电路”、“模块”或“系统”。此外,本发明的各方面可以采取体现为一个或多个计算机可读介质的计算机程序产品的形式,该计算机可读介质上体现有计算机可读程序代码。
[0024] 可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是(但不限于)电的、磁的、光的、电磁的、红外线的、或半导体的系统、设备或装置、或前述各项的任何适当的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储装置、磁存储装置、或前述各项的任何适当的组合。在本文语境中,计算机可读存储介质可以是任何含有或存储供指令执行系统、设备或装置使用的或与指令执行系统、设备或装置相联系的程序的有形介质。
[0025] 计算机可读信号介质可以包括例如在基带中或作为载波的一部分传播的、其中带有计算机可读程序代码的数据信号。这样的传播信号可以采取任何适当的形式,包括但不限于电磁的、光的或其任何适当的组合。
[0026] 计算机可读信号介质可以是不同于计算机可读存储介质的、能够传达、传播或传输供指令执行系统、设备或装置使用的或与指令执行系统、设备或装置相联系的程序的任何一种计算机可读介质。
[0027] 体现在计算机可读介质中的程序代码可以采用任何适当的介质传输,包括但不限于无线、有线、光缆、射频等等、或上述各项的任何适当的组合。
[0028] 用于执行本发明各方面的操作的计算机程序代码可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言,诸如“C”程序设计语言或类似的程序设计语言。程序代码可以完全地在用户的计算机上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上并且部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
[0029] 以下参照按照本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图来描述本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器以生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令产生用于实现流程图和/或框图中的方框中规定的功能/操作的装置。
[0030] 也可以把这些计算机程序指令存储在能够指引计算机或其它可编程数据处理设备以特定方式工作的计算机可读介质中,使得存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令的制造品。
[0031] 也可以把计算机程序指令加载到计算机、其它可编程数据处理设备或其它装置上,导致在计算机、其它可编程处理设备或其它装置上执行一系列操作步骤以产生计算机实现的过程,使得在计算机或其它可编程设备上执行的指令提供实现流程图和/或框图的方框中规定的功能/动作的过程。系统概述
[0032] 图1A是示意性地示出了本发明实施例可以应用于其中的示例语音通信系统的图。
[0033] 如图1A所示,用户A操作通信终端101,用户B操作通信终端102。在语音通信会话中,用户A和用户B通过他们的通信终端101和102彼此交谈。通信终端101和102通过数据链路103耦接。数据链路103可以实现为点到点连接或者通信网络。在用户A和用户B中的任一用户侧,对用户的通信终端捕获的音频信号的音频块进行VAD。如果判决音频块中存在语音,则对该音频块进行相应处理(例如,应用适于语音的增益),并且通过数据链路103将音频块发送给另外的用户的通信终端101。如果判决音频块中不存在语音,则对该音频块进行相应处理(例如,应用适于非语音的增益),并且通过数据链路103将音频块发送给另外的用户的通信终端101。在这种情况下,还可以给另一个用户的通信终端发送表示静默周期的简单信息,或者还可以通过不发送任何内容来表示对应于该音频块的时间段是静音。另一个用户的通信终端接收发送的音频块,并且将这些音频块存储到与其抖动缓冲器中的音频块对应于相同时间的条目,以消除传输抖动。通过编码和处理来馈送抖动缓冲器中的音频块,以在通信终端的一个或更多个输出换能器处对抖动缓冲器中的音频块进行再处理。接收到简单信息或者没有接收到任何信息可以在抖动缓冲器中引起相应的空条目。
[0034] 图1B是示意性地示出了本发明实施例可以应用于其中的另外的示例语音通信系统的图。在本示例中,可以在用户之间进行语音会议。
[0035] 如图1B所示,用户A操作通信终端111,用户B操作通信终端112,用户C操作通信终端114。在语音会议会话中,用户A、用户B和用户C通过他们的通信终端111、112和114彼此交谈。图1B所示的通信终端与图1A所示的通信终端具有相同的功能。但是,通信终端111、112和114通过公共数据链路113或者单独的数据链路113耦接至服务器115。数据链路113可以实现为点到点连接或者通信网络。在用户A、用户B和用户C中的任一用户侧,对用户的通信终端捕获的音频信号的音频块进行VAD。如果判决音频块中存在语音,则对该音频块进行相应处理(例如,应用适于语音的增益),并且通过数据链路113将音频块发送给服务器115。如果判决音频块中不存在语音,则对该音频块进行相应处理(例如,应用适于非语音的增益),并且通过数据链路113将音频块发送给服务器115。在这种情况下,还可以给服务器115发送表示静默周期的简单信息,或者还可以通过不发送任何内容来表示对应于该音频块的时间段是无声的。服务器115接收发送的音频块,并且将这些音频块分别存储到与其与用户相关联的抖动缓冲器中的音频块对应于相同时间的条目,以消除传输抖动。将抖动缓冲器中的对应于相同时间的音频块混合成一个音频块,并且将混合音频块发送给所有用户A、B和C。接收到简单信息或者没有接收到任何信息可以在抖动缓冲器中引起相应的空条目。用户的通信终端从服务器115接收音频块,并且将这些音频块存储到与他们的抖动缓冲器中的音频块对应于相同时间的条目,以消除传输抖动。在每个通信终端中,将抖动缓冲器中的音频块馈送给语音处理器,以通过通信终端的扬声器系统来再现这些音频块。虽然图1B示出了三个通信终端,但是系统中可以合理地耦接有两个或更多个通信终端。
[0036] 发送侧
[0037] 图2是示出了根据本发明实施例的用于基于VAD来进行语音通信的示例设备200的框图。设备200可以用作图1A和图1B所示的通信终端。
[0038] 如图2所示,设备200包括音频输入单元201、语音活动检测器202、传输控制器203和发送器204。
[0039] 音频输入单元201被配置成顺序获得音频块。序列中的每个音频块包括一个或更多个音频帧,并且通常可以具有相同的长度。音频块可以通过音频输入单元201来捕获,或者可以通过音频输入单元201从用于捕获音频块的装置来接收。
[0040] 语音活动检测器202被配置成对通过音频输入单元201获得的音频块进行VAD。可以采用各种VAD方法。由于VAD,可以针对音频块和任何相关联的逻辑做出对事件如发声起始、语音延续或者非语音的判决。
[0041] 在VAD方法中,必须在限定的时间内做出与事件有关的判决,并且判决正确的程度与做出判决所用的时间之间存在平衡。在音频再处理和判决阶段对发送引入延迟可以增加准确性,但是,这对于系统性能而言是不期望的。通常,从出现实际发声起始的音频块到判决为发声起始的音频块存在延迟。基于这个观察,一旦针对一个音频块做出发声起始的判决,则可以后退几个音频块,以至少包括判决的语音活动中出现实际发声起始的音频块。这可以通过避免前沿削波的主要错误或者错过期望交谈猝发的开始处的低能量活动来获得语音品质的显著提升。
[0042] 如果语音活动检测器202针对序列中的当前音频块做出发声起始的判决,则响应与此,传输控制器203被配置成取得序列的子序列。子序列紧临在当前音频块之前。例如,假定当前音频块是序列中的音频块n,则子序列可以包括音频块n-k至n-1。子序列具有预定长度,并且针对子序列中的每个音频块做出非语音的判决。对于具体应用和具体VAD方法,可以基于统计来估计从出现实际发声起始的音频块到判决为发声起始的音频块的延迟。相应地,可以将预定长度设置为不小于该延迟的值。还可以通过测试来调整预定长度。
[0043] 可以理解,可以存储判决为非语音的音频块,用于之后在针对随后的音频块做出发声起始的判决的情况下进行恢复。还可以对当前音频块进行适于非语音的处理,并且将其发送给接收方。在一个示例中,可以永久或者临时存储所有判决为非语音的音频块。在另外的示例中,可以将判决为非语音的音频块推入到具有不小于预定长度的长度的队列中。
[0044] 如果针对音频块做出语音延续的判决,则将该音频块发送给接收方。在这种情况下的处理可以类似于基于VAD的传统语音通信应用中的处理。
[0045] 如果判决为发声起始,则发送器204被配置成将当前音频块和子序列中的音频块发送给接收方。子序列中的音频块被标识为再处理的音频块,使得接收方可以知道这些音频块不同于当前音频块并且被再处理为包含语音。可以在一个分组中或者在不同的分组中发送当前音频块和子序列。在后一种情况下,可以是理想的是,给不同的分组中的每个分组分配不同的优先权。
[0046] 图3A是示出了对分别对应于时间t1、t2、t3、t4、t5、t6和t7的音频块X、Y、Z、A、B、C和D的示例序列进行VAD的示例场景的图。如图3A所示,针对音频块X、Y和Z做出了非语音的判决。针对音频块A做出了发声起始的判决,而针对音频块B、C和D做出了语音延续的判决。
[0047] 图3B是示意性地示出了发送方与接收方之间的音频块传输的示例过程的图。用标有箭头的线连接的框表示抖动缓冲器。虚线框表示抖动缓冲器中的空条目。带有标签的实线框表示音频块,并且特别地,通过标有箭头的线连接的实线框表示抖动缓冲器的条目中的音频块。抖动缓冲器可以以先入先出方式来操作。连接的框表示存储器中的条目。如图3B所示,针对音频块X、Y和Z做出了非语音的判决,并且不发送但是存储音频块X、Y和Z。针对音频块A做出了发声起始的判决,并且发送音频块A以及音频块X、Y和Z的子序列,假定预定长度是3个音频块。接着,针对音频块B、C和D做出了语音延续的判决,并且也以正常定时和顺序发送音频块B、C和D。在图3B的情况下,不发送音频块X、Y和Z。但是,可以发送并且存储音频块X、Y和Z。
[0048] 图4是示出了根据本发明实施例的基于VAD来进行语音通信的示例方法400的流程图。
[0049] 如图4所示,方法400从步骤401开始。在步骤403处,顺序获得音频块。序列中的每个音频块包括一个或更多个音频帧,并且通常可以具有相同的长度。
[0050] 在步骤405处,对在步骤403处获得的音频块中的当前音频块进行VAD。可以采用各种VAD方法。由于VAD,可以针对音频块做出对事件如发声起始、语音延续或者非语音的判决。
[0051] 在步骤407处,确定针对当前音频块是否做出了发声起始的判决。如果确定做出了发声起始的判决,则响应与此,在步骤409处,取得序列的子序列。子序列紧临在当前音频块之前。子序列具有预定长度,并且针对子序列中的每个音频块做出非语音的判决。
[0052] 在步骤409处,将子序列中的音频块和当前音频块发送给接收方。子序列中的音频块被标识为再处理的音频块。使得接收方可以知道这些音频块不同于当前音频块并且被再处理为包含语音。可以在一个分组或者不同分组中发送当前音频块和子序列。在后一种情况下,优选的是优先发送对应更早时间的音频块。
[0053] 如果确定没有做出发声起始的判决,则在步骤413处,确定针对当前音频块是否做出了语音延续的判决。如果确定做出了语音延续的判决,则在步骤415处,将当前音频块发送给接收方。在这种情况下的处理类似于基于VAD的传统语音通信应用中的处理。
[0054] 如果确定没有做出语音延续的判决,即,做出了非语音的判决,则在步骤417处,存储当前音频块,用于之后在针对随后的音频块做出音频起始的判决的情况下进行回取。或者,还可以对当前音频块进行适于非语音的处理,并且将其发送给接收方。在一个示例中,可以存储判决为非语音的所有音频块。在另外的示例中,可以将判决为非语音的音频块推入到具有不小于预定长度的长度的队列中。
[0055] 在步骤419处,确定语音通信会话是否结束。如果会话结束,则方法在步骤421处结束。否则,方法400返回步骤403以处理下一个音频块。
[0056] 在设备200的另外的实施例中,传输控制器203还可以被配置成:在通过发送器204进行发送之前,通过将子序列中的最早音频块看作发声起始并且将子序列中的每个随后的音频块和当前音频块看作语音延续来再处理子序列。可以理解,在对当前音频块进行VAD之前,子序列中的音频块已经被确定为非语音。通常,对包含语音的音频块的处理和对不包含语音的音频块的处理是不同的。例如,对不包含语音的音频块应用对应增益,以抑制信号,然而,对包含语音的音频块应用对应增益,以增强信号。如果确定子序列中的音频块包含语音,则优选的是,再处理的音频块,就好像最早音频块被判决为发声起始并且直到当前音频块的随后的音频块被判决为语音延续。此外,在一个示例中,子序列的再处理包括对子序列的音频块应用适于语音的增益。在这种情况下,对于通过语音活动检测被确定为非语音的每个音频块,将该增益应用于该音频块。因而,已经对存储的音频块进行了再处理。如果存储的音频块包含在子序列中,则可以事先完成某些或者所有再处理。
[0057] 在方法400的另外的实施例中,方法400可以包括如下步骤:通过将子序列中的最早音频块看作发声起始并且将子序列中的每个随后的音频块和当前音频块看作语音延续来再处理子序列。这个步骤可以在执行步骤411之前的任何位置处进行。此外,在一个示例中,子序列的再处理包括:给子序列的音频块应用适于语音的增益。在这种情况下,对于通过语音活动检测在步骤413处被确定为非语音的每个音频块,将该增益应用于该音频块。因而,已经对存储的音频块进行了再处理。如果存储的音频块包含在子序列中,则可以事先完成某些或所有再处理。
[0058] 在设备200和方法400的另外的实施例中,子序列的再处理包括:对子序列的开始部分施加逐渐增强。这可以进一步改善语音品质。
[0059] 接收侧
[0060] 图5是示出了根据本发明实施例的用于在语音通信中操作一个或更多个抖动缓冲器的示例设备500的框图。设备500可以是图1A和图1B所示的通信终端,或者是图1B所示的服务器。
[0061] 如图5所示,设备500包括接收器501、抖动缓冲器控制器502和抖动缓冲器503-1至503-N。
[0062] 接收器501被配置成从与设备500耦接的发送方1至N接收音频块。取决于具体应用,N可以等于1或者大于1。
[0063] 每个抖动缓冲器503-i可以与发送方i相关联,以临时存储从发送方i接收到的音频块。
[0064] 对于每个接收音频块,如果接收音频块被标识为再处理的音频块,则抖动缓冲器控制器502被配置成确定接收音频块相对于与接收音频块的发送方相关联的抖动缓冲器的时间范围是否超时。每个抖动缓冲器可以具有由开始时间ST和结束时间ET限定的时间范围。抖动缓冲器中的条目对应于时间范围[ST,ET]内的时间。随着时间流逝,抖动缓冲器的时间范围变化,以使开始时间和结束时间增加增量△T≥1,并且,对应于时间ST至ST+△T-1的条目从抖动缓冲器中移出,而对应于时间ET+1至ET+△T的条目被推入到抖动缓冲器中。如果接收音频块表示的时间早于ST,则确定接收音频块超时。
[0065] 如果确定接收音频块未超时,即,在时间范围[ST,ET]内,则抖动缓冲器控制器502被配置成用接收音频块来更新抖动缓冲器中与接收音频块对应于相同时间的条目。可以理解,不同场景下的更新操作可以不同,使得条目包含根据应用的需要应该包含的内容。在某种场景下(例如,没有发送被判决为非语音的音频块),如果待更新的条目是空的,则可以通过将接收音频块填入到该条目中来进行更新。在另一种场景下(例如,抑制并且发送被判决为非语音的音频块),如果待更新的条目包含与接收音频块源自于相同源(即,由相同装置捕获并且源自于相同装置)的音频块,则表示条目中的音频块是接收音频块的旧版本,并且,可以通过用接收音频块替换条目中的音频块来进行更新。在另一种场景下(例如,来自于不同源的音频块被服务器转发、在端用户终端处被接收并且存储在公共抖动缓冲器中,并且,不发送被判决为非语音的音频块),如果待更新的条目包含与接收音频块源自于不同源的音频块,则通过混合条目中的音频块与接收音频块来进行更新。
[0066] 如果接收音频块没有被标识为再处理的音频块,则表示接收音频块是被判决为发声起始或语音延续的当前音频块,并且抖动缓冲器中的相应条目应当是空的。在这种情况下,抖动缓冲器控制器502被配置成将接收音频块填入到与发送方相关联的抖动缓冲器中与接收音频块对应于相同时间的条目中。
[0067] 在图3B所示的示例中,在时间t4之前,接收方例如设备500的抖动缓冲器中的条目是空的,因为音频块X、Y和Z被判决为非语音并且不被发送。在用时间t4表示的阶段,针对音频块A做出了发声起始的判决,并且音频块A、X、Y和Z被发送给接收方。接收方处的接收器501接收音频块A、X、Y和Z。音频块X、Y和Z被标识为再处理的音频块。音频块A没有被标识为再处理的音频块。音频块A、Y和Z相对于抖动缓冲器的时间范围未超时,而音频块X超时。在这种情况下,抖动缓冲器控制器502将音频块A、Y和Z填入到相应条目中。在本示例中,接收方是端用户终端,因此,丢弃超时音频块X。在这种情况下,优选的是,通过改进的离散余弦变换(MDCT)或者类似的叠加变换来获得音频块,因为丢掉这样的块几乎没有明显的不利。
[0068] 如果接收方是服务器,则对超时音频块X进行的处理可以不同并且将在以下部分中详细描述。
[0069] 图6是示出了根据本发明实施例的在语音通信中操作一个或更多个抖动缓冲器的示例方法600的流程图。
[0070] 如图6所示,方法600从步骤601开始。在步骤603处,从发送方1至N中的一个发送方接收音频块。取决于具体应用,N可以等于1或者大于1。对于每个发送方i,抖动缓冲器503-i可以与发送方i相关联,以临时存储从发送方i接收到的音频块。
[0071] 在步骤605处,对于接收音频块,确定接收音频块是否被标识为再处理的音频块。如果确定接收音频块被标识为再处理的音频块,则在步骤609处,确定接收音频块相对于与接收音频块的发送方相关联的抖动缓冲器的时间范围是否超时。如果确定接收音频块未超时,则在步骤611处,用接收音频块更新抖动缓冲器中与接收音频块对应于相同时间的条目。如果在步骤609处确定接收音频块超时,则在步骤613处,以类似于传统方法的方式对接收音频块进行超时处理。
[0072] 如果在步骤605处确定接收音频块没有被标识为再处理的音频块,则在步骤607处,将接收音频块填入到与发送方相关联的抖动缓冲器中与接收音频块对应于相同时间的条目中。
[0073] 在步骤615处,确定语音通信会话是否结束。如果会话结束,则方法在步骤617处结束。否则,方法600返回步骤603以处理下一个音频块。
[0074] 图7是示出了根据本发明实施例的用于在语音通信中操作一个或更多个抖动缓冲器的示例设备700的框图。设备700可以是图1B所示的服务器。
[0075] 如图7所示,设备700包括接收器701、抖动缓冲器控制器702、抖动缓冲器703-1至703-N以及发送器704。在本实施例中,N≥1。
[0076] 接收器701和抖动缓冲器703分别与接收器501和抖动缓冲器503具有相同的功能,并且下文中不进行详细描述。
[0077] 抖动缓冲器控制器702包括抖动缓冲器控制器502的功能。此外,在确定接收音频块超时的情况下,如果确定接收音频块与从相应抖动缓冲器中移出并且等待混合的条目对应于相同时间,则抖动缓冲器控制器702被配置成用接收音频块来更新该条目。作为服务器,设备700从多方接收音频块,并且分别用与各方相关联的相应抖动缓冲器来管理接收音频块。设备还将条目从抖动缓冲器中移出、混合条目中的内容并且将混合内容发送给具体某方。如果接收音频块超时,则其可以对应于从抖动缓冲器中移出但是还未被混合和发送的条目。在这种情况下,可以用接收音频块来更新该条目,使得可以混合接收音频块。
[0078] 如果确定接收音频块没有与从相应抖动缓冲器中移出但是等待混合的条目对应于相同时间,则抖动缓冲器控制器702被配置成通过发送器704将接收音频块发送给目的地。在这种情况下,接收音频块所表示的时间在目的地的抖动缓冲器的时间范围内,因此,将接收音频块发送给目的地。
[0079] 图9A是示出了对分别对应于时间t1、t2、t3、t4、t5、t6和t7的音频块W、X、Y、Z、A、B和C的示例序列进行VAD的示例场景的图。如图9A所示,针对音频块W、X、Y和Z做出了非语音的判决。针对音频块A做出了发声起始的判决,而针对音频块B和C做出了语音延续的判决。
[0080] 图9B是示意性地示出了两个发送方(客户1和客户2)与两个接收方(服务器和目的地)之间的音频块传输的示例过程的图。图9B中的附图标记与图3B中的附图标记一致。如图9B所示,在客户1处,针对音频块W、X、Y和Z做出了非语音的判决,并且不发送但是存储音频块W、X、Y和Z。针对音频块A做出了发声起始的判决,并且发送音频块A以及音频块W′、X′、Y′和Z′的子序列,假定预定长度是4个音频块。音频块W′、X′、Y′和Z′是音频块W、X、Y和Z的再处理版本。接着,针对音频块B和C做出了语音延续的判决,并且也发送音频块B和C。在服务器例如设备700处,在时间t5表示的阶段处,接收器701接收音频块A、W′、X′、Y′和Z′。抖动缓冲器控制器702确定音频块W′、X′、Y′和Z′被标识为再处理的音频块,并且,音频块W′、X′和Y′相对于与客户1相关联的抖动缓冲器的时间范围超时。此外,抖动缓冲器控制器702确定音频块Y′与从相应抖动缓冲器中移出但是等待混合的条目对应于相同时间。在这种情况下,抖动缓冲器控制器702用音频块Y′更新条目,并且接着,将包含音频块Y′的条目与从与客户
2相关联的抖动缓冲器中移出并且对应于相同时间的另一个条目混合成标记为h+Y′的一个音频块。抖动缓冲器控制器702还确定音频块X′和W′没有与从相应抖动缓冲器中移出但是等待混合的条目对应于相同时间。在这种情况下,抖动缓冲器控制器702通过发送器704将音频块X′和W′发送给目的地。
[0081] 图8是示出了根据本发明实施例的在语音通信中操作一个或更多个抖动缓冲器的示例方法800的流程图。
[0082] 在方法800中,步骤801、803、805、807、809、811、815和817分别与步骤601、603、605、607、609、611、615和617具有相同的功能,并且下文中不进行详细描述。
[0083] 如果在步骤809处确定接收音频块超时,则在步骤813处,确定接收音频块与从相应抖动缓冲器中移出但是等待混合的条目是否对应于相同时间。如果接收音频块与从相应抖动缓冲器中移出但是等待混合的条目对应于相同时间,则在步骤814-1处,用接收音频块更新该条目。如果接收音频块与从相应抖动缓冲器中移出但是等待混合的条目没有对应于相同时间,则在步骤814-2处,将接收音频块发送给目的地。在步骤814-1和814-2之后,方法800前进至步骤815。
[0084] 在设备700和方法800的另外的实施例中,用接收音频块对条目的更新可以包括以下场景。在一种场景下,条目包含音频块,并且用接收音频块来替换包含的音频块。在其他场景下,条目是空的,并且将接收音频块填入到条目中。
[0085] 在设备500和方法600的另外的实施例中,语音处理器被馈送以相应抖动缓冲器中的音频块。在这种情况下,用接收音频块对条目的更新可以包括以下场景。在一种场景下,条目包含由与接收音频块的源不同的源生成的音频块,并且接收音频块和包含的音频块被混合成一个音频块,并且用混合音频块来替换包含的音频块。在另一种场景下,条目包含由与接收音频块的源相同的源生成的音频块,并且用接收音频块来替换包含的音频块。在另一种场景下,条目是空的,并且将接收音频块填入到条目中。
[0086] 在图9B所示的示例中,在时间t5表示的阶段处,目的地设备处的接收器接收了音频块h+Y′、X′和W′。抖动缓冲器控制器确定音频块X′和W′为再处理的音频块并且相对于抖动缓冲器的时间范围未超时。此外,抖动缓冲器控制器确定与音频块X′和W′对应于相同时间的条目包含由与音频块X′和W′的源(客户1)为不同源的源(客户2)生成的音频块g和f。在这种情况下,将音频块X′和音频块g混合成一个音频块g+X′,并且将音频块W′和音频块f混合成一个音频块f+W′。
[0087] 本发明实施例提供了一种利用接收机处的抖动缓冲器和随后的网络链接来改善针对不确定的听觉输入进行与语音活动有关的判决的任何系统中固有的、语音可识度与错误警告之间的平衡的技术。本发明实施例是实用的、适于实际产品的实现并且提供了系统性能(多方电话会议中的网络带宽、语音品质和/或扰动率)的显著改善。
[0088] 在图10中,中央处理单元(CPU)1001根据只读存储器(ROM)1002中存储的程序或从存储部分1008加载到随机访问存储器(RAM)1003的程序执行各种处理。在RAM 1003中,也根据需要存储当CPU1001执行各种处理等等时所需的数据。
[0089] CPU 1001、ROM 1002和RAM 1003经由总线1004彼此连接。输入/输出接口1005也连接到总线1004。
[0090] 下列部件连接到输入/输出接口1005:包括键盘、鼠标等等的输入部分1006;包括例如阴极射线管(CRT)、液晶显示器(LCD)等等的显示器和扬声器等等的输出部分1007;包括硬盘等等的存储部分1008;和包括例如LAN卡、调制解调器等等的网络接口卡的通信部分1009。通信部分1009经由例如因特网的网络执行通信处理。
[0091] 根据需要,驱动器1010也连接到输入/输出接口1005。例如磁盘、光盘、磁光盘、半导体存储器等等的可移除介质1011根据需要被安装在驱动器1010上,使得从中读出的计算机程序根据需要被安装到存储部分1008。
[0092] 在通过软件实现上述步骤和处理的情况下,从例如因特网的网络或例如可移除介质1011的存储介质安装构成软件的程序。
[0093] 本文中所用的术语仅仅是为了描述特定实施例的目的,而非意图限定本发明。本文中所用的单数形式的“一”和“该”旨在也包括复数形式,除非上下文中明确地另行指出。还应理解,“包括”一词当在本说明书中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件,以及/或者它们的组合。
[0094] 以下权利要求中的对应结构、材料、操作以及所有功能性限定的装置或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。对本发明进行的描述只是出于图解和描述的目的,而非用来对具有公开形式的本发明进行详细定义和限制。对于所属技术领域的普通技术人员而言,在不偏离本发明范围和精神的情况下,显然可以做出许多修改和变型。对实施例的选择和说明,是为了最好地解释本发明的原理和实际应用,使所属技术领域的普通技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施例。
[0095] 这里描述了下面的示例性实施例(均用"EE"表示)。
[0096] EE 1.一种基于语音活动检测来进行语音通信的方法,包括:
[0097] 顺序获得音频块,其中,所述音频块中的每个音频块包括一个或更多个音频帧;
[0098] 对所述音频块进行所述语音活动检测;以及
[0099] 响应于针对所述音频块中的当前音频块做出发声起始的判决,
[0100] 取得所获得的音频块的序列的子序列,所述子序列紧临在所述当前音频块之前,其中,所述子序列具有预定长度,并且,针对所述子序列中的每个音频块做出了非语音的判决;以及
[0101] 将所述当前音频块和所述子序列中的音频块发送给接收方,其中,所述子序列中的音频块被标识为再处理的音频块;以及
[0102] 响应于针对所述当前音频块做出非语音的判决,缓冲存储所述当前音频块。
[0103] EE 2.根据EE1所述的方法,其中,在所述发送步骤之前,所述方法还包括:
[0104] 通过将所述子序列中的最早音频块看作发声起始并且将所述子序列中的每个随后的音频块和所述当前音频块看作语音延续来再处理所述子序列。
[0105] EE 3.根据EE2所述的方法,其中,所述子序列的所述再处理包括:对所述子序列的所述音频块应用适于语音的增益。
[0106] EE 4.根据EE3所述的方法,其中,对于通过所述语音活动检测确定为非语音的每个音频块,将所述增益应用于所述音频块。
[0107] EE 5.根据EE2所述的方法,其中,所述子序列的所述再处理包括:对所述子序列的开始部分施加逐渐增强。
[0108] EE 6.根据EE1所述的方法,其中,在一个分组中发送所述当前音频块和所述子序列中的所述音频块。
[0109] EE 7.一种用于基于语音活动检测来进行语音通信的设备,包括:
[0110] 音频输入单元,所述音频输入单元被配置成顺序获得音频块,其中,所述音频块中的每个音频块包括一个或更多个音频帧;
[0111] 语音活动检测器,所述语音活动检测器被配置成对所述音频块进行所述语音活动检测;
[0112] 传输控制器,所述传输控制器被配置成:
[0113] 响应于针对所述音频块中的当前音频块做出发声起始的判决,取得所获得的音频块的序列的子序列,所述子序列紧临在所述当前音频块之前,其中,所述子序列具有预定长度,并且,针对所述子序列中的每个音频块做出了非语音的判决;以及
[0114] 响应于针对所述当前音频块做出非语音的判决,缓冲存储所述当前音频块;以及[0115] 发送器,所述发送器被配置成将所述当前音频块和所述子序列中的音频块发送给接收方,其中,所述子序列中的音频块被标识为再处理的音频块。
[0116] EE 8.根据EE7所述的设备,其中,所述传输控制器还被配置成:在所述发送器进行所述发送之前,通过将所述子序列中的最早音频块看作发声起始并且将所述子序列中的每个随后的音频块和所述当前音频块看作语音延续来再处理所述子序列。
[0117] EE 9.根据EE8所述的设备,其中,所述子序列的所述再处理包括:对所述子序列的所述音频块应用适于语音的增益。
[0118] EE 10.根据EE9所述的设备,其中,对于通过所述语音活动检测确定为非语音的每个音频块,将所述增益应用于所述音频块。
[0119] EE 11.根据EE8所述的设备,其中,所述子序列的所述再处理包括:对所述子序列的开始部分施加逐渐增强。
[0120] EE 12.根据EE7所述的设备,其中,在一个分组中发送所述当前音频块和所述子序列中的所述音频块。
[0121] EE 13.一种在语音通信中操作相同长度的至少一个抖动缓冲器的方法,包括:
[0122] 从一个或更多个发送方接收至少一个音频块;
[0123] 针对至少一个接收音频块中的每个音频块,
[0124] 如果所述接收音频块被标识为再处理的音频块,则
[0125] 确定所述接收音频块相对于与所述发送方相关联的抖动缓冲器的时间范围是否超时;
[0126] 如果确定所述接收音频块未超时,则用所述接收音频块来更新所述抖动缓冲器中与所述接收音频块对应于相同时间的条目;以及
[0127] 如果所述接收音频块没有被标识为再处理的音频块,则将所述接收音频块填入到与所述发送方相关联的所述抖动缓冲器中与所述接收音频块对应于相同时间的条目中。
[0128] EE 14.根据EE13所述的方法,其中,所述一个或更多个发送方包括至少两个发送方,并且,所述方法包括:
[0129] 如果确定所述接收音频块超时,则
[0130] 如果确定所述接收音频块与从相应抖动缓冲器中移出但是等待混合的条目对应于相同时间,则用所述接收音频块更新所述条目;以及
[0131] 如果确定所述接收音频块没有与从相应抖动缓冲器中移出但是等待混合的条目对应于相同时间,则将所述接收音频块发送给目的地。
[0132] EE 15.根据EE14所述的方法,其中,所述用接收音频块对条目的更新包括:
[0133] 如果所述条目包含音频块,则用所述接收音频块替换所述包含的音频块;以及[0134] 如果所述条目是空的,则将所述接收音频块填入到所述条目中。
[0135] EE 16.根据EE13所述的方法,其中,所述用接收音频块对条目的更新包括:
[0136] 如果所述条目包含由与所述接收音频块的源不同的源生成的音频块,则将所述接收音频块和所述包含的音频块混合成一个音频块,并且用所述混合音频块替换所述包含的音频块;
[0137] 如果所述条目包含由与所述接收音频块的源相同的源生成的音频块,则用所述接收音频块替换所述包含的音频块;以及
[0138] 如果所述条目是空的,则将所述接收音频块填入到所述条目中,以及
[0139] 所述方法还包括:
[0140] 将对应于语音处理器的所述抖动缓冲器中的音频块馈送给所述语音处理器。
[0141] EE 17.一种用于在语音通信中使用的设备,包括:
[0142] 相同长度的至少一个抖动缓冲器,所述相同长度的至少一个抖动缓冲器被配置成临时存储在所述语音通信中接收到的音频块;
[0143] 接收器,所述接收器被配置成从一个或更多个发送方接收至少一个音频块;以及[0144] 抖动缓冲器控制器,所述抖动缓冲器控制器被配置成:针对所述至少一个接收音频块中的每个音频块,
[0145] 如果所述接收音频块被标识为再处理的音频块,则
[0146] 确定所述接收音频块相对于与所述发送方相关联的抖动缓冲器的时间范围是否超时;
[0147] 如果确定所述接收音频块未超时,则用所述接收音频块来更新所述抖动缓冲器中与所述接收音频块对应于相同时间的条目;以及
[0148] 如果所述接收音频块没有被标识为再处理的音频块,则将所述接收音频块填入到与所述发送方相关联的所述抖动缓冲器中与所述接收音频块对应于相同时间的条目中。
[0149] EE 18.根据EE17所述的设备,其中,所述一个或更多个发送方包括至少两个发送方,并且,所述设备还包括:
[0150] 发送器,以及
[0151] 所述抖动缓冲器控制器还被配置成:如果确定所述接收音频块超时,则[0152] 如果确定所述接收音频块与从相应抖动缓冲器中移出但是等待混合的条目对应于相同时间,则用所述接收音频块更新所述条目;以及
[0153] 如果确定所述接收音频块没有与从相应抖动缓冲器中移出但是等待混合的条目对应于相同时间,则通过所述发送器将所述接收音频块发送给目的地。
[0154] EE 19.根据EE18所述的设备,其中,所述用接收音频块对条目的更新包括:
[0155] 如果所述条目包含音频块,则用所述接收音频块替换所述包含的音频块;以及[0156] 如果所述条目是空的,则将所述接收音频块填入到所述条目中。
[0157] EE 20.根据EE17所述的设备,还包括:
[0158] 语音处理器,所述语音处理器被馈送以相应抖动缓冲器中的音频块,以及[0159] 所述用接收音频块对条目的更新包括:
[0160] 如果所述条目包含由与所述接收音频块的源不同的源生成的音频块,则将所述接收音频块和所述包含的音频块混合成一个音频块,并且用所述混合音频块替换所述包含的音频块;
[0161] 如果所述条目包含由与所述接收音频块的源相同的源生成的音频块,则用所述接收音频块替换所述包含的音频块;以及
[0162] 如果所述条目是空的,则将所述接收音频块填入到所述条目中。
[0163] EE 21.一种在其上记录有计算机程序指令的计算机可读介质,当由处理器执行所述计算机程序指令时,所述指令使处理器执行一种基于语音活动检测来进行语音通信的方法,包括:
[0164] 顺序获得音频块,其中,所述音频块中的每个音频块包括一个或更多个音频帧;
[0165] 对所述音频块进行所述语音活动检测;以及
[0166] 响应于针对所述音频块中的当前音频块做出发声起始的判决,
[0167] 取得所获得的音频块的序列的子序列,所述子序列紧临在所述当前音频块之前,其中,所述子序列具有预定长度,并且,针对所述子序列中的每个音频块做出了非语音的判决;以及
[0168] 将所述当前音频块和所述子序列中的音频块发送给接收方,其中,所述子序列中的音频块被标识为再处理的音频块;以及
[0169] 响应于针对所述当前音频块做出非语音的判决,缓冲存储所述当前音频块。
[0170] EE 22.一种在其上记录有计算机程序指令的计算机可读介质,当由处理器执行所述计算机程序指令时,所述指令使处理器执行一种在语音通信中操作相同长度的至少一个抖动缓冲器的方法,包括:
[0171] 从一个或更多个发送方接收至少一个音频块;
[0172] 针对至少一个接收音频块中的每个音频块,
[0173] 如果所述接收音频块被标识为再处理的音频块,则
[0174] 确定所述接收音频块相对于与所述发送方相关联的抖动缓冲器的时间范围是否超时;
[0175] 如果确定所述接收音频块未超时,则用所述接收音频块来更新所述抖动缓冲器中与所述接收音频块对应于相同时间的条目;以及
[0176] 如果所述接收音频块没有被标识为再处理的音频块,则将所述接收音频块填入到与所述发送方相关联的所述抖动缓冲器中与所述接收音频块对应于相同时间的条目中。