使用说话者嵌入和所训练的生成模型的说话者日志
文献发布时间:2023-06-19 09:36:59
背景技术
说话者日志(diarization)是根据说话者身份,将输入音频流分成同质分段(segment)的过程。回答了在多说话者环境中“谁在何时说话”的问题。例如,可以利用说话者日志来标识输入音频流的第一分段可归因于第一人类说话者(没有特别地标识谁是第一人类说话者)、输入音频流的第二分段可归因于不同的第二人类说话者(没有特别地标识谁是第一人类说话者)、输入音频流的第三分段可归因于第一人类说话者等等。说话者日志具有广泛的应用,包括多媒体信息检索、说话者轮次分析和音频处理。
典型的说话者日志系统通常包括四个步骤:(1)语音分段,其中,将输入音频分段为假定具有单个说话者的短片段(section),并且过滤掉非语音片段;(2)音频嵌入提取,其中,从分段的片段中提取特定特征;(3)聚类,其中,确定说话者的数量,并且将所提取的音频嵌入聚类成这些说话者;以及可选地,(4)再分段,其中,进一步细化聚类结果以生成最终的日志结果。
利用这种典型的说话者日志系统,日志不能准确地识别在给定分段期间多个说话者说话的发生。相反,这样的典型系统将给定分段归因于仅一个说话者,或者不能将给定分段归因于任何说话者。这导致不正确的日志,并且可能对可能依赖于日志结果的其他应用生成不利影响。
而且,利用这样的典型的说话者系统,在每个步骤中都会引入错误,并且会传播到其他步骤,由此导致错误的日志结果,从而不利地影响可能依赖于错误的日志结果的其他应用。例如,由于长分段的低分辨率的结果和/或由于具有不足以生成准确的音频嵌入的音频的短分段的结果,在语音分段中可能会引入错误。作为另一个示例,可以在不使用任何全局信息的情况下,在本地生成音频嵌入,这可能附加或替代地引入错误。作为又一个示例,音频嵌入的聚类可以附加地或替代地引入错误,因为它涉及假定精度低的无监督学习。
发明内容
本文中描述了说话者日志技术,其使得能够处理音频数据序列以生成音频数据的一个或多个细化版本,其中,音频数据的每个细化版本分离单个相应的人类说话者的一个或多个话语,从而使得能够确定音频数据序列的哪一部分对应于相应的人类说话者。例如,假设音频数据序列包括来自第一人类说话者的第一话语、来自第二人类说话者的第二话语以及各种背景噪声的发生。本文公开的实现方式可以被用来生成第一细化的音频数据,该第一细化的音频数据仅包括来自第一人类说话者的第一话语,并且排除第二话语和背景噪声。此外,可以生成第二细化的音频数据,该第二细化的音频数据仅包括来自第二人类说话者的第二话语,并且排除第一话语和背景噪声。再者,在那些实现方式中,即使当第一和第二话语中的一个或多个在音频数据序列中重叠时,也可以分离第一和第二话语。
各种实现方式生成音频数据的细化版本,该音频数据的细化版本通过为单个人类说话者生成说话者嵌入,并且使用所训练的生成模型来处理音频数据,以及在处理期间,将说话者嵌入用在确定所训练的生成模型的隐藏层的激活中,分离单个人类说话者的话语。基于该处理,在所训练的生成模型上顺序地生成输出,并且该输出是音频数据的细化版本。
在为单个人类说话者生成说话者嵌入时,可以使用所训练的说话者嵌入模型来处理与该人类说话者相对应的一个或多个说话者音频数据实例,以生成一个或多个相应的输出实例。然后,可以基于一个或多个相应的输出实例来生成说话者嵌入。所训练的说话者嵌入模型可以是机器学习模型,诸如递归神经网络(RNN)模型,其将任何长度的相应的音频数据帧的特征序列接受为输入,并且可以用来将相应的嵌入生成为基于该输入的输出。使用所训练的说话者嵌入模型处理序列的音频数据帧的每个特征以生成相应的嵌入可以基于音频数据的相应实例的相应部分,诸如25毫秒或其他持续时间部分。音频数据帧的特征可以是例如音频数据帧的梅尔频率倒谱系数(MFCC)和/或其他特征。在所训练的说话者嵌入模型是RNN模型的情况下,RNN模型包括一个或多个存储器层,每个存储器层包括可以顺序地对其应用输入的一个或多个存储器单元,并且在所应用的输入的每次迭代中,可以利用存储器单元来基于该迭代的输入和基于(可以基于先前迭代的输入的)当前隐藏状态来计算新的隐藏状态。在一些实现方式中,存储器单元可以是长短期(LSTM)LSTM单元。在一些实现方式中,可以利用附加的或替代的存储器单元,诸如门控循环单元(“GRU”)。
作为生成用于给定说话者的说话者嵌入的一个示例,可以在注册过程期间,生成说话者嵌入,在注册过程中给定说话者说出多种话语。每个话语可以具有相同的短语(与文本相关),也可以具有不同的短语(与文本无关)。可以在说话者嵌入模型上处理与说出相应话语的给定说话者的每个实例相对应的音频数据的特征,以生成作为值的相应向量的相应输出。例如,可以处理用于第一话语的第一音频数据以生成值的第一向量,可以处理用于第二话语的第二音频数据以生成值的第二向量等等。然后,可以基于值的向量来生成说话者嵌入。例如,说话者嵌入本身可以是值的向量,诸如值的相应向量的形心或其他函数。
在利用(例如,在注册过程期间)预生成的用于给定说话者的说话者嵌入的实现方式中,本文所述的技术可以将预先生成的说话者嵌入用在生成音频数据的细化版本中,从而分离给定说话者的话语,其中,经由与注册过程相关联的客户端设备和/或数字系统(例如,自动助理),从用户接收音频数据。例如,如果经由给定用户的客户端设备接收音频数据和/或(例如,使用来自较早话语的语音指纹和/或其他生物特征验证)验证给定用户之后接收到音频数据,可以利用用于给定用户的说话者嵌入以实时地生成音频数据的细化版本。可以将这种细化版本用于各种目的,诸如细化的音频数据的语音到文本转换、验证音频数据的分段来自该用户,和/或本文所述的其他目的。
在一些附加或替代实现方式中,用在生成音频数据的细化版本中的说话者嵌入可以基于(待细化的)音频数据本身的一个或多个实例。例如,可以使用语音活动检测器(VAD)来确定音频数据中的语音活动的第一实例,以及可以将第一实例的一部分用在生成用于第一人类说话者的第一说话者嵌入中。例如,可以基于使用说话者嵌入模型,处理语音活动的第一实例的第一X(例如0.5、1.0、1.5、2.0)秒的特征,生成第一说话者嵌入(可以假定语音活动的第一实例是来自单个说话者)。例如,基于该处理生成为输出的值的向量可以被用作第一说话者嵌入。然后,可以利用第一说话者嵌入来生成音频数据的第一细化版本,其分离第一说话者的话语,如本文所述。在那些实现方式中的一些实现方式中,可以利用音频数据的第一细化版本来确定对应于第一说话者话语的音频数据的那些分段以及可以利用VAD来确定音频数据中,在那些分段之外发生的语音活动的附加实例(如果有的话)。如果确定了附加实例,则可以使用说话者嵌入模型,基于附加实例的处理部分,为第二人类说话者生成第二说话者嵌入。然后,可以利用第二说话者嵌入来生成音频数据的第二细化版本,其分离了第二说话者的话语,如本文所述。该过程可以继续,直到例如在音频数据中没有识别出归因于附加人类说话者的进一步的话语为止。因此,在这些实现方式中,可以由音频数据本身生成用在生成音频数据的细化版本中的说话者嵌入。
不管用于生成说话者嵌入的技术如何,本文公开的实现方式都使用所训练的生成模型来处理音频数据和说话者嵌入,以生成音频数据的细化版本,其分离与说话者嵌入相对应的说话者的话语(如果有的话)。例如,可以使用所训练的生成模型来顺序地处理音频数据,并且在顺序处理期间,将说话者嵌入用在确定用于所训练的生成模型的层的激活中。所训练的生成模型可以是序列到序列模型,并且可以将音频数据的细化版本顺序地生成为来自所训练的生成模型的直接输出。所训练的生成模型的层是隐藏层,并且可以包括例如扩张因果(dilated causal)卷积层的堆叠。扩张因果卷积层的堆叠使得卷积层的感受野能够随深度呈指数增长,这对于建模音频信号中的远程时间依存关系是有益的。在各种实现方式中,使用所训练的生成模型处理的音频数据可以处于波形级别,并且使用所训练的生成模型生成的细化的音频数据也可以处于波形级别。在一些实现方式中,所训练的生成模型具有WaveNet模型架构,并且已经根据本文描述的技术训练过。
在各种实现方式中,训练所训练的生成模型以对条件分布p(x|h)进行建模,其中x表示音频数据的细化版本,以及h表示说话者嵌入。更正式地说,p(x|h)可以表示为:
其中,x
此外,在各种实现方式中,可以由下述等式表示在所训练的生成模型的一层或多层的每一层处(例如,在每个因果卷积层处)的输出过滤器:
其中,W表示过滤器,而V表示另一过滤器。因此,通过利用过滤器V变换h、利用过滤器W变换音频样本x,并且将两个运算的结果相加,执行将说话者嵌入h与音频样本x的组合。这两个运算的结果(z)将成为下一层的输入x。在训练生成模型期间学习的生成模型的权重可以包括过滤器W和V的权重。本文提供了生成模型及其训练的附加描述。
鉴于给定说话者的给定说话者嵌入,利用所训练的生成模型来处理给定音频数据将生成与当给定音频数据仅包括来自给定说话者的话语时的给定音频数据相同的细化的音频数据。此外,将导致当给定音频数据缺少来自给定说话者的任何话语时,为空/零的细化的音频数据。更进一步,当给定音频数据包括来自给定说话者的话语和附加声音时(例如,重叠和/或不重叠其他人类说话者的话语),将导致排除附加声音,同时隔离来自给定说话者的话语的细化的音频数据。
音频数据的细化版本可以由各种组件利用并且用于各种目的。作为一个示例,可以对分离来自单个人类说话者的话语的音频数据的细化版本执行语音到文本处理。由于例如细化版本缺少背景噪声、其他用户的话语(例如重叠话语)等,相对于对音频数据(或音频数据的替代预处理版本)执行处理,对音频数据的细化版本执行语音到文本处理可以提高语音到文本处理的准确性。此外,对音频数据的细化版本执行语音到文本处理确保所得的文本属于单个说话者。改进的准确性和/或确保所得的文本属于单个说话者可以直接导致进一步的技术优势。例如,提高的文本准确性可以增加依赖于所得文本的一个或多个下游组件(例如,自然语言处理器、基于以文本的自然语言处理为基础而确定的意图和参数生成响应的模块)的准确性。同样,例如,当与自动助理和/或其他交互式对话系统结合地实现时,提高的文本准确性可以减少交互式对话系统无法将所说的话语转换为文本的机会和/或减少交互式对话系统可能会错误地将口头话语转换为文本,从而导致对话系统提供对话语的错误的响应的机会。这可以减少对话轮次的数量,否则用户将需要对交互式对话系统再次提供所说的话语和/或其他澄清。
附加地或可替代地,音频数据的细化版本可以被用来将音频数据的分段分配给相应的人类说话者。将分段分配给人类说话者可以在语义上有意义(例如,识别说话者的属性),或者可以仅指示该分段属于一个或多个非语义上有意义的说话者标签中的哪一个。与其他说话者日志技术相比,本文公开的实现方式可以导致生成更健壮和/或更准确的分配。例如,可以通过利用本文公开的实现方式,减轻其他技术(诸如上文背景技术中提到的技术)引入的各种错误。附加地或可替代地,使用本文公开的实现方式可以使得能够确定包括来自两个或以上人类说话者中的每一个的相应话语的分段,这是利用各种其他说话者日志技术无法实现的。此外,附加地或可替代地,与现有的说话者日志技术相比,本文公开的实现方式可以使得能够以计算上更有效的方式执行说话者日志。例如,在本文公开的各种实现方式中,可以消除现有技术的计算密集型聚类。
在各种实现方式中,本文描述的技术被用来生成说话者日志结果、执行自动语音识别(ASR)(例如,语音到文本处理)和/或对(例如,经由应用编程接口(API))作为语音处理请求的一部分提交的音频数据的其他处理。在那些实现方式中的一些实现方式中,响应于语音处理请求来生成对音频数据的处理的结果,并且将其发送回发送语音处理请求的计算设备,或者发送回相关的计算设备。
在各种实现方式中,本文描述的技术被用来生成由客户端设备的麦克风捕获的音频数据的说话者日志结果,该客户端设备包括用于自动助理的自动助理界面。例如,音频数据可以是捕获来自一个或多个说话者的所说的话语的音频数据流,并且本文所述的技术可以被用来生成说话者日志结果、执行自动语音识别(ASR),和/或对音频数据流的其他处理。
提供以上描述作为本文公开的各种实现方式的概述。在本文中更详细地描述这些各种实现方式以及附加实现方式。
在一些实现方式中,提供了一种方法,该方法包括生成针对人类说话者的说话者嵌入。生成针对人类说话者的说话者嵌入可以可选地包括:使用所训练的说话者嵌入模型来处理与所述人类说话者相对应的一个或多个说话者音频数据实例,以及基于一个或多个输出实例生成所述说话者嵌入,每个输出实例基于使用所训练的说话者嵌入模型来处理所述一个或多个说话者音频数据实例中的相应实例而生成。该方法进一步包括:接收音频数据,所述音频数据捕获所述人类说话者的一个或多个话语,并且还捕获不是来自所述人类说话者的一个或多个附加声音;生成所述音频数据的细化版本,其中,所述音频数据的细化版本将所述人类说话者的一个或多个话语与不是来自所述人类说话者的一个或多个附加声音分离,并且对所述音频数据的细化版本执行进一步处理。
这些和其他实现方式可以包括下述一个或多个特征。
在一些实现方式中,生成音频数据的细化版本包括:使用所训练的生成模型顺序地处理所述音频数据并且在所述顺序处理期间,在确定所训练的生成模型的层的激活中使用所述说话者嵌入,以及基于所述顺序处理并且作为来自所训练的生成模型的直接输出,顺序地生成所述音频数据的细化版本。
在一些实现方式中,执行进一步处理包括:对所述音频数据的细化版本执行语音到文本处理,以生成针对所述人类说话者的一个或多个话语的预测文本;和/或基于至少对应于所述音频数据的细化版本中的音频的阈值水平的一个或多个时间部分,将单个给定的说话者标签分配给所述音频数据的一个或多个时间部分。
在一些实现方式中,提供一种方法,包括在客户端设备处调用自动助理客户端,其中,调用所述自动助理客户端是响应于在所接收的用户界面输入中检测到一个或多个调用队列。该方法进一步包括:响应于调用所述自动助理客户端:对经由所述客户端设备的一个或多个麦克风接收到的初始口头输入执行某些处理;基于所述初始口头输入的某些处理生成响应动作;使得执行所述响应动作;以及确定对所述客户端设备上的自动助理客户端激活继续收听模式。该方法进一步包括响应于激活所述继续收听模式:在使得执行所述响应动作的至少一部分后,自动地监视附加口头输入;在所述自动监视期间接收音频数据;以及确定所述音频数据是否包括来自提供所述初始口头输入的同一人类说话者的任何附加口头输入。确定所述音频数据是否包括来自同一人类说话者的附加口头输入包括:识别用于提供所述初始口头输入的人类说话者的说话者嵌入;生成分离来自所述人类说话者的任何音频数据的所述音频数据的细化版本,其中,生成所述音频数据的细化版本包括:使用所训练的生成模型处理所述音频数据,并且在所述处理期间,将所述说话者嵌入用在确定用于所训练的生成模型的层的激活中;以及基于所述处理,生成所述音频数据的细化版本;以及基于所述音频数据的细化版本的任何部分是否至少对应于音频的阈值水平,确定所述音频数据是否包括来自同一人类说话者的任何附加口头输入。该方法进一步包括响应于确定所述音频数据不包括来自同一人类说话者的任何附加口头输入,抑制下述中的一者或两者:对于所述音频数据,执行至少一些某些处理;以及生成适合于所述音频数据的任何附加响应动作。
在一些实现方式中,提供一种方法,该方法包括:接收经由所述客户端设备的一个或多个麦克风捕获的音频数据流;从所述客户端设备的本地存储中检索用于所述客户端设备的人类用户的先前生成的说话者嵌入;在接收所述音频数据流的同时,生成所述音频数据的细化版本,其中,所述音频数据的细化版本将所述人类用户的一个或多个话语与不是来自所述人类说话者的任何附加声音分离,并且其中,生成所述音频数据的细化版本包括:使用所训练的生成模型处理所述音频数据,并且使用说话者嵌入(例如在所述处理期间,确定用于所训练的生成模型的层的激活中);以及基于所述处理并且作为来自所训练的生成模型的直接输出,生成所述音频数据的细化版本。该方法进一步包括:对所述音频数据的细化版本执行本地语音到文本处理,和/或将所述音频数据的细化版本发送到远程系统,以使得对所述音频数据的细化版本执行远程语音到文本处理。
在一些实现方式中,提供一种训练机器学习模型以生成音频数据的细化版本的方法,该音频数据的细化版本分离目标人类说话者的任何话语。该方法包括:识别包括仅来自第一人类说话者的口头输入的音频数据的实例;为所述第一人类说话者生成说话者嵌入;识别缺少来自所述第一人类说话者的任何口头输入并且包括来自至少一个附加人类说话者的口头输入的音频数据的附加实例;生成组合所述音频数据的实例和所述音频数据的附加实例的音频数据的混合实例;使用所述机器学习模型,处理所述音频数据的混合实例并且在所述处理期间,将所述说话者嵌入用在确定用于所述机器学习模型的层的激活中;基于所述处理并且作为所述机器学习模型的直接输出,生成所述音频数据的预测细化版本;基于将所述音频数据的预测细化版本与包括仅来自所述第一人类说话者的口头输入的音频数据的实例进行比较来生成损失;以及基于所述损失,更新所述机器学习模型的一个或多个权重。
另外,一些实现方式包括一个或多个计算设备的一个或多个处理器,其中,一个或多个处理器可操作以执行存储在相关联的存储器中的指令,并且其中,所述指令被配置为使得执行本文所述的任一方法。一些实现方式还包括一个或多个非暂时性计算机可读存储介质,其存储可由一个或多个处理器执行以执行本文所述的任一方法的计算机指令。
应当意识到,本文更详细描述的前述概念和附加概念的所有组合被认为是本文公开的主题的一部分。例如,出现在本公开的结尾处的所要求保护的主题的所有组合被认为是本文公开的主题的一部分。
附图说明
图1示出了根据本文公开的各种实现方式,训练生成模型的示例。
图2示出了使用地面实况音频数据和附加音频数据来生成混合音频数据以用在用来训练图1的生成模型的训练实例中的示例。
图3描绘了示出根据本文公开的各种实现方式,生成用于训练生成模型的训练实例的示例方法的流程图。
图4描绘了示出根据本文公开的各种实现方式的训练生成模型的示例方法的流程图。
图5示出了使用音频数据、说话者嵌入和生成模型来生成音频数据的细化版本的示例。
图6A描绘了示出根据本文公开的各种实现方式,使用音频数据、说话者嵌入和生成模型来生成音频数据的细化版本的示例方法的流程图。
图6B示出了音频数据,以及可以基于图6A的示例方法生成的音频数据的细化版本的示例。
图7A描绘了示出根据本文公开的各种实现方式,使用音频数据、说话者嵌入和生成模型来生成音频数据的多个细化版本的示例方法的流程图。
图7B示出了音频数据,以及可以基于图7B的示例方法生成的音频数据的细化版本的示例。
图8是可以执行本文公开的各种实现方式的示例环境的框图。
图9是可以执行本文公开的各种实现方式的另一示例环境的框图。
图10示出了根据本文公开的各种实现方式,可由所训练的生成模型执行的处理的示例。
图11示出了计算设备的示例架构。
具体实施方式
首先转向图1,示出了训练生成模型156的示例。生成模型156可以是序列到序列模型,其隐藏层包括扩张因果卷积层的堆叠。扩张因果卷积层的堆叠使得卷积层的感受野能够随深度呈指数增长,这对于建模音频信号中的远程时间依存关系可能是有益的。在一些实现方式中,所训练的生成模型具有WaveNet模型架构。
生成模型156被训练以用来基于处理音频数据和目标人类说话者的说话者嵌入来生成音频数据的细化版本,其分离目标说话者的话语(如果有的话)。如本文所述,生成模型156可以被训练以将用于该迭代的音频数据的相应序列接受为每次迭代的输入(其中,该序列中的音频数据的时间步长的数量取决于生成模型的感受野的大小)并且被用来将音频数据的细化版本的序列的相应时间步长生成为每次迭代的输出。音频数据的细化版本的序列的相应时间步长可以基于音频数据的相应时间步长,以及在感受野中捕获的音频数据的先前时间步长,但不会基于音频数据的未来时间步长。如本文进一步所述,还使用目标说话者的说话者嵌入来生成输出。例如,在音频数据序列的处理期间,对生成模型156的层的激活可以基于说话者嵌入。因此,生成模型156,一旦被训练,就可以被用来将音频数据的细化版本生成为生成模型156的直接输出,并且被用来基于音频数据的处理和目标说话者的说话者嵌入来生成细化版本。生成模型156可以接受以其原始波形格式的音频数据,并且同样可以生成以原始波形格式的细化的音频数据。
所训练的生成模型156可以被训练以对条件分布p(x|h)建模,其中,x表示音频数据的细化版本,h代表说话者嵌入。更正式地说,p(x|h,s)可以被表示为:
其中,x
其中,W表示过滤器,而V表示另一过滤器。
转到图10,示出了可以由所训练的生成模型执行的处理的示例。在图10中,正在所训练的生成模型的隐藏层157A、157B和157C上处理输入音频数据1070(源音频数据)的当前时间步长1070
再次转到图1,还示出了训练实例引擎130,其生成多个训练实例170A-N,其被存储在训练实例数据库170中以用于训练生成模型156。在图1中详细地示出了训练实例170A。训练实例170A包括音频数据171A、给定说话者172A的嵌入和地面实况音频数据173A(在本文中也被称为“参考音频数据”)的混合实例,地面实况音频数据173A是仅具有来自对应于嵌入172A的给定说话者的话语的音频数据的实例。
训练实例引擎130可以基于来自音频数据数据库160的实例的音频数据的实例,并且通过与说话者嵌入引擎125的交互来生成训练实例170A-N。例如,训练实例引擎130可以从音频数据数据库160的实例中检索地面实况音频数据173A,并且将其用作用于训练实例170A的地面实况音频数据。
此外,训练实例引擎130可以将地面实况音频数据173A提供给说话者嵌入引擎125,以从说话者嵌入引擎125接收给定说话者172A的嵌入。说话者嵌入引擎125可以使用说话者嵌入模型152来处理地面实况音频数据173A的一个或多个分段,以生成给定说话者172A的嵌入。例如,说话者嵌入引擎125可以利用VAD来确定包括语音活动的地面实况音频数据173A的一个或多个分段,并且基于使用说话者嵌入模型152,处理这些分段的一个或多个分段来确定给定说话者172A的嵌入。例如,可以使用说话者嵌入模型152来处理所有分段,并且可以将基于该处理生成的所得的最终输出用作给定说话者172A的嵌入。而且,例如,可以使用说话者嵌入模型152来处理第一分段以生成第一输出,可以使用说话者嵌入模型152来处理第二分段以生成第二输出等-以及输出的形心被用作给定说话者172A的嵌入。
训练实例引擎130通过将地面实况音频数据173A与来自音频数据数据库160的实例的音频数据的附加实例进行组合来生成音频数据171A的混合实例。例如,音频数据的附加实例可以是包括一个或多个其他人类说话者和/或背景噪声的实例。
转到图2,示意性地示出了地面实况音频数据173A。箭头示出了时间,并且地面实况音频数据173A中的三个垂直阴影区域表示音频数据的分段,其中,“说话者A”正提供相应的话语。值得注意的是,地面实况音频数据173A不包括(或最小限度地)附加声音。如上所述,可以在训练实例170A中利用地面实况音频数据。此外,可以基于说话者嵌入引擎125对地面实况音频数据173A的一个或多个分段的处理,生成训练实例170A中的给定说话者172A的嵌入。
在图2中还示意性地示出了可以从音频数据数据库160(图1)的实例中检索的附加音频数据A 164A。箭头示出时间,并且附加音频数据A 164A中的两个对角阴影区域表示音频数据的分段,其中,“说话者C”正提供相应的话语。值得注意的是,“说话者C”不同于提供地面实况音频数据173A中的话语的“说话者A”。
在图2中还示意性地示出了通过将地面实况音频数据163A和附加音频数据A 164A组合而生成的混合音频数据A 171A。混合音频数据A 171A包括来自地面实况音频数据173A的阴影区域(垂直阴影)和来自附加音频数据A 164A的阴影区域(对角阴影)。因此,在混合音频数据A 171A中,包括“说话者A”和“说话者C”话语两者,并且“说话者A”话语的一部分与“说话者B”话语的一部分重叠。如上所述,可以在训练实例170A中利用混合音频数据A171A。
此外,可以生成训练实例170A-N中的附加训练实例,包括给定说话者172A的嵌入、地面实况音频数据173A和混合音频数据B 171B。混合音频数据B 171B在图2中示意性地示出并且通过将地面实况音频数据163A和附加音频数据B 164B组合来生成。附加音频数据B164B包括来自“说话者B”的话语(点画阴影),并且包括背景噪声(阴影线阴影)。混合音频数据B 171B包括来自地面实况音频数据173A的阴影区域(垂直阴影)和来自附加音频数据A164B的阴影区域(点画阴影和阴影线阴影)。因此,在混合音频数据B 171B中,包括“说话者A”和“说话者B”话语两者以及“背景噪声”。此外,“说话者A”话语的一部分与“背景噪声”以及“说话者B”话语的一部分重叠。
尽管参考图2描述了仅两个训练实例,但将理解,可以生成更多的训练实例。例如,可以利用地面实况音频数据17SA,生成附加训练实例(例如,通过基于附加音频数据实例生成附加混合音频数据)。同样,例如,可以生成附加训练实例,分别利用替代的地面实况音频数据(每个都包括替代说话者)并且每个分别包括替代说话者嵌入(其对应于地面实况音频数据的替代说话者)。
在基于训练实例170A训练生成模型156时,细化引擎120在将给定说话者172A的嵌入用在确定生成模型156的层的激活中,将音频数据171A的混合实例顺序地应用为生成模型156的输入,以顺序生成预测音频数据175A的时间步长。例如,细化引擎120可以在初始迭代时,将音频数据171A的混合实例的第一时间步长应用为生成模型156的输入,并且基于处理模型156上的输入(并且基于嵌入172A),生成预测音频数据的第一时间步长。继续该示例,细化引擎120接下来在第二迭代时,将音频数据171A的混合实例的第一时间步长和第二时间步长应用为生成模型156的输入,并且基于处理模型156上的输入(并且基于嵌入172A),生成预测音频数据的第二时间步长。这可以继续直到处理了音频数据171A的混合实例的所有时间步长为止(后续迭代包括音频数据的当前时间步长和最多N个在前时间步长,其中,N取决于模型156的感受野)。
损失模块132根据预测音频数据175A和地面实况音频数据173A来生成损失174A。损失174A被提供给更新模块134,更新模块134基于该损失来更新生成模型156。例如,更新模块134可以基于该损失并且使用反向传播(例如,梯度下降)来更新生成模型156的因果卷积层(其对上述等式中的过滤器进行建模)。
尽管图1仅详细地示出了单个训练实例170A,但是将理解,训练实例数据库170可以包括大量的附加训练实例。附加训练实例可以包括各种长度的训练实例(例如,基于音频数据的各种持续时间)、具有各种地面实况音频数据和说话者嵌入的训练实例以及具有音频数据的相应混合实例中的各种附加声音的训练实例。此外,应当理解,大量的附加训练实例将被用来训练生成模型156。
现在转到图3,示出了根据本文公开的各种实现方式,生成用于训练生成模型的训练实例的示例方法300。为了方便起见,参考执行操作的系统,描述图3的流程图的操作。该系统可以包括各种计算机系统的各种组件,诸如训练实例引擎130和/或一个或多个GPU、CPU和/或TPU。此外,尽管以特定顺序示出了方法300的操作,但这并不意味着是限制性的。可以重新排序、省略或添加一个或多个操作。
在框302,系统选择音频数据的地面实况实例,包括来自单个人类说话者的口头输入。
在框304,系统生成用于单个人类说话者的说话者嵌入。例如,可以通过使用说话者嵌入模型,处理音频数据的地面实况实例的一个或多个分段来生成说话者嵌入。
在框306,系统选择缺少来自单个人类说话者的口头输入的音频数据的附加实例。例如,音频数据的附加实例可以包括来自其他说话者的口头输入和/或背景噪声(例如,音乐、警报声、空调噪声等)。
在框308,系统生成将音频数据的地面实况实例与音频数据的附加实例进行组合的音频数据的混合实例。
在框310处,系统生成并存储训练实例,该训练实例包括:音频数据的混合实例、说话者嵌入以及音频数据的地面实况实例。
在框312处,系统确定是否使用音频数据的同一地面实况实例和同一说话者嵌入,而不是基于另一附加实例的音频数据的不同混合实例来生成附加训练实例。如果是,则系统返回到框306并选择不同的附加实例,进行到框308并且生成将音频数据的同一地面实况实例与不同的附加实例相结合的音频数据的另一混合实例,然后进行到框310,并且生成并存储相应的训练实例。
如果在框312的迭代中,系统确定不使用音频数据的同一地面实况实例和同一说话者嵌入来生成附加训练实例,则系统进行到框314,并且确定是否使用音频数据的另一地面实况实例来生成附加训练实例。如果是,则系统利用具有不同的人类说话者的音频数据的不同地面实况实例、利用用于不同人类说话者的不同说话者嵌入,并且可选地,利用音频数据的不同附加实例,执行框302、304、306、308、310和312的另一迭代。
如果在框314的迭代处,系统确定不使用音频数据的另一地面实况实例来生成附加训练实例,则系统进行到框316,并且训练实例的生成结束。
现在转到图4,示出了根据本文公开的各种实现方式,训练生成模型的示例方法400。为了方便起见,参考执行操作的系统,描述图4的流程图的操作。该系统可以包括各种计算机系统的各种组件,诸如细化引擎120和/或一个或多个GPU、CPU和/或TPU。此外,尽管以特定顺序示出了方法400的操作,但这并不意味着是限制性的。可以重新排序、省略或添加一个或多个操作。
在框402,系统选择包括音频数据的混合实例、说话者嵌入和地面实况音频数据的训练实例。例如,系统可以选择根据图3的方法300生成的训练实例。
在框404,系统使用机器学习模型(例如,生成模型156),并且在确定用于机器学习模型的层的激活中使用说话者嵌入,顺序地处理音频数据的混合实例。
在框406,基于框404的顺序处理,系统顺序地生成音频数据的混合实例的预测细化版本,作为机器学习模型的直接输出。
在框408,系统基于将音频数据的混合实例的预测细化版本与音频数据的地面实况实例进行比较来生成损失。
在框410,系统基于所生成的损失来更新机器学习模型的权重。
在框412,系统确定是否执行机器学习模型的更多训练。如果是,则系统返回到框402,选择附加训练实例,然后基于附加训练实例来执行框404、406、408和410的迭代,然后执行框412的附加迭代。在一些实现方式中,如果存在一个或多个附加的未处理的训练实例和/或如果还不满足其他标准,则系统可以确定执行更多的训练。其他标准可以包括例如是否发生了出现次数(epoch)的阈值数和/或是否发生了训练的阈值持续时间。尽管参考非批量学习技术描述了方法400,但是可以附加地和/或替代地利用批量学习。
如果在框412的迭代处,系统确定不执行更多训练,则系统可以进行到框416,其中,系统考虑所训练的机器学习模型,并且提供机器学习模型以供使用。例如,系统可以提供所训练的机器学习模型以用在本文所述的方法600(图6A)和700(7A)的一者或两者中。
图5示出了使用音频数据、说话者嵌入和生成模型来生成音频数据的细化版本的示例。生成模型156可以与图1的生成模型156相同,但是已经被训练(例如,如参考图1和/或图3所描述地进行训练)。
在图5中,细化引擎120接收音频数据570的序列。音频数据570可以是例如以在线方式(例如,实时地或近实时地)处理的流式音频数据,或者是先前已经录制并且提供给细化引擎120的非流式音频数据。细化引擎120还从说话者嵌入引擎125接收说话者嵌入126。说话者嵌入126是用于给定人类说话者的嵌入,并且说话者嵌入引擎125可以基于使用说话者嵌入模型152,处理来自给定说话者的音频数据的一个或多个实例来生成说话者嵌入126。如本文所述,在一些实现方式中,说话者嵌入126基于来自给定说话者的音频数据的先前实例,先前由说话者嵌入引擎125生成。在那些实现方式的一些实现方式中,说话者嵌入126与给定说话者的账户和/或给定说话者的客户端设备相关联,并且可以基于来自客户端设备和/或来自已经授权账户的数字系统的音频数据570,提供说话者嵌入126以与音频数据570一起使用。还如本文所述,在一些实现方式中,说话者嵌入引擎125基于音频数据570本身来生成说话者嵌入126。例如,可以对音频数据570执行VAD以确定音频数据中的语音活动的第一实例,并且说话者嵌入引擎125可以将第一实例的一部分用在生成说话者嵌入126中。
细化引擎120将说话者嵌入126用在确定用于生成模型156的层的激活中,将音频数据570顺序地应用为生成模型156的输入,以顺序地生成细化的音频数据573的时间步长。细化的音频数据573可以:当音频数据570仅包括来自与说话者嵌入126相对应的说话者的话语时,与音频数据570相同;当音频数据570缺少来自与说话者嵌入126相对应的说话者的任何话语时,为空/零;或者当音频数据570包括来自说话者的话语和附加声音(例如,重叠其他人类说话者的话语)时,排除附加声音同时分离来自与说话者嵌入126相对应的说话者的话语。
然后,细化引擎120将细化的音频数据573提供给一个或多个附加组件135。虽然图5示出了基于单个说话者嵌入126生成细化的音频数据573的单个实例,应当理解,在各种实现方式中,可以生成细化的音频数据的多个实例,每个实例基于音频数据570和唯一人类说话者的唯一说话者嵌入。
如上所述,细化引擎120将细化的音频数据573提供给一个或多个附加组件135。在一些实现方式中,细化引擎120以在线方式提供细化的音频数据573(例如,可以在仍然生成剩余部分的同时,提供细化的音频数据573的一部分)。在一些实现方式中,附加组件135包括客户端设备或其他计算设备(例如,服务器设备),并且音频数据570被接收为由计算设备(或相关计算设备)提交的语音处理请求的一部分。在那些实现方式中,响应于接收到语音处理请求,生成细化的音频数据573,并且响应于接收到语音处理请求,将细化的音频数据573发送到计算设备。可选地,可以响应于语音处理请求(例如,语音到文本处理、自然语言理解),附加地执行其他(未示出的)语音处理,并且响应于该请求,附加地或替代地发送这些语音处理的结果。
在一些实现方式中,附加组件135包括自动助理的一个或多个组件,诸如(例如,执行语音到文本转换的)自动语音识别(ASR)组件和/或自然语言理解组件。例如,音频数据570可以是基于来自客户端设备的一个或多个麦克风的输出的流式音频数据,该客户端设备包括用于与自动助理交互的自动助理界面。自动助理可以包括细化引擎120(或与细化引擎120通信),并且发送细化的音频数据573可以包括将其发送到自动助理的一个或多个其他组件。
现在转到图6A、6B、7A和7B,提供了生成音频数据的细化版本并利用这种细化版本的附加描述。
图6A示出了根据本文公开的各种实现方式,使用音频数据、说话者嵌入和生成模型来生成音频数据的细化版本的示例方法600。为了方便起见,参考在图6B中示意性表示的音频数据670和细化的音频数据675,描述图6A的流程图的某些方面的操作。另外,为了方便起见,参考执行操作的系统,描述图6A的流程图的操作。该系统可以包括各种计算机系统的各种组件,诸如说话者嵌入引擎125、细化引擎120和/或一个或多个GPU、CPU和/或TPU。在各种实现方式中,可以使用本地存储在客户端设备处的说话者嵌入和机器学习模型,由客户端设备执行图6A的一个或多个框。此外,尽管以特定顺序示出了方法600的操作,但这并不意味着是限制性的。可以重新排序、省略或添加一个或多个操作。
在框602,系统接收捕获人类说话者的话语和不是来自该人类说话者的附加声音的音频数据。在一些实现方式中,音频数据是流式音频数据。作为一个示例,在框602,系统可以接收图6B的音频数据670,包括来自“说话者A”的话语(垂直阴影),以及来自“说话者B”的话语(点画阴影)和“背景噪声”(阴影线阴影)。
在框604,系统选择针对人类说话者的先前生成的说话者嵌入。例如,系统可以选择用于“说话者A”的先前生成的说话者嵌入。例如,说话者嵌入可以先前已经基于在生成音频数据的客户端设备处接收的、来自“说话者A”的紧接在前的话语生成,并且可以基于“说话者A”是紧接在前的话语的说话者来选择。同样,例如,可以先前已经在“说话者A”对自动助理、客户端设备和/或其他数字系统执行的注册过程期间生成说话者嵌入。在这种实例中,可以基于由客户端设备生成的音频数据和/或经由用于数字系统的“说话者A”账户来选择说话者嵌入。作为一个特定实例,可以基于“说话者A”最近被验证为数字系统的活跃用户,将在框602处接收到的音频数据确定为来自“说话者A”。例如,语音指纹、图像识别、密码和/或其他验证可以被用来确定“说话者A”当前处于活动状态,因此,可以选择用于“说话者A”的说话者嵌入。
在框606,系统使用机器学习模型(例如,生成模型156),并且在确定机器学习模型的层的激活中使用说话者嵌入,顺序地处理音频数据。
在框608,系统基于框606的顺序地处理,顺序地生成音频数据的细化版本,作为机器学习模型的直接输出。例如,系统可以生成在图6B中示意性示出的细化的音频数据675,其中,仅保留了“说话者A”的话语。
然后,系统可选地执行可选框610、612和614和/或可选框616、618和/或620。
在框610,系统基于在框608处生成的细化的音频数据,确定音频数据是否包括来自对应于框604的说话者嵌入的人类说话者的口头输入。例如,如果细化的音频数据为空/零(例如,所有音频数据均小于阈值水平),则系统可以确定音频数据不包括来自与说话者嵌入相对应的人类说话者的任何口头输入。另一方面,如果细化的音频数据包括一个或多个非空分段(例如,超过阈值水平),则系统可以确定音频数据确实包括来自与说话者嵌入相对应的人类说话者的口头输入。
如果在框610的迭代处,系统确定音频数据不包括来自与说话者嵌入相对应的人类说话者的任何口头输入,则系统在框612处,确定进行到框614并且抑制ASR和/或音频数据和细化的音频数据的其他处理。因此,在那些实现方式中,不会将资源不必要地浪费在执行ASR和/或其他处理中,诸如执行ASR和/或其他处理中消耗的计算资源和/或当由远程系统执行ASR和/或其他处理时,用来发送音频数据(或细化的音频数据)的网络资源。
可以在各种情况下执行框610、612和614,以确保在对这样的音频数据执行各种处理(例如,ASR和/或意图确定)之前和/或在从最初生成音频数据的设备发送这些音频数据之前,所接收的音频数据中的任何口头输入都来自特定的人类说话者。除了节省计算资源和网络资源之外,这还可以促进不是来自特定人类说话者并且不旨在由自动助理和/或其他数字系统进行进一步处理的音频数据的私密性。在那些实现方式的一些实现方式中,至少在接收音频数据的客户端设备当处于连续收听模式时接收到音频数据时,才可以执行框610、612和614。例如,在特定的人类说话者先前经由客户端设备明确地调用了自动助理、提供了口头输入并从自动助理接收到响应内容之后,该设备可以处于连续收听模式。例如,在提供至少一部分响应内容之后的一段时间内,自动助理可以继续执行音频数据的有限处理。在那些实现方式中,有限处理可以包括(或限于)框602、604、606、608、610、612和614,并且可以被执行以确保响应于框612处的“是”确定,仅执行音频数据的进一步处理。例如,基于特定人类说话者先前已经明确调用自动助理,框604的说话者嵌入可以是该特定人类说话者的嵌入,从而确保如果该同一特定人类说话者提供进一步话语,则仅执行进一步处理。这可以如上所述防止资源浪费,并且进一步防止基于由音频数据捕获的、来自其他人类说话者(例如,与特定人类说话者共同出现的其他人类说话者、在音频数据中捕获的电视或广播中的其他人类说话者等)的话语而采取的错误动作。
在框616,系统通过对细化的音频数据执行语音到文本处理来生成文本。如上所述,在一些实现方式中,框616可以在框608之后执行,或者在一些实现方式中,仅在执行框610和框612的“是”确定之后执行。
在框618,系统对在框616生成的文本执行自然语言处理(NLP)。例如,该系统可以执行NLP来确定文本的意图(以及由此确定人类说话者的话语的意图)以及可选地地,确定用于该意图的一个或多个参数。
在框620,系统基于框620的NLP生成并提供响应。例如,如果文本是“weather inLos Angeles(洛杉矶的天气)”,则来自NLP的意图可以是“weather forecast(天气预报)”,位置参数为“Los Angeles,CA(CA,洛杉矶)”,并且该系统可以向远程系统提供针对洛杉矶的天气预报的结构化请求。该系统可以响应于结构化请求来接收响应,并且提供对人类说话者的话语的可听和/或可视渲染响应的响应。
图7A示出了根据本文公开的各种实现方式,使用音频数据、说话者嵌入和生成模型来生成音频数据的多个细化版本的示例方法700。为了方便起见,参考在图7B中示意性地示出的音频数据770、第一细化的音频数据775A和第二细化的音频数据775B来描述图7A的流程图的某些方面的操作。另外,为了方便起见,参考执行操作的系统描述图7A的流程图的操作。该系统可以包括各种计算机系统的各种组件,诸如说话者嵌入引擎125、细化引擎120和/或一个或多个GPU、CPU和/或TPU。在各种实现方式中,可以使用本地存储在客户端设备处的说话者嵌入和机器学习模型,由客户端设备执行图7A的一个或多个框。此外,尽管以特定顺序示出了方法700的操作,但这并不意味着是限制性的。可以重新排序、省略或添加一个或多个操作。
在框702,系统接收捕获一个或多个人类说话者的话语的音频数据。作为一个示例,在框702,系统可以接收图7B的音频数据770,其包括来自“说话者A”的话语(垂直阴影),以及来自“说话者B”的话语(点画阴影)和“背景噪声”(阴影线阴影)。
在框704,系统基于来自音频数据中的语音活动检测的初始发生的部分来选择音频数据的部分。例如,系统可以基于来自语音活动的第一分段的部分777A(即,“说话者A”的第一话语),选择图7B的音频数据770的部分777A。
在框706,系统基于在框704处选择的音频数据的部分来生成第一说话者嵌入。例如,系统可以基于使用所训练的说话者嵌入模型对部分777A(图7B)进行处理来生成第一说话者嵌入。
在框708,系统使用机器学习模型(例如,生成模型156),并且在确定用于机器学习模型的层的激活中使用第一说话者嵌入,顺序地处理该音频数据。
在框710,系统基于框708的顺序处理,顺序地生成音频数据的第一细化版本,作为机器学习模型的直接输出。例如,系统可以生成图7B中示意性示出的第一细化的音频数据775A,其中,仅保留了“说话者A”的话语。
在框712,系统基于音频数据的第一细化版本来确定第一人类说话者正在讲话的音频数据的分段。例如,系统可以确定第一细化的音频数据775A的非零分段在时间上对应于第一人类说话者正在讲话的音频数据的相应分段。
在框714,系统确定在第一人类说话者正在讲话的那些音频数据分段之外是否存在一次或多次发生语音活动检测。如果否,则系统可以进行到框728(在下文更详细地描述)。如果是,则系统可以进行到框716。例如,对于音频数据770(图7B),系统在框714处可以确定在第一人类说话者正在讲话的分段之外存在发生语音活动检测,诸如不与“说话者A”话语重叠的“说话者B”话语的部分。
在框716,系统基于音频数据的附加部分生成第二说话者嵌入,该附加部分来自第一分段之外的音频数据中的语音活动检测的发生。例如,系统可以基于来自语音活动的发生的部分777B,并且在第一分段之外(其中,如上所述,基于第一细化的音频数据775A来确定第一分段),选择图7B的音频数据770的部分777B。此外,例如,系统可以基于部分777B,(例如,使用说话者嵌入模型)生成第二说话者嵌入。
在框718,系统使用机器学习模型(例如,生成模型156),并且在确定用于机器学习模型的层的激活中使用第二说话者嵌入,顺序地处理音频数据。
在框720,系统基于框718的顺序处理,顺序地生成音频数据的第二细化版本,作为机器学习模型的直接输出。例如,系统可以生成图7B中示意性示出的第二细化的音频数据775B,其中,仅保留了“说话者B”的话语。
在框722,系统基于音频数据的第二细化版本,确定第二人类说话者正在讲话的音频数据的分段。例如,系统可以确定第二细化的音频数据775B的非零分段在时间上对应于第二人类说话者正在讲话的音频数据的相应分段。
在框724,系统确定在第一人类说话者正在讲话的那些分段之外和第二人类说话者正在讲话的那些分段之外,是否存在一次或多次发生语音活动检测。如果否,则系统可以进行到框728(在下文更详细地描述)。如果是,则系统可以进行到框726,并且重复框716、718、720、722和724的变形(其中,在该变形中,生成第三说话者嵌入和音频数据的第三细化版本)。这可以继续直到在框724处做出“否”确定为止。作为框724的示例,对于音频数据770(图7B),框724的系统可以确定在第一人类说话者正在讲话和第二说话者正在讲话的分段之外没有任何语音活动检测发生,因为没有来自其他人类说话者的其他话语(只有背景噪声)。因此,在这样的示例中,系统可以在框724的第一迭代处进行到框728。
在框728,系统基于所生成的音频数据的细化版本中的一个或多个(例如,第一细化版本、第二细化版本、附加细化版本)和/或基于所识别的说话者分段(即,识别哪些说话者对应于音频数据的哪些时间分段)来执行进一步的处理。在一些实现方式中,框728包括将音频数据的细化版本和/或所识别的说话者分段的指示发送给一个或多个远程系统。在一些实现方式中,框728附加地或可替代地包括执行ASR、NLP和/或其他处理。在那些实现方式的一些版本中,执行ASR,音频数据来自视听内容,并且框728包括为视听内容生成时间同步的隐藏式字幕。
现在转到图8和图9,示出了两个示例环境,其中,可以执行各种实现方式。首先描述图8,并且图8包括客户端计算设备106,其执行自动助理客户端107的实例。可以在经由通常以110表示的一个或多个局域网和/或广域网(例如互联网),可通信地耦合到客户端设备106的一个或多个计算系统(统称为“云”计算系统)上实现一个或多个基于云的自动助理组件180。
自动助理客户端107的实例,通过其与一个或多个基于云的自动助理组件180的交互,可以形成从用户的角度看似乎是自动助理140的逻辑实例,用户可以使用该自动助理参与人机对话。在图8中示出了这种自动助理140的实例。因此,应当理解,在一些实现方式中,与在客户端设备106上执行的自动助理客户端107进行交互的用户实际上可以与自动助理140的他或她自己的逻辑实例进行交互。为了简洁和简单起见,在本文中用作“服务”特定用户的术语“自动助理”通常是指在由用户操作的客户端设备106上执行的自动助理客户端107和(可以在多个客户端计算设备的多个自动助理客户端之中共享的)一个或多个基于云的自动助理组件180的组合。还应当理解,在一些实现方式中,自动助理140可以响应来自任何用户的请求,而不管该用户是否实际上由自动助理140的该特定实例“服务”。
客户端计算设备106可以是例如:台式计算设备、膝上型计算设备、平板计算设备、移动电话计算设备、用户的车辆的计算设备(例如,车载通信系统、车载娱乐系统、车载导航系统)、独立交互式扬声器、智能设备(诸如智能电视)和/或包括计算设备的用户的可穿戴装置(具有计算设备的用户的手表、具有计算设备的用户的眼镜、虚拟或增强现实计算设备)。可以提供附加的和/或替代的客户端计算设备。在各种实现方式中,客户端计算设备106可以可选地操作除自动助理客户端107之外的一个或多个其他应用,诸如消息交换客户端(例如,SMS、MMS、在线聊天)、浏览器等等。在那些实现方式中的一些实现方式中,一个或多个其他应用可以(例如,经由应用编程接口)可选地与自动助理140交互,或者包括(也可以与基于云的自动助理组件180交互的)自动助理应用的它们自己的实例。
自动助理140通过客户端设备106的用户界面输入和输出设备,与用户进行人机对话会话。为了保护用户隐私和/或节省资源,在许多情况下,用户通常必须在自动助理将完全地处理所讲话语之前,明确地调用自动助理140。自动助理140的明确调用可以响应于在客户端设备106处接收到的某些用户界面输入而发生。例如,可以经由客户端设备106调用自动助理140的用户界面输入可以可选地包括客户端设备106的硬件和/或虚拟按钮的致动。此外,自动助理客户端可以包括一个或多个本地引擎108,诸如可用于检测一个或多个口头调用短语的存在的调用引擎。调用引擎可以响应于检测到口头调用短语之一来调用自动助理140。例如,调用引擎可以响应于检测到口头调用短语(诸如“Hey Assistant(嘿,助理)”,“OK Assistant(好,助理)”和/或“Assistant(助理)”)来调用自动助理140。调用引擎可以连续地处理(例如,如果不是处于“非活动”模式)基于来自客户端设备106的一个或多个麦克风的输出的音频数据帧流,以监视口头调用短语的发生。在监视口头调用短语的发生时,调用引擎(例如,在临时存储在缓冲器之后)丢弃不包括口头调用短语的任何音频数据帧。但是,当调用引擎在所处理的音频数据帧中检测到口头调用短语时,调用引擎可以调用自动助理140。如本文所使用的,“调用”自动助理140可以包括使得激活自动助理140的一个或多个先前不活动的功能。例如,调用自动助理140可以包括使得一个或多个本地引擎108和/或基于云的自动助理组件180进一步处理基于其检测到调用短语的音频数据帧,和/或一个或多个后续音频数据帧(而在调用之前,未对音频数据帧进行进一步处理)。例如,响应于调用自动助理140,本地和/或基于云的组件可以生成音频数据的细化版本和/或执行其他处理。在一些实现方式中,可以处理口头调用短语以生成说话者嵌入,该说话者嵌入用在生成在口头调用短语后的音频数据的细化版本。在一些实现方式中,可以处理口头调用短语以识别与该口头调用短语的说话者相关联的账户,并且与该账户相关联的所存储的说话者嵌入用在生成该口头调用短语之后的音频数据的细化版本中。
自动助理140的一个或多个本地引擎108是可选的,并且可以包括例如上述调用引擎、(将捕获的音频转换为文本的)本地语音到文本(“STT”)引擎、(将文本转换为语音的)本地文本到语音(“TTS”)引擎、(确定音频和/或从音频转换的文本的语义的)本地自然语言处理器和/或其他本地组件。因为客户端设备106在计算资源(例如,处理器周期、存储器、电池等)方面相对受限,所以本地引擎108相对于基于云的自动助理组件180中所包括的任何对应者可能具有有限的功能。
基于云的自动助理组件180相对于本地引擎108的任何对应部分,利用云的几乎无限的资源来执行音频数据和/或其他用户界面输入的更健壮和/或更准确的处理。再次,在各种实现方式中,客户端设备106可以响应于调用引擎检测到口头调用短语或检测到自动助理140的一些其他明确调用,将音频数据和/或其他数据提供给基于云的自动助理组件180。
所示的基于云的自动助理组件180包括基于云的TTS模块181、基于云的STT模块182、自然语言处理器183、对话状态跟踪器184和对话管理器185。所示的基于云的自动助理组件180还包括细化引擎120,其将生成模型156用在生成音频数据的细化版本中,并且可以将细化版本提供给一个或多个其他基于云的自动助理组件180(例如,STT模块182、自然语言处理器183、对话状态跟踪器184和/或对话管理器185)。此外,基于云的自动助理组件180包括说话者嵌入引擎125,其将说话者嵌入模型用于本文所述的各种目的。
在一些实现方式中,可以在与自动助理140分离的组件中省略、组合和/或实现自动助理140的一个或多个引擎和/或模块。例如,在一些实现方式中,细化引擎120、生成模型156、说话者嵌入引擎125和/或说话者嵌入模型152可以全部或部分地在客户端设备106上实现。此外,在一些实现方式中,自动助理140可以包括附加的和/或替代的引擎和/或模块。
基于云的STT模块182可以将音频数据转换为文本,然后可以将其提供给自然语言处理器183。在各种实现方式中,基于云的STT模块182可以至少部分地基于由细化引擎120提供的音频数据的细化版本,将音频数据转换成文本。
基于云的TTS模块181可以将文本数据(例如,由自动助理140制定的自然语言响应)转换为计算机生成的语音输出。在一些实现方式中,TTS模块181可以将计算机生成的语音输出提供给客户端设备106以例如使用一个或多个扬声器直接输出。在其他实现方式中,由自动助理140生成的文本数据(例如,自然语言响应)可以被提供给本地引擎108之一,然后其可以将文本数据转换成本地输出的计算机生成的语音。
自动助理140的自然语言处理器183处理自由格式的自然语言输入,并且基于自然语言输入生成带注释的输出,以供自动助理140的一个或多个其他组件使用。例如,自然语言处理器183可以处理自然语言自由形式输入,该自然语言自由形式输入是文本输入,该文本输入是STT模块182对用户经由客户端设备106提供的音频数据的转换。所生成的带注释输出可以包括自然语言输入的一个或多个注释以及可选地,自然语言输入的一个或多个(例如,全部)术语。
在一些实现方式中,自然语言处理器183被配置为识别和注释自然语言输入中的各种类型的语法信息。在一些实现方式中,自然语言处理器183可以附加地和/或替代地包括实体标记器(未图示),该实体标记器被配置为在一个或多个段中注释实体引用,诸如对人的引用(包括例如文学人物、名人、公众人物等)、组织、位置(真实和虚构)等。在一些实现方式中,自然语言处理器183可以附加地和/或可替代地包括指代解析器(未图示),其被配置为基于一个或多个上下文线索来对同一实体的引用进行分组或“聚类”。例如,可以利用指代解析器来将自然语言输入“I liked Hypothetical Cafe last time we ate there”中的术语“there”解析为“Hypothetical Cafe”。在一些实现方式中,自然语言处理器183的一个或多个组件可以依赖于来自自然语言处理器183的一个或多个其他组件的注释。在一些实现方式中,在处理特定自然语言输入时,自然语言处理器183的一个或多个组件可以使用相关的在先输入和/或特定自然语言输入之外的其他相关数据来确定一个或多个注释。
在一些实现方式中,对话状态跟踪器184可以被配置为跟踪“对话状态”,该“对话状态”包括例如在人机对话会话过程中和/或跨多个对话会话的一个或多个用户目标(或“意图”)的信任状态。在确定对话状态时,一些对话状态跟踪器可能试图基于对话会话中的用户和系统话语来确定在对话中实例化的时间片的最可能值。一些技术利用定义了一组时间片以及与那些时间片相关联的一组值的固定本体。一些技术可以附加和/或替代地对单个时间片和/或域进行定制。例如,一些技术可能需要对每个域中的每种时间片类型训练模型。
对话管理器185可以被配置为将例如由对话状态跟踪器184提供的当前对话状态映射到然后由自动助理140执行的多个候选响应动作中的一个或多个“响应动作”。响应动作可能以多种形式出现,取决于当前对话状态。例如,与在最后轮次之前(例如,当执行最终用户期望的任务时)发生的对话会话的轮次相对应的初始和中间对话状态可以被映射到包括自动助理140输出附加自然语言对话的各种响应动作。该响应对话可以包括例如用户对话状态跟踪器184认为用户打算执行的一些动作(即,填充时间片)提供参数的请求。在一些实现方式中,响应动作可以包括诸如“请求”(例如,寻找用于时间片填充的参数)、“提议”(例如,为用户建议动作或动作过程)、“选择”、“通知”(例如,为用户提供所请求的信息)、“不匹配”(例如,通知用户无法理解用户的最后输入)、对外围设备的命令(例如,关闭灯泡)等等。
现在转到图9,示出了另一个示例环境,其中,可以执行本文公开的实现方式。在图9中不包括自动助理。相反,在图9中,客户端设备106不包括自动助理客户端。此外,在图9中,包括远程语音处理系统190以代替基于云的自动助理组件。
在图9中,客户端设备106经由通常以110指示的一个或多个局域网和/或广域网(例如,因特网)提交请求970。请求970是语音处理请求,并且可以经由为远程语音处理系统170定义的API来提交。请求970可以包括音频数据,并且可以可选地定义将响应于该请求970,在音频数据上执行的语音处理的类型。远程语音处理系统170可以处理来自客户端设备106的请求以及来自各种其他计算设备的请求。远程语音处理系统170可以例如在一个或多个服务器设备的集群上实现。
响应于接收到请求970,远程语音处理系统190对请求中包括的音频数据执行一种或多种语音处理功能(诸如本文所述的功能),并且以响应971的形式返回语音处理结果,即经由网络110发送回客户端设备106。例如,远程语音处理系统190包括利用生成模型156来生成音频数据的细化版本的细化引擎120,以及利用说话者嵌入模型152来生成说话者嵌入的说话者嵌入引擎125。这些引擎可以协作地用来生成包括在响应971中的说话者日志结果和/或包括在响应971中的音频数据的细化版本。此外,远程语音处理系统190还包括STT模块182和自然语言处理器183。这些组件可以具有与上文参考图8所述的相同和/或相似的功能。在一些实现方式中,利用那些组件生成的输出可以另外被包括在响应971中。
图11是可以可选地用于执行本文所述的技术的一个或多个方面的示例计算设备1110的框图。例如,客户端设备106可以包括示例计算设备1110的一个或多个组件和/或实现基于云的自动助理组件180的一个或多个服务器设备,和/或远程语音处理系统190可以包括示例计算设备1110的一个或多个组件。
计算设备1110通常包括经由总线子系统1112与多个外围设备通信的至少一个处理器1114。这些外围设备可以包括存储子系统1124(包括例如存储器子系统1125和文件存储子系统1126)、用户界面输出设备1120、用户界面输入设备1122和网络接口子系统1116。输入设备和输出设备允许用户与计算设备1110交互。网络接口子系统1116提供到外部网络的接口并且耦合至其它计算设备中的相应接口设备。
用户界面输入设备1122可以包括键盘、指示设备(诸如,鼠标、轨迹球、触摸板或者图形输入板)、扫描仪、并入显示器中的触摸屏、音频输入设备(诸如,语音识别系统、麦克风)和/或其它类型的输入设备。一般而言,使用术语“输入设备”旨在包括将信息输入到计算设备1110中或者到通信网络上的所有可能类型的设备和方法。
用户界面输出设备1120可以包括显示子系统、打印机、传真机、或者非可视显示,诸如,音频输出设备。显示子系统可以包括阴极射线管(CRT)、平板设备(诸如,液晶显示器(LCD))、投影设备、或者用于创建可见的图像的一些其它机构。显示子系统还可以提供非可视显示,诸如,经由音频输出设备。一般而言,使用术语“输出设备”旨在包括将信息从计算设备1110输出至用户或者至另一机器或者计算设备的所有可能类型的设备和方法。
存储子系统1124存储提供本文所述的模块中的一些或者所有的功能的编程和数据结构。例如,存储子系统1124可以包括执行本文所述方法的所选方面,和/或实现本文图示的各个组件的逻辑。
这些软件模块通常由处理器1114单独或者与其它处理器组合执行。用在存储子系统1124中的存储器1125可以包括多个存储器,该多个存储器包括用于在程序执行期间存储指令和数据的主随机存取存储器(RAM)1130以及存储固定指令的只读存储器(ROM)1132。文件存储子系统1126可以为程序和数据文件提供永久存储,并且可以包括硬盘驱动器、软盘驱动器连同相关联的可移动介质、CD-ROM驱动器、光驱动器、或者可移动介质盒。实现某些实现方式的功能的模块可以由文件存储子系统1126存储在存储子系统1124中或者可以存储在可由处理器1114访问的其它机器中。
总线子系统1112提供用于使计算设备1110的各种组件和子系统按照预期的方式彼此通信的机制。虽然总线子系统1112被示意性地示出为单个总线,但是总线子系统的替选实现方式可以使用多个总线。
计算设备1110可以有各种类型,包括工作站、服务器、计算集群、刀片式服务器、服务器群、或者任何其它数据处理系统或者计算设备。由于计算机和网络的性质多变,所以图11中图示的计算设备1110的描述仅仅旨在作为为了说明一些实现方式的目的的具体示例。计算设备1110的许多其它配置可能具有比图11中图示的计算设备更多或者更少的组件。
在本文所讨论的某些实现方式可以收集或者使用关于用户的个人信息(例如,从其它电子通信提取到的用户数据、关于用户的社交网络的信息、用户的位置、用户的时间、用户的生物特征信息,以及用户的活动和人口统计信息、用户之间的关系等)的情况下,为用户提供控制是否收集信息、是否存储个人信息、是否使用个人信息、以及如何收集、存储和使用关于用户的信息的一个或多个机会。即,本文所讨论的系统和方法仅在从相关用户接收到可以这样做的明确授权时,才收集、存储和/或使用用户个人信息。
例如,为用户提供控制程序或者功能部件是否收集关于该特定用户或者与程序或者功能特征相关的其它用户的用户信息。为将收集其个人信息的每个用户呈现一个或多个选项,以允许控制与该用户相关的信息收集、提供关于是否收集信息和关于收集信息的哪些部分的许可或者授权。例如,可以通过通信网络,为用户提供一个或多个这样的控制选项。另外,某些数据在被存储或者使用之前,可以以一种或者多种方式来处理,从而移除个人身份信息。作为一个示例,可以处理用户的身份,从而无法确定个人身份信息。作为另一示例,可以将用户的地理位置泛化到更大的区域,从而无法确定用户的具体位置。
- 使用说话者嵌入和所训练的生成模型的说话者日志
- 使用说话者相关语音模型的说话者感知