HI,欢迎来到起点商标网!
24小时服务QQ:2880605093

计算代理的合成语音选择的制作方法

2021-01-28 13:01:45|201|起点商标网
计算代理的合成语音选择的制作方法

分案说明

本申请属于申请日为2017年9月29日的中国发明专利申请201780061508.4的分案申请。

相关申请

本申请要求2016年10月3日提交的美国临时专利申请no.62/403,665的权益,其全部内容通过引用结合于此。



背景技术:

一些计算平台可以提供用户界面,用户可以从该用户界面与虚拟计算助理(例如,也称为“智能个人助理”或简称为“助理”)聊天、说话或者以其它方式与其通信,以使助理输出有用信息,响应用户需求或者以其它方式执行某些操作以帮助用户完成各种现实世界或虚拟的任务。例如,计算设备可以利用麦克风接收对应于用户话语的语音输入(例如,音频数据)。至少部分地在计算设备处执行的助理可以分析语音输入并尝试通过下述方式来满足话语:基于话语输出有用信息、响应由话语指示的用户需求或者以其它方式执行某些操作来帮助用户根据话语完成各种现实世界或虚拟任务。



技术实现要素:

一般而言,本发明的技术可使用户能够与多个虚拟计算代理/助理通信。例如,可能存在经由计算设备可供用户使用的若干代理,其可能至少在某种程度上能够响应话语(例如,请求、问题、查询、订购等)。代理可以通过至少使计算设备输出合成音频数据来响应话语或否则与用户交谈。例如,代理可以提供文本,计算设备在其上执行文本到语音(tts)以生成合成音频数据。然而,与使用相同语音为所有代理生成的合成音频数据相反,可能希望不同代理使用不同的语音。以这种方式,提供自适应接口,其中基于数据本身来调整数据的输出。

根据本公开的一种或多种技术,代理可以使计算设备使用不同的语音输出合成的音频数据。例如,第一代理可以使计算设备使用第一语音输出合成音频数据,第二代理可以使计算设备使用与第一语音不同的第二语音输出合成音频数据。通过使得不同的代理在经由特定计算设备与用户通信时使用不同的语音,用户可以更好地跟踪用户正在与哪个代理进行通信。这样,用户可以避免重复发声,其处理消耗功率和其他系统资源。以这种方式,本公开的技术可以降低代理交互的功耗和/或系统资源需求。

在一个示例中,一种方法包括:由在一个或多个处理器处执行的计算助理接收在计算设备处说出的话语的表示;基于所述话语从多个代理中选择代理,其中,所述多个代理包括一个或多个第一方代理和多个第三方代理;响应于确定所选择的代理包括第一方代理,从多个语音中选择预留语音;以及,使用所选择的语音输出用于由所述计算设备的一个或多个扬声器回放的合成的音频数据以满足所述话语。

在另一示例中,一种设备包括至少一个处理器;至少一个存储器,所述至少一个存储器包括指令,所述指令在被执行时使所述至少一个处理器执行助理,所述助理被配置为:从可操作地连接到所述计算设备的一个或多个麦克风接收在所述计算设备处说出的话语的表示;基于话语从多个代理中选择代理,其中,所述多个代理包括一个或多个第一方代理和多个第三方代理,所述存储器还包括指令,所述指令在被执行时使得所述至少一个处理器:响应于确定所选择的代理包括第一方代理,从多个语音中选择预留语音;并且,使用所选择的语音输出用于通过可操作地连接到计算设备的一个或多个扬声器进行回放的合成音频数据以满足话语。

在另一示例中,一种系统包括一个或多个通信单元;至少一个处理器;至少一个存储器,至少一个存储器包括指令,所述指令在被执行时使所述至少一个处理器执行助理,所述助理被配置为:从可操作地连接到所述计算设备的一个或多个麦克风接收在所述计算设备处说出的话语的表示;基于话语从多个代理中选择代理,其中,所述多个代理包括一个或多个第一方代理和多个第三方代理,所述存储器还包括指令,所述指令在被执行时使得所述至少一个处理器:响应于确定所选择的代理包括第一方代理,从多个语音中选择预留语音;并且,使用所选择的语音输出用于由可操作地连接到计算设备的一个或多个扬声器回放的合成音频数据以满足话语。

在另一示例中,一种系统包括:用于由在一个或多个处理器处执行的计算助理接收在计算设备处说出的话语的表示的装置;用于基于话语从多个代理中选择代理的装置,其中,所述多个代理包括一个或多个第一方代理和多个第三方代理;用于响应于确定所选择的代理包括第一方代理,从多个语音中选择预留语音的装置;以及,用于使用所选择的语音输出用于通过可操作地连接到计算设备的一个或多个扬声器进行回放的合成音频数据以满足话语的装置。

在另一示例中,一种计算机可读存储介质,存储指令,所述指令在被执行时使得一个或多个处理器执行助理,所述助理被配置为:接收在计算设备处说出的话语的表示;基于话语从多个代理中选择代理,其中,所述多个代理包括一个或多个第一方代理和多个第三方代理,所述存储介质还包括指令,所述指令在被执行时使得一个或多个处理器:响应于确定所选择的代理包括第一方代理,从多个语音中选择预留语音;并且,使用所选择的语音输出用于回放的合成音频数据以满足话语。

在附图和以下描述中阐述了一个或多个示例的细节。根据说明书和附图以及权利要求,本公开的其他特征、目的和优点将是显而易见的。

附图说明

图1是示出根据本公开的一个或多个方面的执行示例虚拟助理的示例系统的概念图。

图2是示出根据本公开的一个或多个方面的被配置为执行示例虚拟助理的示例计算设备的框图。

图3是示出根据本公开的一个或多个方面的被配置为执行示例虚拟助理的示例计算系统的框图。

图4是示出根据本公开的一个或多个方面的被配置为执行示例第三方代理的示例计算系统的框图。

图5是示出根据本公开的一个或多个方面的由执行示例虚拟助理的一个或多个处理器执行的示例操作的流程图。

图6a-6c是示出了根据本公开的一个或多个方面的由一个或多个处理器执行以选择虚拟代理以执行任务的示例操作的流程图。

图7是示出根据本发明的一个或多个方面的由一个或多个处理器执行以促进多个虚拟代理的任务执行的示例操作的流程图。

图8是示出根据本发明的一个或多个方面的由一个或多个处理器执行以选择在输出由虚拟代理生成的文本的合成音频数据时使用的语音的示例操作的流程图。

具体实施方式

一般而言,本发明的技术可使虚拟计算助理(例如,也称为“智能个人助理”或简称为“助理”)能够管理多个代理以响应用户输入(例如,用于满足用户话语或文本输入)。例如,计算设备可以利用麦克风接收对应于用户话语的语音输入(例如,音频数据)。代理选择模块可以分析语音输入,并从多个代理中选择代理以满足话语。所述多个代理可以包括一个或多个第一方(1p)代理和一个或多个第三方(3p)代理。1p代理可以包括在助理内和/或与助理、代理选择模块和/或接收语音输入的计算设备的操作系统共享公共发布者。

为了执行选择,代理选择模块可以使用1p代理、3p代理或1p代理和3p代理的某种组合来确定是否满足话语。在代理选择模块至少部分地使用3p代理确定满足话语的情况下,代理选择模块可以基于话语对一个或多个3p代理进行排名。

所选择的语言代理(1p语言代理、3p语言代理或1p语言代理和3p语言代理的某种组合)可以尝试满足话语。例如,所选代理可以执行一个或多个动作(例如,基于话语输出信息、响应由话语指示的用户需求或者以其它方式基于话语执行某些操作以帮助用户完成各种现实世界或虚拟任务)来满足话语。

在一些示例中,可以存在执行动作的代理的类型的指示。例如,在一个或多个动作包括与用户“说话”的情况下,1p代理和3p代理可以使用不同的语音。作为一个示例,1p代理可以全部利用多个语音中的预留语音,并且3p代理可以利用所述多个语音中的其他语音,但是可以禁止使用预留语音。在一个或多个动作包括与用户的文本交互的情况下,各代理可以使用不同的标识符(例如,“代理1:ihavemadeyourdinnerreservation(我已经预订了晚餐)”以及“代理2:ihavemoved$100fromyourcheckingaccounttoyoursavingsaccount(我已经从您的支票账户转移了100美元到您的储蓄帐户)”),每个代理用不同字体等等。

贯穿本公开,描述了其中仅在计算设备从计算设备的用户接收分析信息的许可的情况下计算设备和/或计算系统分析与计算设备和计算设备的用户相关联的信息(例如,场境(context)、位置、通信、联系人、聊天会话、语音会话等)的示例。例如,在下面讨论的情况中,在计算设备或计算系统处执行的助理能够收集或可以使用与用户相关联的信息之前,可以向用户提供提供输入以控制助理(或者计算设备和/或计算系统的其他程序或特征)是否可以收集和利用用户信息或指示计算设备和/或计算系统是否和/或如何可以接收可能与用户相关的内容的机会。另外,某些数据可以在由助理或底层计算设备和/或计算系统存储或使用之前以一种或多种方式加密和/或处理,从而移除个人可识别信息。例如,可以处理用户的身份,以便不能确定关于用户的个人可识别信息,或者获得位置信息时可以上位化用户的地理位置(例如,到城市、邮政编码或州,而不是坐标位置或物理地址),使得无法确定用户的特定位置。因此,用户可以控制如何收集关于用户的信息并由助理和执行助理的底层计算设备以及计算系统使用。

图1是示出根据本公开的一个或多个方面的执行示例虚拟助理的示例系统的概念图。图1的系统100包括经由网络130与搜索服务器系统180、第三方(3p)代理服务器系统170a-170n(统称为:“3p代理服务器系统170”)和计算设备110通信的助理服务器系统160。虽然系统100被示为分布在助理服务器系统160、3p代理服务器系统170、搜索服务器系统180和计算设备110之间,但在其他示例中归因于系统100的特征和技术可以由计算设备110的本地组件在内部执行。类似地,助理服务器系统160和/或3p代理服务器系统170可以包括某些组件,并执行在以下描述中另外归因于搜索服务器系统180和/或计算设备110的各种技术。

网络130表示用于在计算系统、服务器和计算设备之间传输数据的任何公共或专用通信网络,例如,蜂窝、wi-fi和/或其他类型的网络。助理服务器系统160可以经由网络130与计算设备110交换数据,以提供当计算设备110连接到网络130时计算设备110可访问的虚拟助理服务。类似地,3p代理服务器系统170可以经由网络130与计算设备110交换数据,以当计算设备110连接到网络130时提供计算设备110可访问的虚拟代理服务。助理服务器系统160可以经由网络130与搜索服务器系统180交换数据,以访问由搜索服务器系统180提供的搜索服务。计算设备110可以经由网络130与搜索服务器系统180交换数据以访问由搜索服务器系统180提供的搜索服务。3p代理服务器系统170可以经由网络130与搜索服务器系统180交换数据以访问由搜索服务器系统180提供的搜索服务。

