CN117882131A - 多个唤醒词检测 - Google Patents

多个唤醒词检测 Download PDF

Info

Publication number
CN117882131A
CN117882131A CN202280058218.5A CN202280058218A CN117882131A CN 117882131 A CN117882131 A CN 117882131A CN 202280058218 A CN202280058218 A CN 202280058218A CN 117882131 A CN117882131 A CN 117882131A
Authority
CN
China
Prior art keywords
data
wake
component
word
audio
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
Application number
CN202280058218.5A
Other languages
English (en)
Inventor
G·付
H·雷
S·K·V·S·鲁帕纳古迪
Y·米先科
C·雅克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN117882131A publication Critical patent/CN117882131A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/16Speech classification or search using artificial neural networks
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/28Constructional details of speech recognition systems
    • G10L15/32Multiple recognisers used in sequence or in parallel; Score combination systems therefor, e.g. voting systems
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L2015/088Word spotting
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/22Procedures used during a speech recognition process, e.g. man-machine dialogue
    • G10L2015/223Execution procedure of a spoken command

Landscapes

  • Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Telephonic Communication Services (AREA)

Abstract

一种装置,其配置成检测多个不同的唤醒词。一种装置,其可以操作联合编码器,所述联合编码器对音频数据进行操作以确定编码音频数据。所述装置可以操作多个不同的解码器,所述多个不同的解码器处理所述编码音频数据以确定是否检测到唤醒词。每个解码器可以对应于不同的唤醒词。所述解码器可以使用比所述联合编码器更少的计算资源,从而允许所述装置更容易地执行多个唤醒词处理。启用/禁用唤醒词可以涉及唤醒词检测器的重新配置以添加/移除相应解码器的数据。

Description

多个唤醒词检测
相关申请的交叉引用
本申请要求Gengshen Fu等人于2021年12月10日提交并命名为“MULTIPLEWAKEWORD DETECTION”的美国专利申请No.17/547,547的权益和优先权。上述专利申请以全文引用的方式并入本文中。
背景技术
语音识别系统已经发展到人类可以使用其声音与计算装置交互的程度。此种系统采用基于接收到的音频输入的各种质量来识别人类用户说出的单词的技术。与自然语言理解处理技术相结合的语音识别使得计算装置的基于语音的用户控制能够基于用户的口头命令来执行任务。语音识别和自然语言理解处理技术在本文中可以统称为或单独地称为语音处理。语音处理还可以包括将用户的语音转换成文本数据,然后可以将文本数据提供给各种基于文本的软件应用。
计算机、手持装置、电话计算机系统、信息亭和各种其他装置可以使用语音处理来改善人机交互。
附图说明
为了更完整地理解本公开,现在结合附图参考以下描述。
图1A至图1B是根据本发明的实施例的用于执行多个唤醒词检测的多助理系统的组件和操作的概念图。
图2是根据本公开的实施例的配置成检测多个唤醒词的组件的图。
图3A至图3B是根据本公开的实施例的示出配置装置以确定多个唤醒词的信号流程图。
图4是根据本公开的实施例的可以组合以激活装置的多个唤醒词的图。
图5A是根据本公开的实施例示出可以包括在多助理系统的第一示例实施中的组件的概念图。
图5B是根据本公开的实施例示出可以包括在多助理系统的第二示例实施中的组件的概念图。
图6是根据本公开的实施例的检测输入音频数据是否包括系统导向语音的系统的组件的概念图。
图7是根据本公开的实施例的ASR组件的概念图。
图8是根据本公开的实施例如何执行自然语言处理的概念图。
图9是根据本公开的实施例如何执行自然语言处理的概念图。
图10是根据本公开的实施例的文本至语音组件的概念图。
图11是概念性地示出根据本公开的实施例的装置的示例组件的框图。
图12是概念性地示出根据本公开的实施例的系统的示例组件的框图。
图13示出根据本公开的实施例的用于整个系统的计算机网络的示例。
具体实施方式
语音处理系统和语音生成系统已经与其他服务相结合,以创建用户可以使用诸如语音或文本输入等自然语言输入与之交互的虚拟“助手”。虚拟助理可以利用不同的计算机化语音技术。自动语音识别(ASR)是计算机科学、人工智能和语言学的领域,涉及将与语音相关联的音频数据转换成表示该语音的文本。类似地,自然语言理解(NLU)是计算机科学、人工智能和语言学的领域,涉及使计算机能够从包含自然语言的文本输入中获取意义。ASR和NLU通常一起用作语音处理系统的一部分,有时也称为口语理解(SLU)系统。文本到语音(TTS)是计算机科学的领域,涉及将文本和/或其他数据转换成合成为类似人类语音的音频数据。自然语言生成(NLG)是产生自然语言输出(例如,单词的文本)的计算过程,自然语言输出可以用于选择单词来与用户交互,作为用户和系统之间交换的一部分。ASR、NLU、TTS和NLG可以一起用作语音处理系统的一部分。虚拟助理可以利用语音处理系统以及附加的应用和/或技能来为用户和/或代表用户执行任务。
为了避免装置继续对检测到的音频数据进行处理,并且为了指导此类音频数据的处理,语音控制装置可以配置成检测唤醒词,唤醒词可以由用户说出以激励系统进行进一步处理。如本文所使用的,唤醒词包括用于表示单词、少于一个单词或多于一个单词的声音,诸如包括多于一个单词的唤醒短语,当被机器识别时,唤醒词将装置从第一状态转换到第二状态,以便对音频数据执行更多处理。例如,第二状态可以涉及在用户说出“Alexa”作为用户想要由语音处理系统处理的进一步语音的前驱之后,将音频数据发送到语音处理组件等。在另一个示例中,第二状态可以包括响应于检测到音频数据中的特定声音,向装置发送通知(或其他动作)。
一些声控装置可以提供对一个以上语音处理系统或其他声音处理系统的访问,其中每个声音处理系统可以提供与不同虚拟助理相关的服务。在此种多助理系统中,语音处理系统可以与其自己的唤醒词相关联。当检测到话语中唤醒词的表示时,装置可以将表示话语的音频数据发送到相应的语音处理系统。附加地或可替换地,关于说出哪个唤醒词的信息可以用于调用系统的特定“个性”,并且可以用作TTS、NLG或系统的其他组件的上下文。因此,为了能够访问多助理系统,装置需要配置成识别多于一个的唤醒词。为此,装置必须配置有(多个)唤醒词组件,唤醒词组件能够针对能够为特定装置处理话语的相应系统的唤醒词中的每个唤醒词来分析输入语音。
对于一个或两个唤醒词,这在技术上可能是可行的。但是不同系统的可用性正不断扩大,每个系统都可通过自己的唤醒词访问,这使得扩展超出一到两个唤醒词在技术上变得复杂。一个原因在于,唤醒词检测器在用于存储此种唤醒词检测器的计算机存储和在运行时操作唤醒词检测器的存储器/处理器使用方面可以都是计算资源密集型的。如果装置在其计算资源方面受到限制,那么同时操作许多不同的唤醒词检测器可能是不切实际的。
针对几乎同时检测唤醒词的问题,提供了一种改进的技术解决方案。唤醒词检测分为两层组件:第一层是联合编码器,其将输入音频数据处理成表示输入音频数据的声学单元的特征向量;第二层是多个解码器,其中每个解码器对应于特定的唤醒词,这些解码器可以处理特征向量以确定是否检测到解码器的特定唤醒词。可以对数千个词训练联合编码器,使得它可以灵活地用于将来可能需要的新唤醒词。当用户能够识别新的唤醒词时,可以为装置启用新的解码器,并且仍然可以使用现有的联合编码器。每个解码器可以使用比联合编码器少得多的计算资源,从而允许装置以近乎同时(例如,同时或部分并行以便减少等待时间)的方式添加和操作多个解码器。因此,装置能够同时识别许多不同的唤醒词,而不会使装置的计算资源负担过重。
本发明的这些和其他特征作为示例提供,并且可以相互结合使用和/或与本文所述的附加特征结合使用。
系统可以配置成包含用户权限,并且仅可以在用户批准的情况下执行本文公开的活动。因此,本文描述的系统、装置、组件和技术通常配置成在适当的情况下限制处理,并且仅以确保符合所有适当的法律、法规和标准等的方式来处理用户信息。可以在地理基础上实现系统和技术,以确保符合其中系统的组件和/或用户所在的各种管辖区和实体中的法律。
在一些配置中,单个语音控制装置可以配置成与单个助理系统一起运行。例如,Amazon Echo装置将配置成与Amazon assistant语音服务/语音处理系统一起操作,以及Google Home装置将配置成与Google assistant语音服务/语音处理系统一起操作。在一些配置中,某些装置可以允许用户选择该装置将识别哪个唤醒词(例如,“Alexa”、“Echo”、“Computer”等),而这些唤醒词只会导致语音被同一系统处理。在一些配置中,装置可以配置成检测多个唤醒词,并且根据所说的唤醒词将所得的音频数据发送到不同的系统。例如,如果装置检测到唤醒词“Alexa”,则同一装置将向Amazon系统发送音频数据,但是如果该装置检测到唤醒词“Ok Portal”,则其将向Facebook系统发送音频数据。类似地,装置可以配置成检测多个唤醒词,这些唤醒词可以对应于同一系统,但是对应于该系统内的不同“个性”或技能配置。例如,“Hey<Celebrity Name>”的唤醒词可以向Amazon系统发送音频数据,但是该系统将对特定名人做出响应(例如,使用NLG和TTS语音)。每个此类名人可以对应于特定语音处理系统中其自己的助理NLG和语音服务。
在一些实施方式中,装置的唤醒词检测器可以处理输入音频数据,并在检测到唤醒词的表示时输出信号;例如,唤醒词检测器可以在没有检测到唤醒词时输出逻辑0,如果/当检测到唤醒词时转变为逻辑1。唤醒词检测器可以向客户端软件和/或系统的其他组件输出唤醒词检测信号。例如,在一些实施方式中,唤醒词检测器可以向声学前端(AFE)输出唤醒词检测信号,响应于此,AFE可以开始生成和流传输音频数据以供系统100处理。在一些实施方式中,唤醒词检测器可以在检测到唤醒词时输出其他元数据。其他元数据可以包括与检测、指纹(例如,音频数据是否包括在表示唤醒词的部分上的指纹信号,以指示唤醒词是在例如商业或其他大众媒体事件期间从媒体装置输出的)相关联的置信度得分,和/或其他度量。
装置的唤醒词检测器可以处理代表音频的音频数据,以确定其中是否代表语音。装置可以使用各种技术来确定音频数据是否包括语音。在一些示例中,装置可以应用语音活动检测(VAD)技术。此类技术可以基于音频数据的各种定量方面来确定音频数据中是否存在语音,诸如音频数据的一个或一个以上帧之间的频谱斜率;一个或多个谱带中的音频数据的能级;一个或多个谱带中的音频数据的信噪比;或者其他定量方面。在其他示例中,装置可以实现分类器,其配置成将语音与背景噪声区分开。分类器可以通过诸如线性分类器、支持向量机和决策树的技术来实现。在其他示例中,装置可以应用隐马尔可夫模型(HMM)或高斯混合模型(GMM)技术来将音频数据与存储器中的一个或多个声学模型进行比较,这些声学模型可以包括对应于语音、噪声(例如,环境噪声或背景噪声)或静音的模型。还可以使用其他技术来确定音频数据中是否存在语音。
通常在不进行语言分析、文本分析或语义分析的情况下进行唤醒词检测。相反,分析表示音频的音频数据,以确定音频数据的特定特征是否与预先配置的声波波形、音频签名或对应于唤醒词的其他数据相匹配。
因此,唤醒词检测组件可以将音频数据与存储数据进行比较,以检测唤醒词。唤醒词检测的一种方法应用了一般的大词汇量连续语音识别(LVCSR)系统来解码音频信号,同时在所产生的点阵或混淆网络中进行唤醒词搜索。唤醒词检测的另一种方法分别为每个唤醒词和非唤醒词语音信号建立HMM。非唤醒词语音包括其他口语单词、背景噪声等。可以建立一个或多个HMM来模拟非唤醒词语音特征,这些HMM被称为填充模型。维特比解码用于在解码图中搜索最佳路径,并且解码输出被进一步处理以决定唤醒词的存在。通过结合混合DNN-HMM解码框架,这种方法可以扩展到包括鉴别信息。在另一个示例中,唤醒词检测组件可以直接建立在深度神经网络(DNN)/递归神经网络(RNN)结构上,而不涉及HMM。此种架构可以通过在DNN的上下文窗口内堆叠帧或者使用RNN,利用上下文数据来估计唤醒词的后验值。将后续的后验阈值调整或平滑应用于决策制定。也可以使用用于唤醒词检测的其他技术。
多个唤醒词/助理语音服务的日益增长的可用性带来的一个技术挑战是,每次系统添加新的唤醒词时,还需要添加装置能够识别的新的唤醒词检测器。由于许多装置(特别是具有较少计算资源但仍然应该能够检测新唤醒词的旧装置)不能同时操作多个唤醒词检测器,所以新唤醒词的添加可能涉及完整的唤醒词检测模型的重新训练,该模型可以根据系统配置,接收输入音频数据并识别特定装置/系统的所有可用唤醒词。(对于可能未配置成识别所有此类唤醒词的特定装置,诸如唤醒词管理器等组件可以简单地抑制/忽略用户未启用的唤醒词的任何检测,从而防止装置在其检测到用户未指示应该用于唤醒装置的词的实例时被唤醒。)可以理解,通过引入新的语音处理系统、引入新的助理语音个性、引入品牌或定制的语音助理(例如,一个语音助理用于特定的连锁酒店、另一个用于特定的主题公园、又一个用于特定的商店等),唤醒词的可用性在技术上变得具有挑战性。
所提供的在联合编码器(其可以用于所有唤醒词)和单个唤醒词特定解码器之间划分唤醒词检测的解决方案允许每当提供新唤醒词时仅训练新解码器。现有的联合编码器(以及任何其他现有的解码器)可以重复使用,而不需要重新训练完整的端到端新唤醒词检测模型,该模型在输入音频数据中操作以检测所有新唤醒词。
图1A是示出根据本发明的实施例具有默认助理回退的多助理系统100的组件的概念图。系统100可以包括经由一个或多个计算机网络199与一个或多个远程系统120通信的装置110,诸如图中的语音控制装置110。装置110可以包括用于输入和输出的各种组件,诸如一个或多个显示器116、一个或多个扬声器112、一个或多个麦克风114等。在一些实施方式中,系统100可以检测各种姿势(例如,物理移动),其指示系统100要接收诸如音频11的输入。系统100可以通过各种方式对用户做出响应,包括传达自然语言消息的合成语音(例如,由扬声器112发出)。参考图1A(以及参考图5A和图5B)描述的系统100的各种组件可以驻留在装置110和/或系统120中。在一些实施方式中,系统100的各种组件可以在装置110、其他装置110和/或系统120之间共享、复制和/或划分。在某些实施方式中,系统120可以与云服务相关联。在其他实施方式中,系统120可以与家庭服务器或位于用户附近的其他装置相关联,从而允许许多操作发生,而无需将用户数据提供给外部组件。在其他实施方式中,系统120的操作可以在云服务器/家庭服务器和/或其他组件之间分开。
如上所述,装置110可以向用户提供对一个或多个虚拟助理的访问。虚拟助理可以配置有它可以为用户和/或代表用户执行的某些功能。虚拟助理还可以配置有某些标识特征,这些标识特征可以输出给用户,以指示哪个虚拟助理正在接收输入(例如,经由麦克风114收听)、进行处理(例如,执行ASR、NLU和/或执行动作)、和/或提供输出(例如,使用NLG生成输出、经由TTS说话)。用户可以通过例如说出与特定虚拟助理相关联的唤醒词来调用该虚拟助理。系统100可以确定哪个虚拟助理将处理话语,并相应地处理话语;例如,如图5A所示,通过将表示话语的数据发送到对应于虚拟助理的特定语音处理系统,和/或如图5B所示,使用对应于虚拟助理的配置来处理话语。
图1A示出了系统100的各种组件,其可以配置成确定关于接收到的话语中是否存在一个或多个唤醒词。系统100可以包括声学前端(AFE)121,该声学前端可以从麦克风114接收语音数据并生成音频数据111以供下游组件(例如,ASR、NLU等)处理。AFE 121还可以向一个或多个唤醒词检测器122提供话语的表示。AFE 121可以包括过滤捕获的语音的处理。例如,AFE 121可以执行回声消除、噪声抑制、波束形成、高通和/或低通滤波等。AFE 121可以输出原始音频数据和使用一种或多种上述技术处理的音频数据。AFE 121可以将音频数据111流传输到语音活动检测器(VAD)、唤醒词检测器122或其他组件。
唤醒词检测器122可以从AFE 121接收(162)音频数据111,并对其进行处理以检测一个或多个唤醒词的存在。唤醒词检测器122可以是硬件或软件组件。例如,唤醒词检测器122可以是可执行代码,其可以在没有其他组件的外部知识的情况下运行。如上所述,唤醒词检测器122可以具有两层结构。首先,唤醒词检测器122可以包括联合编码器150,其处理(164)输入音频数据以确定编码的音频数据,该编码的音频数据可以包括表示输入音频数据的多个特征向量。然后可以将编码的音频数据发送到多个唤醒词解码器152a到152n,这取决于为特定装置启用了多少唤醒词解码器。因此,装置110可以使用配置成检测第一唤醒词的表示的第一解码器(例如,152a)(其可以与第一助理语音服务(例如,助理1语音服务160a)相关联)来处理(166)编码的音频数据。装置110还可以使用配置成检测第二唤醒词的表示的第二解码器(例如,152b)(其可以与第二助理语音服务(例如,助理2语音服务160b)相关联)来处理(168)编码的音频数据。装置110还可以使用与不同的相应唤醒词和/或助理2语音服务160相关联的一个或多个另外的解码器来处理编码的音频数据。
出于说明目的,唤醒词可以示出为与其自身的助理语音服务相关联,但多个唤醒词也可以与同一助理语音服务相关联。例如,根据系统配置,检测第一唤醒词的第一解码器152a和检测第二唤醒词的第二解码器152b可以都与同一助理语音服务(例如,助理1语音服务160a)相关联。
每个解码器可以向唤醒词管理器156输出唤醒词决策数据,唤醒词管理器可以根据唤醒词决策数据确定特定唤醒词是否出现在输入音频数据中。虽然唤醒词管理器156示出为唤醒词检测组件122的一部分,但是它也可以配置为单独的组件。然后,装置110可以基于检测到的唤醒词执行(170)语音处理。例如,通过向与检测到的唤醒词相关联的助理语音服务160发送表示话语的音频数据111(或其他数据)。
在通常向系统100添加唤醒词时以及当具体地为特定装置110启用新的唤醒词时,上述系统允许使用较少的计算资源。例如,系统100可以使用10种不同的唤醒词来工作,但是在任何特定时间点,只可以为特定装置110启用这些唤醒词的子集。例如,第一装置110a可以配置成识别四个不同的唤醒词,但是第二装置110b可以配置成识别三个不同的唤醒词,只为第一装置110a启用其中两个唤醒词。在一个先前的系统配置下,系统100可能已经训练了能够识别所有10个唤醒词的单个唤醒词模型,并且该模型可以被分发给许多不同的装置110,但是每个装置110可以仅响应于检测到其相应的被启用的唤醒词之一而执行动作,并且可以简单地忽略对于相应装置未被启用的唤醒词的任何检测。每次系统希望添加新的可能唤醒词时,这将使得能够重新训练能够同时检测所有11个唤醒词的大型模型。此种模型可能很大,并且需要系统100的大量计算资源来训练和传递给装置,并且可能需要装置110的大量计算资源来在运行时操作。此外,每次系统启用新的唤醒词(例如,对于唤醒词12、13等等)时,都需要重复该过程,以确保即使旧装置也能够检测新的唤醒词。训练可以对音频数据111进行操作以每次检测新的唤醒词的单独的新唤醒词模式可能是不切实际的,因为这将需要装置110实际上同时对音频数据111运行多个唤醒词模式。此种操作将超出许多装置110的计算资源能力,使得解决方案变得不切实际。
将唤醒词检测分为联合编码器150和单个唤醒词解码器152,根据可与系统操作/对于装置110启用的唤醒词的需要,这允许由单个大型模型(例如,联合编码器150)处理最繁重的计算操作(例如,将音频数据111转换为代表声学单元的编码音频数据),并且由多个不同的较小模型(例如,解码器152)处理使用编码音频数据对唤醒词进行的相对较轻的检测(就计算资源而言)。
为了使装置110能够检测新唤醒词,所述系统可以简单地向装置110发送与该装置110希望启用的新唤醒词相关的新解码器。然而,实际上来说,这可能需要该装置110具有足够的处理能力,以便该装置在其唤醒词检测组件122内结合新的解码器152X,该唤醒词检测组件可能已经配置成操作联合编码器150和其他解码器152a-152n。将新解码器结合到现有唤醒词检测组件122中可能比装置110(特别是具有的计算能力有限的装置)能够执行的处理更多。因此,对于系统100来说,构建唤醒词组件数据可能更有效,该唤醒词组件数据结合了联合编码器150和所述装置将配置成检测的所有唤醒词(包括新的唤醒词和该装置的先前唤醒词)。
图1B示出了针对装置110启用新唤醒词的一个示例。图1B的操作可以发生在图1A所示的操作之前(例如启用图1A的唤醒词之一),或者可以发生在图1A所示的操作之后(例如在图1A的操作之后启用新的唤醒词)。如图1B所示,装置110可以利用特定集合的唤醒词进行操作。根据装置配置,这可能仅包括单个唤醒词、多个唤醒词等。装置110可以检测启用新唤醒词的请求。如图1B所示,这被称为第一唤醒词。该请求可以对应于来自用户的语音,例如“Alexa”打开“Sam”,其中“Sam”对应于新的唤醒词。或者,用户可以在配套装置(例如,智能手机、平板电脑等)上操作应用以启用新的唤醒词,例如在手机、平板电脑等上使用亚马逊Alexa应用程序以启用例如从可用唤醒词、语音助理等菜单中选择的新唤醒词。装置110(或配套装置)可以向系统120发送(132)请求以启用第一唤醒词(WW)。唤醒词可以是已经由系统120启用的唤醒词,使得系统120已经训练了解码器使用由联合编码器150输出的编码音频数据的种类来检测第一唤醒词的表示。
系统120可以接收(134)请求,以针对第一装置启用第一唤醒词。系统可以确定(136)装置110已经配置成检测多个其他唤醒词,包括第二唤醒词。这可以包括系统120检查与装置110、装置110的一个或多个用户等相关联的简档数据,以确定针对装置110启用了哪个(哪些)唤醒词。然后,系统120可以确定(138)联合编码器152的第一数据,确定(140)第一(例如,新)唤醒词的第一解码器152X的第二数据,并且确定(142)装置110已经可以识别的第二(例如,当前可操作的)唤醒词的第二解码器152b的第三数据。系统120还可以确定表示装置能够识别的(或希望重新识别的,应该理解,这种添加唤醒词能力的过程可以一次针对单个唤醒词发生,也可以一次针对多个唤醒词发生)任何其他唤醒词的解码器的其他数据。然后,系统120可以确定(144)第一唤醒词组件数据,其包括第一数据、第二数据、第三数据和用于装置110的唤醒词的任何其他解码器的数据。然后,系统120可以向装置110发送(146)第一唤醒词组件数据。然后,装置110可以接收并启用(148)第一唤醒词组件数据。启用第一唤醒词组件数据可以包括删除与装置的唤醒词检测组件122相关联的先前数据,并且安装关于装置的唤醒词检测组件122的第一唤醒词组件数据,使得唤醒词检测组件122可以继续在处理音频数据时使用第一唤醒词组件数据来检测一个或多个唤醒词。
在另一个实施例中,系统120还可以识别(例如,使用简档数据等)与第一装置110相关联的第二装置。该第二装置例如可以是同一家庭中的另一装置或位于另一位置但与同一用户简档相关联的装置等。然后,系统120可以向第二装置发送与发送给第一装置的相同的第一唤醒词组件数据,以允许第二装置也检测新的第一唤醒词。或者系统120可以构造不同的唤醒词组件数据,其包括用于联合编码器152的第一数据、用于第一唤醒词的解码器的第二数据和用于不同解码器(诸如为第二装置启用的解码器)的数据,并且可以将此不同的唤醒词组件数据发送给第二装置。以这种方式,用户可以指示新的唤醒词对于一个装置应该是可检测的,并且系统可以(基于用户偏好/许可等)也使得第二装置能够检测新的唤醒词。
如图1B所示,在确定和发送更新的唤醒词组件数据时,系统120可以包含关于装置的当前启用唤醒词列表的信息。在一个实施例中,系统120可以不必进行此种特定定制,并且可以简单地创建新的唤醒词组件数据,其包括用于联合编码器150和用于更大的解码器组的数据,每个数据对应于不同的唤醒词,其中该组唤醒词实际上可以包括比用户已经特别选择的针对装置110可操作的唤醒词更多的唤醒词。这样做可能有几个原因,包括允许装置110能够更快地识别新的唤醒词。例如,如果唤醒词检测组件122配置有用于十个不同唤醒词的联合编码器150和解码器152,如果用户仅希望启用这些唤醒词中的两个,则唤醒词管理器156可以配置成忽略八个未被启用的唤醒词的检测,这将因此导致如果检测到未被启用的唤醒词,装置不会进行操作改变。在这种情况下,如果用户稍后决定启用第三唤醒词,这可以简单地涉及唤醒词管理器156中的设置改变,这可以比每次重新训练新的唤醒词组件数据(例如,如图1B所示)明显快得多。因此,新的唤醒词将在几秒钟内可用,而不是使用户等待更长的时间,这种等待可能是不希望的。如果用户然后希望禁用第三唤醒词,则然后可以改变唤醒词管理器156的设置以忽略第三唤醒词的任何检测。这又将比重新安装不包括用于第三唤醒词的解码器的新唤醒词组件数据占用更不密集的资源。考虑到解码器152比联合编码器150小得多,并且需要更少的计算资源来操作(如下所述),则比起每次启用/禁用唤醒词时都必须重新训练唤醒词检测组件122,在用户装置上安装额外的解码器并且一经启用就可用(例如,涉及唤醒词管理器156中的设置改变)可以改善用户体验。
图2中示出了唤醒词检测的其他操作。如图所示,一个或多个麦克风114可以捕获话语的音频。来自声学前端(AFE)121的数据可以将麦克风数据处理成经处理的音频数据111。音频数据111可以是已经被数字化成表示时间间隔的帧的音频数据,对于时间间隔,AFE确定多个值,称为特征,其表示音频数据质量,以及这些值的集合,称为特征向量,其表示帧内音频数据的特征/质量。在至少一些实施例中,音频帧可以是每帧10ms、每帧25ms或其他长度。如本领域中已知的,可以确定许多不同的特征,并且每个特征可以表示可能对ASR处理有用的音频的某种质量。AFE可以使用多种方法来处理音频数据,诸如梅尔频率倒谱系数(MFCCs)、感知线性预测(PLP)技术、对数滤波器组能量(LFBEs)、神经网络特征向量技术、线性判别分析、半约束协方差矩阵或本领域技术人员已知的其他方法。
可以用滑动窗口方法创建音频帧,其中一帧与另一帧在时间上重叠。例如,一个25毫秒音频帧可以包括与前一帧重叠的5毫秒数据和与下一帧重叠的5毫秒数据。许多此类设置是可能的。图2中示出了这种滑动窗口方法。各个音频帧可以组成由联合编码器150处理的音频数据111。联合编码器150可以一次输入多个帧,并处理它们以输出编码的音频数据211,编码的音频数据表示在该组帧中已经检测到了什么声学单元的特征向量。例如,联合编码器可以包含经训练的模型,其配置成输入34帧音频数据,处理该音频数据,并输出经编码的音频数据211,经编码的音频数据可以包含100维特征向量,其表示在这34帧中检测到哪些声学单元。根据系统配置的不同,此类声学单元可以包括子词单元,诸如单音、双音、调素、双调素、三调素、音素等。此外,如可以理解的,由联合编码器150一次处理的输入音频数据的帧数和/或由联合编码器150输出的特征向量/编码音频数据211的维度大小也是可配置的。
由于联合编码器150输出的编码音频数据211可以由多个不同的解码器152处理,包括潜在的唤醒词解码器,这些解码器将在训练/部署联合编码器很久之后由系统120启用,编码器可以在大量词汇(例如,5000个词)上进行训练,以允许许多不同的声学单元可针对编码器进行操作,而不仅仅是可以对应于装置110在特定时刻能够识别的有限数量的唤醒词的那些声学单元。结果,联合编码器150可能相对较大并且计算资源密集。
然而,可以仅训练每个单独的解码器152,以通过处理编码音频数据211来确定一个单词(或一小组单词)是否表示在捕获的音频中。因此,与联合编码器150相比,单独的解码器可能相对较小,并且在计算资源使用方面没有那么密集。
结果,可以将由相对高成本的编码器操作产生的编码的音频数据211发送到多个解码器,以用于相对低成本的解码/唤醒词检测操作,与无论如何都必须执行的编码所需的计算资源相比,仅增加很少的计算资源。因此,可以以相对较低的增量计算成本来实现增加装置检测新唤醒词的能力。
下表示出了联合编码器150与解码器152的相对成本操作的示例。例如,在一种配置中,联合编码器150包括卷积神经网络(CNN),其配置如表1所示:
表1
如图所示,联合编码器150的这个示例具有七层,四个CNN层,随后是三个全连接(FC)层。34帧音频数据被输入到第一层,并按照连续层所述进行处理。在联合编码器150的早期层中,每帧可能进行大量的乘法运算,以执行最终得到编码的音频数据211所需的处理。这示出了为什么对于用于此类操作的可用计算资源是有限的装置110来说,实现多个此类编码器可能是不可能的。
可以理解,与解码器152结合的联合编码器150可以被视为端到端操作的分离层。因此,如果联合编码器150具有七层,则解码器152的第一层可以被认为是唤醒词检测组件122的第八层。该标记用于说明下面的解码器152的示例。所提供的解决方案的一个好处是,用于检测第一唤醒词的第一解码器152a不必具有与用于检测第二唤醒词的第二解码器152b相同的结构。因为不同的模型可以更好地检测不同的唤醒词,所以不同的模型/神经网络布置可以用于不同的唤醒词。因此,唤醒词1解码器152a可以具有与唤醒词2解码器152b不同的结构,依此类推。(根据系统配置,某些解码器也可以具有类似的结构。)
因此,在一种配置中,解码器152(例如,152a)可以是如表2所示配置的CNN:
表2
而另一个解码器(例如,152b)可以是如表3所示配置的卷积神经网络:
表3
或者又一个解码器可以是如表4所示配置的CNN:
表4
或者可以是如表5所示配置的CNN:
表5
解码器152不一定是CNN。它可以是递归神经网络(RNN),诸如卷积递归神经网络(CRNN)。例如,它可以是包括长短期记忆(LSTM)层的RNN,如表6所示:
表6
或者可以是如表7所示配置的RNN:
表7
可以理解,许多不同的解码器配置是可能的。例如,解码器可以包括有限状态转换器(FST)、支持向量机(SVM)、残差神经网络(ResNet)、其他配置和/或其组合。某些解码器结构可能更适合于短唤醒词(例如“Ok”),而其他解码器结构可能更适合于更长的唤醒词(例如“Amelia”)。此外,某些解码器结构可能更适合于检测某些声音组合,而其他解码器结构可能更适合于检测其他声音组合。类似地,联合编码器150也可以是任何可用的配置,尽管每个解码器可以配置成对此特定配置的联合编码器150输出的数据类型进行操作。分离编码器/解码器配置允许系统120为不同的唤醒词配置不同类型的解码器,同时仅使用单个联合编码器配置。(也可以使用不同类型的联合编码器,但是这可能导致系统的复杂性增加,并且根据不同的联合编码器配置等,相同的唤醒词需要多个解码器,因此这可能是不理想的。)
单个解码器152可以对编码音频数据211进行操作,以确定是否检测到解码器的特定唤醒词。因此,可以训练解码器来处理编码音频数据211的特征向量,以检测对应于该解码器的相应唤醒词的各个声学单元是否表示在编码音频数据211中。每个解码器152可以输出对应于是否检测到唤醒词的唤醒词决策数据252。唤醒词决策数据252可以包括二维数据向量,其中一维表示检测到唤醒词的可能性,以及另一维表示未检测到唤醒词的可能性。(在某些配置中,这些可能性可以加起来为1,例如其中检测到的可能性分数是0.7以及未检测到的可能性分数可以是0.3,但是这取决于系统设计。)唤醒词判定数据252还可以包括时间数据,其指示例如唤醒词何时开始、持续了多长时间、何时结束等,这些数据可以由下游组件使用。取决于系统配置/特定解码器152的配置,唤醒词决策数据252可以逐帧地输出或者以其他方式输出。
唤醒词管理器156可以配置成接收唤醒词决策数据252,并使用该唤醒词决策数据252确定是否检测到唤醒词。例如,如果任何特定唤醒词决策数据252包括高于阈值的可能性/分数,则唤醒词管理器156可以确定检测到唤醒词。可以使用单个阈值,或者可以为每个解码器152定制不同的阈值。唤醒词管理器156也可以使用其他条件来确定是否检测到唤醒词。例如在某个范围内低于阈值的可能性/分数、在某个时间段内某个范围内的多个可能性/分数等。可以使用单个条件,或者可以为每个解码器152定制不同的条件。唤醒词管理器156可以输出唤醒词数据260,唤醒词数据可以包括检测到(或未检测到)唤醒词的指示、检测到的特定唤醒词的标识符、与特定检测到的唤醒词相关的时间数据等。然后,装置110可以处理唤醒词数据260,以确定检测到了特定唤醒词,并使得与该特定唤醒词相关联的语音处理组件使用音频数据111或表示所捕获的音频的其他音频来执行处理。根据系统配置,装置110还可以处理唤醒词数据260以确定执行一些其他操作。
如上所述,一个特定唤醒词可以与不同的助理语音服务相关联。因此,如本文所讨论的启用唤醒词可以允许装置110与不同的助理语音服务交互。由本文的配置实现的处理允许装置更容易地获得新的助理语音服务以进行语音处理等。例如,如图3A所示,第一装置110a可能已经配置成向第一助理语音服务160a发送音频数据。装置110连同系统120可以确定(302)激活新唤醒词用于第二助理语音服务160b的请求。然后,系统120可以确定(304)当前为第一装置激活的一组唤醒词(例如,通过查看与第一装置110a相关联的简档数据)。这可以包括装置110已经可检测到的唤醒词,以与第一助理语音服务160a交互。系统120可以确定(306)第一唤醒词组件数据,其包括用于第一装置的所有激活的唤醒词的联合编码器数据和解码器数据,第一唤醒词组件数据现在可以不仅包括与第一助理语音服务160a相关联的唤醒词,还包括与第二助理语音服务160b相关联的新唤醒词。该第一唤醒词组件数据可以被认为是“唤醒词模型”,因为用于联合编码器的数据可以被认为是唤醒词模型的早期层,并且用于解码器的数据可以被认为是唤醒词模型的后期层。系统120可以向第一装置110发送(308)第一唤醒词组件数据,然后第一装置可以配置(310)第一唤醒词组件数据用于进一步处理,例如通过使用它来更新/重新安装唤醒词检测组件122。第一装置110a然后可以使用第一唤醒词组件数据(如在第一装置110a上安装/操作)来处理(312)输入音频数据以检测新的唤醒词,并然后将音频数据发送(314)到系统120/第二助理语音服务160b以针对第二助理语音服务160b(其可以使用系统120的组件或者可以与其分离)进行处理。
如果用户随后希望使得第一装置110a与又一助理语音服务进行互动,则可以容易地重复该过程,如图3B所示。装置110连同系统120可以确定(316)激活另一个新唤醒词的请求,这次是用于第三助理语音服务160c。然后,系统120可以确定(318)当前为第一装置激活的一组唤醒词(例如,通过查看与第一装置110a相关联的简档数据)。这可以包括装置110已经可检测到的唤醒词,以与第一助理语音服务160a进行交互,以及包括用于第二助理语音服务160b的新唤醒词(如上文关于图3A所讨论的那样进行添加)。系统120可以确定(320)第二唤醒词组件数据,其包括用于第一装置的所有激活的唤醒词的联合编码器数据和解码器数据,第二唤醒词组件数据现在可以不仅包括与第一助理语音服务160a和第二助理语音服务160b相关联的唤醒词,还包括与第三助理语音服务160c相关联的另外的新唤醒词。系统120可以向第一装置110发送(322)第二唤醒词组件数据,然后第一装置可以配置(324)第二唤醒词组件数据用于进一步处理,例如通过使用它来更新/重新安装唤醒词检测组件122。第一装置110a然后可以使用第二唤醒词组件数据(如在第一装置110a上安装/操作)来处理(326)输入音频数据以检测另外的新唤醒词,并然后将音频数据发送(328)到系统120/第三助理语音服务160c以针对第三助理语音服务160c(其可以使用系统120的组件或者可以与其分离)进行处理。
系统还可以对第二装置110b重复图3A和/或图3B的操作,第二装置可以与第一装置110a的不同的简档和/或不同的已启用唤醒词相关联。因此,系统120可以为不同的装置配置不同的唤醒词组件数据,其中发送到第一装置的唤醒词组件数据可以具有用于相同联合编码器的数据,但是,具有用于不同解码器的不同数据,这取决于第二装置110b相对于第一装置110a启用了哪些唤醒词。以这种方式,联合编码器150和单独解码器152的分离配置进一步增加了系统120的灵活性。
在一个实施例中,附加于或替代于在每次装置启用/禁用唤醒时创建定制的唤醒词组件数据,系统可以创建预先存在的唤醒词组件数据包,以便根据要求进行部署。因此,系统可以提前创建对应于前N个最流行唤醒词组合的唤醒词模型(例如,唤醒词组件数据),并在适当的时候存储用于部署。例如,如果前三个最流行唤醒词(WW)组合是组合1:{WW1、WW3、WW5}、组合2:{WW1、WW2、WW4}和组合3:{WW2、WW3、WW5},则系统甚至可以在装置请求之前创建对应于每个组合的三组唤醒词组件数据。因此,对于组合1,系统可以创建唤醒词组件数据1(例如,唤醒词模型),其包括用于联合编码器的数据以及用于对应于WW1、WW3和WW5的解码器的数据。对于组合2,系统可以创建唤醒词组件数据2(例如,唤醒词模型),其包括用于联合编码器的数据以及用于对应于WW1、WW2和WW4的解码器的数据。对于组合3,系统可以创建唤醒词组件数据3(例如,唤醒词模型),其包括用于联合编码器的数据以及用于对应于WW2、WW3和WW5的解码器的数据。然后,如果配置成检测唤醒词1和3的装置发送请求来启用唤醒词5的检测,则系统可以简单地向该装置发送先前创建和存储的唤醒词组件数据1。虽然这种方法可能涉及最初在准备和存储用于唤醒词组合的唤醒词组件数据时消耗计算资源,但是这样做可以减少当装置请求启用(或禁用)新的唤醒词时在运行时经历的等待时间。假设要为装置启用的唤醒词的新组合是其中系统使预配置唤醒词组件数据可用的组合之一,则系统可以简单地向装置发送预配置的唤醒词组件数据,而不需要为装置以定制方式配置唤醒词组件数据。根据系统配置和可用资源,系统可以为许多不同的唤醒词组合(例如最流行的50、100个组合等)创建此种预先配置的唤醒词组件数据,从而减少许多用户在启用/禁用唤醒时的等待时间。
可以理解,唤醒词可以包括一个或多个词。例如,“Alexa”可以被认为是一个唤醒词,而“Ok Google”可以被认为是不同的唤醒词。这样,每个唤醒词都可以具有与其相关联的自己的解码器152,以允许其由装置110识别。然而,本构造的一个附加的好处是,它可以允许系统100更容易地使用分离唤醒词配置来操作。例如,如果用户希望使用(或被要求使用)单词“计算机”作为装置110的唤醒词,但也在常规对话中使用单词“计算机”,则用户可能希望添加前面的单词,诸如“Ok”、“Hey”等,使得只有单词“Ok计算机”的组合导致装置唤醒(例如,出于与系统100交互的目的,充当唤醒词),而常规提到“计算机”则不会。但是其他用户可能更喜欢诸如“Hey计算机”或“唤醒计算机”的组合。在另一种情况下,用户可能希望使用单个唤醒词(例如,“Alexa”)来激活第一助理语音服务,并使用组合唤醒词(例如,“HeySam”)来激活第二助理语音服务,而同一装置的不同用户可能更喜欢不同的唤醒词组合(例如,“Hi Alexa”来激活第一助理语音服务,以及“唤醒Sam”来激活第二助理语音服务)。由于训练中的困难以及在运行时实施此类操作的困难,先前的唤醒词检测器训练和操作没有提供这种灵活性。
然而,联合编码器150和单独解码器152的当前分离配置可以实现此类用户(或系统)配置的多个唤醒词检测。具体而言,装置110可以配置有多个解码器,这些解码器不仅能够检测将被认为是“主要”的唤醒词(例如,“Alexa”、“[CelebrityNameA]”、“[CelebrityNameB]”等),还能够检测前面的词(例如,“Hey”、“Hi”、“醒来”等),或者甚至是临时单词或以其他方式辅助唤醒词检测/辅助语音激活的单词。图4中示出了此种配置。当检测到单个单词时(通过用它们各自的解码器152处理编码的音频数据211),它们各自的唤醒词判定数据252可以被发送到唤醒词管理器156。唤醒词管理器156可以处理唤醒词决策数据252,唤醒词决策数据可以包括唤醒词中的每一个的时间数据,以检测某些词是否在彼此相隔的特定时间内被检测到,例如,在“Alexa”之前检测“Hi”。如果用户将装置110配置成以这种方式使用单词组合来操作(例如通过口头命令系统100和/或通过使用配套应用程序),则可以相应地更新唤醒词管理器156的设置。例如,唤醒词管理器156可以操作状态机来跟踪唤醒词的检测、与其相关的相对时间等。因此,如果在彼此的特定时间内检测到两个唤醒词,并且该组合对应于关于特定助理语音服务的唤醒功能,则唤醒词管理器156可以在唤醒词数据260中指示已经调用了特定助理语音服务,并且装置110/系统可以相应地采取行动,例如通过使用特定助理语音服务来执行语音处理。以这种方式,可以配置许多不同的唤醒词组合,并用于唤醒装置和调用助理语音服务。
联合编码器/独立解码器配置也可以用于唤醒词,唤醒词不一定是口语单词,但可以是特定的声音,诸如玻璃破碎声、婴儿哭声、门铃声等。这将允许所描述的联合编码器/独立解码器配置用于声学事件检测。因此,装置可以配置有对应于特定声学事件的一个或多个解码器,并且可以如本文所述处理输入的音频数据以确定是否检测到声学事件。此种声学事件的检测可以表示在唤醒词数据260中,并且可以由装置110和/或系统120处理以执行各种动作,诸如通知与装置110的用户/用户简档相关联的另一装置,通知不同的装置(诸如与安全监控服务相关联的装置),或者采取例如在对应于特定声学事件的用户设置/用户简档中指示的其他动作。
可以理解,助理语音服务可以用于访问虚拟助理的许多不同功能。这样,特定的助理语音服务160可以对应于语言处理组件、技能组件、语言输出组件和/或相关组件,如下面参考图5A和图5B进一步详细描述的。在各种实施方式中,由助理语音服务160表示的组件可以驻留在装置110或系统120上,或者在两者之间划分或共享。在一些实施方式中,助理1语音服务160a可以对应于第一系统120a的一个或多个组件,以及助理2语音服务160b可以对应于第二系统120b的一个或多个组件等。在一些实施方式中,多个助理语音服务160可以对应于单个系统120,其中每个虚拟助理的配置存储在多助理组件中,并用于使用对应于所确定的虚拟助理的设置和/或资源来处理用户命令和/或请求。在其他实施方式中,第一助理语音服务160a可以对应于与第二助理语音服务160b完全不同的系统120a,第二助理语音服务可以对应于系统120b。因此,响应于检测到与第一助理语音服务160a相关联的第一唤醒词,装置110可以向与第一系统120a和/或第一助理语音服务160a相关联的语音处理组件发送音频数据。但是响应于检测到与第二助理语音服务160b相关联的第二唤醒词,装置110可以向与第二系统120b和/或第二助理语音服务160b相关联的语音处理组件发送音频数据。
图5A是根据本发明的实施例的示出可以包括在多助理系统100的第一示例实施中的组件的概念图。在图5A所示的系统100的实施方式中,对应于第一虚拟助理(例如,助理1语音服务160a)的组件可以在装置110和第一系统120a之间划分和/或共享,对应于第二虚拟助理的组件可以在装置110和第二系统120b之间划分和/或共享等。各个系统120可以是分离并且彼此不同的。可以将来自对应于第一虚拟助理的装置110的数据(例如,将由第一虚拟助理处理的话语)发送到第一系统120a,并且可以将来自对应于第二虚拟助理的装置的数据发送到第二系统120b等。
系统100可以使用图5A中所述的各种组件进行操作。各种组件可以位于相同或不同的物理装置上。各种组件之间的通信可以直接发生或者通过网络199发生。装置110可以包括音频捕捉组件,诸如装置110的麦克风或麦克风阵列,其捕捉音频11并创建相应的音频数据。一旦在表示音频11的音频数据中检测到语音,装置110可以确定语音是否指向装置110/系统120。在至少一些实施例中,可以使用唤醒词检测组件122来进行此种确定。唤醒词检测组件122可以配置成检测如本文所述的各种唤醒词。在至少一些示例中,每个唤醒词可以对应于不同数字助理的名称。例如,唤醒词检测器122对唤醒词“Alexa”的检测可以导致将音频数据发送到助理1语音服务160a/系统120a进行处理,而唤醒词检测器对唤醒词“计算机”的检测可以导致将音频数据发送到助理2语音服务160b/系统120b进行处理。系统可以具有用于不同技能/系统的单独唤醒词和系统(例如,用于游戏助手3语音服务160c/系统120c的“地下城主”),和/或此类技能/系统可以由一个或多个系统120的一个或多个技能590来协调。在另一个示例中,对系统的输入可以是文本数据的形式,例如作为用户将输入键入装置110的用户界面的结果。其他输入形式可以包括用户已经按下装置110上的物理或虚拟按钮、用户已经做出手势等的指示。
例如,装置110/系统120可以使用系统导向检测器585确定用户输入是否指向系统。系统导向输入检测器585可以配置成确定对系统的输入(例如,语音、手势等)是否导向到系统还是未导向到系统(例如导向到另一个用户等。)系统导向输入检测器585可以与唤醒词检测器122一起工作。如果系统导向输入检测器585确定输入导向到系统,则装置110可以“唤醒”并开始发送捕获的数据以供进一步处理(例如,使用语言处理592处理音频数据、使用图像处理组件处理捕获的图像数据等)。如果数据正在被处理,装置110可以向用户指示这一点,例如通过激活或改变发光输出(诸如发光二极管(LED)环)的颜色,在显示器上显示指示符(诸如显示器上的灯条),输出音频指示符(诸如蜂鸣声)或以其他方式通知用户输入的数据正在被处理。如果系统导向输入检测器585确定输入未导向到系统(诸如语音或手势导向到另一个用户),则装置110可以丢弃数据并且不采取用于处理目的的进一步的动作。以这种方式,系统100可以防止处理不指向系统的数据,从而保护用户隐私。然而,作为对用户的指示,当系统导向输入检测器585正在确定输入是否可能地是装置导向时,系统可以输出音频、视觉或其他指示。例如,系统可以在考虑输入时输出橙色指示符,并且如果检测到系统导向的输入,则可以输出绿色指示符。其他此类配置也是可能的。在下面关于图6的描述中纳入了关于系统导向输入检测器585的其他细节。
在检测到唤醒词、按钮按压或开始接收输入的其他指示之后,装置110可以“唤醒”并开始生成和处理表示音频11的音频数据111。音频数据111可以包括对应于唤醒词的数据;在其他实施例中,可以在音频数据111的下游处理(例如,ASR和/或NLU)之前移除对应于唤醒词的音频部分。在触摸输入检测或基于手势输入检测的情况下,音频数据可以不包括唤醒词。
系统100接收后,可以将音频数据111发送至编排器组件530。编排器组件530可以包括存储器和逻辑,使得编排器组件530能够向系统的各种组件发送各种数据片段和形式,并执行本文所述的其他操作。
编排器组件530可以将音频数据111发送至语言处理组件592。语言处理组件592(有时也称为口语理解(SLU)组件)包括自动语音识别(ASR)组件550和自然语言理解(NLU)组件560。ASR组件550可以将音频数据111转录成文本数据。ASR组件550可以以流方式接收音频数据111;也就是说,ASR组件550可以在系统100生成音频数据111时开始接收和/或该处理音频数据,而不必等待用户停止讲话、释放按钮或以其他方式指示语音结束。ASR组件550输出的文本数据表示一个或多于一个(例如,以N个最佳列表的形式)ASR假设,这些假设表示音频数据111中表示的语音。ASR组件550基于音频数据111和预先建立的语言模型之间的相似性来解释音频数据111中的语音。例如,ASR组件550可以将音频数据111与声音模型(例如,声学单元,诸如单音、三调素、音素、调素等)和声音序列进行比较,以识别与音频数据111中表示的语音的声音序列相匹配的单词。在一些实施例中,ASR组件550经由编排器组件530将由此生成的文本数据发送给NLU组件560。从ASR组件550发送到NLU组件560的文本数据可以包括单个得分最高的ASR假设,或者可以包括N个最佳列表,其包括多个得分最高的ASR假设。N个最佳列表可以附加地包括与其中表示的每个ASR假设相关联的相应分数。将在下面参考图7更详细地描述ASR组件550。
语音处理系统592还可以包括NLU组件560。NLU组件560可以从ASR组件接收文本数据。NLU组件560可以通过确定与文本数据中表示的短语或语句相关联的一个或多个含义,尝试对其中输入的文本数据中表示的短语或语句进行语义解释。NLU组件560可以确定表示用户期望执行的动作的意图,并且可以确定允许装置(例如,装置110、系统120、技能组件590、技能系统525等)来执行意图的信息。例如,如果文本数据对应于“播放贝多芬的第五交响曲”,则NLU组件560可以确定系统输出音乐的意图,并且可以将“贝多芬”标识为艺术家/作曲家,并将“第五交响曲”标识为要播放的音乐片段。又例如,如果文本数据对应于“天气如何”,则NLU组件560可以确定系统输出与装置110的地理位置相关联的天气信息的意图。在又一个示例中,如果文本数据对应于“关灯”,则NLU组件560可以确定系统关闭与装置110或用户5相关联的灯的意图。然而,如果NLU组件560不能解析该实体,例如,因为实体由诸如“这首歌”或“我的下一个约会”的指代所引用,则语音处理系统592可以向另一个语音处理系统592发送解码请求,以获取关于提及的实体和/或与话语相关的其他上下文的信息。语音处理系统592可以基于音频数据111以及从另一个语音处理系统592接收的任何数据来增加、校正或建立结果数据。
NLU组件560可以将NLU结果数据985/925(其可以包括标记文本数据、意图指示符等)返回到编排器530。编排器530可以将NLU结果数据转发给技能组件590。如果NLU结果数据包括单个NLU假设,则NLU组件560和编排器组件530可以将NLU结果数据导向与NLU假设相关联的技能组件590。如果NLU结果数据985/925包括NLU假设的N个最佳列表,则NLU组件560和编排器组件530可以将得分最高的NLU假设导向与得分最高的NLU假设相关联的技能组件590。系统还可以包括后NLU排序器565,其可以结合其他信息来对由NLU组件560确定的潜在解释进行排序。将在下面参考图8和图9更详细地描述NLU组件560、后NLU排序器565和其他组件。
技能组件可以是在系统120上运行的软件,其类似于软件应用程序。也就是说,技能组件590可以使系统120能够执行特定功能,以便提供数据或产生一些其他请求的输出。如本文所使用的,“技能组件”可以指可以放置在机器或虚拟机上的软件(例如,当被调用时可以在虚拟实例中启动的软件)。技能组件可以是被定制来执行由商业实体、装置制造商、用户等指示的一个或多个动作的软件。可以使用许多不同的术语来指代本文所描述的技能组件,诸如动作、机器人或应用等。系统120可以配置有多于一个的技能组件590。例如,天气服务技能组件可以使系统120能够提供天气信息,汽车服务技能组件可以使系统120能够通过出租车或共享乘车服务预订旅行,餐馆技能组件可以使系统120能够通过餐馆的在线订购系统订购比萨等。技能组件590可以在系统120和诸如装置110的其他装置之间协同操作,以便完成某些功能。对技能组件590的输入可以来自语音处理交互或通过其他交互或输入源。技能组件590可以包括专用于特定技能组件590或在不同技能组件590之间共享的硬件、软件、固件等。
技能支持系统525可以与系统120内的技能组件590通信,和/或直接与编排器组件530或其他组件通信。技能支持系统525可以配置成执行一个或多个动作。执行此类动作的能力有时可以被称为“技能”。也就是说,技能可以使技能支持系统525能够执行特定功能,以便提供数据或执行用户请求的一些其他动作。例如,天气服务技能可以使技能支持系统525能够向系统120提供天气信息,汽车服务技能可以使技能支持系统525能够通过出租车或共享乘车服务预订旅行,订购比萨技能可以使技能支持系统525能够通过餐馆的在线订购系统订购比萨等。附加类型的技能包括家庭自动化技能(例如,使用户能够控制家庭装置的技能,诸如灯、门锁、相机、恒温器等)、娱乐装置技能(例如,使用户能够控制娱乐装置的技能,诸如智能电视)、视频技能、flash简报技能、以及与任何预先配置的类型的技能无关的定制技能。
系统120可以配置有专用于与技能支持系统525交互的技能组件590。除非明确声明,否则对技能、技能装置或技能组件的引用可以包括由系统120操作的技能组件590和/或由技能支持系统525操作的技能。此外,可以使用许多不同的术语来指代本文描述为一项或多项技能的功能,诸如动作、机器人、应用等。技能590和/或技能支持系统525可以将输出数据返回到编排器530。
系统120包括语言输出组件593。语言输出组件593包括自然语言生成(NLG)组件579和文本到语音(TTS)组件580。NLG组件579可以生成文本用于向用户输出TTS。例如,NLG组件579可以生成对应于指令的文本,该指令对应于用户要执行的特定动作。NLG组件579可以为本文描述的各种输出生成适当的文本。NLG组件579可以包括配置成输出适合于特定输入的文本的一个或多个训练模型。由NLG组件579输出的文本可以成为TTS组件580的输入(例如,下面讨论的输出文本数据1010)。替换地或附加地,TTS组件580可以从技能590或其他系统组件接收文本数据以供输出。
NLG组件579可以包括经训练的模型。NLG组件579从(例如,由对话管理器)接收的对话数据中生成文本数据1010,使得输出文本数据1010具有自然的感觉,并且在一些实施例中,包括为请求个性专门格式化的单词和/或短语。NLG可以使用模板来制定响应。和/或NLG系统可以包括从用于形成输出文本数据1010的各种模板训练的模型。例如,NLG系统可以分析本地新闻节目、电视节目、体育赛事或任何其他媒体节目的转录,以获得相关语言和/或地区的共同组分。作为一个说明性示例,NLG系统可以分析地区体育节目的转录,以确定用于描述比分或特定地区的其他体育新闻的常用单词或短语。NLG还可以接收对话历史、正式程度的指示和/或命令历史作为输入,或接收其他用户历史,诸如对话历史。
NLG系统可以基于一个或多个响应模板生成对话数据。进一步继续上面的示例,NLG系统可以选择模板来回答形式为“当前天气如何?”的问题:"现在的天气是$weather_information$。"NLG系统可以分析模板的逻辑形式以产生一个或多个包括标记和注释的文本响应,从而熟悉所产生的响应。在一些实施例中,NLG系统可以确定哪个响应是要选择的最合适的响应。因此,选择可以基于过去的回答、过去的问题、正式程度和/或任何其他特征或其任何其他组合。然后,可以使用文本到语音组件580来生成表示由NLG系统生成的响应的响应音频数据。
TTS组件580可以使用一种或多种不同方法从文本数据中生成音频数据(例如,合成语音)。输入到TTS组件580的文本数据可以来自技能组件590、编排器组件530或系统的另一组件。在一种称为单元选择的合成方法中,TTS组件580将文本数据与记录语音的数据库进行匹配。TTS组件580选择记录的语音的匹配单元,并将这些单元连接在一起以形成音频数据。在另一种称为参数合成的合成方法中,TTS组件580改变诸如频率、音量和噪声的参数,以创建包括人工语音波形的音频数据。参数合成使用电脑化的声音发生器,有时也称为声码器。
系统100(在装置110、系统120或其组合上)可以包括简档存储装置,其用于存储与系统互动的与单独用户、用户组、装置等相关的各种信息。如本文使用的,“简档”指的是与用户、用户组、装置等相关联的一组数据。简档的数据可以包括特定于用户、装置等的偏好;装置的输入和输出能力;互联网连接信息;用户书目信息;订阅信息以及其他信息。
简档存储装置570可以包括一个或多个用户简档,其中每个用户简档与不同的用户标识符/用户简档标识符相关联。每个用户简档可以包括各种用户识别数据。每个用户简档还可以包括对应于用户偏好的数据。每个用户简档还可以包括用户的偏好和/或代表用户的一个或多个装置的一个或多个装置标识符。例如,用户账户可以包括与所识别的用户账户相关联的每个附加电子装置的一个或多个IP地址、MAC地址和/或装置标识符,诸如序列号。当用户登录到安装在装置110上的应用程序时,可以更新用户简档(与所呈现的登录信息相关联)以包括关于装置110的信息,例如具有装置当前正在使用的指示。每个用户简档可以包括用户已经启用的技能的标识符。当用户启用技能时,用户向系统120提供许可以允许相对于用户的自然语言用户输入来执行技能。如果用户不启用技能,系统120可以不调用技能来执行关于用户的自然语言用户输入。
简档存储装置570可以包括一个或多个群组简档。每个群组简档可以与不同的群组标识符相关联。群组简档可以特定于一组用户。也就是说,群组简档可以与两个或更多个个体用户简档相关联。例如,群组简档可以是与用户简档相关联的家用装置简档,用户简档与单个家用装置的多个用户相关联。群组简档可以包括与其相关联的所有用户简档共享的偏好。与群组简档相关联的每个用户简档可以附加地包括特定于与之相关联的用户的偏好。也就是说,每个用户简档可以包括与同一个群组简档相关联的一个或多个其他用户简档不同的偏好。用户简档可以是独立的简档,或者可以与群组简档相关联。
简档存储装置570可以包括一个或多个装置简档。每个装置简档可以与不同的装置标识符相关联。每个装置简档可以包括各种装置识别信息。每个装置简档还可以包括一个或多个用户标识符,代表与装置相关联的一个或多个用户。例如,家用装置的简档可以包括家用装置的用户的用户标识符。
图5B是根据本发明的实施例的示出可以包括在多助理系统100的第二示例实施中的组件的概念图。在图5B所示的系统100的实施方式中,对应于多个虚拟助理的组件可以被合并为同一系统120的一部分。例如,系统可以允许访问在同一系统120内的不同的名人助理(例如,助理1语音服务160a、助理2语音服务160b等)。可以在装置110和系统120之间划分和/或共享语音助理的各种操作。可以使用由多助理组件515维护的配置数据根据确定的虚拟助理来执行系统120的组件对数据的处理。例如,由系统120接收的用于处理的数据可以包括助理标识符或系统120的组件可以用来以与确定的虚拟助理一致的方式处理数据的其他元数据。因此,系统120可以使用对应于确定的虚拟助理的模型、实体库等来执行语言处理,并且可以使用对应于确定的虚拟助手的语音参数来生成合成语音等。可以理解,图5A和图5B的配置可以一起使用,例如其中某些助理语音服务是同一系统的一部分,并且某些助理语音服务是分离的相应系统的一部分。
在一些实施方式中,系统120可以具有专用于特定虚拟助理的技能组件和/或与其连接。例如,装置110和/或系统120可以包括第一助理技能591,其可以包括如前所述的技能组件590。装置110和/或系统120还可以包括第二助理技能592,其包括技能组件595a、595b和595c(统称为“技能组件592”)。在一些实施方式中,技能组件592可以与技能组件590相同或相似。在一些实施方式中,第一助理技能591可以提供与第二助理技能不同的功能。在一些实施方式中,第一助理技能591可以是不专用于特定的域或装置的通用技能(例如,购物、天气、音乐等),而第二助理技能592可以专用于某个域、装置、服务等,诸如用于控制智能电视110g的操作。技能组件590中的一些可以与一个或多个技能支持系统525连接;类似地,技能组件592中的一些可以与一个或多个技能支持系统526连接。在一些实施方式中,系统100可以具有多于一个虚拟助理所共有的其他技能和/或技能组件。
图5B所示系统100的其他组件,诸如语言处理组件592、语言输出组件593、简档存储装置570和/或编排器组件530,可以与相对于图5A所述的相应组件相同或相似。
在图6中示出了系统导向输入检测器585的配置和操作。如图6所示,系统导向输入检测器585可以包括多个不同的组件。首先,系统导向输入检测器585可以包括语音活动检测器(VAD)620。VAD 620可以操作以检测输入的音频数据111是否包括语音。VAD输出621可以是二进制指示器。因此,如果传入音频数据111包括语音,则VAD 620可以输出音频数据111包括语音的指示符621(例如,1),并且如果传入音频数据111不包括语音,则VAD 620可以输出音频数据111不包括语音的指示符621(例如,0)。VAD输出621也可以是对应于音频数据111包括语音的可能性的分数(例如,0和1之间的数)。VAD 620还可以执行起点检测以及终点检测,其中VAD 620确定语音何时在音频数据111中开始以及其何时在音频数据111中结束。因此,VAD输出621还可以包括由系统的其他组件使用的语音起点和/或语音终点的指示符。(例如,起点和终点可以区分发送到语音处理组件240的音频数据111。)VAD输出621可以与和音频数据111相同的唯一ID相关联,以用于跟踪在各种组件上的系统处理。
VAD 620可以使用多种VAD技术进行操作,包括上文相对于装置110执行的VAD操作所述的技术。VAD可以配置成对背景噪声具有鲁棒性,从而准确地检测音频数据实际上是否包含语音。VAD 620可以对原始音频数据111(诸如由装置110发送的原始音频数据)进行操作,或者可以对代表音频数据111的特征向量或其他数据进行操作。例如,VAD 620可以采用深度神经网络(DNN)的形式,并且可以对表示从装置接收的全部音频数据111的单个特征向量进行操作,或者可以对多个特征向量进行操作,例如表示音频数据帧的特征向量,其中每个帧覆盖音频数据的特定时间量(例如,25ms)。VAD 620还可以对在检测音频数据111中的语音活动时可能有用的其他数据681进行操作。例如,其他数据681可以包括锚定语音检测的结果,其中系统采用语音参考片段(诸如语音,其说出了先前向系统发出的命令,包含唤醒词)的表示(诸如语音指纹、参考特征向量等),并比较在音频数据111中检测到的语音以确定该语音是否与语音的参考片段中的语音相匹配。如果语音匹配,这可以向VAD 620指示检测到语音。如果不匹配,这可以向VAD 620指示未检测到语音。(例如,可以对第一输入音频数据中的语音数据进行表示,然后可以将该表示与第二输入音频数据进行比较,以查看语音是否匹配。如果它们匹配(或不匹配),VAD 620可以考虑该信息。当确定是否检测到语音时,VAD 620还可以考虑其他数据。VAD 620还可以考虑说话者ID信息(诸如可以由用户识别组件输出的)、可以指示传入音频是从哪个方向(相对于捕捉装置110)接收的方向性数据。此种方向性数据可以从装置110接收,并且可以已经由波束形成器或装置110的其他组件确定。VAD 620还可以考虑关于先前话语的数据,其可以指示由系统接收的另外的音频数据是否可能包括语音。还可以使用其他VAD技术。
如果VAD输出621指示未检测到语音,则系统(通过编排器530或某些其他组件)可以停止对于音频数据111的处理,从而节省了原本可能另外用于其他处理的计算资源(例如,音频数据111的ASR等)。如果VAD输出621指示检测到语音,则系统可以确定该语音是否被导向语音处理系统。可以由系统导向音频检测器640做出此种确定。系统导向音频检测器640可以包括经训练的模型,诸如DNN,其对特征向量进行操作,该特征向量表示在确定语音是否导向到系统时可能有用的某些数据。为了创建可由系统导向音频检测器640操作的特征向量,可以使用特征提取器630。特征提取器630可以输入ASR结果710,其包括由语音识别组件550处理音频数据111的结果。出于保护隐私的目的,在某些配置中,ASR结果710可以从位于装置110或家庭远程组件上的语言处理组件592/ASR组件550获得,而不是从位于云或其他远程系统120上的语言处理组件592/ASR组件550获得,使得音频数据111不会远离用户的家庭发送,除非系统导向输入检测器组件585已经确定输入是系统导向的。尽管这可以根据用户偏好/系统配置进行调整。
ASR结果710可以包括得分最高的ASR假设及其相应得分的N个最佳列表、具有得分的ASR点阵/网格的部分(或全部)、具有得分的ASR搜索图的部分(或全部)、具有得分的ASR混淆网络的部分(或全部)、或其他此类ASR输出。作为示例,ASR结果710可以包括网格,该网格可以包括在ASR解码期间评分的原始搜索图。ASR结果710还可以包括点阵,该点阵可以是已被修剪以移除未超过分数阈值或假设数量阈值的某些假设的评分的网格。ASR结果710还可以包括混淆网络,其中来自点阵的路径已经被合并(例如,合并可能共享相同单词的全部或一部分的假设)。混淆网络可以是对应于线性图的数据结构,该线性图可以用作解码器点阵的最可能假设的替代表示。ASR结果710还可以包括相应的相应分数(诸如对于网格、点阵、混淆网络、个体假设、N个最佳列表等)。
ASR结果710(或其他数据691)可以包括其他ASR结果相关数据,诸如来自ASR系统的其他特征或由另一组件确定的数据。例如,系统可以确定ASR结果的熵(例如网格熵等),该熵指示网格的概率质量在备选假设中的分散程度。大熵(例如,在许多假设上概率质量分布较大)可以指示ASR组件550对其最佳假设不太有信心,这反过来可能与检测到的语音不是装置导向的有关。熵可以是包括在其他数据691中的特征,以由系统导向音频检测器640考虑。
系统还可以确定和考虑ASR解码成本,其可以包括来自ASR维特比解码成本的特征。此类特征可以指示输入声学和词汇与声学模型753和语言模型754的匹配程度。更高的维特比成本可以指示模型和给定数据之间更大的不匹配,这可能与检测到的语音不是装置导向的有关。也可以使用混淆网络特征。例如,来自特定节点(表示两个单词之间的潜在连接)的弧的平均数量(其中每个弧表示一个单词)可以测量混淆网络中有多少竞争假设。大量的竞争假设可以指示ASR组件550对最高假设不太有信心,这可能与检测到的语音不是装置导向的相关。来自ASR结果710的其他此类特征或数据也可以用作其他数据691。
ASR结果710可以在系统导向检测器(SDD)特征向量631中表示,其可以用于确定语音是否是系统导向的。特征向量631可以表示ASR结果710,但也可以表示音频数据111(音频数据可以输入到特征提取器630)或其他信息。此类ASR结果可能有助于确定语音是否是系统导向的。例如,如果ASR结果包括高评分的单一假设,则这可以指示音频数据111中表示的语音是导向装置110的并且是针对装置110的。然而,如果ASR结果不包括单个高评分假设,而是包括许多较低评分假设,则这可以指示语音识别组件550方面有一些混淆,并且还可能以指示音频数据111中表示的语音不是导向装置110的,并且不是针对装置110的。
ASR结果710可以包括完整的ASR结果,例如对应于起点和终点之间所有语音的ASR结果(诸如完整的点阵等)。在这种配置中,在操作特征提取器630和系统导向音频检测器640之前,系统可以等待直至针对某个输入音频的所有ASR处理已经完成。因此,系统导向音频检测器640可以接收特征向量631,其包括由特征提取器630创建的音频数据111的所有表示。系统导向音频检测器640然后可以操作特征向量631上的训练模型(诸如DNN),以确定对应于音频数据111包括系统导向语音的表示的可能性的分数。如果分数高于阈值,则系统导向音频检测器640可以确定音频数据111确实包括系统导向语音的表示。SDD结果642可以包括音频数据是否包括系统导向语音、分数和/或一些其他数据的指示符。
ASR结果710还可以包括不完整的ASR结果,例如仅对应于起点和终点之间的一些语音的ASR结果(诸如不完整的点阵等)。在这种配置中,特征提取器630/系统导向音频检测器640可以配置成对不完整的ASR结果710进行操作,因此系统导向音频检测器640可以配置成输出SSD结果642,SSD结果提供关于所处理的音频数据部分(对应于不完整的ASR结果)是否对应于系统导向语音的指示。因此,系统可以配置成至少部分地与系统导向音频检测器640并行地执行ASR,以在ASR结果数据准备好时对其进行处理,并从而持续更新SDD结果642。一旦系统导向输入检测器585已经处理了足够的ASR结果和/或SDD结果642超过阈值,系统可以确定音频数据111包括系统导向语音。类似地,一旦系统导向输入检测器585已经处理了足够的ASR结果和/或SDD结果642下降到另一阈值以下,系统可以确定音频数据111不包括系统导向语音。
SDD结果642可以与音频数据111和VAD输出621相同的唯一ID相关联,以用于跟踪各种组件上的系统处理。
特征提取器630还可以将其他数据691的表征纳入特征向量631中。其他数据691可以包括例如单词嵌入,其可以考虑来自语音识别组件550输出的单词。单词嵌入是单词或单词序列的向量表示,其示出相对于其他单词如何使用特定单词,诸如在大型文本语料库中。根据单词嵌入所表示的文本片段中有多少单词,单词嵌入可以具有不同的长度。为了特征提取器630处理和表示在特征向量631中的单词嵌入(其可以是固定长度),未知长度的单词嵌入可以由具有记忆的神经网络处理,诸如LSTM(长短期记忆)网络。单词嵌入的每个矢量可以由LSTM处理,然后其可以输出输入单词嵌入矢量的固定表示。
其他数据691也可以包括例如NLU输出,其可以考虑来自自然语言560组件。因此,如果自然语言输出数据985/925指示音频数据111和域外指示之间的高相关性(例如,没有来自ICs 864的意图分类器分数或来自识别器863的整体域分数达到某个置信度阈值),这可以指示音频数据111不包括系统导向语音。其他数据691也可以包括例如由用户识别组件(未示出)输出的用户/说话者的指示符。因此,例如,如果用户识别组件没有指示已知用户的存在,或者指示与音频数据111(该音频数据不与先前的话语相关联)相关联的用户的存在,则这可以指示音频数据111不包括系统导向语音。其他数据691还可以包括音频数据111中表示的语音与对应于先前话语的先前输入音频数据中检测到的语音相同(或不同)的指示。其他数据691还可以包括方向性数据,例如使用波束成形或其他音频处理技术来确定检测到的语音的源的方向/位置以及源方向/位置是否与说话的用户相匹配。其他数据691还可以包括指示用户语音的方向是朝向装置110还是远离装置110的数据,这可以指示语音是否是系统导向的。
其他数据691也可以包括图像数据623。例如,如果从装置110(该装置使用系统导向输入检测器(585)捕获正在处理的音频数据)附近的一个或多个装置(其可以包括装置110本身)检测到图像数据,则可以处理图像数据以确定用户是否正面对音频捕获装置,以确定语音是否是系统导向的,如下面进一步解释的。
其他数据691也可以是对话历史数据。例如,其他数据691可以包括:关于说话者是否已经从先前话语改变到当前音频数据111;谈话主题是否已经从先前话语改变到当前音频数据;与使用当前音频数据111获得的NLU结果相比,如何从先前话语得出NLU;其他系统上下文信息的信息。其他数据691还可以包括关于音频数据111是否作为唤醒命令的结果被接收或者音频数据111是否在装置110没有检测到唤醒命令的情况下被发送(例如,装置110被远程系统120指示和/或在没有首先检测到唤醒命令的情况下确定发送音频数据)的指示符。
其他数据691也可以包括来自用户简档570的信息。
其他数据691还可以包括方向数据,例如关于装置检测到的语音到达方向的数据,例如波束索引号或角度数据等。如果从与第一音频数据不同的方向接收第二音频数据,则系统不太可能声明第二音频数据包括系统导向语音,因为它源自不同的位置。
其他数据691还可以包括声学特征数据,诸如音调、韵律、语调、音量或在音频数据111中描述语音的其他数据。由于用户可以使用与另一个人说话时不同的声调对机器说话,所以声学特征信息可以有助于确定语音是否是装置导向的。
其他数据691也可以包括指示音频数据111是否包括唤醒词的指示器。例如,如果装置110在向远程系统120发送音频数据111之前检测到唤醒词,则装置110可以一起发送装置110在音频数据111中检测到唤醒词的指示符。在另一个示例中,远程系统120可以包括处理传入音频数据111以确定它是否包括唤醒词的另一个组件。如果包括,则该组件可以创建指示音频数据111包括唤醒词的指示符。指示符然后可以被包括在其他数据691中,以结合到特征向量631中和/或另外由系统导向音频检测器640考虑。
其他数据691还可以包括装置历史数据,诸如与发送音频数据111的装置110相关的先前操作的信息。例如,其他数据691可以包括关于刚刚执行的先前话语的信息,其中话语源自与当前话语相同的装置110,并且先前话语在当前话语的特定时间窗口内。装置历史数据可以以与装置标识符相关联的方式来存储(装置标识符也可以包括在其他数据691中),装置标识符也可以用于跟踪关于装置的其他信息,诸如装置硬件、能力、位置等。
VAD 620使用的其他数据681可以包括与特征提取器630使用的其他数据691相似的数据和/或不同的数据。因此,其他数据681/691可以包括对应于来自先前话语的输入音频的各种数据。该数据可以包括来自先前话语的声学数据、来自先前话语的说话者ID/语音识别数据、关于先前话语和当前话语之间的时间的信息、或者本文描述的取自先前话语的各种其他数据。分数阈值(针对系统导向音频检测器640和/或VAD 620)可以基于来自先前话语的数据。例如,分数阈值(针对系统导向音频检测器640和/或VAD 620)可以基于来自先前话语的声学数据。
特征提取器630可以为输入音频数据611的一个话语/实例输出单个特征向量631。取决于可用于特定音频数据111的相关数据,特征向量631可以始终是长度固定的,或者可以是长度可变的向量。因此,系统导向音频检测器640可以为输入音频数据611的每个话语/实例输出单个SDD结果642。SDD结果642可以是二进制指示器。因此,如果传入音频数据111包括系统导向语音,则系统导向音频检测器640可以输出音频数据111包括系统导向语音(例如,1)的指示符642,并且如果传入音频数据111不包括系统导向语音,则系统导向音频检测器640可以输出音频数据111不包括系统导向语音(例如,0)的指示符642。SDD结果642也可以是对应于音频数据111包括系统导向语音的可能性的分数(例如,0和1之间的数)。尽管图6中未示出,但是可以由编排器530或一个或多个其他组件来管理往来系统导向输入检测器585的数据流。
系统导向音频检测器640的训练模型可以在包括正和负训练样本(例如,代表系统导向语音和非系统导向语音两者的样本)的SDD特征向量的许多不同示例上进行训练,使得系统导向音频检测器640的DNN和/或其他训练模型能够鲁棒地检测语音何时是系统导向的以及语音何时是非系统导向的。
系统导向输入检测器585的进一步输入可以包括TTS组件580的输出数据,以避免系统输出的合成语音混淆为用户说出的系统导向语音。来自TTS组件580的输出可以允许系统在其考虑语音是否是系统导向的时忽略合成语音。来自TTS组件580的输出还可以允许系统确定用户捕捉的话语是否响应于TTS输出,从而改进系统操作。
系统导向输入检测器585还可以使用回波损耗增强(ERLE)和/或声学回波消除(AEC)数据,以避免处理系统产生的音频数据。
如图6所示,系统导向输入检测器585可以仅使用音频数据来确定输入是否是系统导向的(例如,系统导向音频检测器640可以输出SDD结果642)。特别是在没有图像数据可用时(例如对于没有相机的装置),这可能是精确的。然而,如果图像数据623可用,则系统还可以配置成使用图像数据623来确定输入是否是系统导向的。图像数据623可以包括由装置110捕获的图像数据和/或由装置110的环境中的其他装置捕获的图像数据。可以将音频数据111、图像数据623和其他数据681打上时间戳或以其他方式相关联,使得系统导向输入检测器585可以确定正在被分析的数据都与同一时间窗口相关,从而确保关于特定输入是否是系统导向的而考虑的数据对齐。例如,系统导向输入检测器585可以确定音频数据的每一帧/视频流的每一个图像的系统导向性分数,并且可以将它们对齐和/或加窗以确定对应于一组音频帧/图像的特定输入的单个总分数。
可以由特征提取器635接收图像数据623和其他数据681。特征提取器可以创建一个或多个特征向量636,其可以表示图像数据623/其他数据681。在某些示例中,其他数据681可以包括来自图像处理组件的数据,该数据可以包括关于在图像数据623中检测到的面部、姿势等的信息。出于保护隐私的目的,在某些配置中,任何图像处理/其结果可以从位于装置110或家庭远程组件上的图像处理组件获得,而不是从位于云或其他远程系统120上的图像处理组件获得,使得图像数据623不会远离用户的家庭发送,除非系统导向输入检测器组件585已经确定输入是系统导向的。尽管这可以根据用户偏好/系统配置进行调整。
特征向量636可以传递到用户检测器625。用户检测器625(其可以使用图像处理组件、用户识别组件等的各种组件/操作)可以配置成处理图像数据623和/或特征向量636,以确定关于用户行为的信息,该信息又可以用于确定输入是否是系统导向的。例如,用户检测器625可以配置成确定用户相对于装置110/系统100的位置/行为。用户检测器625还可以配置成确定用户的嘴是否以暗示用户正在说话的方式张开/闭合。用户检测器625还可以配置成确定用户是点头还是摇头。用户检测器625还可以配置成确定用户的凝视是指向装置110、另一用户还是另一物体。例如,使用检测器625可以包括凝视检测器或配置成使用来自凝视检测器的数据。用户检测器625还可以配置成确定用户的姿势,诸如耸肩、指向物体、挥手、举手以指示停止的指令、或者手指移动以指示继续的指令、举起一定数量的手指、竖起拇指等。用户检测器625还可以配置成确定用户的位置/方向,诸如面向另一用户、面向装置110、他们的背是否转过去等。用户检测器625还可以配置成确定出现在图像数据中的多个用户(和/或用户正在音频数据111中讲话,这也可以由用户检测器625连同特征向量631一起考虑)的相对位置,例如哪些用户更靠近装置110,以及哪些用户更远离。用户检测器625(和/或其他组件)还可以配置成识别图像数据中表示的其他对象,并确定对象是否与对话或系统交互相关(例如,确定用户是否通过移动或语音来指代对象)。
用户检测器625可以操作一个或多个模型(例如,一个或多个分类器),以确定图像数据623中是否表示了某些情况。例如,用户检测器625可以采用视觉定向分类器,该视觉定向分类器可以针对在图像数据623中检测到的每个面部来确定该面部是否正看着装置110。例如,可以使用轻量级卷积神经网络(CNN),其将从面部检测器的结果中裁剪出的面部图像作为输入,并输出该面部指向相机的可能性的[0,1]分数。另一种技术可以包括确定每个面部的三维(3D)标志,估计面部的3D角度,并基于3D角度预测定向得分。
用户检测器625(或其他组件,诸如图像处理中的组件)可以配置成跟踪图像数据中的面部,以确定所显示的面部可能属于同一个人。系统可以使用基于IOU的跟踪器、基于均值漂移的跟踪器、基于粒子滤波器的跟踪器或其他技术。
用户检测器625(或其他组件,诸如用户识别组件中的组件)可以配置成确定图像数据中表示的面部是否属于正在说话的人,从而执行主动说话者检测。系统可以从面部追踪器获取输出,并且聚集来自同一个人的面部序列作为输入,并且预测这个人是否正在说话。嘴唇运动、用户ID、检测到的语音数据和其他数据可以用于确定用户是否正在说话。
然后,系统导向图像检测器650可以基于来自用户检测器625的信息,如同基于图像数据一样,来确定与图像数据相关的输入是否是系统导向的。系统导向图像检测器650还可以对其他输入数据(例如包括原始图像数据623的图像数据、包括基于原始图像数据的特征数据636的图像数据、其他数据681或其他数据)进行操作。系统导向图像检测器650的确定可以基于图像数据产生指示输入是否是系统引导的分数。如果没有可用的音频数据,则指示可以输出作为SDD结果642。如果音频数据可用,则指示可以被发送到系统导向检测器670,该检测器可以考虑来自系统导向音频检测器640和系统导向图像检测器650的信息。系统导向检测器670然后可以处理来自系统导向音频检测器640和系统导向图像检测器650的数据,以得出关于输入是否是系统导向的总体确定,其可以输出作为SDD结果642。系统导向检测器670不仅可以考虑从系统导向音频检测器640和系统导向图像检测器650输出的数据,还可以考虑对应于输入的其他数据/元数据(例如,关于图6讨论的图像数据/特征数据636、音频数据/特征数据631、图像数据623或音频数据111等)。系统导向检测器670可以包括一个或多个模型,这些模型可以分析各种输入数据以做出关于SDD结果642的确定。
在一个示例中,系统导向检测器670的确定可以基于“与”逻辑,例如,仅当从系统导向音频检测器640和系统导向图像检测器650接收到肯定数据时,确定输入是系统导向的。在另一个示例中,系统导向检测器670的确定可以基于“或”逻辑,例如,当从系统导向音频检测器640或系统导向图像检测器650接收到肯定数据时,确定输入是系统导向的。在又一个示例中,从系统导向音频检测器640和系统导向图像检测器650接收的数据基于系统导向检测器670可用的其他信息被单独加权,以确定音频和/或图像数据应该在多大程度上影响输入是否是系统导向的决定。
系统导向输入检测器585也可以从唤醒词组件122接收信息。例如,系统导向输入检测器585(例如,系统导向音频检测器640、系统导向检测器670等)可以考虑检测到唤醒词的指示(例如,WW数据260)作为系统输入是否是装置导向的整体考虑的一部分。唤醒词的检测可以被认为是特定输入是装置导向的强信号。
如果确定输入是系统导向的,可以将与输入相关的数据发送至下游组件以进行进一步处理(例如,发送至语言处理592)。如果确定输入不是系统导向的,则系统可以不针对与输入相关的数据采取进一步的动作,并且可以允许将其删除。在某些配置中,为了维护隐私,由装置110(或家庭服务器120)执行确定输入是否是系统导向的操作,并且只有当确定输入是系统导向的时,进一步的数据(诸如音频数据111或图像数据623)才被发送到用户家庭之外的远程系统120或其他直接控制。
图7是根据本发明的实施例的ASR组件550的概念图。ASR组件550可以基于口头自然语言输入和存储在ASR模型存储装置752中的预先建立的语言模型754之间的相似性来解释口头自然语言输入。例如,ASR组件550可以将音频数据与声音(例如,子词单元或单音)和声音序列的模型进行比较,以识别与自然语言输入中说出的声音序列相匹配的词。或者,ASR组件550可以使用有限状态转换器(FST)755来实现语言模型功能。
当ASR组件550为单个口语自然语言输入生成一个以上的ASR假设时,可以为每个ASR假设分配表示相应的ASR假设匹配口头自然语言输入的可能性(例如,表示特定的一组单词匹配自然语言输入中所说的那些单词的可能性)的分数(例如,概率分数、置信度得分等)。分数可以基于多个因素,其包括例如口语自然语言输入中的声音与语言声音的模型(例如,在ASR模型存储装置752中存储的声学模型753)的相似性,以及在特定位置将与声音匹配的特定单词包括在句子中的可能性(例如,使用语言或语法模型754)。基于所考虑的因素和所分配的置信度得分,ASR组件550可以输出最有可能匹配口头自然语言输入的ASR假设,或者可以以点阵或N个最佳列表的形式输出多个ASR假设,其中每个ASR假设对应于相应的得分。
ASR组件550可以包括语音识别引擎758。ASR组件550接收音频数据111(例如,从本地装置110接收,该装置已经处理了由麦克风通过声学前端(AFE)或其他组件检测到的音频)。语音识别引擎758将音频数据111与声学模型753、语言模型754、FST 755和/或用于识别音频数据中传达的语音的其他数据模型和信息进行比较。音频数据111可以是已经被数字化成(例如通过AFE)表示时间间隔的帧的音频数据,对于时间间隔,AFE确定多个值,称为特征,其表示音频数据质量,以及这些值的集合,称为特征向量,其表示帧内音频数据的特征/质量。在至少一些实施例中,每个音频帧可以是10ms。如本领域中已知的,可以确定许多不同的特征,并且每个特征可以表示可能对ASR处理有用的音频的某种质量。AFE可以使用多种方法来处理音频数据,诸如梅尔频率倒谱系数(MFCCs)、感知线性预测(PLP)技术、对数滤波器组能量(LFBEs)、神经网络特征向量技术、线性判别分析、半约束协方差矩阵或本领域技术人员已知的其他方法。
语音识别引擎758可以参考存储在ASR模型存储装置752中的信息来处理音频数据111。音频数据111的特征向量可以到达编码系统120,在这种情况下,它们可以在由语音识别引擎758处理之前被解码。
语音识别引擎758尝试将接收到的特征向量与存储的声学模型753、语言模型754和FST 755中已知的语言声学单元(例如,单音)和单词进行匹配。举例来说,音频数据111可以由一个或一个以上的声学模型753处理以确定声学单元数据。声学单元数据可以包括由ASR组件550在音频数据111中检测到的声学单元的指示符。例如,声学单元可以由一个或多个单音、双音、调素、双调素、三调素等组成。声学单元数据可以使用语音字母表中的一个或一系列符号来表示,诸如X-SAMPA、国际语音字母表或初始教学字母表(ITA)语音字母表。在一些实施方式中,可以使用基于n元语法的标记器来分析音频数据的单音表示。实体或代表一个或多个实体的插槽可以由一系列n元语法来表示。
可以使用语言模型754(和/或使用FST 755)处理声学单元数据,以确定ASR数据710。ASR数据710可以包括一个或多个假设。然后,ASR数据710中表示的假设中的一个或多个假设可以被发送到另外的组件(诸如NLU组件560),以进行如本文所讨论的进一步处理。ASR数据710可以包括话语的文本的表示,诸如单词或子词单元等。
语音识别引擎758根据声学信息和语言信息计算特征向量的分数。声学信息(诸如声学单元的标识符和/或相应的分数)用于计算声学分数,该声学分数表示由一组特征向量表示的预期声音与语言单音匹配的可能性。语言信息用于通过考虑在彼此的上下文中使用什么声音和/或单词来调整声学得分,从而提高ASR组件550将输出在语法上有意义的ASR假设的可能性。所使用的特定模型可以是通用模型,或者可以是对应于特定域的模型,诸如音乐、银行等。
语音识别引擎758可以使用多种技术将特征向量与单音匹配,例如使用隐马尔可夫模型(HMM)确定特征向量可以与单音匹配的概率。接收到的声音可以被表示为HMM的状态之间的路径,并且多个路径可以表示同一声音的多个可能的文本匹配。也可以使用其他技术,诸如使用FST。
语音识别引擎758可以使用声学模型753尝试将接收到的音频特征向量与单词或子词声学单元进行匹配。声学单元可以是音素、单音、上下文中的单音、音节、音节的一部分、上下文中的音节或单词的任何其他此类部分。语音识别引擎758根据声学信息和语言信息计算特征向量的识别分数。声学信息用于计算声学得分,该声学得分表示由一组特征向量表示的预期声音与子词单元匹配的可能性。语言信息用于通过考虑在彼此的上下文中使用什么声音和/或单词来调整声学得分,从而提高ASR组件550输出在语法上有意义的ASR假设的可能性。
语音识别引擎758可以使用多种技术来将特征向量匹配到单音或其他声学单元,诸如双音素、三音素等。一种常见的技术是使用隐马尔可夫模型(HMM)。HMM用于确定特征向量可以匹配单音的概率。使用HMM,呈现多个状态,其中这些状态一起表示潜在的单音(或其他声学单元,诸如三音素),并且每个状态与模型相关联,诸如高斯混合模型或深度信任网络。状态之间的转换也可以具有关联的概率,表示可以从先前状态到达当前状态的可能性。接收到的声音可以被表示为HMM的状态之间的路径,并且多个路径可以表示同一声音的多个可能的文本匹配。每个单音可以由对应于单音及其部分的不同已知发音的多个潜在状态来表示(诸如口语声音的开头、中间和结尾)。潜在发音的概率的初始确定可以与一个状态相关联。当语音识别引擎758处理新的特征向量时,基于新的特征向量的处理,状态可以改变或保持不变。维特比算法可以用于根据经处理的特征向量找到最可能的状态序列。
可能的单音和相关状态/状态转换,例如HMM状态,可以形成穿过潜在单音的点阵的路径。每个路径代表可能与特征向量所代表的音频数据相匹配的一系列单音。根据为每个单音计算的识别分数,一个路径可以与一个或多个其他路径重叠。某些概率与从一个状态到另一个状态的每个转换相关联。还可以为每个路径计算累积路径分数。基于特征向量确定分数的这个过程可以被称为声学建模。当组合分数作为ASR处理的一部分时,可以将分数相乘到一起(或以其他方式组合)以达到期望的组合分数,或者可以将概率转换到对数域并相加以辅助处理。
语音识别引擎758还可以基于语言模型或语法计算路径分支的分数。语言建模包括确定哪些单词可能一起使用以形成连贯的单词和句子的分数。语言模型的应用可以提高ASR组件550正确地解释音频数据中包含的语音的可能性。例如,对于听起来像“hello”的输入音频,返回“H E L O”、“H A L O”和“Y E L O”的潜在单音路径的声学模型处理可以由语言模型来调整,以基于口头话语中每个单词的语言上下文来调整“H E L O”(解释为单词“hello”)、“H A L O”(解释为单词“halo”)和“Y E L O”(解释为单词“yellow”)的识别分数。
图8和图9示出了NLU组件560可以如何执行NLU处理。图8是根据本发明的实施例如何执行自然语言处理的概念图。以及图9是根据本发明的实施例如何执行自然语言处理的概念图。
图8示出了如何对文本数据进行NLU处理。NLU组件560可以处理包括单个用户输入的若干ASR假设的文本数据。例如,如果ASR组件550输出包括ASR假设的n个最佳列表的文本数据,则NLU组件560可以针对其中表示的所有(或一部分)ASR假设来处理文本数据。
NLU组件560可以通过解析和/或标记文本数据来注释文本数据。例如,对于文本数据“告诉我西雅图的天气”,NLU组件560可以将“告诉我西雅图的天气”标记为<输出天气>意图,并单独将“西雅图”标记为天气信息的位置。
NLU组件560可以包括挑选器(shortlister)组件850。挑选器组件850选择可以针对输入到NLU组件560(例如,可以针对用户输入执行的应用)的ASR输出数据710执行的技能。ASR输出数据710(其也可以称为ASR数据710)可以包括话语的文本的表示,诸如单词或子词单元等。因此,挑选器组件850将下游的、资源更密集的NLU过程限制为针对可以针对用户输入执行的技能来执行。
在没有挑选器组件850的情况下,NLU组件560可以针对系统的每项技能(并行、串行或使用其某种组合)处理输入到其的ASR输出数据710。通过实现挑选器组件850,NLU组件560可以仅针对可以针对用户输入执行的技能来处理ASR输出数据710。这降低了由于NLU处理带来的总计算能力和延迟。
挑选器组件850可以包括一个或多个训练模型。可以训练模型来识别可以由系统120接收的各种形式的用户输入。例如,在训练期间,与技能相关联的技能系统525可以向系统120提供表示样本用户输入的训练文本数据,样本用户输入可以由用户提供以调用技能。例如,对于共享乘车技能,与共享乘车技能相关联的技能系统525可以向系统120提供训练文本数据,包括对应于“帮我叫辆出租车去[位置]”、“帮我搭车去[位置]”、“帮我预定辆出租车去[位置]”、“帮我预定辆车去[位置]”等的文本。可以使用表示样本用户输入的训练文本数据来训练将由挑选器组件850使用的一个或多个训练模型,以确定用户可能试图用来调用特定技能的其他潜在相关的用户输入结构。在训练期间,从技能系统525的角度来看,系统120可以请求与技能相关联的技能系统525关于所确定的其他用户输入结构是否允许用于调用技能。替代的用户输入结构可以在模型训练期间由一个或多个训练模型导出,和/或可以基于由不同技能提供的用户输入结构。与特定技能相关联的技能系统525也可以向系统120提供指示语法和注释的训练文本数据。系统120可以至少部分地基于用户输入的结构,使用表示样本用户输入、所确定的相关用户输入、语法和注释的训练文本数据来训练模型,这些模型指示用户输入何时可能指向技能/由技能处理。挑选器组件850的每个训练模型可以针对不同的技能进行训练。替代地,挑选器组件850可以对每个域使用一个训练模型,诸如一个用于与天气域相关联的技能的训练模型,一个用于与乘车共享域相关联的技能的训练模型等。
系统120可以使用由技能系统525提供的样本用户输入以及在训练期间潜在地确定的相关样本用户输入作为二进制示例来训练与技能系统525相关联的技能相关联的模型。然后,可以由挑选器组件850在运行时操作与特定技能相关联的模型。例如,一些样本用户输入可以是正示例(例如,可以用于调用技能的用户输入)。其他样本用户输入可以是负示例(例如,可以不用于调用技能的用户输入)。
如上所述,挑选器组件850可以包括系统的每项技能的不同训练模型、每个域的不同训练模型或训练模型的一些其他组合。例如,挑选器组件850可以替换地包括单个模型。单个模型可以包括关于系统的所有技能共享的特征(例如,语义特征)训练的部分。单个模型还可以包括特定技能部分,其中每个特定技能部分相对于系统的特定技能被训练。与为每个技能实现不同的训练模型相比,实现具有技能特定部分的单个模型可以导致更少的等待时间,因为具有技能特定部分的单个模型限制了在每个技能水平上处理的特征的数量。
可以基于域对针对一种以上技能所共有的特征而训练的部分进行聚类。例如,针对多个技能训练的部分的第一部分可以针对天气域技能进行训练,针对多个技能训练的部分的第二部分可以针对音乐域技能进行训练,针对多个技能训练的部分的第三部分可以针对旅游域技能进行训练等。
聚类可能不是在所有情况下都是有益的,因为它可能导致挑选器组件850仅输出ASR输出数据710可能涉及的技能的一部分的指示。例如,用户输入可以对应于“告诉我关于汤姆·柯林斯的情况”。如果基于域对模型进行聚类,则挑选器组件850可以确定用户输入对应于食谱技能(例如,饮料食谱),即使用户输入也可以对应于信息技能(例如,包括关于名为汤姆·柯林斯的人的信息)。
NLU组件560可以包括一个或多个识别器863。在至少一些实施例中,识别器863可以与技能系统525相关联(例如,识别器可以配置成将文本数据解释成对应于技能系统525)。在至少一些其他示例中,识别器863可以与诸如智能家居、视频、音乐、天气、习俗等域相关联(例如,识别器可以配置成将文本数据解释成对应于该域)。
如果挑选器组件850确定ASR输出数据710可能与多个域相关联,则与域相关联的识别器863可以处理ASR输出数据710,而挑选器组件850的输出中未指示的识别器863不可以处理ASR输出数据710。“挑选器”识别器863可以以并行、串行、部分并行等方式处理ASR输出数据710。例如,如果ASR输出数据710潜在地涉及通信域和音乐域,则与通信域相关联的识别器可以并行或部分并行地处理ASR输出数据710,而与音乐域相关联的识别器处理ASR输出数据710。
每个识别器863可以包括命名实体识别(NER)组件862。NER组件862试图标识可以用于解释关于其中输入的文本数据的含义的语法和词汇信息。NER组件862标识对应于与域相关联的命名实体的文本数据部分,该域与实现NER组件862的识别器863相关联。NER组件862(或NLU组件560的其他组件)还可以确定单词是否指代未在文本数据中明确提及其身份的实体,例如“他”、“她”、“它”或其他回指、外指等。
每个识别器863,并且更具体地,每个NER组件862,可以与特定语法数据库876、特定意图/动作集874和特定个性化词典886相关联。语法数据库876和意图/动作874可以存储在NLU存储装置873中。每个地名词典884可以包括与特定用户和/或装置110相关联的域/技能索引词汇信息。例如,地名词典A(884a)包括技能索引词汇信息886aa至886an。例如,用户的音乐域词汇信息可以包括专辑名称、艺术家姓名和歌曲名称,而用户的通信域词汇信息可以包括联系人姓名。因为每个用户的音乐收藏和联系人列表可能是不同的。这种个性化信息改进了以后执行的实体解析。
NER组件862应用与域相关联的语法信息876和词汇信息886(与实施NER组件862的识别器863相关联)来确定文本数据中一个或多个实体的提及。以这种方式,NER组件862标识可能对后续处理有用的“插槽”(每个插槽对应于文本数据中的一个或多个特定单词)。NER组件862还可以用类型(例如,名词、地点、城市、艺术家姓名、歌曲名称等)来标记每个插槽。
每个语法数据库876包括在语法数据库876与其相关的特定域的语音中常见的实体(即名词)的名称,而词汇信息886针对用户和/或用户输入来源于其的装置110进行个性化。例如,与购物域相关联的语法数据库876可以包括当人们讨论购物时通常使用的单词的数据库。
称为实体解析的(在本文中其他地方详细讨论的)下游过程将文本数据的插槽链接到系统已知的特定实体。为了执行实体解析,NLU组件560可以利用存储在实体库存储装置882中的地名词典信息(884a-884n)。地名词典信息884可以用于将文本数据(表示用户输入的一部分)与表示已知实体的文本数据(诸如歌曲标题、联系人姓名等)相匹配。地名词典884可以链接到用户(例如,特定地名词典可以与特定用户的音乐收藏相关联),可以链接到某些域(例如,购物域、音乐域、视频域等),或者可以以各种其他方式来组织。
每个识别器863还可以包括意图分类(IC)组件864。IC组件864解析文本数据以确定潜在地表示用户输入的意图(与实现IC组件864的识别器863相关联的域相关联)。意图表示用户希望执行的动作。IC组件864可以与链接到意图的单词的数据库874通信。例如,音乐意图数据库可以将诸如“安静”、“音量关”和“静音”的单词和短语链接到<静音>意图。IC组件864通过将文本数据(表示用户输入的至少一部分)中的单词和短语与意图数据库874(与实现IC组件864的识别器863相关联的域相关联)中的单词和短语进行比较来识别潜在意图。
可由特定IC组件864识别的意图链接至特定域(即,与实施IC组件864的识别器863相关联的域)语法框架876,其具有待填充的“插槽”。语法框架876的每个插槽对应于系统认为对应于实体的文本数据的一部分。例如,对应于<播放音乐>意图的语法框架876可以对应于文本数据句子结构,诸如“播放{艺术家姓名}”、“播放{专辑名称}”、“播放{歌曲名称}”、“由{艺术家姓名}播放{歌曲名称}”等。然而,为了使实体解析更加灵活,语法框架876可以不被结构化为句子,而是基于将插槽与语法标签相关联。
例如,NER组件862可以在识别文本数据中的命名实体之前基于语法规则和/或模型解析文本数据,以将单词识别为主语、宾语、动词、介词等。IC组件864(由与NER组件862相同的识别器863实现)可以使用所标识的动词来标识意图。NER组件862然后可以确定与所识别的意图相关联的语法模型876。例如,对应于<播放音乐>的意图的语法模型876可以指定适用于播放所识别的“对象”和任何对象修饰语(例如,介词短语)的插槽列表,诸如{艺术家姓名}、{专辑名称}、{歌曲名称}等。然后,NER组件862可以在词典886中搜索相应的字段(与实现NER组件862的识别器863相关联的域相关联),尝试将NER组件862先前标记为语法对象或对象修饰语的文本数据中的单词和短语与词典886中标识的那些相匹配。
NER组件862可以执行语义标记,即根据单词或单词组合的类型/语义对其进行标记。NER组件862可以使用启发式语法规则来解析文本数据,或者可以使用诸如隐马尔可夫模型、最大熵模型、对数线性模型和条件随机场(CRF)等技术来构建模型。例如,由音乐域识别器实现的NER组件862可以将对应于“由滚石乐队演唱的母亲的小助手”的文本数据解析并标记为{动词}:“演唱”,{对象}:“母亲的小助手”,{对象介词}:“由”,以及{对象修饰语}:“滚石乐队”。NER组件862基于与音乐域相关联的单词数据库将“播放”标识为动词,IC组件864(也由音乐域识别器实现)可以确定其对应于<放音乐>意图。在此阶段,还没有确定“母亲的小助手”或“滚石”的含义,但是基于语法规则和模型,NER组件862已经确定这些短语的文本与文本数据中表示的用户输入的语法对象(即,实体)相关。
NER组件862可以标记文本数据以赋予其含义。例如,NER组件862可以将“由滚石乐队演唱的母亲的小助手”标记为:{域}音乐、{意图}<播放音乐>、{艺术家姓名}滚石乐队、{媒体类型}歌曲和{歌曲标题}母亲的小助手。又例如,NER组件862可以将“播放滚石乐队的歌曲”标记为:{域}音乐、{意图}<播放音乐>、{艺术家姓名}滚石乐队和{媒体类型}歌曲。
挑选器组件850可以接收从ASR组件550输出的或从装置110b(如图9所示)输出的ASR输出数据710。ASR组件550可以使用本领域中已知的句子嵌入技术将ASR输出数据710嵌入到可由经训练的模型处理的形式中。句子嵌入导致ASR输出数据710包括结构中的文本,该结构使得挑选器组件850的训练模型能够对ASR输出数据710进行操作。例如,ASR输出数据710的嵌入可以是ASR输出数据710的矢量表示。
挑选器组件850可以对关于哪些域与ASR输出数据710相关进行二元判定(例如,是或否)。挑选器组件850可以使用上文所述的一个或多个经训练的模型来做出此类决定。如果挑选器组件850为每个域实现单个训练模型,则挑选器组件850可以简单地运行与启用的域相关联的模型,如与发起用户输入的装置110和/或用户相关联的用户简档中所指示的。
挑选器组件850可以生成n个最佳列表数据915,其表示可以根据ASR输出数据710中表示的用户输入执行的域。n个最佳列表数据915中表示的n个最佳列表的大小是可配置的。在示例中,n个最佳列表数据915可以指示系统的每个域,并且对于每个域,包含关于该域是否可能能够执行ASR输出数据710中表示的用户输入的指示。在另一个示例中,代替指示系统的每个域,n个最佳列表数据915可以仅指示可能能够执行ASR输出数据710中表示的用户输入的域。在又一个示例中,挑选器组件850可以实现阈值处理,使得n个最佳列表数据915可以指示不超过可以执行ASR输出数据710中表示的用户输入的域的最大数量。在示例中,可以在n个最佳列表数据915中表示的域的阈值数量是10。在另一个示例中,包括在n个最佳列表数据915中的域可以由阈值分数来限制,其中只有指示处理用户输入的可能性高于特定分数的域(如通过由挑选器组件850相对于此类域处理ASR输出数据710所确定的)被包括在n个最佳列表数据915中。
ASR输出数据710可以对应于一个以上的ASR假设。当这发生时,挑选器组件850可以为每个ASR假设输出不同的n个最佳列表(在n个最佳列表数据915中表示)。或者,挑选器组件850可以输出单个n个最佳列表,其表示与ASR输出数据710中表示的多个ASR假设相关的域。
如上所述,挑选器组件850可以实施阈值处理,使得从其输出的n个最佳列表可以包括不超过阈值数量的条目。如果ASR输出数据710包括一个以上的ASR假设,则挑选器组件850输出的n个最佳列表可以包括不超过阈值数量的条目,而与ASR组件550输出的ASR假设的数量无关。替代地或附加地,挑选器组件850输出的n个最佳列表可以包括每个ASR假设不超过阈值数量的条目(例如,第一ASR假设不超过五个条目,第二ASR假设不超过五个条目等)。
附加于做出关于域是否潜在地与ASR输出数据710相关的二元判定,挑选器组件850还可以生成表示域与ASR输出数据710相关的可能性的置信度得分。如果挑选器组件850为每个域实现不同的训练模型,则挑选器组件850可以为运行的每个单独的域训练模型生成不同的置信度得分。如果挑选器组件850在接收到ASR输出数据710时运行每个域的模型,则挑选器组件850可以为系统的每个域生成不同的置信度得分。如果挑选器组件850仅运行与用户简档(该用户简档与发起用户输入的装置110和/或用户相关联)中指示为启用的技能相关联的域的模型,则挑选器组件850可以仅针对与至少一个启用的技能相关联的每个域生成不同的置信度得分。如果挑选器组件850实现具有域专门训练部分的单个训练模型,则挑选器组件850可以为运行专门训练部分的每个域生成不同的置信度得分。挑选器组件850可以执行矩阵向量修改,以在处理ASR输出数据710的单个实例中获得系统的所有域的置信度得分。
包括可以由挑选器组件850输出的置信度得分的N个最佳列表数据915可表示为,例如:
搜索域,0.67
食谱域,0.62
信息域,0.57
购物域,0.42
如所指示的,由挑选器组件850输出的置信度得分可以是数值。可选地,挑选器组件850输出的置信度得分可以是分箱值(例如,高、中、低)。
n个最佳列表可以仅包括置信度得分满足(例如,等于或超过)最小阈值置信度得分的域的条目。可选地,挑选器组件850可以包括与用户启用的技能相关联的所有域的条目,即使域中的一个或多个与不满足最小阈值置信度得分的置信度得分相关联。
在确定哪些域可以与ASR输出数据710中表示的用户输入以及相应的置信度得分相关时,挑选器组件850可以考虑其他数据920。其他数据920可以包括与发起用户输入的装置110和/或用户相关联的使用历史数据。例如,如果由装置110和/或用户发起的用户输入例行地调用域,则域的置信度得分可以增加。相反,如果由装置110和/或用户发起的用户输入很少调用域,则域的置信度得分可以降低。因此,其他数据920可以包括与ASR输出数据710相关联的用户的指示符。
其他数据920可以在输入到挑选器组件850之前嵌入字符。可选地,在输入到挑选器组件850之前,可以使用本领域已知的其他技术来嵌入其他数据920。
其他数据920还可以包括指示与技能相关联的域的数据,技能针对发起用户输入的装置110和/或用户而启用。挑选器组件850可以使用此类数据来确定运行哪些特定域的训练模型。也就是说,挑选器组件850可以确定仅运行与用户启用的技能相关联的域相关联的训练模型。挑选器组件850可以替换地使用此类数据来改变域的置信度得分。
作为示例,考虑两个域,第一域与至少一个启用技能相关联,以及第二域与发起用户输入的用户的任何用户启用技能不相关联,挑选器组件850可以运行特定于第一域的第一模型以及特定于第二域的第二模型。可选地,挑选器组件850可以运行配置成确定第一和第二域中的每一个的分数的模型。挑选器组件850可以在第一实例中为第一和第二域中的每一个确定相同的置信度得分。挑选器组件850然后可以基于哪些域与当前用户启用的至少一个技能相关联来更改这些置信度得分。例如,挑选器组件850可以增加与至少一个启用技能相关联的域相关联的置信度得分,同时保持与其他域相关联的置信度得分不变。可选地,挑选器组件850可以保持与至少一个启用技能相关联的域相关联的置信度不变,同时降低与另一个域相关联的置信度得分。此外,挑选器组件850可以增加与至少一个启用技能相关联的域相关联的置信度得分,以及降低与其他域相关联的置信度得分。
如所指示的,用户简档可以指示相应用户已经启用了哪些技能(例如,被授权使用与用户相关联的数据来执行)。此类指示可以存储在简档存储装置570中。当挑选器组件850接收到ASR输出数据710时,挑选器组件850可以确定与发起命令的用户和/或装置110相关联的简档数据是否包括启用技能的指示。
其他数据920还可以包括指示装置110类型的数据。装置的类型可以指示装置的输出能力。例如,装置的类型可以对应于具有可视显示器的装置、无外设(例如,无显示器)装置、装置是移动的还是固定的、装置是否包括音频回放能力、装置是否包括相机、其他装置硬件配置等。挑选器组件850可以使用此类数据来确定运行哪些特定域的训练模型。例如,如果装置110对应于无显示器类型的装置,则挑选器组件850可以确定不运行特定于输出视频数据的域的训练模型。挑选器组件850可以替换地使用此类数据来改变域的置信度得分。
作为示例,考虑两个域,一个输出音频数据以及另一个输出视频数据,挑选器组件850可以运行特定于生成音频数据的域的第一模型以及特定于生成视频数据的域的第二模型。可选地,挑选器组件850可以运行配置成确定每个域的分数的模型。挑选器组件850可以在第一实例中为域中的每一个确定相同的置信度得分。挑选器组件850然后可以基于发起对应于ASR输出数据710的用户输入的装置110的类型来改变原始置信度得分。例如,如果装置110是无显示器装置,则挑选器组件850可以增加与生成音频数据的域相关联的置信度得分,同时保持与生成视频数据的域相关联的置信度得分不变。可选地,如果装置110是无显示器装置,则挑选器组件850可以保持与生成音频数据的域相关联的置信度得分不变,同时降低与生成视频数据的域相关联的置信度得分。此外,如果装置110是无显示器装置,则挑选器组件850可以增加与生成音频数据的域相关联的置信度得分,以及降低与生成视频数据的域相关联的置信度得分。
其他数据920中表示的装置信息类型可以表示用于向用户输出内容的装置的输出能力,该装置可能不一定是用户输入源装置。例如,用户可以向不包括显示器的装置输入对应于“播放权力的游戏”的口头用户输入。系统可以确定用于输出《权力的游戏》的智能电视或其他显示装置(与同一用户简档相关联)。因此,其他数据920可以表示其他显示装置的智能电视,而不是捕捉口头用户输入的无显示器装置。
其他数据920还可以包括指示用户输入源装置的速度、位置或其他移动性信息的数据。例如,装置可以对应于包括显示器的车辆。如果车辆正在移动,则挑选器组件850可以降低与生成视频数据的域相关联的置信度得分,因为可能不希望在用户驾驶时向用户输出视频内容。装置可以向系统120输出指示装置何时移动的数据。
其他数据920还可以包括指示当前调用的域的数据。例如,用户可以说出第一(例如,先前的)用户输入,使得系统调用音乐域技能来向用户输出音乐。当系统向用户输出音乐时,系统可以接收第二(例如,当前)用户输入。挑选器组件850可以使用此类数据来改变域的置信度得分。例如,挑选器组件850可以运行特定于第一域的第一模型以及特定于第二域的第二模型。可选地,挑选器组件850可以运行配置成确定每个域的分数的模型。挑选器组件850还可以在第一实例中为域中的每一个确定相同的置信度得分。挑选器组件850然后可以基于被调用的第一域来改变原始置信度得分,以使得系统在接收到当前用户输入的同时输出内容。基于被调用的第一域,挑选器组件850可以(i)增加与第一域相关联的置信度得分,同时保持与第二域相关联的置信度得分不变,(ii)保持与第一域相关联的置信度得分不变,同时降低与第二域相关联的置信度得分,或者(iii)增加与第一域相关联的置信度得分,同时降低与第二域相关联的置信度得分。
针对由挑选器组件850生成的n个最佳列表数据915以及由挑选器组件850考虑的不同类型的其他数据920实施的阈值处理是可配置的。例如,随着考虑更多其他数据920,挑选器组件850可以更新置信度得分。作为进一步的示例,如果实现了阈值处理,则n个最佳列表数据915可以排除相关域。因此,例如,挑选器组件850可以包括n个最佳列表915中的域的指示,除非挑选器组件850百分之百确信该域可能不会执行ASR输出数据710中表示的用户输入(例如,挑选器组件850确定该域的置信度得分为零)。
挑选器组件850可以将ASR输出数据710发送至与n个最佳列表数据915中表示的域相关联的识别器863。可选地,挑选器组件850可以将所选域子集的n个最佳列表数据915或某个其他指示符发送给另一个组件(诸如编排器组件530),另一个组件又可以将ASR输出数据710发送给与n个最佳列表数据915中包括的或指示符中另外指示的域相对应的识别器863。如果挑选器组件850生成表示没有任何关联置信度得分的域的n个最佳列表,则挑选器组件850/编排器组件530可以将ASR输出数据710发送给与挑选器组件850确定可以执行用户输入的域相关联的识别器863。如果挑选器组件850生成表示具有相关联的置信度得分的域的n个最佳列表,则挑选器组件850/编排器组件530可以将ASR输出数据710发送给与满足(例如,满足或超过)阈值最小置信度得分的置信度得分相关联的域相关联的识别器863。
如上所述,识别器863可以输出由NER组件862和IC组件864生成的标记文本数据。NLU组件560可以将识别器863的输出标记文本数据编译成单个跨域n个最佳列表940,并且可以将跨域n个最佳列表940发送给修剪组件950。跨域n个最佳列表数据940中表示的标记文本的每个条目(例如,每个NLU假设)可以与指示NLU假设对应于与从其输出NLU假设的识别器863相关联的域的可能性的相应分数相关联。例如,跨域n个最佳列表数据940可以被表示为(其中每行对应于不同的NLU假设):
[0.95]意图:<播放音乐>艺术家姓名:贝多芬歌曲名称:华尔斯坦奏鸣曲
[0.70]意图:<播放视频>艺术家姓名:贝多芬视频名称:华尔斯坦奏鸣曲
[0.01]意图:<播放音乐>艺术家姓名:贝多芬专辑名称:华尔斯坦奏鸣曲
[0.01]意图:<播放音乐>歌曲名称:华尔斯坦奏鸣曲
修剪组件950可以根据NLU假设各自的分数对跨域n个最佳列表数据940中表示的这些假设进行排序。修剪组件950可以针对跨域NLU假设执行分数阈值处理。例如,修剪组件950可以选择与满足(例如,满足和/或超过)阈值分数的分数相关联的NLU假设。修剪组件950还可以执行或替代地执行多个NLU假设阈值处理。例如,修剪组件950可以选择得分最高的NLU假设。修剪组件950可以输出输入到其中的一部分NLU假设。修剪组件950的目的是创建NLU假设的缩减列表,使得下游的、资源更密集的过程可以只对最可能代表用户意图的NLU假设进行操作。
NLU组件560可以包括轻槽填充组件952。轻槽填充组件952可以从由修剪组件950输出的NLU假设中表示的插槽中获取文本,并改变它们以使文本更容易被下游组件处理。轻槽填充组件952可以执行低等待时间操作,其不涉及繁重操作,诸如参考知识库(例如,872)。轻槽填充组件952的目的是用其他单词或下游组件可以更容易理解的值来替换单词。例如,如果NLU假设包括单词“明天”,则出于下游处理的目的,轻槽填充组件952可以用实际日期来替换单词“明天”。类似地,轻槽填充组件952可以用“专辑”或单词“光盘”来替换单词“CD”。被替换的单词然后被包括在跨域n个最佳列表数据960中。
跨域n个最佳列表数据960可以输入到实体解析组件970。实体解析组件970可以应用规则或其他指令,以将来自先前阶段的标签或标记标准化为意图/插槽表示。精确的转换可能取决于域。例如,对于旅游域,实体解析组件970可以将对应于“波士顿机场”的文本转换成指代机场的标准BOS三字母代码。实体解析组件970可以参考知识库(例如,872),该知识库用于具体识别在跨域n个最佳列表数据960中表示的每个NLU假设的每个插槽中引用的精确实体。也可以将特定的意图/插槽组合绑定到特定的源,然后可以将其用于解析文本。在示例“播放滚石的歌曲”中,实体解析组件970可以引用个人音乐目录、亚马逊音乐账户或用户简档等。实体解析组件970可以输出基于跨域n个最佳列表960的改变的n个最佳列表,但是其包括关于插槽中提到的特定实体的更详细的信息(例如,实体id)和/或技能最终可以使用的更详细的插槽数据。NLU组件560可以包括多个实体解析组件970,并且每个实体解析组件970可以专用于一个或多个域。
NLU组件560可以包括重排序器990。重排序器990可以为其中输入的每个NLU假设分配特定的置信度得分。特定NLU假设的置信度得分可能会受到NLU假设是否有未填充插槽的影响。例如,如果NLU假设包括全部被填充/解决的插槽,则该NLU假设可以被分配比包括至少一些未被实体解决组件970填充/解决的插槽的另一NLU假设更高的置信度得分。
重排序器990可以应用重新评分、偏置或其他技术。重排序器990不仅可以考虑实体解析组件970输出的数据,还可以考虑其他数据991。其他数据991可以包括各种信息。例如,其他数据991可以包括技能评级或流行度数据。例如,如果一项技能具有高评级,则重排序器990可以增加可以由该技能处理的NLU假设的分数。其他数据991还可以包括关于发起用户输入的用户已经启用的技能的信息。例如,重排序器990可以向可以由启用的技能处理的NLU假设分配比可以由非启用的技能处理的NLU假设更高的分数。其他数据991还可以包括指示用户使用历史的数据,诸如发起用户输入的用户是否经常使用特定技能或者在一天中的特定时间这样做。其他数据991可以附加地包括指示日期、时间、位置、天气、装置110的类型、用户标识符、上下文以及其他信息的数据。例如,重排序器990可以考虑任何特定技能当前何时是活动的(例如,正在播放的音乐、正在玩的游戏等)。
如附图所示和描述的,在重排序器990之前实现实体解析组件970。替代地,可以在重排序器990之后实现实体解析组件970。在重排序器990之后实现实体解析组件970将由实体解析组件970处理的NLU假设限制为仅那些成功通过重排序器990的假设。
重排序器990可以是全局重排序器(例如,不特定于任何特定域的重排序器)。或者,NLU组件560可以实现一个或多个特定于域的重排序器。每个特定于域的重排序器可以重新排序与域相关联的NLU假设。每个特定于域的重排序器可以输出重新排序的假设(例如,5-10个假设)的n个最佳列表。
NLU组件560可以针对与完全实现为系统120的一部分的技能(例如,在图5A中指定为590)相关的域执行上述NLU处理。NLU组件560可以针对与至少部分地被实现为技能系统525的一部分的技能相关联的域来单独执行上述NLU处理。在示例中,挑选器组件850可以仅针对后面这些域进行处理。这两个NLU处理路径的结果可以被合并到NLU输出数据985中,该输出数据可以被发送到后NLU排序器565,该排序器可以由系统120实现。
后NLU排序器565可以包括统计组件,该统计组件产生具有相关联的置信度得分的意向/技能对的排名列表。每个置信度得分可以指示针对与技能相关联的NLU结果数据的技能执行意图的充分性。后NLU排序器565可以操作配置成处理NLU结果数据985、技能结果数据930和其他数据920的一个或多个训练模型,以便输出排序的输出数据925。排序的输出数据925可以包括n个最佳列表,其中NLU结果数据985中的NLU假设被重新排序,使得排序的输出数据925中的n个最佳列表表示对由后NLU排序器565确定的用户输入做出响应的技能的优先列表。排序的输出数据925还可以包括(作为n个最佳列表的一部分或以其他方式)对应于技能的单独的相应分数,其中每个分数指示技能(和/或其相应的结果数据)对应于用户输入的概率。
系统可以配置有数千个、数万个等技能。后NLU排序器565使得系统能够更好地确定执行用户输入的最佳技能。例如,NLU结果数据985中的第一和第二NLU假设可以基本上彼此对应(例如,它们的分数可以非常相似),即使第一NLU假设可以由第一技能处理以及第二NLU假设可以由第二技能处理。第一NLU假设可以与第一置信度得分相关联,第一置信度得分指示系统关于为生成第一NLU假设执行的NLU处理的置信度。此外,第二NLU假设可以与第二置信度得分相关联,第二置信度得分指示系统关于为生成第二NLU假设执行的NLU处理的置信度。第一置信度得分可以与第二置信度得分相似或相同。第一置信度得分和/或第二置信度得分可以是数值(例如,从0.0到1.0)。或者,第一置信度得分和/或第二置信度得分可以是分箱值(例如,低、中、高)。
后NLU排序器565(或其他调度组件,诸如编排器组件530)可以请求第一技能和第二技能分别基于第一NLU假设和第二NLU假设提供潜在结果数据930。例如,后NLU排序器565可以将第一NLU假设连同对第一技能590a至少部分执行关于第一NLU假设的请求一起发送给第一技能590a。后NLU排序器565还可以将第二NLU假设连同对第二技能590b至少部分执行关于第二NLU假设的请求一起发送给第二技能590b。后NLU排序器565从第一技能590a接收从第一技能590a关于第一NLU假设的执行中生成的第一结果数据930a。后NLU排序器565还从第二技能590b接收从第二技能590b关于第二NLU假设的执行中生成的第二结果数据930b。
结果数据930可以包括各种部分。例如,结果数据930可以包括要输出给用户的内容(例如,音频数据、文本数据和/或视频数据)。结果数据930还可以包括由系统120和/或技能系统525用来定位要输出给用户的数据的唯一标识符。结果数据930还可以包括指令。例如,如果用户输入对应于“打开灯”,则结果数据930可以包括使系统打开与装置(110a/110b)和/或用户的简档相关联的灯的指令。
后NLU排序器565可以考虑第一结果数据930a和第二结果数据930b,以分别改变第一NLU假设和第二NLU假设的第一置信度得分和第二置信度得分。也就是说,后NLU排序器565可以基于第一结果数据930a和第一置信度得分生成第三置信度得分。第三置信度得分可以对应于后NLU排序器565确定第一技能将正确响应用户输入的可能性。后NLU排序器565还可以基于第二结果数据930b和第二置信度得分生成第四置信度得分。本领域技术人员将理解,第三置信度得分和第四置信度得分之间的第一差值可以大于第一置信度得分和第二置信度得分之间的第二差值。后NLU排序器565还可以考虑其他数据920来生成第三置信度得分和第四置信度得分。虽然已经描述了后NLU排序器565可以改变与第一和第二NLU假设相关联的置信度得分,但是本领域技术人员将会理解,后NLU排序器565可以改变多于两个NLU假设的置信度得分。后NLU排序器565可以响应于当前用户输入选择与具有最高改变的置信度得分的技能590相关联的结果数据930作为数据输出。后NLU排序器565也可以考虑ASR输出数据710来改变NLU假设置信度得分。
在将NLU结果数据985发送至后NLU排序器565之前,编排器组件530可将NLU假设中的意图与技能590相关联。例如,如果NLU假设包括<播放音乐>意图,则编排器组件530可以将NLU假设与可以执行<播放音乐>意图的一个或多个技能590相关联。因此,编排器组件530可以将包括与技能590配对的NLU假设的NLU结果数据985发送给后NLU排序器565。响应于对应于“今天晚餐我应该做什么”的ASR输出数据710,编排器组件530可以生成具有相关联的NLU假设的技能对590,这些假设对应于:
技能1/NLU假设,包括<帮助>意图
技能2/NLU假设,包括<点餐>意图
技能3/NLU假设,包括<菜式类型>意图
后NLU排序器565查询与NLU输出数据985中的NLU假设配对的每个技能590,以基于与其相关的NLU假设提供结果数据930。也就是说,关于每一个技能,后NLU排序器565通俗地问每个技能“如果给你这个NLU假设,你会怎么做”。根据上述示例,后NLU排序器565可以向技能590发送以下数据:
技能1:第一NLU假设,包括<帮助>意图指示符
技能2:第二NLU假设,包括<点餐>意图指示符
技能3:第三NLU假设,包括<菜式类型>意图指示符
后NLU排序器565可以并行或基本并行地查询技能590中的每一个。
技能590可以响应于后NLU排序器565向技能590请求结果数据930,向后NLU排序器565提供各种数据和指示。技能590可以简单地向后NLU排序器565提供技能是否可以相对于其接收的NLU假设执行的指示。技能590还可以或替代地向后NLU排序器565提供基于其接收的NLU假设生成的输出数据。在一些情况下,附加于在接收到的NLU假设中所表示的信息,技能590可能需要进一步的信息来提供响应于用户输入的输出数据。在这些情况下,在技能590能够响应于用户输入提供结果数据930之前,技能590可以向后NLU排序器565提供结果数据930,该结果数据指示技能590进一步需要填充的框架的槽或者技能590进一步需要解决的实体。技能590还可以向后NLU排序器565提供指令和/或计算机生成的语音,其指示技能590如何推荐系统请求技能590所需的进一步信息。技能590还可以向后NLU排序器565提供技能590是否将在用户提供一次附加信息之后具有所有需要的信息或者技能590是否将需要用户在技能590具有所有需要的信息之前提供各种附加信息的指示。根据以上示例,技能590可以向后NLU排序器565提供以下内容:
技能1:表示技能可以相对于包括<帮助>意图指示符的NLU假设执行的指示
技能2:表示系统获取更多信息的技能需求的指示
技能3:表示技能可以响应于包括<菜式类型>意图指示符的第三NLU假设来提供许多结果的指示
结果数据930包括:由技能590提供的指示,其指示技能590是否可以执行NLU假设;基于NLU假设由技能590生成的数据;以及由技能590提供的指示,其指示技能590需要附加于在接收到的NLU假设中所表示的信息的进一步信息。
后NLU排序器565使用由技能590提供的结果数据930来改变由重排序器990生成的NLU处理置信度得分。也就是说,后NLU排序器565使用由被查询的技能590提供的结果数据930,以在由重排序器990生成的NLU处理置信度得分之间创建更大的差异。在没有后NLU排序器565的情况下,系统可能没有足够的信心来确定响应于用户输入的输出,例如当与多个技能相关联的NLU假设太接近,而使得系统不能有信心地确定调用单个技能590来响应于用户输入。例如,如果系统没有实现后NLU排序器565,则系统可能不能响应于对应于“什么是痤疮”的用户输入来确定是从一般参考信息技能还是医学信息技能获得输出数据。
比起提供与需要进一步信息的指示相对应的结果数据930的技能590以及提供指示结果数据930可以提供对接收的NLU假设的多个响应的结果数据的技能590,后NLU排序器565可能更偏向提供响应于NLU假设的结果数据930的技能590。例如,后NLU排序器565可以基于第一技能590a提供包括对NLU假设的响应的结果数据930a为第一技能590a生成大于第一技能的NLU置信度得分的第一得分。又例如,后NLU排序器565可以基于第二技能590b提供指示第二技能590b需要进一步的信息来提供对NLU假设的响应的结果数据930b为第二技能590b生成小于第二技能的NLU置信度得分的第二得分。还例如,后NLU排序器565可以基于第三技能590c提供指示第三技能590c可以提供对NLU假设的多个响应的结果数据930c为第三技能590c生成小于第三技能的NLU置信度得分的第三得分。
后NLU排序器565在确定分数时可以考虑其他数据920。其他数据920可以包括与所查询的技能590相关联的排名。排名可以是系统排名或特定于用户的排名。从系统的一个或多个用户的角度来看,排名可以指示技能的准确性。例如,后NLU排序器565可以基于第一技能590a与高排名相关联为第一技能590a生成大于第一技能的NLU处理置信度得分的第一得分。又例如,后NLU排序器565可以基于第二技能590b与低排名相关联为第二技能590b生成小于第二技能的NLU处理置信度得分的第二得分。
其他数据920可以包括指示发起用户输入的用户是否已经启用查询技能590中的一项或多项的信息。例如,后NLU排序器565可以基于发起用户输入的用户启用第一技能590a为第一技能590a生成大于第一技能的NLU处理置信度得分的第一得分。又例如,后NLU排序器565可以基于发起用户输入的用户没有启用第二技能590b为第二技能590b生成小于第二技能的NLU处理置信度得分的第二得分。当后NLU排序器565接收到NLU结果数据985时,后NLU排序器565可以确定与发起用户输入的用户和/或装置相关联的简档数据是否包括启用技能的指示。
其他数据920可以包括指示装置输出能力的信息,装置将用于响应用户输入向用户输出内容。系统可以包括:包含扬声器但不包含显示器的装置、包含显示器但不包含扬声器的装置、以及包含扬声器和显示器的装置。如果将响应于用户输入输出内容的装置包括一个或多个扬声器但不包括显示器,则后NLU排序器565可以增加与配置成输出音频数据的第一技能相关联的NLU处理置信度得分和/或降低与配置成输出视觉数据(例如,图像数据和/或视频数据)的第二技能相关联的NLU处理置信度得分。如果将响应于用户输入输出内容的装置包括显示器但不包括一个或多个扬声器,则后NLU排序器565可以增加与配置成输出视觉数据的第一技能相关联的NLU处理置信度得分和/或降低与配置成输出音频数据的第二技能相关联的NLU处理置信度得分。
其他数据920可以包括指示由技能590提供的结果数据930的准确性的信息。例如,如果用户说“告诉我意大利面酱的食谱”,第一技能590a可以向后NLU排序器565提供对应于与五星评级相关联的第一食谱的第一结果数据930a,以及第二技能590b可以向后NLU排序器565提供对应于与一星评级相关联的第二食谱的第二结果数据930b。在这种情况下,后NLU排序器565可以基于提供与五星评级相关联的第一结果数据930a的第一技能590a来增加与第一技能590a相关联的NLU处理置信度得分,和/或基于提供与一星评级相关联的第二结果数据930b的第二技能590b来降低与第二技能590b相关联的NLU处理置信度得分。
其他数据920可以包括指示发起用户输入的装置类型的信息。例如,如果装置位于酒店房间中,则装置可以对应于“酒店房间”类型。如果用户向位于酒店房间中的装置输入对应于“给我点餐”的命令,后NLU排序器565可以增加与对应于与酒店相关联的客房服务技能的第一技能590a相关联的NLU处理置信度得分和/或降低与对应于与酒店无关的食物技能的第二技能590b相关联的NLU处理置信度得分。
其他数据920可以包括指示发起用户输入的装置和/或用户的位置的信息。系统可以配置有技能590,该技能可以仅针对某些地理位置进行操作。例如,用户可以提供对应于“下一趟去波特兰的火车是什么时候”的用户输入。第一技能590a可以针对到达、离开和经过俄勒冈州波特兰的列车进行操作。第二技能590b可以针对到达、离开和经过缅因州波特兰的列车进行操作。如果发起用户输入的装置和/或用户位于华盛顿州西雅图,后NLU排序器565可以增加与第一技能590a相关联的NLU处理置信度得分和/或降低与第二技能590b相关联的NLU处理置信度得分。同样,如果发起用户输入的装置和/或用户位于马萨诸塞州波士顿,后NLU排序器565可以增加与第二技能590b相关联的NLU处理置信度得分和/或降低与第一技能590a相关联的NLU处理置信度得分。
其他数据920可以包括指示一天中的时间的信息。系统可以配置有针对一天中特定时间进行操作的技能590。例如,用户可以提供对应于“给我点餐”的用户输入。第一技能590a可以生成对应于早餐的第一结果数据930a。第二技能590b可以生成对应于晚餐的第二结果数据930b。如果系统120在早上接收到用户输入,后NLU排序器565可以增加与第一技能590a相关联的NLU处理置信度得分和/或减少与第二技能590b相关联的NLU处理得分。如果系统120在下午或晚上接收到用户输入,后NLU排序器565可以增加与第二技能590b相关联的NLU处理置信度得分和/或减少与第一技能590a相关联的NLU处理置信度得分。
其他数据920可以包括指示用户偏好的信息。系统可以包括配置成以基本相同的方式执行的多个技能590。例如,第一技能590a和第二技能590b都可以成配置为从各自的餐馆点餐。系统可以存储与向系统120提供用户输入的用户相关联的用户偏好(例如,在简档存储装置570中),并且指示用户比起第二技能590b更喜欢第一技能590a。因此,当用户提供可以由第一技能590a和第二技能590b执行的用户输入时,后NLU排序器565可以增加与第一技能590a相关联的NLU处理置信度得分和/或减少与第二技能590b相关联的NLU处理置信度得分。
其他数据920可以包括指示与发起用户输入的用户相关联的系统使用历史的信息。例如,系统使用历史可以指示用户发起调用第一技能590a的用户输入比用户发起调用第二技能590b的用户输入更频繁。基于此,如果当前用户输入可以由第一技能590a和第二技能590b两者执行,则后NLU排序器565可以增加与第一技能590a相关联的NLU处理置信度得分和/或减少与第二技能590b相关联的NLU处理置信度得分。
其他数据920可以包括指示其中发起用户输入的装置110的行驶速度的信息。例如,装置110可以位于移动的车辆中,或者可以是移动的车辆。当装置110处于运动中时,系统可以优选音频输出而不是视觉输出,以降低分散用户(例如车辆驾驶员)注意力的可能性。因此,例如,如果发起用户输入的装置110以阈值速度或高于阈值速度(例如,高于用户平均步行速度的速度)移动,则后NLU排序器565可以增加与生成音频数据的第一技能590a相关联的NLU处理置信度得分。后NLU排序器565还可以或替代地降低与生成图像数据或视频数据的第二技能590b相关联的NLU处理置信度得分。
其他数据920可以包括指示技能590向后NLU排序器565提供结果数据930花费了多长时间的信息。当后NLU排序器565对结果数据930使用多个技能590时,这些技能590可以以不同的速度响应查询。后NLU排序器565可以实现延迟预算。例如,如果后NLU排序器565确定技能590在从接收到来自后NLU排序器565的查询起的阈值时间量内响应后NLU排序器565,则后NLU排序器565可以增加与技能590相关联的NLU处理置信度得分。相反,如果后NLU排序器565确定技能590在从接收到来自后NLU排序器565的查询起的阈值时间量内没有响应后NLU排序器565,则后NLU排序器565可以降低与技能590相关联的NLU处理置信度得分。
已经描述了后NLU排序器565使用其他数据920来增加和减少与后NLU排序器565已经请求结果数据的各种技能590相关联的NLU处理置信度得分。或者,后NLU排序器565可以使用其他数据920来确定向哪些技能590请求结果数据。例如,后NLU排序器565可以使用其他数据920来增加和/或减少与和NLU组件560输出的NLU结果数据985相关联的技能590相关联的NLU处理置信度得分。后NLU排序器565可以选择n个最高得分的改变的NLU处理置信度得分。后NLU排序器565然后可以仅从与所选择的n个NLU处理置信度得分相关联的技能590请求结果数据930。
如上所述,后NLU排序器565可以从与NLU组件560输出的NLU结果数据985相关联的所有技能590请求结果数据930。可选地,系统120可以优选来自完全由系统120实现的技能而不是至少部分由技能系统525实现的技能的结果数据930。因此,在第一种情况下,后NLU排序器565可以仅从与NLU结果数据985相关联并且完全由系统120实现的技能请求结果数据930。如果完全由系统120实现的技能都不向后NLU排序器565提供指示对NLU结果数据985的数据响应、技能可以执行用户输入的指示或需要进一步信息的指示的结果数据930,则后NLU排序器565可以仅请求来自与NLU结果数据985相关联并且至少部分由技能系统525实现的技能的结果数据930。
如上所述,后NLU排序器565可以从多个技能590请求结果数据930。如果技能590之一提供指示对NLU假设的响应的结果数据930,并且其他技能提供指示它们不能执行或者它们需要进一步信息的结果数据930,则后NLU排序器565可以选择包括对NLU假设的响应的结果数据930作为要输出给用户的数据。如果技能590中多于一个提供指示对NLU假设的响应的结果数据930,则后NLU排序器565可以考虑其他数据920来生成改变的NLU处理置信度得分,并选择与最高得分相关联的技能的结果数据930作为要输出给用户的数据。
未实现后NLU排序器565的系统可以选择NLU结果数据985中得分最高的NLU假设。系统可以将NLU假设连同对输出数据的请求一起发送给与之相关联的技能590。在某些情况下,技能590可能无法向系统提供输出数据。这导致系统向用户指示用户输入不能被处理,即使与较低排名的NLU假设相关联的另一个技能可以已经提供响应于用户输入的输出数据。
后NLU排序器565减少了上述情况的实例。如上所述,后NLU排序器565查询与NLU结果数据985相关联的多个技能,以在后NLU排序器565最终确定要调用来响应用户输入的技能590之前向后NLU排序器565提供结果数据930。技能590中的一些可以提供指示对NLU假设的响应的结果数据930,而其他技能590可以提供指示技能不能提供响应数据的结果数据930。尽管未实现后NLU排序器565的系统可以选择不能提供响应的技能590之一,后NLU排序器565仅选择向后NLU排序器565提供对应于响应的结果数据、指示需要进一步的信息或者指示可以生成多个响应的技能590。
后NLU排序器565可以选择与最高分数相关联的技能590相关联的结果数据930以输出给用户。或者,后NLU排序器565可以输出指示技能590及其各自的后NLU排序器排名的排名输出数据925。由于后NLU排序器565在后NLU排序器565选择技能之一或输出排名输出数据925之前从技能590接收结果数据930(潜在地对应于对用户输入的响应),所以从技能提供结果数据930的时间到系统输出对用户的响应的时间几乎没有延迟。
如果后NLU排序器565选择要输出给用户的结果音频数据,并且系统确定应该可听地输出内容,则后NLU排序器565(或系统120的另一组件)可以使装置110a和/或装置110b输出对应于结果音频数据的音频。如果后NLU排序器565选择结果文本数据输出给用户,并且系统确定应该可视地输出内容,则后NLU排序器565(或系统120的另一组件)可以使装置110b显示对应于结果文本数据的文本。如果后NLU排序器565选择结果音频数据输出给用户,并且系统确定应该可视地输出内容,则后NLU排序器565(或系统120的另一组件)可以将结果音频数据发送给ASR组件550。ASR组件550可以生成对应于结果音频数据的输出文本数据。系统120然后可以使装置110b显示对应于输出文本数据的文本。如果后NLU排序器565选择结果文本数据输出给用户,并且系统确定应该可听地输出内容,则后NLU排序器565(或系统120的另一组件)可以将结果文本数据发送给TTS组件580。TTS组件580可以基于结果文本数据生成输出音频数据(对应于计算机生成的语音)。系统120然后可以使装置110a和/或装置110b输出对应于输出音频数据的音频。
如所描述的,技能590可以提供结果数据930,指示对用户输入的响应,指示技能590需要更多信息以提供对用户输入的响应,或指示技能590不能对用户输入提供响应。如果与最高的后NLU排序器分数相关联的技能590向后NLU排序器565提供指示对用户输入的响应的结果数据930,则后NLU排序器565(或系统120的另一组件,诸如编排器组件530)可以简单地使对应于结果数据930的内容输出给用户。例如,后NLU排序器565可以将结果数据930发送给编排器组件530。编排器组件530可以使得结果数据930被发送到装置(110a/110b),该装置可以输出对应于结果数据930的音频和/或显示文本。取决于情况,编排器组件530可以将结果数据930发送给ASR组件550以生成输出文本数据和/或可以将结果数据930发送给TTS组件580以生成输出音频数据。
与最高后NLU排序器分数相关联的技能590可以向后NLU排序器565提供指示需要更多信息的结果数据930以及指令数据。指令数据可以指示技能590如何推荐系统获得所需信息。例如,指令数据可以对应于文本数据或音频数据(即,计算机生成的语音),文本数据或音频数据对应于“请指示_____________”。指令数据可以是能够由装置(110a/110b)输出的格式(例如,文本数据或音频数据)。当发生这种情况时,后NLU排序器565可以简单地使接收到的指令数据由装置(110a/110b)输出。可选地,指令数据可以是装置(110a/110b)不能输出的格式。当发生这种情况时,后NLU排序器565可以使ASR组件550或TTS组件580根据情况处理指令数据,以生成可以由装置(110a/110b)输出的指令数据。一旦用户向系统提供技能590所需的所有进一步信息,技能590可以向系统提供指示对用户输入的响应的结果数据930,该结果数据如上所述可以由系统输出。
系统可以包括简单地向系统提供信息的“信息”技能590,系统将该信息输出给用户。系统还可以包括需要系统指令来执行用户输入的“交易”技能590。交易技能590包括乘车共享技能、航班预订技能等。交易技能590可以简单地向后NLU排序器565提供指示交易技能590可以执行用户输入的结果数据930。后NLU排序器565然后可以使系统请求用户指示系统被允许使交易技能590执行用户输入。用户提供的指示可以是听觉指示或触觉指示(例如,激活虚拟按钮或经由虚拟键盘输入文本)。响应于接收到用户提供的指示,系统可以向交易技能590提供对应于指示的数据。作为响应,交易技能590可以执行命令(例如,预订航班、预订火车票等)。因此,尽管在信息技能590向后NLU排序器565提供结果数据930之后,系统可以不进一步使用信息技能590,但是在交易技能590向后NLU排序器565提供指示交易技能590可以执行用户输入的结果数据930之后,系统可以进一步使用交易技能590。
在某些情况下,后NLU排序器565可以为第一和第二技能生成各自的分数,这些分数过于接近(例如,至少不会相差阈值差异),使得后NLU排序器565无法就哪个技能应该执行用户输入做出有信心的判断。当发生这种情况时,系统可以请求用户指示用户更喜欢哪种技能来执行用户输入。系统可以向用户输出TTS生成的语音以请求用户想要哪种技能来执行用户输入。
可以根据各种机器学习技术训练和操作由编排器组件530、后NLU排序器565、挑选器组件850或其他组件的组件实施的一个或多个模型。
可以用于执行单元选择、参数TTS处理和/或基于模型的音频合成的系统组件如图10所示。如图10所示,TTS组件/处理器580可以包括TTS前端1016、语音合成引擎1018、TTS单元存储装置1072、TTS参数存储装置1080和TTS后端1034。此外,TTS单元存储装置1072可以包括语音库1078a-1078n等,这些语音库可以包括单元选择引擎1030在执行如下所述的单元选择合成时使用的预先录制的音频片段(称为单元)。此外,TTS参数存储装置1080可以包括参数设置1068a-1068n等,这些参数设置可以由参数合成引擎1032在如下所述执行参数合成时使用。一组特定的参数设置1068可以对应于特定的语音简档(例如,耳语语音、兴奋语音等)。
在本发明的各种实施例中,可以使用语音模型1022和TTS前端1016对音频数据进行基于模型的合成。TTS前端1016可以与传统单元选择或参数系统中使用的前端相同。在其他实施例中,TTS前端1016的一些或所有组件基于其他训练模型。然而,本公开不限于任何特定类型的TTS前端1016。语音模型1022可以用于合成语音,而不需要TTS单元存储装置1072或TTS参数存储装置1080,如下面更详细描述的。
TTS组件接收文本数据1010。尽管图10中的文本数据1010被输入到TTS组件580中,但是它也可以由其他组件(诸如技能590、NLU组件560、NLG组件579或其他组件)输出,并且可以旨在由系统输出。因此,在某些情况下,文本数据1010可以被称为“输出文本数据。”此外,数据1010可以不必是文本,而是可以包括其他数据(诸如符号、代码、其他数据等),,其可以引用要合成的文本(诸如单词的指示符)。因此,数据1010可以以各种形式出现。TTS前端1016将数据1010(来自例如应用、用户、装置或其他数据源)转换成符号语言表示,该符号语言表示可以包括语言上下文特征,诸如单音数据、标点数据、音节级特征、单词级特征和/或情绪、说话者、口音或其他特征,以供语音合成引擎1018处理。音节级特征可以包括音节强调、音节语速、音节变调或其他此类音节级特征;单词级特征可以包括单词强调、单词语速、单词变调或其他此类单词级特征。情绪特征可以包括对应于与文本数据1010相关联的情绪的数据,诸如惊讶、愤怒或恐惧。说话者特征可以包括对应于说话者类型的数据,诸如性别、年龄或职业。口音特征可以包括对应于与说话者相关联的口音的数据,诸如南方口音、波士顿口音、英语口音、法语口音或其他此类口音。
TTS前端1016还可以处理其他输入数据1015,诸如文本标签或文本元数据,其可以指示例如特定单词应如何发音,例如通过在根据语音合成标记语言(SSML)格式化的标签中或以其他形式指示所需的输出语音质量。例如,第一文本标签可以包括标记应当何时开始轻读文本(例如《开始轻读》)的文本,并且第二标签可以包括标记应当何时结束轻读文本(例如《结束轻读》)的文本。标签可以包括在文本数据1010中,和/或TTS请求的文本可以附带有指示应该轻读什么文本(或者具有一些其他指示的音频特征)的单独的元数据。语音合成引擎1018可以比较存储在TTS单元存储装置1072和/或TTS参数存储装置1080中的带注释的语音单元模型和信息,以将输入文本转换成语音。TTS前端1016和语音合成引擎1018可以包括它们自己的控制器/处理器和存储器,或者它们可以使用例如服务器120、装置110或其他装置的控制器/处理器和存储器。类似地,用于操作TTS前端1016和语音合成引擎1018的指令可以位于TTS组件580内、服务器120、装置110的存储器和/或存储内、或者外部装置内。
输入TTS组件580的文本数据1010可以发送至TTS前端1016以进行处理。前端1016可以包括用于执行文本归一化、语言分析、语言韵律生成的组件或其他此类组件。在文本归一化期间,TTS前端1016可以首先处理文本输入并生成标准文本,将诸如数字、缩写(诸如Apt.,St.,等)、符号($,%,等)转换成相当于写出来的单词。
在语言分析期间,TTS前端1016可以分析规范化文本中的语言以生成对应于输入文本的语音单元序列。这个过程可以称为字形到单音的转换。语音单元包括最终由系统组合并且作为语音输出的声音单元的符号表示。出于语音合成的目的,可以使用各种声音单元来划分文本。TTS组件580可以基于单音(单个声音)、半单音、对分音素(一个单音的后半部分与相邻单音的前半部分相耦合)、双音素(两个连续音素)、音节、单词、短语、句子或其他单元来处理语音。每个单词可以映射到一个或多个语音单元。此种映射可以使用系统存储的语言词典来执行,例如在TTS单元存储装置1072中。TTS前端1016执行的语言分析还可以识别不同的语法成分,诸如前缀、后缀、短语、标点或句法边界等。TTS组件580可以使用此类语法组件来精心制作听起来自然的音频波形输出。语言词典还可以包括字母到声音规则和可以用于发音先前未识别的单词或字母组合的其他工具,这些单词或字母组合可以是TTS组件580遇到的。通常,语言词典中包含的信息越多,语音输出的质量就越高。
基于语言学分析,TTS前端1016然后可以执行语言学韵律生成,其中语音单元用期望的韵律特征进行注释,也称为声学特征,这些特征指示期望的语音单元在最终输出语音中如何发音。在此阶段期间,TTS前端1016可以考虑并合并附带有输入到TTS组件580的文本的任何韵律标注。此种声学特征可以包括音节级特征、单词级特征、情感、说话者、口音、语言、音调、能量和持续时间等。声学特征的应用可以基于TTS组件580可用的韵律模型。此种韵律模型指示特定语音单元在特定环境下如何发音。韵律模型可以考虑例如单音在音节中的位置、音节在单词中的位置、单词在句子或短语中的位置、相邻语音单元等。与语言词典一样,具有更多信息的韵律模型可以比具有较少信息的韵律模型生成更高质量的语音输出。此外,可以使用韵律模型和/或语音单元来指示要合成的语音的特定语音质量,其中这些语音质量可以与输入语音的语音质量相匹配(例如,语音单元可以指示韵律特征,以使最终合成的语音听起来像是基于轻读的输入语音的轻读)。
TTS前端1016的输出可以被称为符号语言表示,其可以包括标注有韵律特征的语音单元序列。该符号语言表示可以被发送到语音合成引擎1018,其也可以被称为合成器,以用于转换成语音的音频波形,以输出到音频输出装置并最终输出到用户。语音合成引擎1018可以配置成以有效的方式将输入文本转换成高质量的听起来自然的语音。此种高质量语音可以配置成听起来尽可能像人类说话者,或者可以配置成在不试图模仿精确的人类声音的情况下可由收听者理解。
语音合成引擎1018可以使用一种或多种不同的方法来执行语音合成。在一种称为单元选择的合成方法中(下面将进一步描述),单元选择引擎1030将TTS前端1016创建的符号语言表示与记录的语音的数据库进行匹配,诸如是存储关于一个或多个语音语料库(例如,语音库1078a-n)的信息的数据库(例如TTS单元存储装置1072)。每个语音库可以对应于由说话的人(诸如语音演员)记录的音频的各个片段,其中这些片段作为声学单元(例如单音、双音素等)存储在单独的清单1078中。每个存储的音频单元还可以与列出各种声学属性或关于单元的其他描述性信息的索引相关联。每个单元包括对应于语音单元的音频波形,诸如简短的特定声音的.wav文件,以及与音频波形相关联的各种功能的描述。例如,特定单元的索引条目可以包括诸如特定单元的音高、能量、持续时间、谐波、中心频率、语音单元在单词、句子或短语中出现的位置、相邻语音单元等信息。单元选择引擎1030然后可以使用关于每个单元的信息来选择要结合在一起以形成语音输出的单元。
单元选择引擎1030将符号语言表示与数据库中关于口语音频单元的信息进行匹配。单元数据库可以包括语音单元的多个示例,以向系统提供将单元连接成语音的许多不同选项。选择被确定为具有创建所需输出音频的所需声学质量的匹配单元并将它们连接在一起(例如通过合成组件1020),以形成表示合成语音的输出音频数据1090。使用单元数据库中的所有信息,单元选择引擎1030可以将单元与输入文本匹配,以选择可以形成自然发声波形的单元。单元选择的一个好处在于,根据数据库的大小,可以生成自然发声的语音输出。如上所述,语音语料库的单元数据库越大,系统将越有可能构建自然发音的语音。
在另一种合成方法(称为参数合成)中,由参数合成引擎1032、数字信号处理器或其他音频生成装置改变诸如频率、音量、噪声的参数,以产生模拟语音波形输出。参数合成使用电脑化的声音发生器,有时也称为声码器。参数合成可以使用声学模型和各种统计技术来匹配符号语言表示和期望的输出语音参数。使用参数合成,计算系统(例如,合成组件1020)可以生成具有所需声学属性的音频波形。参数合成可以包括在高处理速度下确保精确的能力,以及在没有与单元选择相关联的大型数据库的情况下处理语音的能力,但也可以产生输出语音质量,输出语音质量可能与单元选择的输出语音质量不匹配。单元选择和参数技术可以单独执行或组合在一起和/或与其他合成技术组合来产生语音音频输出。
TTS组件580可以配置成以多种语言进行TTS处理。对于每种语言,TTS组件580可以包括专门配置的数据、指令和/或组件来合成所需语言的语音。为了提高性能,TTS组件580可以基于TTS处理结果的反馈来修改/更新TTS单元存储装置1072的内容,从而使TTS组件580能够改进语音合成。
可以根据个人用户的个性化期望语音输出为其定制TTS单元存储装置1072。特别地,可以从用户说话的输入音频数据中取得存储在单元数据库中的语音单元。例如,为了创建系统的定制语音输出,系统可以配置有多个语音库1078a-1078n,其中每个单元数据库配置有不同的“语音”以匹配期望的语音质量。此种语音库也可以与用户账户相关联。TTS组件580选择的语音可以用于合成语音。例如,一个语音语料库可以被存储以用于合成耳语语音(或近似于耳语语音的语音),另一个语音语料库可以被存储以用于合成兴奋语音(或近似于兴奋语音的语音)等等。为了创建不同的语音语料库,多个TTS训练话语可以由个人(诸如语音演员)说出并由系统记录。然后,与TTS训练话语相关联的音频可以被分割成小音频片段,并作为语音语料库的一部分存储。说出TTS训练话语的个人可以用不同的语音质量说话以创建定制的语音语料库,例如个人可以小声说出训练话语、用兴奋的声音说出它们等等。因此,每个定制语音语料库的音频可以匹配相应的期望语音质量。定制语音库1078然后可以在运行时用于执行单元选择以合成具有与输入语音质量相对应的语音质量的语音。
此外,参数合成可以用于合成具有期望语音质量的语音。对于参数合成,可以配置匹配期望语音质量的参数特征。如果期望模拟的兴奋语音,参数特征可以指示所得到的语音的提高的语速和/或音调。许多其他示例也是可能的。特定语音质量的期望参数特征可以存储在“语音”简档(例如参数设置1068)中,并在期望特定语音质量时用于语音合成。可以基于组合的多个所需的语音质量(用于单元选择或参数合成)来创建定制语音。例如,一个声音可能是“喊出来的”,而另一个声音可能是“喊出来并强调的”。许多此类组合是可能的。
单元选择语音合成可以按如下方式进行。单元选择包括两步过程。首先,单元选择引擎1030确定使用什么语音单元,然后它组合这些语音单元,使得特定的组合单元匹配期望的单音和声学特征,并创建期望的语音输出。可以基于成本函数来选择单元,该成本函数表示特定单元与待合成的语音片段的匹配程度。成本函数可以表示不同成本的组合,不同成本表示特定语音单元对于特定语音片段效果的不同方面。例如,目标成本表示单个给定语音单元与期望语音输出的特征(例如音调、韵律等)的匹配程度。连接成本表示特定语音单元与相邻语音单元(例如,直接出现在特定语音单元之前或之后的语音单元)的匹配程度,以便在最终合成语音中将语音单元连接在一起。总成本函数是目标成本、连接成本和可以由单元选择引擎1030确定的其他成本的组合。作为单元选择的一部分,单元选择引擎1030选择具有最低总组合成本的语音单元。例如,如果其连接成本高,则不必选择具有非常低的目标成本的语音单元。
系统可以配置有用于单元选择的一个或多个语音语料库。每个语音语料库可以包括语音单元数据库。语音单元数据库可以存储在TTS单元存储装置1072或另一存储组件中。例如,不同的单元选择数据库可以存储在TTS单元存储装置1072中。每个语音单元数据库(例如语音库)包括记录的语音话语,其中话语的对应文本与话语对齐。语音单元数据库可以包括许多小时的记录语音(以音频波形、特征向量或其他格式的形式),这可以占用大量存储空间。语音单元数据库中的单元样本可以按多种方式分类,包括按语音单元(单音、双音素、单词等)、语言韵律标签、声学特征序列、说话人身份等。样本话语可以用于创建对应于特定语音单元的期望音频输出的数学模型。当匹配符号语言表示时,语音合成引擎1018可以尝试在语音单元数据库中选择最接近匹配输入文本的单元(包括语音单元和韵律标注)。一般来说,语音语料库/语音单元数据库越大,语音合成的效果就可以越好,因为可以选择更多的单元样本来形成精确的期望语音输出。
基于声码器的参数语音合成可以按如下方式进行。TTS组件580可以包括声学模型或其他模型,其可以基于音频信号操作将符号语言表示转换成文本输入的合成声学波形。声学模型包括可以由参数合成引擎1032用来将特定音频波形参数分配给输入语音单元和/或韵律标注的规则。这些规则可以用于计算表示特定音频输出参数(诸如频率、音量等)对应于来自TTS前端1016的输入符号语言表示的部分的可能性的分数。
参数合成引擎1032可以使用多种技术以将待合成的语音与输入语音单元和/或韵律标注进行匹配。一种常见的技术是使用隐马尔可夫模型(HMM)。HMM可以用于确定音频输出应匹配文本输入的概率。HMM可以用于将来自语言和声学空间的参数转换为声码器(数字语音编码器)使用的参数,以人工合成所需语音。使用HMM,呈现多个状态,其中这些状态一起表示要输出到声码器的一个或多个潜在声学参数,并且每个状态与诸如高斯混合模型的模型相关联。状态之间的转换也可以具有关联的概率,表示可以从先前状态到达当前状态的可能性。要输出的声音可以表示为HMM状态之间的路径,并且多个路径可以表示同一输入文本的多个可能的音频匹配。文本的每个部分可以由对应于单音及其部分(诸如单音身份、重音、口音、位置等)的不同已知发音的多个潜在状态来表示。潜在发音的概率的初始确定可以与一个状态相关联。当语音合成引擎1018处理新文本时,基于新文本的处理,状态可以改变或保持不变。例如,可能根据后续处理的单词改变先前处理的单词的发音。维特比算法可以用于根据经处理的文本找到最可能的状态序列。HMM可以生成参数化形式的语音,包括诸如基频(f0)、噪声包络、频谱包络等参数,它们由声码器翻译成音频片段。可以为特定的声码器配置输出参数,诸如STRAIGHT声码器、TANDEM-STRAIGHT声码器、WORLD声码器、基于HNM(谐波加噪声)的声码器、CELP(码激励线性预测)声码器、GlottHMM声码器、HSM(谐波/随机模型)声码器或其他声码器。
附加于计算一个音频波形的潜在状态作为语音单元的潜在匹配,参数合成引擎1032还可以计算其他潜在音频输出的潜在状态(诸如特定单音或双音素的各种发音方式)作为声学单元的潜在声学匹配。以这种方式,可以计算多个状态和状态转移概率。
由参数合成引擎1032计算的可能状态和可能状态转换可以产生多个可能的音频输出序列。基于声学模型和其他潜在模型,可以根据参数合成引擎1032的置信度水平对潜在音频输出序列进行评分。可以选择包括要合成的参数流的最高评分音频输出序列,并且可以由声码器或类似组件执行数字信号处理以创建包括与最高评分音频输出序列的参数相对应(并且如果选择了正确的序列,也与输入文本相对应)的合成语音波形的音频输出。合成组件1020可以使用不同的参数设置1068来最终创建输出音频数据1090,参数设置可以表示匹配特定参数“语音”的声学设置。
当执行单元选择时,在单元选择引擎1030选择单元之后,对应于单元的音频数据可以被传递到合成组件1020。合成组件1020然后可以处理单元的音频数据以创建经修改的音频数据,其中经修改的音频数据反映了期望的音频质量。合成组件1020可以存储各种操作,这些操作可以将单位音频数据转换成经修改的音频数据,其中可以基于所需音频效果(例如,耳语、喊叫等)来执行不同的操作。
作为示例,输入文本可以与元数据一起接收,诸如SSML标签,指示输入文本的选定部分在由TTS模块580输出时应轻声说出。对于与所选部分对应的每个单元,合成组件1020可以处理单元的音频数据以创建经修改的单元音频数据。经修改的单元音频数据随后可以被连接以形成输出音频数据1090。根据期望的耳语语音何时开始和/或结束,修改的单元音频数据也可以与未修改的音频数据连接。虽然修改的音频数据可能足以为输出音频数据加入期望的音频质量,但是其他因素也可能影响音频的最终输出,诸如回放速度、背景效果等,它们可能在TTS模块580的控制之外。在这种情况下,其他输出数据1085可以与输出音频数据1090一起输出,使得最终的回放装置(例如,装置110)接收可以帮助创建期望的输出音频的回放指令。因此,其他输出数据1085可以包括指令或指示回放装置设置(诸如音量、回放速率等)的其他数据或指示应该如何输出包括合成语音的输出音频数据的其他数据。例如,对于耳语语音,输出音频数据1090可以包括其他输出数据1085,其可以包括韵律标签或其他指示符,韵律标签或其他指示符指示装置110减慢输出音频数据1090的回放,从而使最终音频听起来更像通常比正常语音慢的耳语语音。在另一个示例中,其他输出数据1085可以包括音量标签,该音量标签指示装置110以小于装置110的当前音量设置的音量水平输出语音,从而改善安静的耳语效果。
各种机器学习技术可以用于训练和操作模型以执行本文所述的各种步骤,诸如用户识别、情感检测、图像处理、对话管理等。可以根据各种机器学习技术来训练和操作模型。此类技术可以包括例如神经网络(诸如深度神经网络和/或递归神经网络)、推理引擎、经过训练的分类器等。经过训练的分类器的示例包括支持向量机(SVM)、神经网络、决策树、与决策树结合的AdaBoost(Adaptive Boosting的缩写)和随机森林。以SVM为例,SVM是利用相关联的学习算法的监督学习模型,其分析数据并识别数据中的模式,并且通常用于分类和回归分析。给定一组训练实例,每个实例被标记为属于两种类别之一,SVM训练算法构建将新实例分配到一种类别或另一种类别的模型,从而使其成为非概率二元线性分类器。可利用识别多于两种类别的训练集来构建更复杂的SVM模型,其中SVM确定哪种类别与输入数据最相似。可映射SVM模型,以便通过明确的间隙来划分单独类别的实例。随后将新的实例映射到同一空间,并且基于它们所处的间隙的侧来预测属于一种类别。分类器可发出“分数”,从而指示数据最匹配的类别。分数可提供数据与类别匹配程度的指示。
为了应用机器学习技术,需要训练机器学习过程本身。在这种情况下,训练机器学习组件,诸如第一模型或第二模型之一,需要为训练实例建立“基础事实”。在机器学习中,术语“基础事实”是指对于监督学习技术训练集的分类的准确性。可使用各种技术来训练模型,包括反向传播、统计学习、监督学习、半监督学习、随机学习或其他已知技术。
图11是概念性地示出了可以与系统一起使用的装置110的框图。图12是概念性地示出了远程装置的示例组件的框图,诸如自然语言命令处理系统120(其可以协助ASR处理、NLU处理等)和技能系统525。系统(120/525)可以包括一个或多个服务器。本文使用的“服务器”可以指服务器/客户端计算结构中理解的传统服务器,但也可以指可以协助本文讨论的操作的多个不同的计算组件。例如,服务器可以包括一个或多个物理计算组件(诸如机架式服务器),其物理地和/或通过网络连接到其他装置/组件,并且能够执行计算操作。服务器还可以包括一个或多个虚拟机,这些虚拟机模拟计算机系统并在一个或多个装置上运行。服务器还可以包括硬件、软件或固件等的其他组合来执行本文讨论的操作。服务器可以配置成使用客户端-服务器模型、计算机局模型、网格计算技术、雾计算技术、大型机技术、实用计算技术、对等模型、沙箱技术或其他计算技术中的一种或多种来操作。
虽然装置110可以在用户本地操作(例如,在同一环境中,因此装置可以接收用户的输入和回放输出),但服务器/系统120可以位于远离装置110的位置,因为其操作可能不需要靠近用户。服务器/系统120可以位于与装置110完全不同的位置(例如,作为云计算系统等的一部分),或者可以位于与装置110相同的环境中,但在物理上与其分离(例如,家庭服务器或类似装置,其驻留在用户家中或企业中但可能位于壁橱、地下室或阁楼等中)。服务器/系统120在用户家中/企业中的一个好处是用于处理命令/返回响应的数据可以保存在用户家中,从而减少潜在的隐私问题。
本发明的整个系统100中可以包括多个系统(120/525),诸如用于执行ASR处理的一个或多个自然语言处理系统120、用于执行NLU处理的一个或多个自然语言处理系统120、一个或多个技能系统525等。在操作中,这些系统中的每一个都可以包括驻留在相应装置(120/525)上的计算机可读和计算机可执行指令,这将在下面进一步讨论。
这些装置(110/120/525)中的每一个可以包括一个或多个控制器/处理器(1104/1204),每个控制器/处理器可以包括用于处理数据和计算机可读指令的中央处理单元(CPU)和用于存储相应装置的数据和指令的存储器(1106/1206)。存储器(1106/1206)可以分别包括易失性随机存取存储器(RAM)、非易失性只读存储器(ROM)、非易失性磁阻存储器(MRAM)和/或其他类型的存储器。每个装置(110/120/525)还可以包括用于存储数据和控制器/处理器可执行指令的数据存储组件(1108/1208)。每个数据存储组件(1108/1208)可以单独地包括一种或多种非易失性存储类型,诸如磁存储、光存储、固态存储等。每个装置(110/120/525)还可以通过各自的输入/输出装置接口(1102/1202)连接到可移动或外部非易失性存储器和/或存储(诸如可移动存储卡、存储密钥驱动器、网络存储装置等)。
用于操作每个装置(110/120/525)及其各种组件的计算机指令可以由相应装置的控制器/处理器(1104/1204)执行,使用存储器(1106/1206)作为运行时的临时“工作”存储器。装置的计算机指令可以以非暂时性方式存储在非易失性存储器(1106/1206)、存储装置(1108/1208)或外部装置中。可选地,除了软件之外或代替软件,一些或所有可执行指令可以嵌入相应装置上的硬件或固件中。
每个装置(110/120/525)包括输入/输出装置接口(1102/1202)。各种组件可以通过输入/输出装置接口(1102/1202)连接,这将在下面进一步讨论。此外,每个装置(110/120/525)可以包括地址/数据总线(1620/1224),以用于在相应装置的组件之间传送数据。件附加于(或代替)通过总线(1620/1224)连接到其他组件,装置(110/120/525)内的每个组还可以直接连接到其他组件。
参考图11,装置110可以包括输入/输出装置接口1102,其连接到各种组件,诸如音频输出组件(诸如扬声器112、有线耳机或无线耳机(未示出))或能够输出音频的其他组件。装置110还可以包括音频捕获组件。音频捕获组件可以是例如麦克风114或麦克风阵列、有线耳机或无线耳机(未示出)等。如果包括麦克风阵列,则可以基于阵列中的不同麦克风捕获的声音之间的时间和幅度差异,通过声学定位来确定到声音原点的近似距离。装置110可以附加地包括用于显示内容的显示器116。装置110还可以包括相机1118。
经由天线1122,输入/输出装置接口1102可以经由无线局域网(WLAN)(诸如Wi-Fi)无线电、蓝牙和/或无线网络无线电(诸如能够与无线通信网络(诸如长期演进(LTE)网络、WiMAX网络、3G网络、4G网络、5G网络等)通信的无线电)连接到一个或多个网络199。也可以支持有线连接,诸如以太网。通过网络199,系统可以分布在网络环境中。I/O装置接口(1102/1202)还可以包括允许在装置(诸如服务器或其他组件的集合中的不同物理服务器)之间交换数据的通信组件。
装置110、自然语言命令处理系统120或技能系统525的组件可以包括其专用处理器、内存和/或存储器。可选地,装置110、自然语言命令处理系统120或技能系统525的一个或多个组件可以分别利用装置110、自然语言命令处理系统120或技能系统525的I/O接口(1102/1202)、处理器(1104/1204)、存储器(1106/1206)和/或存储(1108/1208)。因此,ASR组件550可以具有其自己的I/O接口、处理器、存储器和/或存储;NLU组件560可以具有其自己的I/O接口、处理器、存储器和/或存储;对于本文讨论的各种组件也是如此。
如上所述,单个系统中可以采用多个装置。在此多装置系统中,装置中的每一个可以包括用于执行系统处理的不同方面的不同组件。多个装置可以包括重叠的组件。如本文所述,装置110、自然语言命令处理系统120和技能系统525的组件是说明性的,并且可以作为独立装置来定位,或者可以整体或部分地作为更大装置或系统的组件来包括。可以理解,多个组件可以存在于系统120和/或装置110上。例如,语言处理592(其可以包括ASR 550)、语言输出593(其可以包括NLG 579和TTS 580)等,例如如图5A和图5B所示。除非明确指出,否则此类组件的系统版本可以类似于此类组件的装置版本进行操作,因此一个版本(例如系统版本或本地版本)的描述适用于另一个版本(例如本地版本或系统版本)的描述,反之亦然。
如图13所示,多个装置(110a-110n,120,525)可以包含系统的组件,并且装置可以通过网络199连接。网络199可以包括本地或专用网络,或者可以包括诸如互联网的广域网。装置可以通过有线或无线连接连接到网络199。例如,语音检测装置110a、智能电话110b、智能手表110c、平板电脑110d、车辆110e、具有显示器的语音检测装置110f、显示器/智能电视110g、洗衣机/烘干机110h、冰箱110i、微波炉110j等(例如,诸如FireTV stick、Echo Auto等装置)可以通过无线服务提供商、通过Wi-Fi或蜂窝网络连接等连接到网络199。将其他装置纳入作为网络连接的支持装置,诸如自然语言命令处理系统120、技能系统525和/或其他装置。支持装置可以通过有线连接或无线连接连接到网络199。联网装置可以使用一个或多个内置或连接的麦克风或其他音频捕获装置来捕获音频,其中处理由ASR组件、NLU组件或同一装置的其他组件或经由网络199连接的另一装置来执行,诸如自然语言命令处理系统120的ASR组件550、NLU组件560等。
本文公开的概念可以应用于多种不同的装置和计算机系统中,包括例如通用计算系统、语音处理系统和分布式计算环境。
本文的材料也可以鉴于以下条款进行理解。
1、一种计算机实现的方法,其包括:使用配置成检测接收到的音频中的第一唤醒词的第一唤醒词组件来操作第一装置,所述第一唤醒词组件包括对应于所述第一唤醒词的第一卷积神经网络(CNN)编码器和第一卷积递归神经网络(CRNN)解码器;确定配置所述第一装置以检测第二唤醒词的请求;确定更新的唤醒词组件数据;向所述第一装置发送所述更新的唤醒词组件数据;使用所述更新的唤醒词组件数据来配置更新的唤醒词组件以供所述第一装置操作;由所述第一装置接收表示话语的输入音频数据;使用所述第一CNN编码器处理所述输入音频数据,以确定包括表示所述话语的声学单元的多个特征向量的第一编码音频数据;使用所述第一CRNN解码器处理所述第一编码音频数据以确定所述话语包括所述第一唤醒词的第一可能性;使用所述第二CRNN解码器处理所述第一编码音频数据以确定所述话语包括所述第二唤醒词的第二可能性;并且至少部分基于所述第一可能性或所述第二可能性,使得使用表示所述话语的数据来执行语音处理,所述更新的唤醒词组件数据包括:表示所述第一CNN编码器的第一数据、表示所述第一CRNN解码器的第二数据和表示对应于所述第二唤醒词的第二CRNN解码器的第三数据。
2、根据条款1所述的计算机实现的方法,其还包括:由所述第一CRNN解码器确定与所述第一唤醒词的检测对应的第一时间数据;由所述第二CRNN解码器确定与所述第二唤醒词的检测对应的第二时间数据;以及处理所述第一时间数据和所述第二时间数据以确定在所述第二唤醒词的第一时间内检测到所述第一唤醒词,其中使得待执行的所述语音处理至少部分地基于在所述第二唤醒词的所述第一时间内检测到所述第一唤醒词。
3、根据条款1或2所述的计算机实现的方法,其还包括:确定配置所述第一装置以检测第三唤醒词的第二请求;确定第二更新的唤醒词组件数据,其包括:表示所述第一CNN编码器的第一数据、表示所述第一CRNN解码器的第二数据、表示所述第二CRNN解码器的第三数据以及表示对应于所述第三唤醒词的第三CRNN解码器的第四数据;向所述第一装置发送所述第二更新的唤醒词组件数据;以及使用所述第二更新的唤醒词组件数据来配置进一步更新的唤醒词组件以供所述第一装置操作。
4、根据条款1、2或3所述的计算机实现的方法,其还包括:使用第二唤醒词组件来操作第二装置,所述第二唤醒词组件配置成检测接收到的音频中的所述第一唤醒词,所述第二唤醒词组件包括所述第一CNN编码器和所述第一CRNN解码器;确定配置所述第二装置以检测第三唤醒词的请求;确定第二更新的唤醒词组件数据,其包括:表示所述第一CNN编码器的第一数据、表示所述第一CRNN解码器的第二数据和表示对应于所述第三唤醒词的第三CRNN解码器的第四数据;向所述第二装置发送所述第二更新的唤醒词组件数据;以及使用所述第二更新的唤醒词组件数据来配置第二更新的唤醒词组件以供所述第二装置操作。
5、一种计算机实现的方法,其包括:接收表示由第一装置检测到的音频的音频数据;使用第一编码器处理所述音频数据以确定第一编码音频数据;使用第一解码器处理所述第一编码音频数据以确定表示所述音频包括第一唤醒词的第一可能性的第一数据;使用第二解码器处理所述第一编码音频数据以确定表示所述音频包括第二唤醒词的第二可能性的第二数据;以及至少部分地基于所述第一数据或所述第二数据,使得使用表示所述音频的数据来执行进一步的处理。
6、根据条款5所述的计算机实现的方法,其还包括:至少部分地基于所述第一数据确定所述音频包括所述第一唤醒词;以及响应于所述音频包括所述第一唤醒词,将所述音频数据发送到与所述第一唤醒词相关联的第一组件。
7、根据条款5或6所述的计算机实现的方法,其还包括:从所述第一装置向所述第二装置发送启用关于所述第一装置的第三唤醒词的请求;由所述第一装置从所述第二装置接收第一唤醒词组件数据,所述第一唤醒词组件数据包括:对应于所述第一编码器的第三数据、对应于所述第一解码器的第四数据、对应于所述第二解码器的第五数据以及对应于第三解码器的第六数据,所述第三解码器配置成处理编码音频数据以确定输入音频数据何时包括所述第三唤醒词的表示;以及使所述第一装置能够使用所述第一唤醒词组件数据执行唤醒词检测。
8、根据条款5、6或7所述的计算机实现的方法,其还包括:从所述第一装置向所述第二装置发送启用关于所述第一装置的第三唤醒词的请求;由所述第一装置从所述第二装置接收对应于第三解码器的第三数据,所述第三解码器配置成处理编码音频数据以确定输入音频数据何时包括所述第三唤醒词的表示;以及使所述第一装置能够使用所述第三数据执行唤醒词检测。
9、根据条款5、6、7或8所述的计算机实现的方法,其中:所述第一数据包括与所述第一唤醒词的检测对应的第一时间数据;所述第二数据包括与所述第二唤醒词的检测对应的第二时间数据;所述方法还包括处理所述第一时间数据和所述第二时间数据以确定所述第一唤醒词是在所述第二唤醒词的第一时间内检测到的;并且至少部分地基于在所述第二唤醒词的所述第一时间内检测到的所述第一唤醒词来执行所述进一步的处理。
10、根据条款9所述的计算机实现的方法,其中:所述第二唤醒词对应于第一助理语音组件;并且所述方法还包括:接收表示第二音频的第二音频数据;使用所述第一编码器处理所述第二音频数据以确定第二编码音频数据;使用所述第一解码器处理所述第二编码音频数据以确定:所述第二音频包括所述第一唤醒词的第三可能性,以及对应于检测到第一唤醒词作为第二音频的一部分的第三时间数据;使用第三解码器处理所述第二编码音频数据以确定:所述第二音频包括对应于不同于所述第一助理语音组件的第二助理语音组件的第三唤醒词的第四可能性,以及与作为所述第二音频的一部分的所述第三唤醒词的检测对应的第四时间数据;处理所述第三时间数据和所述第四时间数据,以确定在作为所述第二音频的一部分的所述第三唤醒词的第二时间内检测到所述第一唤醒词;以及至少部分基于在所述第三唤醒词的所述第二时间内检测到所述第一唤醒词,使用所述第二助理语音组件对所述第二音频数据执行进一步的处理。
11、根据条款5、6、7、8、9或10所述的计算机实现的方法,其中:所述第一编码器包括卷积神经网络;所述音频数据表示多个音频帧;所述方法包括:确定对应于所述多个音频帧的第一子集的所述音频数据的第一部分,由所述第一编码器处理所述第一部分以确定表示由所述第一子集表示的至少一个声学单元的第一特征向量,确定对应于所述多个音频帧的第二子集的所述音频数据的第二部分,以及由所述第一编码器处理所述第二部分以确定表示由所述第二子集表示的至少一个声学单元的第二特征向量;以及所述第一编码音频数据包括所述第一特征向量和所述第二特征向量。
12、根据条款5、6、7、8、9、10或11所述的计算机实现的方法,其中:所述第一解码器对应于第一助理语音组件;以及所述第二解码器对应于不同于所述第一助理语音组件的第二助理语音组件。
13、一种系统,其包括:至少一个处理器;以及包括指令的至少一个存储器,当由所述至少一个处理器执行时,所述指令使得所述系统:接收启用关于第一装置的第一唤醒词的请求;确定所述第一装置配置成相对于第二唤醒词进行操作;确定第一唤醒词组件数据,其包括:对应于配置成处理输入音频数据并确定编码音频数据的第一编码器的第一数据、对应于配置成处理编码音频数据以确定输入音频数据何时包括所述第一唤醒词的表示的第一解码器的第二数据、以及对应于配置成处理编码音频数据以确定输入音频数据何时包括所述第二唤醒词的表示的第二解码器的第三数据;以及将所述第一唤醒词组件数据发送到所述第一装置。
14、根据条款13所述的系统,其中所述至少一个存储器还包括指令,当由所述至少一个处理器执行时,所述指令还使得所述系统在接收所述请求之前:确定第二唤醒词组件数据,其包括:对应于所述第一编码器的所述第一数据和对应于所述第二解码器的所述第三数据;以及将所述第一唤醒词组件数据发送到所述第一装置。
15、根据条款13或14所述的系统,其中所述至少一个存储器还包括指令,当由所述至少一个处理器执行时,所述指令还使得所述系统:接收启用关于所述第一装置的所述第三唤醒词的第二请求;以及向所述第一装置发送对应于第三解码器的第四数据,所述第三解码器配置成处理编码音频数据以确定输入音频数据何时包括所述第三唤醒词的表示。
16、根据条款13、14或15所述的系统,其中所述至少一个存储器还包括指令,当由所述至少一个处理器执行时,所述指令还使得所述系统:接收启用关于第二装置的所述第一唤醒词的请求;确定所述第二装置配置成相对于第三唤醒词进行操作;确定第二唤醒词组件数据,其包括:对应于所述第一编码器的所述第一数据、对应于所述第一解码器的所述第二数据和对应于第三解码器的第四数据,所述第三解码器配置成处理编码音频数据以确定输入音频数据何时包括所述第三唤醒词的表示;以及将所述第二唤醒词组件数据发送给所述第一装置。
17、根据条款13、14、15或16所述的系统,其中使所述系统确定所述第一装置配置成针对第二唤醒词进行操作的所述指令包括:当由所述至少一个处理器执行时使系统:确定与所述第一装置相关联的第一配置文件;并且使用所述第一配置文件来确定所述第一装置配置成相对于所述第二唤醒词进行操作的指令。
18、根据条款13、14、15、16或17所述的系统,其中所述至少一个存储器还包括指令,当由所述至少一个处理器执行时,所述指令还使得所述系统:确定与所述第一装置相关联的第一简档;并将所述第一唤醒词组件数据发送到与所述第一配置文件相关联的第二装置。
19、根据条款13、14、15、16、17或18所述的系统,其中:所述第一解码器对应于第一助理语音服务;以及所述第二解码器对应于不同于所述第一助理语音服务的第二助理语音服务。
20、根据条款13、14、15、16、17、18或19所述的系统,其中:在接收到所述请求之前执行所述第一唤醒词组件数据的确定;并且所述至少一个存储器还包括指令,当由所述至少一个处理器执行时,所述指令还使得所述系统:在接收到所述请求之前,存储所述第一唤醒词组件数据;以及在接收到所述请求之后:确定要针对所述第一装置启用的第一组唤醒词,所述第一组唤醒词至少包括所述第一唤醒词和所述第二唤醒词,确定所述第一组唤醒词对应于第一唤醒词组件数据,以及响应于所述第一组唤醒词对应于所述第一唤醒词组件数据,向所述第一装置发送所述第一唤醒词组件数据。
本公开的上述方面旨在是说明性的。选择它们来解释本公开的原理和应用,并且不旨在穷举或限制本公开。所公开方面的许多修改和变化对于本领域技术人员来说可能是显而易见的。计算机和语音处理域的普通技术人员应该认识到,本文描述的组件和过程步骤可以与其他组件或步骤或者组件或步骤的组合互换,并且仍然实现本公开的益处和优点。此外,对于本领域技术人员来说显而易见的是,可以在没有本文公开的一些或所有具体细节和步骤的情况下实施本公开。此外,除非明确指出相反的情况,否则来自本文讨论的一个实施例的特征/操作/组件等可以与来自本文讨论的另一个实施例的特征/操作/组件等相结合。
所公开系统的各方面可以实施为计算机方法或制造品,诸如存储装置或非暂时性计算机可读存储介质。计算机可读存储介质可以是计算机可读的,并且可以包括用于使计算机或其他装置执行本公开中描述的过程的指令。计算机可读存储介质可以由易失性计算机存储器、非易失性计算机存储器、硬盘驱动器、固态存储器、闪存驱动器、可移动磁盘和/或其他介质来实现。此外,可以在固件或硬件中实现系统的组件。
本文所使用的条件语言,诸如尤其是“可”、“可以”、“可能”、“例如”等,除非另外明确声明或在使用的背景下以其他方式进行理解,否则通常旨在传达:某些实施例包括、而其他实施例不包括某些特征、元件和/或状态。因此,这种条件语言通常不旨在暗示一个或多个实施例以任何方式需要特征、元素和/或步骤,或者一个或多个实施例必须包括用于在具有或不具有其他输入或提示的情况下决定这些特征、元件和/或步骤是否包括在任何特定实施例中或将在任何特定实施例中执行的逻辑。术语“包含”、“包括”和“具有”等是同义的并且以开放式的方式包含使用,并且不排除附加的元件、特征、动作、操作等。同样地,术语“或”以其包含意义(而不是排除意义)使用,使得例如在用于连接一系列元件时,术语“或”意味着这一系列中的一个、一些或所有元件。
除非另有特别说明,否则诸如短语“X、Y、Z中的至少一个”的析取语言在上下文中通常应理解为用来表示项目、术语等可以是X、Y或Z或者它们的任何组合(例如,X、Y和/或Z)。因此,这种选言语言通常不希望、也不应该暗示某些实施例要求至少一个X、至少一个Y或至少一个Z各自存在。
如本公开中所使用的,术语“一”或“一个”可以包括一个或多个项目,除非另有明确说明。此外,短语“基于”旨在表示“至少部分地基于”,除非另有明确说明。

Claims (15)

1.一种计算机实现的方法,其包括:
接收表示由第一装置检测到的音频的音频数据;
使用第一编码器处理所述音频数据以确定第一编码音频数据;
使用第一解码器处理所述第一编码音频数据以确定表示所述音频包括第一唤醒词的第一可能性的第一数据;
使用第二解码器处理所述第一编码音频数据以确定表示所述音频包括第二唤醒词的第二可能性的第二数据;以及
至少部分地基于所述第一数据或所述第二数据,致使使用表示所述音频的数据来执行进一步的处理。
2.根据权利要求1所述的计算机实现的方法,其还包括:
至少部分基于所述第一数据来确定所述音频包括所述第一唤醒词;以及
响应于所述音频包括所述第一唤醒词,将所述音频数据发送到与所述第一唤醒词相关联的第一组件。
3.根据权利要求1或2所述的计算机实现的方法,其还包括:
从所述第一装置向所述第二装置发送启用针对所述第一装置的第三唤醒词的请求;
由所述第一装置从所述第二装置接收第一唤醒词组件数据,所述第一唤醒词组件数据包括:
对应于所述第一编码器的第三数据,
对应于所述第一解码器的第四数据,
对应于所述第二解码器的第五数据,以及
对应于第三解码器的第六数据,所述第三解码器配置成处理编码音频数据以确定输入音频数据何时包括所述第三唤醒词的表示;以及
使得所述第一装置能够使用所述第一唤醒词组件数据来执行唤醒词检测。
4.根据权利要求1、2或3所述的计算机实现的方法,其还包括:
从所述第一装置向所述第二装置发送启用针对所述第一装置的第三唤醒词的请求;
由所述第一装置从所述第二装置接收对应于第三解码器的第三数据,所述第三解码器配置成处理编码音频数据以确定输入音频数据何时包括所述第三唤醒词的表示;以及
使得所述第一装置能够使用所述第三数据执行唤醒词检测。
5.根据权利要求1、2、3或4所述的计算机实现的方法,其中:
所述第一数据包括与所述第一唤醒词的检测对应的第一时间数据;
所述第二数据包括与所述第二唤醒词的检测对应的第二时间数据;
所述方法还包括处理所述第一时间数据和所述第二时间数据以确定在所述第二唤醒词的第一时间内检测到所述第一唤醒词;以及
使得至少部分地基于在所述第二唤醒词的所述第一时间内检测到所述第一唤醒词来执行所述进一步的处理。
6.根据权利要求5所述的计算机实现的方法,其中:
所述第二唤醒词对应于第一助理语音组件;以及
所述方法还包括:
接收表示第二音频的第二音频数据;
使用所述第一编码器处理所述第二音频数据以确定第二编码音频数据;
使用所述第一解码器处理所述第二编码音频数据以确定:
所述第二音频包括所述第一唤醒词的第三可能性,以及
与作为所述第二音频的一部分的所述第一唤醒词的检测对应的第三时间数据;
使用第三解码器处理所述第二编码音频数据以确定:
所述第二音频包括与不同于所述第一助理语音组件的第二助理语音组件对应的第三唤醒词的第四可能性,以及
与作为所述第二音频的一部分的所述第三唤醒词的检测对应的第四时间数据;
处理所述第三时间数据和所述第四时间数据,以确定在作为所述第二音频的一部分的所述第三唤醒词的第二时间内检测到所述第一唤醒词;以及
至少部分地基于在所述第三唤醒词的所述第二时间内检测到所述第一唤醒词,致使使用所述第二助理语音组件对所述第二音频数据执行进一步的处理。
7.根据权利要求1、2、3、4、5或6所述的计算机实现的方法,其中:
所述第一编码器包括卷积神经网络;
所述音频数据表示多个音频帧;
所述方法包括:
确定所述音频数据的对应于所述多个音频帧的第一子集的第一部分,
由所述第一编码器处理所述第一部分以确定代表由所述第一子集表示的至少一个声学单元的第一特征向量,
确定所述音频数据的对应于所述多个音频帧的第二子集的第二部分,以及
由所述第一编码器处理所述第二部分以确定代表由所述第二子集表示的至少一个声学单元的第二特征向量;以及
所述第一编码音频数据包括所述第一特征向量和所述第二特征向量。
8.根据权利要求1、2、3、4、5、6或7所述的计算机实现的方法,其中:
所述第一解码器对应于第一助理语音组件;以及
所述第二解码器对应于不同于所述第一助理语音组件的第二助理语音组件。
9.一种系统,包括:
至少一个处理器;以及
至少一个存储器,其包括当由所述至少一个处理器执行时使得所述系统执行以下操作的指令:
接收启用针对第一装置的第一唤醒词的请求;
确定所述第一装置配置成针对第二唤醒词进行操作;
确定第一唤醒词组件数据,其包括:
对应于第一编码器的第一数据,所述第一编码器配置成处理输入音频数据并确定编码音频数据,
对应于第一解码器的第二数据,所述第一解码器配置成处理编码音频数据以确定输入音频数据何时包括所述第一唤醒词的表示,以及
对应于第二解码器的第三数据,所述第二解码器配置成处理编码音频数据以确定输入音频数据何时包括所述第二唤醒词的表示;以及
向所述第一装置发送所述第一唤醒词组件数据。
10.根据权利要求书9所述的系统,其中所述至少一个存储器还包括当由所述至少一个处理器执行时还使得所述系统在接收所述请求之前执行以下操作的指令:
确定第二唤醒词组件数据,其包括:
对应于所述第一编码器的所述第一数据,以及
对应于所述第二解码器的所述第三数据;以及
向所述第一装置发送所述第一唤醒词组件数据。
11.根据权利要求9或10所述的系统,其中所述至少一个存储器还包括当由所述至少一个处理器执行时还使得所述系统执行以下操作的指令:
接收启用针对所述第一装置的第三唤醒词的第二请求;以及
向所述第一装置发送对应于第三解码器的第四数据,所述第三解码器配置成处理编码音频数据以确定输入音频数据何时包括所述第三唤醒词的表示。
12.根据权利要求9、10或11所述的系统,其中所述至少一个存储器还包括当由所述至少一个处理器执行时还使得所述系统执行以下操作的指令:
接收启用针对第二装置的所述第一唤醒词的请求;
确定所述第二装置配置成针对第三唤醒词进行操作;
确定第二唤醒词组件数据,其包括:
对应于所述第一编码器的所述第一数据,
对应于所述第一解码器的所述第二数据,以及
对应于第三解码器的第四数据,所述第三解码器配置成处理编码音频数据以确定输入音频数据何时包括所述第三唤醒词的表示;以及
向所述第一装置发送所述第二唤醒词组件数据。
13.根据权利要求9、10、11或12所述的系统,其中使所述系统确定所述第一装置配置成针对第二唤醒词进行操作的指令包括当由所述至少一个处理器执行时使所述系统执行以下操作的指令:
确定与所述第一装置相关联的第一简档;以及
使用所述第一简档来确定所述第一装置配置成针对所述第二唤醒词进行操作。
14.根据权利要求9、10、11、12或13所述的系统,其中所述至少一个存储器还包括当由所述至少一个处理器执行时还使得所述系统执行以下操作的指令:
确定与所述第一装置相关联的第一简档;以及
向与所述第一简档相关联的第二装置发送所述第一唤醒词组件数据。
15.根据权利要求9、10、11、12、13或14所述的系统,其中:
所述第一解码器对应于第一助理语音组件;以及
所述第二解码器对应于不同于所述第一助理语音组件的第二助理语音组件。
CN202280058218.5A 2021-12-10 2022-11-14 多个唤醒词检测 Pending CN117882131A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/547,547 2021-12-10
US17/547,547 US20230186902A1 (en) 2021-12-10 2021-12-10 Multiple wakeword detection
PCT/US2022/049790 WO2023107244A1 (en) 2021-12-10 2022-11-14 Multiple wakeword detection

Publications (1)

Publication Number Publication Date
CN117882131A true CN117882131A (zh) 2024-04-12

Family

ID=84688334

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280058218.5A Pending CN117882131A (zh) 2021-12-10 2022-11-14 多个唤醒词检测

Country Status (3)

Country Link
US (1) US20230186902A1 (zh)
CN (1) CN117882131A (zh)
WO (1) WO2023107244A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117742792B (zh) * 2024-02-20 2024-05-24 青岛海尔科技有限公司 基于大模型的指令执行设备选取方法、装置、设备和介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9812126B2 (en) * 2014-11-28 2017-11-07 Microsoft Technology Licensing, Llc Device arbitration for listening devices
US11899519B2 (en) * 2018-10-23 2024-02-13 Sonos, Inc. Multiple stage network microphone device with reduced power consumption and processing load
US10867604B2 (en) * 2019-02-08 2020-12-15 Sonos, Inc. Devices, systems, and methods for distributed voice processing
US11158305B2 (en) * 2019-05-05 2021-10-26 Microsoft Technology Licensing, Llc Online verification of custom wake word
US20210090575A1 (en) * 2019-09-24 2021-03-25 Amazon Technologies, Inc. Multi-assistant natural language input processing
WO2022067345A1 (en) * 2020-09-25 2022-03-31 Sonos, Inc. Concurrency rules for network microphone devices having multiple voice assistant services
US11444795B1 (en) * 2021-02-25 2022-09-13 At&T Intellectual Property I, L.P. Intelligent meeting assistant
US20220301550A1 (en) * 2021-03-18 2022-09-22 Samsung Electronics Co., Ltd. Method and apparatus with keyword detection
US11763814B2 (en) * 2021-06-21 2023-09-19 Logitech Europe S.A. Hybrid voice command processing

Also Published As

Publication number Publication date
US20230186902A1 (en) 2023-06-15
WO2023107244A1 (en) 2023-06-15

Similar Documents

Publication Publication Date Title
US20220044680A1 (en) Privacy mode based on speaker identifier
US20220115016A1 (en) Speech-processing system
US11538478B2 (en) Multiple virtual assistants
US11862174B2 (en) Voice command processing for locked devices
US11887580B2 (en) Dynamic system response configuration
US20200184967A1 (en) Speech processing system
US11579841B1 (en) Task resumption in a natural understanding system
US11302329B1 (en) Acoustic event detection
US11715472B2 (en) Speech-processing system
US11605387B1 (en) Assistant determination in a skill
US11955112B1 (en) Cross-assistant command processing
US11810556B2 (en) Interactive content output
US20240029743A1 (en) Intermediate data for inter-device speech processing
US11915683B2 (en) Voice adaptation using synthetic speech processing
CN115176309A (zh) 语音处理系统
CN117882131A (zh) 多个唤醒词检测
US20240095987A1 (en) Content generation
US11887583B1 (en) Updating models with trained model update objects
US11763809B1 (en) Access to multiple virtual assistants
US11735178B1 (en) Speech-processing system
US12001260B1 (en) Preventing inadvertent wake in a speech-controlled device
US11922938B1 (en) Access to multiple virtual assistants
US12039998B1 (en) Self-supervised federated learning
US20240096316A1 (en) Multi-assistant device control
US11961514B1 (en) Streaming self-attention in a neural network

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