网络130可以包括一个或多个网络集线器、网络交换机、网络路由器或任何其他网络设备,它们可操作地相互耦合,从而提供服务器系统160、170和180与计算设备110之间的信息交换。计算设备110、助理服务器系统160、3p代理服务器系统170和搜索服务器系统180可以使用任何合适的通信技术在网络130上发送和接收数据。计算设备110、助理服务器系统160、3p代理服务器系统170和搜索服务器系统180均可以使用相应的网络链路可操作地耦合到网络130。将计算设备110、助理服务器系统160、3p代理服务器系统170和搜索服务器系统180耦合到网络130的链路可以是以太网或其他类型的网络连接,并且这种连接可以是无线和/或有线连接。

助理服务器系统160、3p代理服务器系统170和搜索服务器系统180表示任何合适的远程计算系统,例如能够向诸如网络130的网络和从其发送和接收信息的一个或多个桌面型计算机、膝上型计算机、大型机、服务器和云计算系统等。助理服务器系统160托管虚拟助理服务(或至少提供对其的访问)。3p代理服务器系统170托管虚拟语言代理(或至少提供对虚拟语言代理的访问)。搜索服务器系统180托管搜索服务(或至少提供对其的访问)。在一些示例中,助理服务器系统160、3p代理服务器系统170和搜索服务器系统180表示通过云提供对其相应服务的访问的云计算系统。

计算设备110表示单独的移动或非移动计算设备。计算设备110的示例包括移动电话、平板计算机、膝上型计算机、桌面型计算机、台面设备、机顶盒、电视、可穿戴设备(例如,计算机化手表、计算机化眼镜、计算机化手套等)、住家自动化设备或系统(例如,智能恒温器或住家助理设备)、个人数字助理(pda)、游戏系统、媒体播放器、电子书阅读器、移动电视平台、汽车导航或信息娱乐系统或被配置为执行或访问虚拟助理并经由网络例如网络130接收信息的任何其他类型的移动、非移动、可穿戴和不可穿戴计算设备。

计算设备110包括用户界面设备(uid)112、用户界面(ui)模块120和本地助理模块122a。模块120和122a可以执行使用软件、硬件、固件或驻留在相应计算设备110中和/或在相应计算设备110处执行的硬件、软件和固件的混合的方式描述的操作。计算设备110可以执行具有多个处理器或多个设备的模块120和122a。计算设备110可以将模块120和122a执行为在底层硬件上执行的虚拟机。模块120和122a可以作为操作系统或计算平台的一个或多个服务来执行。模块120和122a可以作为计算平台的应用层处的一个或多个可执行程序来执行。

计算设备110可以经由网络130与助理服务器系统160、3p代理服务器系统170和/或搜索服务器系统180通信,以访问由助理服务器系统160提供的虚拟助理服务、由3p代理服务器系统170提供的虚拟语言代理和/或访问由搜索服务器系统180提供的搜索服务。在提供虚拟助理服务的过程中,助理服务器系统160可以经由网络130与搜索服务器系统180通信以获得用于向虚拟助理服务的用户提供信息来完成任务的搜索结果。在提供虚拟助理服务的过程中,助理服务器系统160可以经由网络130与3p代理服务器系统170通信,以接合由3p代理服务器系统170提供的一个或多个虚拟语言代理,以向虚拟助理服务的用户提供附加帮助。在提供附加帮助的过程中,3p代理服务器系统170可以经由网络130与搜索服务器系统180通信,以获得用于向语言代理的用户提供信息以完成任务的搜索结果。

在图1的示例中,助理服务器系统160包括远程助理模块122b和代理索引124b。远程助理模块122b可以将远程代理索引124b维护为助理服务器系统160经由网络130(例如,向计算设备110)提供的虚拟助理服务的一部分。计算设备110包括用户界面设备(uid)112、用户界面(ui)模块120、本地助理模块122a和代理索引124a。本地助理模块122a可以将代理索引124a维护为在计算设备110本地执行的虚拟助理服务的一部分。远程助理模块122b和本地助理模块122a可以统称为助理模块122。本地代理索引124a和远程代理索引储124b可以统称为代理索引124。

模块122b、128ab-128nb(统称为“3p代理模块128b”)和182可以执行使用分别在助理服务器系统160、3p代理服务器系统170和搜索服务器系统180中驻留或执行的软件、硬件、固件或硬件、软件和固件的混合描述的操作。助理服务器系统160、3p代理服务器系统170和搜索服务器系统180可以分别使用多个处理器、多个设备作为在底层硬件上执行的虚拟机或作为操作系统或计算平台的一个或多个服务来执行多个模块122b、128b和182。在一些示例中,模块122b、128b和182可以分别在助理服务器系统160、3p代理服务器系统170和搜索服务器系统180的计算平台的应用层处作为一个或多个可执行程序执行。

计算设备110的uid112可以用作计算设备110的输入和/或输出设备。uid112可以使用各种技术来实现。例如,uid112可以用作使用存在敏感输入屏幕的输入设备,存在敏感输入屏幕例如是电阻式触摸屏、表面声波触摸屏、电容式触摸屏、投射电容式触摸屏、压敏屏幕、声脉冲识别触摸屏或其他存在敏感显示技术。另外,uid112可以包括麦克风技术、红外传感器技术或用于接收用户输入的其他输入设备技术。

uid112可以用作使用任何一个或多个显示设备的输出(例如,显示器)设备,该显示设备例如是液晶显示器(lcd)、点阵显示器、发光二极管(led)显示器、有机发光二极管(oled)显示器、电子墨水或能够向计算设备110的用户输出可视信息的类似的单色或彩色显示器。此外,uid112可以包括扬声器技术、触觉反馈技术或用于向用户输出信息的其他输出设备技术。

uid112可以包括可以从计算设备110的用户接收触觉输入的存在敏感显示器。uid112可以通过检测来自用户的一个或多个手势(例如,用户用手指或手写笔触摸或指向uid112的一个或多个位置)来接收触觉输入的指示。uid112可以例如在存在敏感显示器处向用户呈现输出。uid112可以将输出呈现为图形用户界面(例如,用户界面114),其可以与计算设备110提供的功能和/或计算设备110访问的服务相关联。

例如,uid112可以呈现与由ui模块120代表计算设备110访问的本地助理模块122a和/或远程助理模块122b提供的虚拟助理相关的用户界面(例如,用户界面114)。uid112可以呈现与在计算设备110处执行或可从计算设备110访问的计算平台、操作系统、应用和/或服务的其他特征相关的用户界面(例如,电子邮件、聊天或其他电子消息应用、因特网浏览器应用、电话应用、移动或桌面操作系统等)。

ui模块120可以管理与uid112和计算设备110的其他组件的用户交互,包括与助理服务器系统160交互以在uid112处提供自主搜索结果。ui模块120可以在计算设备110的用户在uid112处查看输出和/或提供输入时使uid112输出用户界面诸如用户界面114(或其他示例用户界面)用于显示。ui模块120和uid112可以在用户与用户界面交互时、在不同时间或当用户和计算设备110处于不同位置时从用户接收输入的一个或多个指示。ui模块120和uid112可以解释在uid112处检测到的输入,并且可以将关于在uid112处检测到的输入的信息中继到在计算设备110处执行的一个或多个相关联的平台、操作系统、应用和/或服务例如以使计算设备110执行功能。

ui模块120可以从在计算设备110和/或一个或多个远程计算系统诸如服务器系统160和180处执行的一个或多个关联平台、操作系统、应用和/或服务接收信息和指令。另外,ui模块120可以充当在计算设备110处执行的一个或多个关联平台、操作系统、应用和/或服务与计算设备110的各种输出设备(例如,扬声器、led指示器、音频或触觉输出设备等)之间的中介。以利用计算设备110产生输出(例如,图形、闪光、声音、触觉响应等)。在一些示例中,ui模块120可以执行文本到语音(tts)。例如,当提供(例如,通过另一模块)文本时,ui模块120可以合成音频数据以说出测试(例如,大声朗读文本)。

计算设备110的本地助理模块122a和助理服务器系统160的远程助理模块122b可以各自执行本文描述的类似功能,用于自动执行被配置为选择代理以满足从计算设备的用户接收的用户输入(例如,口头说话、文本输入等)的助理。远程助理模块122b和代理索引124b表示示例虚拟助理的服务器端或云实现,而本地助理模块122a和代理索引124a表示示例虚拟助理的客户端或本地实现。

模块122a和122b每个可以包括相应的软件代理,其被配置为作为智能个人助理执行,其可以为个人诸如计算设备110的用户执行任务或服务。模块122a和122b可以基于用户输入(例如,在uid112处检测到)、位置感知(例如,基于场境)和/或访问来自各种信息源的(例如,本地存储在计算设备110、助理服务器系统160,或通过搜索服务器系统180提供的搜索服务获得)的其他信息的能力(例如,天气或交通状况、新闻、股票价格、体育比分、用户时间表、交通时间表、零售价格等)执行这些任务或服务。模块122a和122b可以执行人工智能和/或机器学习技术,以代表用户自动识别和完成一个或多个任务。

在一些示例中,由模块122提供的助理被称为第一方(1p)助理和/或1p代理。例如,由模块122表示的代理可以与计算设备110的操作系统和/或助理服务器系统160的所有者共享公共发布者和/或公共开发者。因此,在一些示例中,由模块122可具有诸如第三方(3p)代理的其他代理不可用的能力。在一些示例中,由模块122表示的代理可以不都是1p代理。例如,由本地助理模块122a表示的代理可以是1p代理,而由远程助理模块122b表示的代理可以是3p代理。在一些示例中,由模块122提供的助理可以被称为1p助理(例如,1p计算助理),并且模块122可以进一步提供一个或多个1p代理(例如,其与1p计算助理共享共同的发布者和/或共同的开发者)。

如上所述,本地助理模块122a可以表示被配置为作为智能个人助理执行的软件代理,该智能个人助理可以为个人诸如计算设备110的用户执行任务或服务。然而,在一些示例中,它可能希望助理利用其他代理来为个人执行任务或服务。例如,在某些场景中,可能期望助理使用一个或多个3p代理来执行计算设备110的用户的任务或服务。作为一个示例,3p代理可能能够比助理更有效地执行特定任务(例如,使用更少的计算能力、系统资源等)。

在图1的示例中1,3p代理服务器系统170包括远程3p代理模块128b。远程3p代理模块128b可以执行下面关于本地3p代理模块128a描述的类似功能,以自动执行被配置为满足从计算设备诸如计算设备110的用户接收的话语的代理。换句话说,远程3p代理模块128b表示示例3p代理的服务器端或云实现,而本地3p代理模块128a表示示例3p代理的客户端或本地实现。

在一些示例中,模块128a和128b中的每一个(统称为“模块128”)可以表示被配置为作为智能个人助理执行的软件代理,智能个人助理可以为个人诸如计算设备110的用户执行任务或服务。在一些示例中,模块128中的每一个可以表示可以由模块122提供的助理使用的软件代理。在一些示例中,由模块128提供的助理和/或代理被称为第三方(3p)助理和/或3p代理。例如,由模块128表示的助理和/或代理可以不与计算设备110的操作系统和/或助理服务器系统160的所有者共享公共发布者。因此,在一些示例中,由模块128表示的助理和/或代理可能不具有诸如第一方(1p)助理和/或代理的其他助理和/或代理可用的能力。

在一些示例中,3p代理可以被配置为在没有用户参与的情况下使用。在一些示例中,一些3p代理可能需要在使用之前配置。例如,当在家中安装智能照明调光器时,用户可以配置由智能照明调光器的制造商提供的3p代理以供使用。配置过程可以涉及将3p代理与1p助理相关联(例如,用户可以向1p助理提供3p代理的账户信息)并且授权(例如,由用户)1p助理代表用户与3p代理进行通信。

搜索模块182可以执行搜索被确定为与搜索模块182(例如,基于与计算设备110相关联的场境信息)自动生成或搜索模块182从助理服务器系统160、3p代理服务器系统170或计算设备110接收的搜索查询相关的信息(例如,作为虚拟助理代表计算设备110的用户完成的任务的一部分)。搜索模块182可以基于搜索查询来进行因特网搜索或本地设备搜索,以识别与搜索查询相关的信息。在执行搜索之后,搜索模块182可以将从搜索返回的信息(例如,搜索结果)输出到助理服务器系统160、3p代理服务器系统170中的一个或多个或计算设备110。

系统100的一个或多个组件诸如本地助理模块122a和/或远程助理模块122b可以维护代理索引124a和/或代理索引124b(统称为“代理索引124”)以存储与诸如计算设备110的用户的个人可用的代理相关的信息。在一些示例中,代理索引124可以为每个代理在代理信息的半结构化索引中存储代理描述和能力列表。例如,代理索引124可以包含具有每个可用代理的信息的单个文档。包括在特定代理的代理索引124中的文档可以由特定代理的开发者提供的信息构成。可以包括在文档中或者可以用于构造文档的一些示例信息字段包括但不限于:代理的描述、代理的一个或多个入口点、代理的类别、代理的一个或多个触发短语、与代理相关联的网站、基于代理生成的文本合成音频数据时使用的语音的指示和/或代理的能力列表(例如,代理能够执行的任务或任务类型的列表)。在一些示例中,可以用自由形式的自然语言编写一个或多个信息字段。在一些示例中,可以从预定义列表中选择一个或多个信息字段。例如,可以从预定义的类别集合(例如,游戏、生产率、通信)中选择类别字段。在一些示例中,代理的入口点可以是用于与代理(例如,蜂窝电话)接口连接的设备类型。在一些示例中,代理的入口点可以是代理的资源地址或其他参数。

在一些示例中,代理索引124可以存储与可用代理的使用和/或执行有关的信息。例如,代理索引124可以包括每个可用代理的代理质量分数。在一些示例中,可以基于以下中的一个或多个来确定代理质量分数:是否比竞争代理更频繁地选择特定代理、代理的开发者是否已经产生其他高质量代理、代理的开发者是否在其他用户属性上具有良好的(或者坏的)邮件分数以及用户是否通常在执行过程中放弃代理。在一些示例中,代理质量分数可以表示为0和1之间的值(包括0和1)。

代理索引124可以提供触发短语和代理之间的映射。如上所述,特定代理的开发者可以提供与特定代理相关联的一个或多个触发短语。在一些示例中,为了提高代理选择的质量,本地助理模块122a可以扩展所提供的触发短语。例如,本地助理模块122a可以通过扩展触发短语的结构和触发短语的关键概念的同义词来扩展触发短语。关于结构扩展,本地助理模块122a可以在触发阶段的复合物之间插入通常用于用户的自然话语(例如,“please(请)”、“couldyou(你能不能)”等)中的术语,并且然后置换短语复合物。

在一些情况下,触发短语的能力的概念可以表示为动词和名词。这样,在一些示例中,本地助理模块122a可以检查web搜索的查询日志,标记每个查询的动词和名词(例如,使用自然语言框架),并基于标记的动词和名词构建动词簇。在每个簇中,可以认为所有动词在同一名词的场境中具有相似的含义。这样,使用动词簇模型,本地助理模块122a可以在与代理相关联的触发短语中扩展动词的同义词,并将结果存储在代理索引124中(即,作为代理的替代触发短语)。

在一些示例中,一些触发短语还可以包含表示相关数据集的变量。这些数据集可以由schema.org类型定义,也可以由开发人员定义为自定义规范。这些触发和参数值集被馈送到文本匹配系统的训练系统中。训练系统可以将指定的模式转换以有效的在线查询匹配来表示的为规则集合。本地助理模块122a还可以维护文本匹配系统规则到适用代理的映射。

系统100的一个或多个组件诸如搜索模块182可以将关于代理的元数据附加到web搜索索引中的任何相关联的web站点。该元数据可以包括代理的id和关联的代理入口点。

当用户与代理交互时,系统100的一个或多个组件可以将交互的细节记录到用户的个人历史。如上所述,日志记录可以受到一个或多个用户控件的约束,使得用户可以禁用代理交互的记录。特别地,系统100的一个或多个组件可以仅在从用户接收显式授权之后记录细节。

在操作中,本地助理模块122a可以从ui模块120接收由计算设备110的用户提供的用户输入的指示。作为一个示例,本地助理模块122a可以接收语音输入的指示,其对应于由计算设备110的用户提供的话语。作为另一示例,本地助理模块122a可以接收由计算设备110的用户(例如,在物理和/或虚拟键盘处)提供的文本输入的指示。根据本公开的一种或多种技术,本地助理模块122可以从多个代理中选择代理以满足话语。例如,本地助理模块122a可以使用1p代理(即,由本地助理模块122a提供的1p代理)、3p代理(即,由3p代理模块128之一提供的3p代理)或1p代理和3p代理的某种组合来确定是否满足用户话语。

本地助理模块122a可以将代理选择基于话语的分析。作为一个示例,本地助理模块122a可以至少最初选择1p语言代理,其中,不可能仅使用3p语言代理来满足话语。作为另一示例,本地助理模块122a可基于话语识别任务,并基于代理的排名和/或可用代理执行任务的能力从可用代理(例如,1p代理和3p代理)中选择代理。作为另一示例,本地助理模块122a可以(例如,基于包括在代理索引124a中的数据)确定语音输入是否包括与1p代理相关联的一个或多个预定触发短语或与3p代理关联的一个或多个预定触发短语。

如上所述,本地助理模块122a可以将代理选择基于语音输入是否包括一个或多个预定的触发短语。例如,如果语音输入包括与1p代理相关联的一个或多个预定触发短语,则本地助理模块122a可以选择一个或多个1p代理以满足话语。在一些示例中,选择一个或多个1p代理,所得到的接合可以被称为1p体验。

然而,如果语音输入包括与3p代理相关联的一个或多个预定触发短语,则本地助理模块122a可以选择3p代理中的一个或多个来满足话语。例如,本地助理模块122a可以选择与包括在语音输入中的触发短语相关联的3p代理的一个3p代理。为了执行3p代理选择,本地助理模块122a可以基于话语对一个或多个3p代理进行排名。在一些示例中,本地助理模块122a可以对所有已知的3p代理进行排名。在一些示例中,本地助理模块122a可以对所有已知3p代理的子集进行排名。例如,本地助理模块122a可以对预先配置为供计算设备110的用户使用的3p代理进行排名。

如上所述,本地助理模块122a可以基于排名来选择3p代理。例如,本地助理模块122a可以选择具有最高排名的3p代理以满足话语。在一些示例中,诸如在排名中存在平局时和/或如果具有最高排名的3p代理的排名小于排名阈值的情况下,本地助理模块122a可以请求用户输入以选择3p语言代理以满足话语。例如,本地助理模块122a可以使ui模块120输出用户界面,该用户界面请求用户从排名靠前的n(例如,2、3、4、5等)排名的3p代理中选择3p代理以满足话语。

所选代理(1p代理、3p代理或1p语言代理和3p代理的某种组合)可以尝试满足话语。例如,所选代理可以执行一个或多个动作(例如,基于话语输出有用信息,响应由话语指示的用户需求或者以其它方式执行某些操作以帮助用户基于话语完成各种现实世界或虚拟任务)以满足话语。

如上所述,在一些示例中,由模块122表示的代理可以不都是1p代理。例如,由本地助理模块122a表示的代理可以是1p代理,而由远程助理模块122b表示的代理可以是3p代理。在一些这样的示例中,本地助理模块122a可以利用3p远程助理模块122b来执行其他3p代理的3p代理选择、识别、排名和/或调用中的一些(或全部)。在一些这样的示例中,本地助理模块122a可能无法利用3p远程助理模块122b来执行3p代理选择、识别、排名和/或调用的其他3p代理中的一些(或全部)并且可以本地执行这样的任务。

应当理解,根据以上描述获得了计算设备110、助理服务器系统160和3p代理服务器系统170中的一个或多个的改进操作。作为一个示例,通过识别用于执行用户提供的任务的优选代理,可以减少通用的搜索和复杂查询重写。这反过来减少了带宽和数据传输的使用,减少了临时易失性存储器的使用,减少了电池消耗等。此外,在某些实施例中,优化设备性能和/或最小化蜂窝数据使用可以是用于对代理进行排名的高度加权的特征,使得基于这些判据选择代理可以提供设备性能所需的直接改进和/或减少数据使用。作为另一示例,通过提供单个助理/代理(例如,1p助理)来初始处理话语(例如,识别任务和选择用于执行任务的代理),可以减少计算负荷。例如,与将消耗大量系统资源(例如,cpu周期,功耗等)的使多个代理监视、处理和满足传入的话语相反,本公开的技术使得单个助理能够最初处理话语并根据需要调用3p代理。这样,本公开的技术实现了使多个代理可用于满足话语的益处,而没有在话语处理的每个步骤中涉及多个代理的技术缺陷。

图2是示出根据本公开的一个或多个方面的被配置为执行示例虚拟助理的示例计算设备的框图。以下将图2的计算设备210描述为图1的计算设备110的示例。图2仅示出了计算设备210的一个特定示例,并且计算设备210的许多其他示例可以在其他实例中使用,并且可以包括示例计算设备210中包括的组件的子集,或者可以包括图2中未示出的附加组件。

如图2的示例中所示,计算设备210包括用户界面设备(usd)212、一个或多个处理器240、一个或多个通信单元242、一个或多个输入组件244、一个或多个输出组件246以及一个或多个存储组件248。usd212包括显示组件202、存在敏感输入组件204、麦克风组件206和扬声器组件208。计算设备210的存储组件248包括ui模块220、助理模块222、搜索模块282、一个或多个应用模块226、场境模块230和代理索引224。

通信信道250可以互连组件212、240、242、244、246和248中的每一个以用于组件间通信(物理地、通信地和/或可操作地)。在一些示例中,通信信道250可以包括系统总线、网络连接、进程间通信数据结构或用于传送数据的任何其他方法。

计算设备210的一个或多个通信单元242可以通过在一个或多个网络(例如,图1的系统100的网络130)上发送和/或接收网络信号经由一个或多个有线和/或无线网络与外部设备(例如,图1的系统100的助理服务器系统160和/或搜索服务器系统180)通信。通信单元242的示例包括网络接口卡(例如,诸如以太网卡)、光学收发器、射频收发器、gps接收器或可以发送和/或接收信息的任何其他类型的设备。通信单元242的其他示例可以包括短波无线电、蜂窝数据无线电、无线网络无线电以及通用串行总线(usb)控制器。

计算设备210的一个或多个输入组件244可以接收输入。输入的示例是触觉、文本、音频、图像和视频输入。在一个示例中,计算设备210的输入组件242包括存在敏感输入设备(例如,触敏屏幕、psd)、鼠标、键盘、语音响应系统、相机、麦克风或用于检测来自人或机器的输入的任何其他类型的设备。在一些示例中,输入组件242可以包括一个或多个传感器组件、一个或多个位置传感器(gps组件、wi-fi组件、蜂窝组件)、一个或多个温度传感器、一个或多个移动传感器(例如,加速度计、陀螺仪)、一个或多个压力传感器(例如,气压计)、一个或多个环境光传感器以及一个或多个其他传感器(例如,红外接近传感器、湿度计传感器等)。其他传感器仅举几个其他非限制性示例可包括心率传感器、磁力计、葡萄糖传感器、嗅觉传感器、罗盘传感器、步进计数器传感器。

计算设备110的一个或多个输出组件246可以生成输出。输出的示例是触觉、音频和视频输出。在一个示例中,计算设备210的输出组件246包括存在敏感显示器、声卡、视频图形适配器卡、扬声器、阴极射线管(crt)监视器、液晶显示器(lcd)或用于向人或机器生成输出的任何其他类型的设备。

计算设备210的uid212可以类似于计算设备110的uid112,并且包括显示组件202、存在敏感输入组件204、麦克风组件206和扬声器组件208。显示组件202可以是屏幕,在该屏幕处通过usd212显示信息,而存在敏感输入组件204可以检测显示组件202处和/或附近的对象。扬声器组件208可以是扬声器,uid212从该扬声器播放可听信息,而麦克风组件206可以检测在显示组件202和/或扬声器组件208之处和/或附近提供的可听输入。

虽然被示为计算设备210的内部组件,但是uid212还可以表示与计算设备210共享数据路径以用于发送和/或接收输入和输出的外部组件。例如,在一个示例中,uid212表示位于计算设备210(例如,移动电话上的屏幕)内并且物理连接到计算设备210的外部封装的计算设备210的内置组件。在另一示例中,uid212表示计算设备210的外部组件,其位于外部并且与计算设备210的包装或外壳物理分离(例如,监视器、投影仪等,其与计算设备210共享有线和/或无线数据路径)。

作为一个示例范围,存在敏感输入组件204可以检测对象,例如在显示组件202的两英寸或更小的范围内的手指或指示笔。存在敏感输入组件204可以确定检测到对象的显示组件202的位置(例如,[x,y]坐标)。在另一示例范围中,存在敏感输入组件204可以检测相距显示组件202六英寸或更小的对象,并且其他范围也是可能的。存在敏感输入组件204可以使用电容、电感和/或光学识别技术确定由用户的手指选择的显示组件202的位置。在一些示例中,存在敏感输入组件204还使用如关于显示组件202所描述的触觉、音频或视频刺激向用户提供输出。在图2的示例中,psd212可以呈现用户界面(诸如图1的图形用户界面114)。

扬声器组件208可以包括内置于计算设备210的外壳的扬声器,并且在一些示例中,可以是内置于可操作地耦合到计算设备210的一组有线或无线耳机的扬声器。麦克风组件206可以检测在uid212之处或附近发生的可听输入。麦克风组件206可以执行各种噪声消除技术以从检测到的音频信号去除背景噪声并将用户语音与检测到的音频信号隔离。

计算设备210的uid212可以检测二维和/或三维手势作为来自计算设备210的用户的输入。例如,uid212的传感器可以检测在uid212的传感器的阈值距离内的用户的移动(例如,移动手、手臂、笔、手写笔等)。uid212可以确定运动的二维或三维矢量表示,并将矢量表示与具有多个尺寸的手势输入(例如,挥手、捏、拍手、笔划等)相关联。换句话说,uid212可以检测多维手势,而不需要用户在uid212输出用于显示的信息的屏幕或表面之处或附近做出手势。相反,uid212可以检测在传感器之处或附近执行的多维手势,该传感器可以或可以不位于uid212输出用于显示的信息的屏幕或表面附近。

一个或多个处理器240可以实现功能和/或执行与计算设备210相关联的指令。处理器240的示例包括应用处理器、显示控制器、辅处理器、一个或多个传感器集线器以及配置为用作处理器、处理单元或处理设备的任何其他硬件。模块220、222、226、230和282可以由处理器240操作以执行计算设备210的各种动作、操作或功能。例如,计算设备210的处理器240可以检索并执行由存储组件248存储的指令,其使得处理器240执行操作模块220、222、226、230和282。这些指令在由处理器240执行时可以使计算设备210在存储组件248内存储信息。

计算设备210内的一个或多个存储组件248可以存储用于在计算设备210的操作期间进行处理的信息(例如,计算设备210可以存储在计算设备210处的执行期间由模块220、222、226、230和282访问的数据)。在一些示例中,存储组件248是临时存储器,这意味着存储组件248的主要目的不是长期存储。计算设备210上的存储组件248可以被配置用于作为易失性存储器短期存储信息,因此如果断电则不保留存储的内容。易失性存储器的示例包括随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)以及本领域中已知的其他形式的易失性存储器。

在一些示例中,存储组件248还包括一个或多个计算机可读存储介质。在一些示例中,存储组件248包括一个或多个非暂时性计算机可读存储介质。存储组件248可以被配置为存储比通常由易失性存储器存储的信息量更大的信息量。存储组件248还可以被配置用于作为非易失性存储空间长期存储信息并且在电源开/关循环之后保留信息。非易失性存储器的示例包括磁性硬盘、光盘、软盘、闪存或电可编程存储器(eprom)或电可擦除和可编程(eeprom)存储器的形式。存储组件248可以存储与模块220、222、226、230和282以及数据存储224相关联的程序指令和/或信息(例如,数据)。存储组件248可以包括被配置为存储数据或与模块220、222、226、230和282以及数据存储224相关联的其他信息的存储器。

ui模块220可以包括图1的计算设备110的ui模块120的所有功能,并且可以执行与ui模块120类似的操作,用于管理计算设备210例如在usd212提供的用户界面(例如,用户界面114),用于促进计算设备110的用户与助理模块222之间的交互。例如,计算设备210的ui模块220可以从助理模块222接收信息,该信息包括用于输出(例如,显示或播放音频)助理用户界面(例如,用户界面114)的指令。ui模块220可以通过通信信道250从助理模块222接收信息,并使用该数据来生成用户界面。ui模块220可以通过通信信道250发送显示或可听输出命令和相关联的数据,以使uid212在uid212处呈现用户界面。

在一些示例中,ui模块220可以接收在uid212处检测到的一个或多个用户输入的指示,并且可以将关于用户输入的信息输出到助理模块222。例如,uid212可以检测来自用户的语音输入,并将关于语音输入的数据发送到ui模块220。

ui模块220可以将语音输入的指示发送到助理模块222以进一步解释。助理模块222可以基于语音输入确定检测到的语音输入表示对于助理模块222执行一个或多个任务的用户请求。

ui模块220可以能够执行文本到语音(tts)。例如,当(例如,由助理或代理)提供了文本时,ui模块220可以合成音频数据以说出文本(例如,大声朗读文本)。ui模块220可以能够使用多个不同的声音来执行tts。

应用模块226表示在计算设备210处执行并且可从计算设备210访问的所有各种单独的应用和服务,其可以由诸如助理模块222的助理访问,以向用户提供信息和/或执行任务。计算设备210的用户可以与与一个或多个应用模块226相关联的用户界面进行交互,以使计算设备210执行功能。可以存在许多应用模块226的示例,其包括健身应用、日历应用、搜索应用、地图或导航应用、运输服务应用(例如,公共汽车或火车跟踪应用)、社交媒体应用、游戏应用、电子邮件应用、聊天或消息传递应用、因特网浏览器应用或可以在计算设备210处执行的任何和所有其他应用。

计算设备210的搜索模块282可以代表计算设备210执行集成搜索功能。搜索模块282可以由ui模块220、应用模块226中的一个或多个和/或助理模块222调用以代表它们执行搜索操作。当被调用时,搜索模块282可以执行搜索功能,诸如生成搜索查询并基于生成的搜索查询跨各种本地和远程信息源来执行搜索。搜索模块282可以将执行的搜索的结果提供给调用组件或模块。也就是说,搜索模块282可以响应于调用命令将搜索结果输出到ui模块220、助理模块222和/或应用模块226。

场境模块230可以收集与计算设备210相关联的场境信息以定义计算设备210的场境。具体地,场境模块210主要由助理模块222用来定义计算设备210的场境,其指定计算设备210的物理和/或虚拟环境的特性以及在特定时间的计算设备210的用户。

如贯穿本公开所使用的,术语“场境信息”用于描述可由场境模块230用来定义计算设备和计算设备的用户可能会在特定时间体验的虚拟和/或物理环境特性的任何信息。场境信息的示例很多并且可以包括:由计算设备210的传感器(例如,位置传感器、加速度计、陀螺仪、气压计、环境光传感器、接近传感器、麦克风和任何其他传感器)获得的传感器信息、由计算设备210的通信模块发送和接收的通信信息(例如,计算设备210的通信模块发送和接收的基于文本的通信、可听通信、视频通信等)以及与在计算设备210处执行的应用相关联的应用使用信息(例如,与应用相关联的应用数据、因特网搜索历史、文本通信、语音和视频通信、日历信息、社交媒体帖子和相关信息等)。场境信息的其他示例包括从计算设备210外部的发送设备获得的信号和信息。例如,场境模块230可以经由计算设备210的无线电或通信单元接收从位于商家的实际位置之处或附近的外部信标发送的信标信息。

助理模块222可以包括图1的计算设备110的本地助理模块122a的所有功能,并且可以执行与用于提供助理的本地助理模块122a类似的操作。在一些示例中,助理模块222可以在本地(例如,在处理器240处)执行以提供助理功能。在一些示例中,助理模块222可以作为到计算设备210可访问的远程助理服务的接口。例如,助理模块222可以是到图1的助理服务器系统160的远程助理模块122b的接口或应用编程接口(api)。

代理选择模块227可以包括选择一个或多个代理以满足给定话语的功能。在一些示例中,代理选择模块227可以是独立模块。在一些示例中,代理选择模块227可以包括在助理模块222中。

类似于图1的系统100的代理索引124a和124b,代理索引224可以存储与诸如3p代理的代理相关的信息。除了由场境模块230和/或搜索模块282提供的任何信息之外,助理模块222和/或代理选择模块227可以依赖于存储在代理索引224处的信息来执行助理任务和/或选择代理以满足话语满意度。

代理选择模块227可以选择一个或多个代理以满足用户话语。如上所述,一些话语(即,用户请求)不能直接传递给3p代理,例如需要特殊帮助的话语(例如,来自助理模块222的发布者的帮助)。需要特殊帮助以满足话语的情况可以被称为1p体验,因为助理模块222的发布者可以实现满足话语所必需的逻辑(的至少一部分,但不总是全部)。可能需要特殊帮助的两个话语示例是住家自动化和过于宽泛的查询。

住家自动化话语的示例是“setmydownstairsthermostatto71(将我的楼下恒温器设置为71)”。助理模块222的发布者可以使用户能够例如向助理模块222注册他们的住家自动化设备。为了满足上述话语,助理模块222可以查找用户的住家自动化设备的配置信息,然后根据细节向自动化系统(例如,楼下恒温器)发送适当的请求。由于需要对用户的住家自动化设备的知识和/或访问的特殊帮助来满足话语,因此代理选择模块227可以选择1p代理以满足话语。换句话说,该过程可以实现为1p体验。

过度宽泛的话语的一个示例是“iambored(我很无聊)”。有许多可能的方法来满足这种话语,但足够的满意取决于当时用户的偏好。这样,代理选择模块227可以选择1p体验。在这种1p体验中,助理模块222可以向用户询问一系列问题以确定他们想要做什么。例如,助理模块222可以说“doyoufeellikeamovieoragame?(你想要电影还是游戏?)”如果用户通过声明他们想要游戏来回应,则助理模块222可以说“ok,doyoulikestrategyorfantasygames?(好的,你喜欢策略还是幻想游戏?)”

对于这些和其他类似情况,助理模块222的发布者可以提供内部构建的1p解决方案的集合。在一些示例中,1p解决方案可以称为1p代理。1p代理可以与由助理模块222的发布者标识的1p触发短语的集合相关联(即,由其识别)。

通常,1p体验可以遵循两个基本模型。在第一模型中,助理模块222的发布者可以处理完整体验。一个这样的示例就是话语“okassistant,wherewereyoumade?(好的助理,你在哪里做的?)”内部开发的体验可以以有关助理制作方式和位置的有趣响应来回应。

第二模型是助理模块222的发布者实现一些对话以确定任务的确切参数然后将控制转移到3p代理或api的地方。为了继续上面的“iambored”的示例,如果对话框发现用户想要玩策略游戏,则代理选择模块227可以调用实现这种游戏的代理。作为另一示例,如果话语是“bookataxi(预订出租车)”,则代理选择模块227可以最初选择助理模块222(即,最初触发1p体验)以询问用户必要的信息,例如接送和下车位置、时间和出租车类。在一些示例中,代理选择模块227可以选择能够预订出租车的3p代理,并且助理模块222可以将所收集的信息传递给所选择的3p代理。在一些示例中,助理模块222可以直接将收集的信息传递给能够预订出租车的实体的外部api。在这些方式中的任何一种中,代理选择模块227可以代理对3p代理的引用。

在操作中,计算设备210的用户可以在uid212处提供话语,uid212可以基于话语生成音频数据。一些示例话语包括但不限于“1needaridetotheairport(我需要乘车前往机场)”、“tellmeajoke(给我讲个笑话)”、“showmetherecipeforbeefwellington."(告诉我惠灵顿牛肉的配方)”。在某些情况下,话语包括用户希望执行动作的3p助理的标识,例如“orderasmallcheesepizzausingthegopizzaapp(使用gopizzaapp订购小型奶酪比萨饼)”。在许多其他情况下,用户没有明确提及3p代理,在这种情况下,需要识别候选3p代理并从那些候选中选择优选的3p代理。

代理选择模块227可以选择一个或多个代理来满足话语。例如,代理选择模块227可以确定话语是否包括与1p代理或3p代理相关联的任何触发短语。如果话语与1p触发短语匹配,则代理选择模块227可以执行1p体验。例如,代理选择模块227可以使助理模块222满足话语。如果短语匹配3p体验,则代理选择模块227可以然后将代理搜索请求发送到服务引擎。代理搜索请求可以包含用户话语(即,对应于话语的音频数据)、任何匹配的触发短语以及由场境模块230确定的用户场境(例如,用户的唯一标识符、用户的位置等等。)。出于简化的目的,服务引擎可以是代理选择模块227的组件,并且在一些示例中,由代理选择模块227执行的动作可以由单独的服务引擎来执行。

代理选择模块227可以基于话语和任何匹配的触发短语来咨询代理索引224。代理选择模块227可以识别代理索引224中与话语或触发短语匹配的代理文档。代理选择模块227可以对所识别的代理文档进行排名(例如,基于满足话语的能力水平)。例如,代理选择模块227可以将文本匹配分数与代理质量分数相乘。如上所述,代理质量分数可以存储在代理索引224中。文本匹配分数可以是话语中的文本与代理文档中的文本之间的匹配的加权和。在一些示例中,代理选择模块227可以在内部给出标题字段、触发短语或高权重类别。在一些示例中,代理选择模块227可以给予在描述中的匹配被给出较低的权重。

在一些示例中,代理选择模块227还可以通过正常web搜索发送话语(即,使搜索模块282基于话语搜索web)。在一些示例中,代理选择模块227还可以与代理索引224的咨询并行地通过正常web搜索发送话语。

代理选择模块227可以分析来自web搜索的排名和/或结果,以选择代理以满足话语。例如,代理选择模块227可以检查web结果以确定是否存在与代理相关联的网页结果。如果存在与代理相关联的网页结果,则代理选择模块227可以将与网页结果相关联的代理插入到排名结果中(如果所述代理尚未包括在排名结果中)。代理选择模块227可以根据网络分数的强度来提升代理的排名。在一些示例中,代理选择模块227然后还可以查询个人历史存储以确定用户是否与结果集中的任何代理交互。如果是这样,代理选择模块227可以根据用户与它们的历史的强度多常来给予那些代理提升(即,增加的排名)。

代理选择模块227可以基于该最终排名的代理结果集来选择3p代理以满足话语。例如,代理选择模块227可以选择具有最高排名的3p代理以满足话语。在一些示例中,例如在排名中存在平局时和/或如果具有最高排名的3p代理的排名小于排名阈值的情况下,代理选择模块227可以请求用户输入以选择3p语言代理到满足话语。例如,代理选择模块227可以使ui模块220输出请求用户从n(例如,2、3、4、5等)个中等排名的代理中选择3p代理以满足话语的用户界面(即,选择ui)。在一些示例中,n个中等排名的3p代理可以包括排名前n的代理。在一些示例中,n个中等排名的3p代理可以包括除排名前n位的代理之外的代理。

代理选择模块227可以检查代理的属性和/或从各种3p代理获得结果,对那些结果进行排名,然后调用(即,选择)提供最高排名结果的3p代理。例如,如果话语是“orderapizza(订购比萨饼)”,则代理选择模块227可以确定用户的当前位置,确定哪个比萨饼源最接近用户的当前位置,并且将与该当前位置相关联的代理排名最高。类似地,代理选择模块227可以根据项目的价格轮询多个3p代理,然后提供代理以允许用户基于最低价格完成购买。最后,代理选择模块227可以首先确定没有1p代理可以完成任务,尝试多个3p代理以查看它们是否可以,并且假设它们中只有一个或几个可以仅提供那些代理作为用户实施任务的选项。

所选代理(1p代理、3p代理或1p语言代理和3p代理的某种组合)可以尝试满足话语。例如,代理选择模块227可以向可以由咨询代理索引224确定的所选代理的入口点输出请求。为了尝试满足话语,所选代理可以执行一个或多个动作(例如,基于话语输出有用的信息,响应由话语指示的用户需求,或者以其它方式执行某些操作以帮助用户基于话语完成各种现实世界或虚拟任务)。

在一些示例中,可能存在正在执行动作的代理的类型(1p对3p)的指示。例如,在一个或多个动作包括与用户“说话”的情况下,1p代理和3p代理可以使用不同的语音。作为一个示例,1p代理可以全部利用多个语音中的预留语音,并且3p代理可以利用所述多个语音中的其他语音,但是可以禁止使用预留语音。

在一些示例中,代理选择模块227可以使助理模块222请求用户关于代理刚刚完成其请求的程度的反馈。例如,助理模块222可以说“youjustinteractedwiththecitytransitscheduleagent.inoneortwowords,howwelldiditwork?(您刚刚与城市公交时间表代理进行了交互。用一两个词来说,它的效果如何?)”助理模块222可以基于用户的响应来确定它是好的还是坏的体验(例如,使用情绪分析)。助理模块222可以确定体验的分数,并将确定的分数反馈回到排名。例如,助理模块222可以基于用户关于履行的反馈来修改满足请求的代理的代理质量分数。以这种方式,本公开的技术使代理选择模块227能够基于代理在过去的运行得如何来选择代理。

如上所述,在某些情况下,话语包括用户希望执行动作(例如,“orderasmallcheesepizzausingthegopizzaapp(使用gopizzaapp订购小型奶酪比萨饼)”)的3p助理的标识。在许多其他情况下,用户没有明确提及3p代理,在这种情况下,需要识别候选3p代理并从那些候选中选择优选的3p代理。这种情况的复杂性在于可能存在可能能够向用户订购比萨饼的多个代理。这样,如果存在多个匹配代理,则可以要求用户选择满足话语的匹配代理之一。例如,代理选择模块227可以输出要求用户在pizzahouse代理和pizza4u代理之间进行选择的选择ui。

图3是示出根据本公开的一个或多个方面的被配置为执行示例虚拟助理的示例计算系统的框图。以下将图3的助理服务器系统360作为图1的助理服务器系统160的示例进行描述。图3仅示出了助理服务器系统360的一个特定示例,并且助理服务器系统360的许多其他示例可以在其他实例中使用,并且可以包括示例性助理服务器系统360中包括的组件的子集,或者可以包括图3中未示出的附加组件。

如图3的示例中所示,助理服务器系统360包括用户一个或多个处理器340、一个或多个通信单元342以及一个或多个存储组件348。存储组件348包括助理模块322、搜索模块382、场境模块330和用户代理索引324。

处理器340类似于图2的计算系统210的处理器240。通信单元342类似于图2的计算系统210的通信单元242。存储设备348类似于图2的计算系统210的存储设备248。通信信道350类似于图2的计算系统210的通信信道250,并且因此,可以互连组件340、342和348中的每一个以用于组件间通信。在一些示例中,通信信道350可以包括系统总线、网络连接、进程间通信数据结构或用于传送数据的任何其他方法。

助理服务器系统360的搜索模块382类似于计算设备210的搜索模块282,并且可以代表助理服务器系统360执行集成搜索功能。即,搜索模块382可以代表助理模块322执行搜索操作。在一些示例中,搜索模块382可以与外部搜索系统诸如搜索服务器系统180接口连接以代表助理模块322执行搜索操作。当被调用时,搜索模块382可以执行搜索功能,例如生成搜索查询和基于生成的搜索查询跨各种本地和远程信息源执行搜索。搜索模块382可以将执行的搜索的结果提供给调用组件或模块。也就是说,搜索模块382可以将搜索结果输出到助理模块322。

助理服务器系统360的场境模块330类似于计算设备210的场境模块230。场境模块330可以收集与诸如图1的计算设备110和图2的计算设备210的计算设备相关联的场境信息,以定义计算设备的场境。场境模块330可以主要由助理模块322和/或搜索模块382使用,以定义接口连接和访问由助理服务器系统160提供的服务的计算设备的场境。场境可以指定在特定时间计算设备和计算设备的用户的物理和/或虚拟环境的特性。

助理模块322可以包括图1的本地助理模块122a和远程助理模块122b以及图2的计算设备210的助理模块222的所有功能。助理模块322可以执行与远程助理模块122b类似的操作,用于提供可通过助理服务器系统360访问的助理服务。也就是说,助理模块322可以充当到可由通过网络与助理服务器系统360进行通信的计算设备访问的远程助理服务的接口。例如,助理模块322可以是到图1的助理服务器系统160的远程助理模块122b的接口或api。

类似于图2的代理索引224,代理索引324可以存储与诸如3p代理的代理相关的信息。除了由场境模块330和/或搜索模块482提供的任何信息之外,助理模块322和/或代理选择模块327可以依赖于存储在代理索引324处的信息来执行助理任务和/或选择代理以满足话语。

通常,代理描述和触发短语可以仅提供关于代理的相对少量的信息。关于代理的可用信息越多,更好的代理选择模块(例如,代理选择模块224和/或代理选择模块324)可以选择对于适用的用户话语的代理。根据本公开的一种或多种技术,代理准确度模块331可以收集关于代理的附加信息。在一些示例中,代理准确度模块331可以被认为是自动代理爬虫。例如,代理准确度模块331可以查询每个代理并存储它接收的信息。作为一个示例,代理准确度模块331可以向默认代理入口点发送请求,并且将从代理接收关于其能力的描述。代理准确度模块331可以将该接收到的信息存储在代理索引324中(即,以改进目标)。

在一些示例中,助理服务器系统360可以在适用的情况下接收代理的库存信息。作为一个示例,用于在线杂货店的代理可以向助理服务器系统360提供其产品的数据馈送(例如,结构化数据馈送),包括描述、价格、数量等。代理选择模块(例如,代理选择模块224和/或代理选择模块324)可以访问该数据来作为选择代理以满足用户话语的一部分。这些技术可以使系统能够更好地响应诸如“orderabottleofprosecco(订购一瓶普罗赛克)”之类的查询。在这种情况下,如果代理提供了他们的实时库存并且库存表明代理销售普罗赛克并且库存有普罗赛克,则代理选择模块可以更自信地将该话语与代理匹配。

在一些示例中,助理服务器系统360可以提供用户可以浏览以发现/找到他们可能想要使用的代理的代理目录。该目录可以具有每个代理的描述、能力列表(以自然语言;例如,“youcanusethisagenttoorderataxi(您可以使用该代理来订出租车)”、“youcanusethisagenttofindfoodrecipes(您可以使用该代理来查找食谱)”)。如果用户在目录中找到他们想要使用的代理,则用户可以选择代理,并且代理可以对用户可用。例如,助理模块322可以将代理添加到代理索引224和/或代理索引324。这样,代理选择模块227和/或代理选择模块327可以选择添加的代理以满足未来的话语。在一些示例中,可以在没有用户选择的情况下将一个或多个代理添加到代理索引224或代理索引324中。在一些这样的示例中,代理选择模块227和/或代理选择模块327可以能够选择和/或建议用户未选择的代理以满足用户话语。在一些示例中,代理选择模块227和/或代理选择模块327可以进一步基于代理是否被用户选择来对代理进行排名。

在一些示例中,代理目录中列出的一个或多个代理可以是免费的(即,免费提供)。在一些示例中,代理目录中列出的一个或多个代理可能不是免费的(即,用户可能必须付钱或一些其他报酬才能使用代理)。

在一些示例中,代理目录可以收集用户评论和评级。收集的用户评论和评级可用于修改代理质量分数。作为一个示例,当代理接收肯定评论和/或评级时,代理准确度模块331可以增加代理索引224或代理索引324中的代理的代理质量分数。作为另一示例,当代理接收否定评论和/或评级时,代理准确度模块331可以减少代理索引224或代理索引324中的代理的代理质量分数。

图4是示出根据本公开的一个或多个方面的被配置为执行示例第三方代理的示例计算系统的框图。以下将图4的代理服务器系统470描述为图1的3p代理服务器系统170的3p代理服务器系统的示例。图4仅示出了3p代理服务器系统470的一个特定示例,并且3p代理服务器系统470的许多其他示例可以在其他实例中使用,并且可以包括示例3p代理服务器系统470中包括的组件的子集,或者可以包括图4中未示出的附加组件。

如图4的示例中所示,3p代理服务器系统470包括用户一个或多个处理器440、一个或多个通信单元442以及一个或多个存储组件448。存储组件348包括3p代理模块428。

处理器440类似于图3的助理服务器系统360的处理器340。通信单元442类似于图3的助理服务器系统360的通信单元342。存储设备448类似于图3的助理服务器系统360的存储设备348。通信信道450类似于图3的助理服务器系统360的通信信道350,因此,可以互连组件440、442和448中的每一个以用于组件间通信。在一些示例中,通信信道450可以包括系统总线、网络连接、进程间通信数据结构或用于传送数据的任何其他方法。

3p代理模块428可以包括本地3p代理模块128的本地3p代理模块和图1的远程3p代理模块128的相应远程3p代理模块的所有功能。3p代理模块428可以执行与远程3p代理模块128的远程3p代理模块类似的操作,用于提供可经由3p代理服务器系统470访问的第三方代理。即,3p代理模块428可以充当到可由通过网络与3p代理服务器系统470进行通信的计算设备访问的远程助理服务的接口。例如,3p代理模块428可以是到图1的3p代理服务器系统170的3p代理服务器系统的远程3p代理模块128的远程3p代理模块的接口或api。

在操作中,3p代理模块428可以由用户的计算助理调用。例如,3p代理模块428可以由图1的助理模块122提供的助理调用,以执行一个或多个动作以满足在计算设备110处接收的用户话语。在执行至少一些动作(例如,执行多元素任务的一个或多个元素)之后,3p代理模块428可以向调用助理发送执行的操作的指示。例如,如果被调用以处理订购,则3p代理模块428可以向助理输出订购的一个或多个细节。

图5是说明根据本发明的一个或多个方面的由执行示例虚拟助理的一个或多个处理器执行的示例操作的流程图。下面在图1的系统100的上下文中描述图5。例如,根据本公开的一个或多个方面,当在计算设备110的一个或多个处理器处执行时,本地助理模块122a可以执行操作502-506。并且在一些示例中,根据本公开的一个或多个方面,当在助理服务器系统160的一个或多个处理器处执行时,远程助理模块122b可以执行操作500-506。仅出于说明的目的,以下在图1的计算设备110的上下文中描述图5。

在操作中,计算设备110可以接收指示计算设备的用户与助理之间的对话的用户输入的指示(502)。例如,计算设备110的用户可以在uid112处提供由本地助理模块122a作为语音数据接收的话语“ineedaridetotheairport(我需要乘车到机场)”。

计算设备110可以基于用户输入从多个代理中选择代理(504)。例如,本地助理模块122a可以确定话语是否包括与所述多个代理的代理相关联的一个或多个触发词。如果计算设备110能够识别与话语中包括的触发词相关联的一个或多个代理,则计算设备110可以至少部分地基于与所识别的代理相关的信息与从该话语确定的文本之间的比较来排名已识别的代理。计算设备110可以至少部分地基于排名来选择所识别的代理的代理以满足话语。

在一些示例中,多个代理可以是一个或多个第一方代理和多个第三方代理。在一些这样的示例中,当用户输入不包括与第一方代理相关联的任何触发词时,计算设备110可以确定选择第三方代理(即,确定引入第三方代理)。

所选代理可以确定响应用户输入的一个或多个动作。在一些示例中,计算设备110可以至少部分地执行由所选代理确定的一个或多个动作(506)。例如,在话语是“playasongbyartista(播放艺术家a的歌曲)”的情况下,所选代理可以使计算设备110播放艺术家a的歌曲。在一些示例中,可以至少部分地由计算设备110之外的计算设备执行由所选代理确定的一个或多个动作。例如,在话语是“ineedaridetotheairport”的情况下,所选择的代理可以向运输公司的计算设备输出请求,并且运输公司的计算设备可以路由车辆以将计算设备110的用户运送到机场。

在一些示例中,代理可以在与用户交互的过程中引用另一个代理。例如,产品搜索代理可以指代支付代理以安排来自用户的支付(例如,当产品搜索代理不能自己处理支付时)。这可以为了用户的方便而进行(例如,因此用户可以使用共同的支付界面和/或增强安全性),或者可以以由被推荐的一方支付的费用或其他代价来完成(例如,支付代理的发布者可能会收到处理付款的一些报酬)。

图6a-6b是示出了根据本公开的一个或多个方面的由一个或多个处理器执行以选择虚拟代理以执行任务的示例操作的流程图。下面在图1的系统100的上下文中描述图6a-6c。例如,根据本公开的一个或多个方面,当在计算设备110的一个或多个处理器处执行时,本地助理模块122a可以执行操作602-628中的一个或多个。并且在一些示例中,根据本公开的一个或多个方面,当在助理服务器系统160的一个或多个处理器处执行时,远程助理模块122b可以执行操作602-628中的一个或多个。仅出于说明的目的,下面在图1的计算设备110的上下文中描述图6a-6c。

在操作中,计算设备110可以接收在计算设备110处说出的话语的表示(602)。例如,计算设备110的uid112的一个或多个麦克风可以生成表示计算设备110的用户说“turnonmybasementlights(打开我的地下室灯)”的音频数据。uid112可以将音频数据提供给由助理服务器系统160的本地助理模块122a和/或远程助理模块122b提供的助理。

助理可以基于话语识别要执行的任务(604)。作为一个示例,在话语是“turnonmybasementlights”的情况下,助理可以解析音频数据以确定该任务是激活被称为地下室的房间中的灯。作为另一个示例,在话语是“ordermeapizzafrompizzajointdeliveredhome(为我订购从pizzajoint送到家中的比萨饼)”时,助理可以解析音频数据以确定该任务是下一个对于用于从叫pizzajoint的地方配送到用户的住家地址的比萨饼的订购。作为另一个示例,在话语是“asksearchcompanywhatistheaverageairspeedvelocityofaraven(询问搜索公司乌鸦的平均空速是多少)”的情况下,助理可以解析音频数据以确定该任务是对乌鸦的平均空速进行web搜索。

助理可以确定话语是否包括与多个代理的第一方代理相关联的任何触发词(例如,单词或短语)(606)。例如,助理可以将话语中的单词与代理索引124a中包括的第一方触发短语进行比较。如果话语包括与第一方代理相关联的任何触发单词(606的“是”分支),则助理可以选择第一方代理执行任务(608),并使所选择的第一方代理执行任务(610)。例如,当话语是“询问搜索公司乌鸦的平均空速是多少”而代理索引124a表示“搜索公司”是与第一方搜索代理相关联的触发词时,助理可以选择并引起第一方搜索代理对乌鸦的平均空速进行web搜索。

如果话语不包括与第一方代理相关联的任何触发词(606的“否”分支),则助理可以确定话语是否包括与多个代理中的第三方代理相关联的任何触发词(612)。例如,助理可以将话语中的单词与代理索引124a中包括的第三方触发短语进行比较。如果话语包括与特定第三方代理相关联的任何触发词(612的“是”分支),则助理可以选择特定的第三方代理执行任务(608),并使特定的第三方代理执行任务(610)。例如,在话语是“ordermeapizzafrompizzajointdeliveredhome”和代理索引124a表示“order(订购)”和“pizzajoint”是与特定第三方订购代理相关联的触发词时,助理可以选择并使特定第三方订购代理创建对于配送到用户住所的比萨饼的订购。

助理可以对代理进行排名(例如,基于它们执行任务的能力)。例如,如果话语不包括与第三方代理相关联的任何触发词(612的“否”分支),则助理可以确定第一方代理(616)和第三方代理(618)的能力水平以执行所识别的任务。作为一个示例,为了计算第一方代理的能力水平,助理可以计算指示助理将执行所识别的任务的能力的度量。作为另一示例,助理可以计算指示相应第三方代理将执行所识别任务的能力的相应第三方代理的相应度量。例如,助理可以计算:第一3p代理的度量,该度量指示第一3p代理将执行所识别的任务的能力;以及,第二3p代理的度量,其指示第二3p代理将执行所识别的任务的能力。在一些示例中,度量可以与能力具有正相关,使得较高值指示更有能力的执行。在一些示例中,度量可以具有与能力的负相关,使得较低的值指示更有能力的执行。可以以各种方式计算度量。作为一个示例,可以基于代理质量分数(或者基于web搜索修改或不修改)或者如上所述存储在代理索引124中的其他信息来计算度量。

助理可以基于排名选择代理。例如,助理可以确定第一方代理的能力水平是否满足阈值能力水平(620)。例如,如果度量与能力正相关,则助理可以确定第一方代理的能力水平是否大于或等于阈值能力水平。如果第一方代理的能力水平满足阈值能力水平(620的“是”分支),则助理可以选择第一方代理来执行任务(608),并使所选择的第一方代理执行任务(610)。

如果第一方代理的能力水平不满足阈值能力水平(620的“否”分支),则助理可以确定具有最大能力水平的第三方代理(下文中称为“特定第三方代理”)满足阈值能力水平(622)。如果特定第三方代理的能力水平满足阈值能力水平(622的“是”分支),则助理可以选择特定第三方代理来执行任务(608),并使特定第三方代理执行任务(610)。

如上所示,在一些示例中,助理可以在第一方代理具有偏向的情况下选择代理。例如,通过在评估第三方代理之前评估第一方代理,助理可以选择第一方代理来执行任务,只要第一方代理的能力水平满足阈值能力水平(即使第三方代理具有比第一方代理更高的能力水平)。在其他示例中,助理可以选择代理而不偏向第一方代理。例如,如果具有最大能力水平的代理满足阈值能力水平,则无论代理是第一方还是第三方,助理都可以选择代理来执行任务。

如果特定第三方代理的能力水平不满足阈值能力水平(622的“否”分支),则助理可以确定未配置的第三方代理的能力水平(624)并确定是否具有最大能力水平的未配置的第三方代理(下文称为“特定的未配置的第三方代理”)满足阈值能力水平(626)。如果特定未配置的第三方代理的能力水平满足阈值能力水平(626的“是”分支),则助理可以提供配置特定的未配置的第三方代理。例如,助理可以输出合成的语音数据以询问用户他们是否想要配置特定的未配置的第三方代理。如果用户指示他们想要配置特定的未配置的第三方代理(将特定的未配置的第三方代理转变为特定的第三方代理),则助理可以选择特定的第三方代理来执行任务(608),并使特定的第三方代理执行任务(610)。

如上所述,一些3p代理可能在被助理使用之前需要配置(例如,被启用或激活)。通常,可能希望助理选择预先配置的代理来执行任务。然而,如果没有其他代理能够,则可能希望助理评估未配置的代理以执行任务。例如,如果第一方代理和任何配置的第三方代理不能够执行所识别的任务,则助理可以评估未配置的代理以执行所识别的任务。

如果特定未配置的第三方代理的能力水平不满足阈值能力水平(626的“否”分支),则助理可输出不能满足话语的指示(628)。例如,助理可以输出合成的语音数据,以表明助理“不确定如何帮助那一点”。

图7是图示根据本发明的一个或多个方面的由一个或多个处理器执行以促进多个虚拟代理的任务执行的示例操作的流程图。下面在图1的系统100的上下文中描述图7。例如,根据本公开的一个或多个方面,当在计算设备110的一个或多个处理器处执行时,本地助理模块122a可以执行操作702-710中的一个或多个。并且在一些示例中,根据本公开的一个或多个方面,当在助理服务器系统160的一个或多个处理器处执行时,远程助理模块122b可以执行操作702-710中的一个或多个。仅出于说明的目的,下面在图1的计算设备110的上下文中描述图7。

可以由助理和/或代理执行的一些任务可以被认为是多元素任务。多元素任务可以是具有可以由不同代理执行以便完成整个任务的元素的任务。虽然多元素任务的元素可以由多个代理执行(例如,第一代理可以执行双元素任务的第一元素而第二代理可以执行第二元素),但单个代理仍然能够执行所有元素。在一些示例中,可以将用于执行多元素任务的元素的子集的另一代理的选择视为多元素任务的元素。

在操作中,计算设备110可以接收在计算设备110处说出的话语的表示(702)。例如,计算设备110的uid112的一个或多个麦克风可以生成音频数据,该音频数据表示计算设备110的用户说“getmealargecheesepizzadeliveredhome(为我将大型奶酪比萨饼送回家)”。uid112可以将音频数据提供给由助理服务器系统160的本地助理模块122a和/或远程助理模块122b提供的助理。

多个计算代理中的第一计算代理可以基于话语识别要执行的多元素任务(704)。例如,在话语是“getmealargecheesepizzafordelivery(给我一个大型奶酪比萨饼用于配送)”的情况下,第一计算代理(例如,由图1的本地3p代理模块128a之一提供的助理或代理)可以识别多元素任务为具有以下元素:1)确定配送的位置,2)选择代理以订购比萨饼,以及3)处理大型奶酪比萨饼的订购。

第一计算代理可以执行多元素任务的第一元素子集(706),包括选择第二计算代理以执行多元素任务的第二子集(708)。例如,第一计算代理可以确定配送的位置并选择代理来订购比萨饼。为了确定配送的位置,第一计算代理可以询问用户他们想要配送比萨饼的位置。例如,第一计算代理可以使计算设备110输出合成音频数据,询问“wherewouldyoulikethatdeliveredto(您希望将其配送到哪里)”。第一计算代理可以经由计算设备110的一个或多个麦克风接收用户的回复。第一计算代理可以选择第二计算代理来将比萨饼订购到所提供的地址。例如,第一计算代理可以利用图6a-6c的技术来选择第二计算代理来订购比萨饼。在该示例中,假设话语不包括代理的任何触发词,第一计算代理可以选择第二计算代理以基于代理的能力水平订购比萨饼以安排将比萨饼配送到地址。第一计算代理可以与所选择的第二计算代理通信,以使第二计算代理处理大型奶酪比萨饼的订购。

第一计算代理可以接收由第二计算代理执行的动作的指示(710)。例如,第一计算代理可以从第二计算代理接收大型奶酪比萨饼已被订购并且预期在指定时间内被配送到所提供的地址的确认。在第一计算代理是第一方代理的情况下,第一计算代理可以利用由第二计算代理执行的动作的指示来监视第二计算代理的执行(例如,修改第二计算代理的代理质量分数)。确定任务是多任务并在不同代理之间拆分任务的每个元素允许最合适的代理执行任务的任何给定步骤。它还可以允许并行执行多任务的任务。另外,改进了与计算设备110的用户交互。例如,如上所述,可以引导用户完成订购比萨饼的过程。

图8是图示根据本发明的一个或多个方面的由一个或多个处理器执行以选择在输出由虚拟代理生成的文本的合成音频数据时使用的语音的示例操作的流程图。以下在图1的系统100的上下文中描述图8。例如,根据本公开的一个或多个方面,当在计算设备110的一个或多个处理器处执行时,本地助理模块122a可以执行操作802-812中的一个或多个。并且在一些示例中,根据本公开的一个或多个方面,当在助理服务器系统160的一个或多个处理器处执行时,远程助理模块122b可以执行操作802-812中的一个或多个。仅出于说明的目的,以下在图1的计算设备110的上下文中描述图8。

在操作中,计算设备110可以接收在计算设备110处说出的话语的表示(802)。例如,计算设备110的uid112的一个或多个麦克风可以生成表示计算设备110的用户说“askfoodagentwhaticansubstituteforbakingpowder(询问食品代理我可以用什么替代发酵粉)”的音频数据。uid112可以将音频数据提供给由助理服务器系统160的本地助理模块122a和/或远程助理模块122b提供的助理。

助理可以基于话语从多个代理选择代理(804)。例如,助理可以使用图6a-6c的技术来选择代理以满足话语。在话语是“askfoodagentwhaticansubstituteforbakingpowder”和“foodagent(食品代理)”是第三方代理的示例中,助理可以选择食品代理以满足话语。

所选代理可以通过使计算设备110输出合成音频数据来响应该话语。例如,所选择的代理可以提供关于哪个计算设备110可以执行文本到语音(tts)以生成合成音频数据的文本。然而,与使用相同语音为所有代理生成的合成音频数据相反,可能希望不同代理使用不同的语音。另外,可能希望用户能够辨别他们正在与第一方代理还是第三方代理进行交互。

根据本公开的一种或多种技术,第一方代理可以使用多个语音中的预留语音输出合成音频数据,而第三方代理使用所述多个语音中不同于预留语音的语音来输出合成音频数据。这样,本公开的技术使得第一3p代理能够使用与第二3p代理不同的语音输出合成音频数据,同时仍向用户提供他们何时与1p代理交互的指示(即,使用预留语音的合成音频数据)。因此,当输出给用户时,可以在音频数据中编码其他信息。该其他信息可以涉及用户与之交互的代理,其可以通过用于输出的语音来编码。这些语音选择技术的示例在图8中被示出并在下面描述

助理可以确定所选代理是否是第一方代理(806)。在话语是“askfoodagentwhaticansubstituteforbakingpowder”并且选择foodagent以满足话语的示例中,助理可以确定所选择的代理不是第一方代理。

如果所选代理是第一方代理(806的“是”分支),则所选代理(例如,助理或另一1p代理)可从多个语音中选择预留语音(808)并使用所选择的语音输出合成音频数据(812)。例如,在话语“setmydownstairsthermostatto71(将我的楼下恒温器设置为71)”并且所选择的代理是1p代理的情况下,1p代理可以使计算设备110使用预留语音输出合成的说出“settingyourdownstairsthermostattoseventy-onedegrees(将您的楼下恒温器设置为七十一度)”的音频数据。

如果所选代理不是第一方代理(806的“否”分支),则所选代理可以是多个语音中的非预留语音(810)并使用所选语音输出合成音频数据(812)。例如,在话语是“askfoodagentwhaticansubstituteforbakingpowder”并且所选择的代理是食品代理3p代理的情况下,食品代理可以使计算设备110使用所述多个语音中不同于预留语音的语音来输出合成的音频数据,说出“youcansubstituteone-quarterteaspoonbakingsodaplusfive-eighthsteaspooncreamoftartarforoneteaspoon(你可以用四分之一茶匙小苏打加上五分之八茶匙的牙垢奶油代替一茶匙)”。

在一些示例中,可以通过输出合成音频数据来读取列表来满足话语。例如,在基于话语识别的任务是搜索的情况下,话语的满足可以包括输出合成音频数据以读取搜索结果列表。在一些示例中,单个代理可以使用单个语音读取列表的所有元素。例如,第一方代理可以使用预留语音读取搜索结果的完整列表。在一些示例中,单个代理在读取列表的不同元素子集时使用不同的语音。例如,第一方代理可以在输出表示搜索结果的第一子集的合成音频数据时使用非预留语音,并在输出表示搜索结果的第二子集的合成音频数据时使用预留语音。在一些示例中,多个代理可以使用不同的语音来读取列表的不同部分。例如,第一代理当输出表示搜索结果的第一子集的合成音频数据时可以使用第一语音,并且第二代理在输出表示搜索结果的第二子集的合成音频数据时使用第二语音。因此提供了自适应接口,其中,基于数据本身调整数据的输出。

如上所述,助理可以使代理执行任务(或者任务的至少一些元素)。在一些示例中,助理可以通过调用所选代理使所选代理执行任务。例如,助理可以向所选择的代理(例如,在可以从代理索引识别的所选代理的入口点处)发送执行任务的请求。在一些示例中,当使所选代理执行任务时,所选代理可以在本地执行该任务。例如,当调用由图2的本地3p代理模块228的本地3p代理模块提供的3p代理来执行任务时,本地3p代理模块228的本地3p代理模块可以在处理器240处执行以执行任务。在一些示例中,当使所选代理执行任务时,所选代理可以在本地执行该任务。例如,当调用由图4的3p代理模块428提供的3p代理来执行任务时,3p代理模块428可以在处理器440处执行以执行任务。在一些示例中,当使所选代理执行任务时,所选代理可以执行在本地和远程环境之间混合的任务。例如,调用由图2的本地3p代理模块228的本地3p代理模块提供的3p代理和/或远程3p代理模块128的对应远程3p代理模块来执行任务,代理可以在计算设备110的处理器中的一个或两个以及3p代理服务器系统的处理器处执行,3p代理服务器系统包括远程3p代理模块128的对应远程3p代理模块。

以下编号的示例可以示出本公开的一个或多个方面:

示例1.一种方法,包括:由在一个或多个处理器处执行的计算助理接收在计算设备处说出的话语的表示;基于所述话语从多个代理中选择代理,其中,所述多个代理包括一个或多个第一方代理和多个第三方代理;响应于确定所选择的代理包括第一方代理,从多个语音中选择预留语音;以及,使用所选择的语音输出用于由所述计算设备的一个或多个扬声器回放的合成的音频数据以满足所述话语。

示例2.根据示例1所述的方法,其中,所述话语包括第一话语,所述方法还包括:接收在所述计算设备处说出的第二话语的表示;基于所述第二话语从所述多个代理中选择第二代理;响应于确定所选择的第二代理包括第三方代理,从所述多个语音中选择不同于所述预留语音的语音;以及,使用所选择的语音输出合成音频数据以满足所述第二话语。

示例3.根据示例1-2的任一组合所述的方法,还包括:基于所述话语获得多个搜索结果;以及,使用所述多个语音中不同于所述预留语音的语音来输出表示所述搜索结果的第一子集的合成音频数据,其中,使用所选择的语音输出所述合成音频数据以满足所述话语包括:使用所述预留语音输出表示所述搜索结果的第二子集的合成音频数据。

示例4.根据示例1-3的任何组合的方法,其中,所述一个或多个处理器被包括在所述计算设备中。

示例5.根据示例1-3的任何组合所述的方法,其中,所述一个或多个处理器被包括在计算系统中。

示例6.一种计算设备,包括:至少一个处理器;以及,至少一个存储器,所述至少一个存储器包括指令,所述指令在被执行时使所述至少一个处理器执行助理,所述助理被配置为执行示例1-3的任何组合所述的方法。所述计算设备可以包括或可操作地连接到一个或多个麦克风。所述一个或多个麦克风可以用于接收话语的表示。

示例7.一种计算系统,包括:一个或多个通信单元;至少一个处理器;以及,至少一个存储器,所述至少一个存储器包括指令,所述指令在被执行时使所述至少一个处理器执行助理,所述助理被配置为执行示例1-3的任何组合的方法。所述计算系统也可以包括一个或多个通信单元。所述计算系统可以经由一个或多个通信单元从计算设备接收话语的表示。

示例8.一种计算系统,包括用于执行示例1-3的任何组合的方法的装置。

示例9.一种存储指令的计算机可读存储介质,所述指令在被执行时使一个或多个处理器执行助理,所述助理被配置为执行示例1-3的任何组合的方法。

在一个或多个示例中,所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件实施,那么所述功能可作为一个或多个指令或代码存储于计算机可读介质上或经由计算机可读介质传输,且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质的有形介质,或者包括便于例如根据通信协议将计算机程序从一个地方传送到另一个地方的任何介质的通信介质。以这种方式,计算机可读介质通常可以对应于(1)有形计算机可读存储介质,其是非暂时性的,或(2)通信介质,诸如信号或载波。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可包括计算机可读介质。

作为示例而非限制,这种计算机可读存储介质可包括ram、rom、eeprom、cd-rom或其他光盘存储器、磁盘存储器或其他磁存储设备、闪存或可用于以指令或数据结构的形式存储所需的程序代码并且可由计算机访问的任何其他介质。而且任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)或无线技术诸如红外线、无线电和微波从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、dsl或无线技术诸如红外、无线电和微波都包含在介质的定义中。然而,应该理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬态介质,而是相反针对非瞬态有形存储介质。这里使用的磁盘和光盘包括光盘(cd)、激光光盘、光盘、数字多功能光盘(dvd)、软盘和蓝光光盘,其中,磁盘通常以磁性方式再现数据,而光盘通过激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。

指令可以由一个或多个处理器执行,一个或多个处理器例如是一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其他等效集成或离散逻辑电路。因此,这里使用的术语“处理器”可以指前述结构或适合于实现本文所述技术的任何其他结构的任何一种。另外,在一些方面,可以在专用硬件和/或软件模块内提供本文描述的功能。而且,这些技术可以在一个或多个电路或逻辑元件中完全实现。

本发明的技术可在各种装置或设备中实施,各种装置或设备包括无线手持机、集成电路(ic)或ic集(例如,芯片集)。各种组件、模块或单元在本公开中被描述以强调被配置为执行所公开的技术的设备的功能方面,但不一定需要由不同的硬件单元实现。而是,如上所述,各种单元可以组合在硬件单元中,或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合互操作硬件单元的集合结合合适的软件和/或固件提供。

已经描述了各种示例。这些和其他示例在所附权利要求的范围内。

起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。

此文章来源于网络,如有侵权,请联系删除

相关标签:
tips