提供具有可选择的可遍历的状态机的个人辅助模块的制作方法

文档序号:17286406发布日期:2019-04-03 03:35阅读:244来源:国知局
提供具有可选择的可遍历的状态机的个人辅助模块的制作方法

当前在诸如智能电话、平板计算机、独立语音命令设备和智能手表的移动计算设备上可用的个人助理模块通常部分地在移动设备上实现,并且部分地在在线或基于云的服务上实现。这很大程度上是由于许多移动设备被认为是资源受限的事实,因为基于技术、经济或其他原因,特别地当与在线容量或基于云的服务相比时这些设备的存储器和/或处理能力被限制。因此,与个人助理模块交互所需的大部分处理能力可以以“在线语义处理器”的形式在云上。然而,在线语义处理器可能不容易访问资源受限设备上可用的各种数据点或“信号”。因此,尽管资源受限设备本地的一个或多个信号可以在几乎没有用户干预的情况下容易地用于解决模糊性,在在线语义处理器处从资源受限设备接收的请求还是可能出现模糊。



技术实现要素:

本说明书一般针对用于利用云的几乎无限资源(例如,以“在线语义处理器”的形式)以生成要递送到资源受限设备并在资源受限设备上实现的有限状态机的各种技术。在各种实施方式中,资源受限设备可以至少部分地基于从资源受限设备本地的资源确认的一个或多个信号来实现状态机。

因此,在一些实施方式中,一种方法可以包括:通过由资源受限设备操作的个人助理模块接收请求;个人助理模块将指示请求的数据上传到在线语义处理器;通过个人助理模块从在线语义处理器接收表示包括个人助理模块的多个候选状态的状态机的数据,其中每个候选状态潜在地响应于该请求;通过个人助理模块分析资源受限设备本地的一个或多个资源以确认在线语义处理器不可用的一个或多个信号;通过个人助理模块转变到多个候选状态中的给定状态,其中所述给定状态是基于一个或多个信号选择的。

响应于转变到给定状态,个人助理模块可以发起响应任务(例如,呼叫联系人),从而实行请求。因此,在没有要求通常可能要求提供这样的功能的处理能力的情况下资源受限设备能够提供看似复杂且计算密集的功能。另外,这里描述的方法和装置可以减少通过公共网络从资源受限设备发送到云的敏感用户数据(例如,联系人列表、呼叫日志等)的量,以便于提供功能。以这种方式,可以减少不允许访问数据的风险。类似地,方法和装置可以减少设备和云之间所需的交换的数量(减少到两个),以便于实行请求(即使在需要附加信息的情况下)。

在各种实施方式中,给定状态可以包括由个人助理模块递送的输出。输出可以包括对一个或多个输入的征求。在各种实施方式中,该方法可以进一步包括由个人助理模块基于由个人助理模块响应于征求而接收的一个或多个输入从给定状态转变到多个候选状态中的另一个状态。

在各种实施方式中,资源受限设备本地的一个或多个资源可以包括操作资源受限设备的用户的联系人列表。在各种实施方式中,该方法还可以包括由个人助理模块基于一个或多个输入消除联系人列表中的两个或更多个联系人之间的歧义。在各种实施方式中,该方法还可以包括由个人助理模块基于一个或多个输入消除与联系人列表中的单个联系人相关联的两个或更多个地址或电话号码之间的歧义。

在各种实施方式中,该请求可以包括对发起与联系人列表中的个人的电话呼叫的请求。在各种实施方式中,该请求可以包括对向联系人列表中的个人发送消息的请求。在各种实施方式中,该请求可以包括对到与联系人列表中的个人相关联的位置的路线指引(directions)的请求。

在各种实施方式中,资源受限设备本地的一个或多个资源可以包括安装在资源受限设备上的多个应用。该方法还可以包括由个人助理模块基于一个或多个输入消除多个应用中的两个或更多个应用之间的歧义。

在各种实施方式中,资源受限设备本地的一个或多个资源可以包括存储在资源受限设备的存储器中的多个媒体文件。该方法还可以包括由个人助理模块基于一个或多个输入消除多个媒体文件中的两个或更多个媒体文件之间的歧义。

在各种实施方式中,一个或多个信号可以包括用户和个人助理模块之间的交互历史的一个或多个记录。在各种实施方式中,一个或多个信号可以包括基于用户和个人助理模块之间的交互历史的一个或多个记录的一个或多个统计。在各种实施方式中,一个或多个信号可以包括资源受限设备的位置坐标。

在另一方面,一种可由在线语义处理器执行的方法可以包括:从在资源受限设备上操作的个人助理模块接收指示用户请求的数据;生成包括个人助理模块的多个候选状态的状态机,其中每个候选状态潜在地响应于对取决于在线语义处理器不可用并且可从资源受限设备的本地资源确认的一个或多个信号的请求;以及将表示状态机的数据下载到资源受限设备。

另外,一些实施方式包括一种装置,所述装置包括存储器和可操作以执行存储在存储器中的指令的一个或多个处理器,其中指令被配置成执行任何前述方法。一些实施方式还包括存储可由一个或多个处理器执行以执行任何前述方法的计算机指令的非暂时性计算机可读存储介质。

应理解,本文更详细描述的前述概念和附加概念的所有组合都被认为是本文公开的主题的一部分。例如,出现在本公开结尾处的所要求保护的主题的所有组合被认为是本文公开的主题的一部分。

附图说明

图1图示计算机系统的示例架构。

图2是示例分布式语音输入处理环境的框图。

图3是图示使用图2的环境处理语音输入的示例方法的流程图。

图4和图5图示根据各种实施方式的如何在各种场景中实现所公开的技术的示例。

图6是图示根据各种实施方式的可由个人助理模块执行的示例方法的流程图。

图7是图示根据各种实施方式的可由在线语义处理器执行的示例方法的流程图。

具体实施方式

在下文讨论的实施方式中,利用云的几乎无限的资源(例如,以“在线语义处理器(onlinesemanticprocessor)”的形式)以生成要被递送到资源受限设备并且在资源受限设备上实现的有限状态机。在各种实施方式中,资源受限设备可以至少部分地基于从资源受限设备本地的资源确认的一个或多个信号来实现状态机。

假设用户指示在她的智能手表上操作的个人助理模块以“呼叫john(calljohn)”。在线语义处理器可能无法访问用户的智能手表(或与用户相关联的设备的协同“生态系统”的其他计算设备)以能够确定在电话上是否存在任何称为john的联系人,或者是否存在是同一联系人的多个号码。为了解决多个场景,在线语义处理器可以生成并向智能手表提供有限状态机(或简称为“状态机”)。状态机可以包括多个状态,每个状态可以具有或不具有对应的输出、动作和/或到其他状态的转变。在本示例中,第一状态可以表示其中在用户的智能手表上存在多个名为“john”的联系人的情景,在这种情况下伴随的输出可以是“您的意思是哪个john?(whichjohndidyoumean?)”第二状态可以表示其中存在具有多个电话号码(例如,工作、移动等)的单个联系人“john”的情况,在这种情况下伴随的输出可以是“哪个电话号码?(whichphonenumber?)”。第三状态可以表示仅存在一个联系人只有一个电话号码的情况;伴随的输出可以是“呼叫john(callingjohn)”,例如,显示在已经在用户的智能手表上打开的电话应用中。状态机的第四状态可以表示其中在用户的联系人列表中不存在匹配联系人的情况,在这种情况下伴随的输出可以是“抱歉,不存在具有该名字的联系人(sorry,thereisnocontactwiththatname.)”。

当用户的智能手表接收到此状态机时,个人助理模块可以轮询智能手表本地的各种资源(例如,本地存储器、应用数据、日志、传感器等)以确认然后个人助理模块可以使用的一个或者更多信号以选择和转变到适当的状态。例如,如果用户的联系人列表中存在多个“john”,则个人助理模块可以转变到上述的第一状态。然而,如果在用户的智能手表联系人列表中只有一个“john”,则个人助理模块可以跳过第一状态。如果只存在具有多个电话号码的单个“john”,则个人助理模块可以直接转变到第二状态。如果存在多个“johns”并且至少一个具有多个电话号码,则个人助理模块可以最初转变到第一状态,并且然后在接收到来自用户的消除歧义的输入之后从第一状态转变到第二状态。

能够由个人助理模块用于导航从在线语义处理器接收的状态机的“信号”不限于静态数据点。在一些实施方式中,可以从用户和个人助理模块之间的历史交互数据中绘制信号。该信息可以在用户的移动电话上可用,例如通过一个或多个日志(例如,与呼叫日志交叉引用的个人助理日志)和/或从各种日志生成的统计。例如,统计是可用的,其指示用户最常与哪些联系人通信、哪些联系人最近与用户通信、用户最常或最近与之交互的应用、用户消费特定类型或流派的媒体文件的媒体文件的总次数的百分比等等。基于这样的信号,在没有用户的输入的征求的情况下可以“跳过(skipped)”(例如,自动地遍历)一个或多个状态。

在下文中讨论关于所选实施方式的进一步细节。然而,将会理解,可以预期其他实施方式,因此这里公开的实施方式不是排他性的。

现在转到附图,其中相同的数字在若干视图中表示相同的部件,图1是示例计算机系统10中的电子组件的框图。系统10通常包括经由子系统14与大量的外围设备通信的至少一个处理器12。这些外围设备可以包括存储子系统16,包括例如存储器子系统18和文件存储子系统20、用户接口输入设备22、用户接口输出设备24和网络接口子系统26。输入和输出设备允许用户与系统10交互。网络接口子系统26提供到外部网络的接口,并且耦合到其他计算机系统中的相应接口设备。

在一些实施方式中,用户接口输入设备22可以包括键盘、诸如鼠标、轨迹球、触摸板或图形输入板的指针设备、扫描仪、被合并到显示器中的触摸屏、诸如语音识别系统的音频输入设备、麦克风和/或其他类型的输入设备。通常,术语“输入设备”的使用旨在包括所有可能类型的设备和将信息输入计算机系统10或通信网络的方式。

用户接口输出设备24可以包括显示子系统、打印机、传真机或诸如音频输出设备的非可视显示器。显示子系统可以包括阴极射线管(crt)、诸如液晶显示器(lcd)的平板装置、投影装置或用于创建可视图像的一些其他机制。显示子系统还可以提供非可视显示,诸如经由音频输出设备。通常,术语“输出设备”的使用旨在包括所有可能类型的设备和将信息从计算机系统10输出到用户或另一机器或计算机系统的方式。

存储子系统16存储编程和数据构造,其提供本文描述的一些或所有模块的功能。例如,存储子系统16可以包括执行下文公开的方法的所选方面的逻辑。

这些软件模块通常由处理器12单独执行或与其他处理器组合执行。存储子系统16中使用的存储器子系统18可以包括多个存储器,包括用于在程序执行期间存储指令和数据的主随机存取存储器(ram)28和其中存储固定指令的只读存储器(rom)30。文件存储子系统20可以为程序和数据文件提供持久存储,并且可以包括硬盘驱动器、连同被关联的可移动的介质的软盘驱动器、cd-rom驱动器、光盘驱动器或可移动介质盒。实现某些实施方式的功能的模块可以由文件存储子系统20存储在存储子系统16中,或者存储在处理器12可访问的其他机器中。

总线子系统14提供用于允许系统10的各种组件和子系统按预期彼此通信的机制。尽管总线子系统14示意性地示为单个总线,但总线子系统的替代实施方式可以使用多个总线。

系统10可以是各种类型,包括移动设备、便携式电子设备、嵌入式设备、台式计算机、膝上型计算机、平板计算机、可穿戴设备、工作站、服务器、计算集群、刀片服务器、服务器群或任何其他数据处理系统或计算设备。另外,由系统10实现的功能可以分布在通过一个或多个网络彼此互连的多个系统当中,例如,在客户端-服务器,对等或其他网络布置中。由于计算机和网络的不断变化的性质,图1中描绘的系统10的描述仅旨在作为用于图示一些实施方式的目的的具体示例。系统10的许多其他配置可能具有比图1中描绘的计算机系统更多或更少的组件。

在下文中讨论的实施方式可以包括一种或多种方法,其实现本文公开的功能的各种组合。其他实施方式可以包括非暂时性计算机可读存储介质,其存储可由处理器执行以执行诸如本文描述的一个或多个方法的方法的指令。其他实施方式可以包括包含可操作以执行存储在存储器中的指令的存储器和一个或多个处理器的装置,以执行诸如本文所述的一个或多个方法的方法。

可以基于在特定实施方式中实现的应用来识别下文描述的各种程序代码。然而,应理解,为了方便起见,仅使用遵循的任何特定程序命名。此外,考虑到其中可以将计算机程序组织成例程、过程、方法、模块、对象等的无数种方式,以及其中可以在驻留在典型计算机(例如,操作系统、库、api、应用、小应用等)的各种软件层当中分配程序功能的各种方式,应理解,一些实施方式可以不限于本文描述的程序功能的特定组织和分配。

此外,将会理解,可以由任何程序代码执行或者在任何例程、工作流程等中执行的本文描述的各种操作可以被组合、拆分、重新排序、省略、顺序地或者并行执行和/或补充有其他技术,并且因此,一些实施方式不限于本文描述的特定操作序列。

图2图示示例分布式语音输入处理环境50,例如,用于与诸如在线语义处理器54的在线服务通信的支持语音的设备52一起使用。在下文讨论的实施方式中,例如,支持语音的设备52被描述为诸如蜂窝电话或平板计算机的移动设备。然而,其他实施方式可以利用各种其他支持语音的设备,因此下文中对移动设备的引用仅仅是为了简化下文的讨论的目的。无数其他类型的支持语音的设备可以使用这里描述的功能,包括例如膝上型计算机、手表、头戴式设备、虚拟或增强现实设备、其他可佩戴式设备、音频/视频系统、导航系统、汽车和其他车载系统、独立语音命令设备等。此外,许多这样的支持语音的设备可以被认为是资源受限的,因为基于技术、经济或其他原因,特别地当与能够将几乎无限的计算资源用于单个任务的在线或基于云的服务的能力相比较时,这些设备的存储器和/或处理能力可能被限制。

在一些实施方式中,例如,使用服务器群或运行适合于处理来自多个用户的大量请求的软件的高性能计算机集群,在线语义处理器54可以被实现为采用云基础设施的基于云的服务。在线语义处理器54可以不限于基于语音的请求,并且还能够处理其他类型的请求,例如,基于文本的请求、基于图像的请求等。在一些实施方式中,在线语义处理器54可以处理基于语音的请求,诸如设置警报或提醒、管理列表、经由电话、文本、电子邮件等发起与其他用户的通信、或执行可经由语音输入发起的其他动作。出于本公开的目的,基于语音的请求和其他形式的语音输入可以统称为基于语音的请求,不管基于语音的请求是否寻求以发起搜索、提出问题、发出命令等等。因此,通常,任何语音输入,例如,包括一个或多个单词或短语,可以被认为是在所图示的实施方式的场境内的基于语音的请求。

在图2的实施方式中,由支持语音的设备52接收的语音输入由支持语音的应用(或“app”)处理,其在图2中采用个人助理模块56的形式。在其他实施方式中,语音输入可以在支持语音的设备52的操作系统或固件内处理。所图示的实施方式中的个人助理模块56包括语音动作模块58、在线接口模块60和渲染/同步模块62。语音动作模块58接收定向到个人助理模块56的语音输入,并协同对支持语音的设备52的用户的语音输入的分析和一个或多个动作的执行。在线接口模块60提供与在线语义处理器54的接口,包括将语音输入转发到在线语义处理器54并接收对其的响应。例如,经由视觉显示、口述音频或适合于特定支持语音的设备的其他反馈接口,渲染/同步模块62管理对用户的响应的渲染。另外,在一些实施方式中,例如,每当响应或动作影响在线搜索服务中为用户维护的数据(例如,在基于云的日历中保持的约会的语音输入请求创建),模块62还处理与在线语义处理器54的同步。

个人助理模块56可以依赖各种中间件、框架、操作系统和/或固件模块以处理语音输入,包括例如将语音流送到文本模块64和包括解析器模块68、对话管理器模块70和动作构建器模块72的语义处理器模块66。

模块64接收例如以数字音频数据的形式的语音输入的音频记录并将数字音频数据转换成一个或多个文本字或短语(在此也称为“令牌”)。在所图示的实施方式中,模块64也是流送模块,使得语音输入基于逐个令牌并且实时或接近实时地被转换成文本,使得令牌可以与用户的语音同时有效地从模块64输出,并且因此在用户发出完整的口头请求之前。模块64可以依赖于一个或多个本地存储的离线声学和/或语言模型74,其与语言中的单词序列一起模拟语言中的音频信号和语音单元之间的关系。在一些实施方式中,可以使用单个模型74,而在其它实施方式中,可以支持多个模型,例如,以支持多种语言、多个扬声器等。

然而模块64将语音转换成文本,模块66试图辨别模块64输出的文本的语义或含义以用于目的或制定适当的响应。例如,解析器模块68依赖于一个或多个离线语法模型76以将文本映射到特定动作并识别约束这些动作的性能的属性,例如,输入变量到这些动作。在一些实施方式中,可以使用单个模型76,而在其它实施方式中,可以支持多个模型,例如,以支持不同的动作或动作域(即,诸如通信相关动作的相关动作的集合,搜索-相关动作、音频/视觉相关动作、日历相关动作、设备控制相关动作等)。

作为示例,离线语法模型76可以支持诸如“设置提醒”的动作,其具有指定要设置什么类型的提醒的提醒类型参数、指定与提醒相关联的一个或多个项目的项目参数、和指定时间以激活提醒并提醒用户的时间参数。解析器模块68可以接收一系列令牌,诸如“提醒我(remindmeto)”、“取(pickup)”、“面包(bread)”和“下班后(afterwork)”,并且将令牌序列映射到设置提醒的动作,其中提醒类型参数设置为“购物提醒(shoppingreminder)”的、项目参数设置为“面包”并且时间参数设置为“下午5:00(5:00pm)”,使得在当天下午5:00用户接收“购买面包”的提醒。

解析器模块68还可以与管理与用户的对话的对话管理器模块70一起工作。在此场境中,对话指的是语音输入和响应的集合,类似于两个人之间的对话。因此,模块70保持对话的“状态”以启用在先前的语音输入中从用户获得的信息以当处理后续语音输入时被使用。因此,例如,如果用户说“提醒我取面包(remindmetopickupbread)”,则应生成响应以说“好的,您想什么时候被提醒?(ok,whenwouldyouliketobereminded?)”使得“下班后”的后续语音输入将被绑回到创建提醒的原始请求。在一些实施方式中,模块70可以实现为个人助理模块56的一部分。

在本文描述的各种实施方式中,例如,在在线语义处理器54从操作支持语音的设备52的用户接收请求之后,对话管理器模块70可以从在线语义处理器54接收表示包括个人助理模块56的多个候选状态的状态机的数据。每个候选状态可能潜在地响应于来自用户的请求。模块70可以单独或与个人助理模块56一起分析支持语音的设备52本地的一个或多个资源,以确认在线语义处理器54不可用的一个或多个信号。基于一个或多个信号,然后对话管理器模块70和/或个人助理模块56可以选择并转变到多个候选状态中的给定状态。

动作构建器模块72从解析器模块68接收表示语音输入解释得解析的文本,并生成用于通过个人助理模块56的模块62处理的一个或多个响应动作或“任务”以及任何相关联的参数。动作构建器模块72可以依赖于一个或多个离线动作模型78,其合并用于从解析的文本创建动作的各种规则。在一些实施方式中,例如,动作可以被定义为函数f,使得f(it)=au,其中t表示输入解释的类型并且u表示输出动作的类型。因此,f可以包括彼此映射的多个输入对(t,u),例如,当f(it)=au时,其中it是类型t的输入原型变量,并且au是类型u的输出模块化自变量或参数。将会理解,一些参数可以作为语音输入直接接收,而一些参数可以以其他方式,例如,基于用户的位置、人口统计信息,或基于用户特有的其他信息确定。例如,如果用户说“提醒我在杂货店取面包(remindmetopickupbreadatthegrocerystore)”,在没有诸如用户的当前位置、用户在工作和家庭之间的已知路线、用户常去的杂货店等附加信息的情况下,可能无法确定位置参数。

将会理解,在一些实施方式中,模型74、76和78可以组合成更少的模型或者分裂成附加的模型,可以是模块64、68、70和72的功能。此外,在模型被本地存储在支持语音的设备52上的情况下这里模型74-78将被称为离线模型,并且因此,当设备52不与在线语义处理器54通信时,其可被离线访问。此外,虽然模块56在本文中被描述为个人助理模块,这不意味着限制。在各种实施方式中,在支持语音的设备52上操作的任何类型的app可以执行本文描述的技术以实现从在线语义处理器54接收的状态机。

在各种实施方式中,在线语义处理器54可以包括用于处理语音输入的补充功能,例如,使用依赖于各种声学/语言、语法和/或动作模型82的基于语音的查询处理器80。将会理解,在一些实施方式中,特别当支持语音的设备52是资源受限设备时,基于语音的查询处理器80和由此使用的模型82可以比支持语音的设备52本地实现更复杂和计算资源密集的语音处理功能。

在一些实施方式中,可以采用多个基于语音的查询处理器80,每个充当一个或多个个人助理模块56的在线对应物。例如,在一些实施方式中,可以配置用户生态系统中的每个设备以操作与用户相关联的个人助理模块56的实例(例如,配置有用户的偏好、与相同的交互历史相关联等)。基于语音的查询处理器80的单个以用户为中心的在线实例可以由个人助理模块56的这些多个实例中的每一个访问,这取决于用户当时正在操作哪个设备。

在一些实施方式中,可以支持在线和离线功能,例如,使得每当设备与在线服务通信时使用在线功能,而当不存在连接时使用离线功能。在其他实施方式中,不同的动作或动作域可以被分配到在线和离线功能,并且同时其它实施方式中,仅当离线功能未能充分地处理特定语音输入时可以使用在线功能。然而,在其他实施方式中,可以不使用补充的在线功能。

例如,图3图示语音处理例程100,其可以由支持语音的设备52执行以处理语音输入。例程100在框102中通过接收例如以数字音频信号的形式的语音输入开始。在本实施方式中,进行初始尝试以将语音输入转发到在线搜索服务(块104)。如果不成功,例如,由于缺乏连接或缺少来自在线搜索服务的响应,则块106将控制传递到块108以将语音输入转换成文本令牌(块108,例如,使用图2的模块64),解析文本令牌(块110,例如,使用图2的模块68),并从解析的文本构建动作(块112,例如,使用图2的模块72)。然后使用所得到的动作来执行客户端侧渲染和同步(块114,例如,使用图2的模块62),并且完成语音输入的处理。

返回到块106,如果将语音输入转发到在线搜索服务的尝试成功,则块106绕过块108-112并将控制直接传递到块114以执行客户端侧渲染和同步。然后完成对语音输入的处理。将会理解,在其它实施方式中,如上所述,可以在在线处理之前尝试离线处理,例如,当能够在本地处理语音输入时避免不必要的数据通信。

图4示意性地例证示例场景420,其中个人助理模块56可以例如通过基于语音的查询处理器80从在线语义处理器54接收状态机,使得个人助理模块56可以分析支持语音的设备52的本地的一个或更多资源以确认在线语义处理器54和/或基于语音的查询处理器80不可用的一个或多个信号。基于该分析,个人助理模块56可以转变到基于一个或多个信号选择的多个候选状态中的给定状态。

在本示例中,用户请求422包括口头短语形式的语音输入,“让我们捕获这个时刻(let'scapturethismoment.)”。响应于用户请求422,例如,通过在线语义处理器54可以生成包括个人助理模块的多个候选状态4241-3的状态机。每个候选状态424可以潜在地响应于查询。例如,在第一候选状态4241中,个人助理模块56可以从用户征求来自可能安装在支持语音的设备52上的潜在多个相机应用的特定相机应用的指示。第一候选状态4241可以包括输出(听觉或视觉),诸如“好的,您想使用哪个相机应用?(ok,whichcameraapplicationwouldyouliketouse?)”。在第二候选状态4242中,个人助理模块56可以例如通过输出诸如“照片还是视频?(photoorvideo?)”的语音来征求用户对于他或她是希望捕获照片还是视频的指示。在第三候选状态4243中,个人助理模块56可以征求用户以指示他或她是否希望使用闪光灯。

如箭头所指示的,状态机的状态424可能导致状态机的其他状态。例如,在用户响应于第一候选状态4241的提示之后,个人助理模块56可以转变到第二候选状态4242以征求指示用户是希望拍摄照片还是视频的输入,并且然后转变到第三候选状态4243以征求指示用户是否希望使用闪光灯的输入。然而,如果每次用户发出请求422要求用户遍历所有三个状态,则用户可能会变得沮丧,因为该过程将花费太长时间。此外,提供语音输出并获得对其的响应可能消耗诸如电池电量、处理器周期和/或存储器的计算资源。因此,在各种实施方式中,个人助理模块56可以分析支持语音的设备52本地的资源以确定是否能够在没有征求来自于用户的输入的情况下跳过任何状态424。

假定在接收到图4的状态机时,个人助理模块56例如从诸如已安装的应用的注册表和/或本地存储在支持语音的设备52上的用户交互日志的源(并且不容易对于在线语义处理器54可用)中确定-用户几乎专门使用特定的相机应用以拍摄照片和视频。基于该确定,个人助理模块56可以“跳过”第一候选状态4241。在一些实施方式中,个人助理模块56可以响应于请求422通知支持语音的设备52的其他组件(例如动作构建器72)应响应于请求422触发(例如,从非易失性存储器启动或被激活)的应用是特定的相机应用。

在第二候选状态4242中,个人助理模块56可以再次分析支持语音的设备52本地的资源,诸如与所选相机应用相关联的使用日志,以确定是否需要视频与照片的提示。如果使用日志没有揭示两者之间的任何明确偏好,则个人助理模块56可以发出与第二候选状态4242相关联的输出以确定用户是希望拍摄视频还是照片。用户的响应可以被提供(例如由个人助理模块56作为参数提供给动作构建器72),使得当所选择的相机应用被触发时,已经将其设置为拍摄如用户指示的照片或视频。另一方面,如果使用日志确实指示用户明确偏好以拍摄一个或另一个,则可以向动作构建器72提供与优选格式相关联的参数。

在各种实施方式中,可以以各种方式确定这种偏好。在一些实施方式中,如果用户历史上已经操作所选择的相机应用以拍摄照片或视频至少达到应用的总使用次数的阈值百分比,则可以自动地选择模式。在其它实施方式中,个人助理模块56可以分析所选择的相机应用的最近使用以确定用户最近如何操作应用,并且可以基于该分析来选择模式。例如,如果用户正在参加生日聚会并且已经拍摄一系列视频,即使用户历史上通常操作所选择的应用以拍摄照片,仍然可以选择视频模式。

在做出拍摄照片或视频的决定(是否自动地或者响应于用户输入)之后,个人助理模块56可以转变到第三候选应用4243。在第三候选应用4243中,个人助理模块56可以再次分析支持语音的设备52本地的资源,诸如来自于被配置成检测环境中的环境光的光传感器的信号,以确定是否保证使用闪光灯。如果来自光传感器的信号指示黑暗环境,则个人助理模块56可以通知诸如动作构建器72的组件当触发所选择的相机应用时应启用闪光灯。如果来自光传感器的信号指示光照良好的环境(例如,白天在户外),则个人助理模块56可以通知诸如动作构建器72的组件当触发所选择的相机应用时应禁用闪光灯。如果来自光传感器的信号是不确定的,则个人助理模块56可以例如使用语音输出提示用户指示是否应启用闪光灯。

图5描绘另一示例场景520,其中个人助理模块56可以接收并遍历由在线语义处理器提供的状态机。在此示例中,用户请求522包括口头请求,“让我们呼叫john(let'scalljohn.)”。假设发出用户请求的用户522具有名为“john”或“jon”的多个联系人,则用户请求522对于用户指的是哪个“john”是模糊不清的。因此,在线语义处理器54可以识别可以由个人助理模块56遍历的多个候选状态5241-n以消除潜在的多个联系人之间的歧义。

在第一候选状态5241中,个人助理模块56将从用户征求指示要呼叫哪个john的输入。在第二候选状态5242中,个人助理模块56将从用户征求指示所选择的“john”联系人拨打号码(例如,移动、家庭、工作)的输入。在第三候选状态5243中,个人助理模块56将发起呼叫并提供相应的输出。在第四候选状态5244中,个人助理模块56将通知用户没有这样的联系人。如箭头所指示的,在各种场景中,第一候选状态5241可以转变到第二候选状态5242,该第二候选状态5242反之可以转变到第三候选状态5243。

在接收到图5中描绘的状态机时,个人助理模块56可以为具有名字“john”或“jon”的联系人轮询支持语音的设备52本地的资源,诸如联系人列表或社交网络朋友列表。如果找到单个匹配联系人,则如果存在用于匹配联系人的多个电话号码,则个人助理模块56可以直接进入第二候选状态5242,并且如果仅存在匹配的联系人的单个电话号码,则可以跳到第三候选状态5243。另一方面,如果找到多个匹配的联系人,则个人助理模块56可以提示用户(例如,使用语音输出)以指示哪个john/jon,或者其可以为然后能够使用以自动选择特定的联系人的信息信号轮询支持语音的设备52本地的资源。

可以从多个潜在匹配联系人中自动选择联系人-并且更一般地,可以基于各种信息信号从多个选项/输入参数中自动选择用于给定候选状态的选项/输入参数。在一些实施方式中,选项/输入参数可以至少基于用户与用户操作的一个或多个计算设备之间的交互历史,诸如先前提及的设备的“生态系统”。用户与一个或多个计算设备之间的交互历史可以包括可以一起或单独存储的用户交互的各种记录。

例如,当从多个匹配的联系人中进行选择时,个人助理模块56可以查询支持语音的设备本地的资源,诸如呼叫日志(或者如果存在多个备选呼叫应用,则多于一个呼叫日志)、文本消息历史、电子邮件历史(例如,收件箱和已发送邮件)以及其他类似的来源,以“猜测”用户所指的匹配联系人。例如,可以例如从呼叫日志、文本消息历史、电子邮件历史等确定,当发出用户请求的用户522联系具有名字“john”或“jon”的联系人列表中的任何人时,名叫“johnzenith”的特定联系人历来是用户最受欢迎的“john/jon”,其次是另一个名叫“johnadams”的联系人等等。在一些实施方式中,可以自动选择名叫“john”或“jon”的最流行的联系人。然后,如果存在多个电话号码,则个人助理模块56可以直接转变到第二候选状态5242,并且如果仅存在用于所选择的联系人名叫“john/jon”的一个电话号码,则可以在没有发出任何输出的情况下跳过第二候选状态5242并且直接进入第三候选状态5243。

在一些实施方式中,可以由个人助理模块56至少部分地基于与被认为足够相似的另一任务相关联的一个或多个信息信号来自动选择候选状态的选项/输入参数。例如,在确定呼叫多个“johns/jons”中的哪一个时,当确定是否自动地选择要呼叫的特定联系人时,可以集体地考虑任何形式的具有名叫“john/jon”的特定联系人的先前的联系人,诸如使用电话应用的在先电话呼叫、使用sms应用发送的在先文本等。假定在用户的消息历史中没有检测到先前的呼叫活动,特别是响应于对“呼叫john”的个人助理模块的请求。然而,存在响应于对“发短信给john”的个人助理模块的用户请求将文本消息发送到名为“johnjones”的联系人的记录。消息传送和呼叫任务可以被认为是足够相似的,其响应于“呼叫john”请求,个人助理模块56可以推断用户希望呼叫johnjones。

除了原始流行度之外或代替原始流行度,在各种实施方式中,可以至少部分地基于用户最近行为来选择特定选项/输入参数。假定在发出请求,“呼叫john”,而不是“johnadams”后,用户经常历史地挑选“johnzenith”。然而,假定用户在最近的实例中(例如,在过去一周内)比“johnzenith”更频繁地选择“johnadams”。在某些实施方式中,可以考虑选择johnadams而不是johnzenith。

个人助理模块56将自动选择特定选项/输入参数的可能性可以响应于各种信号而随着时间流逝改变。在一些实施方式中,将选择特定选项/输入参数的可能性可以基于紧跟启动所选任务的生态系统的一个或多个支持语音的设备52与用户之间的一个或多个交互。假定当第一候选状态5241中,johnadams由个人助理模块56自动地选择,并且通过预先拨号johnadams的电话号码发起电话应用。进一步假定用户按下“谈话”以发起呼叫。该用户交互可以被解释为正反馈,因此其可能在将来更有可能在第一候选状态5241处自动选择johnadams。同样地,如果用户拒绝与预先拨号的johnadams的号码的电话应用的实例化,而是手动拨打新号码,该交互可以被解释为负反馈,其引起johnadams将在未来自动选择的可能性减少。

协作应用还可能影响个人助理模块56是否自动选择特定选项/输入参数。假定用户将由图5中的用户请求522表示的语音命令发布到支持语音的设备52。进一步假定sms应用已在后台打开,并且用户最近已经给名叫johnbradley的联系人发短信。sms应用已经打开的事实可能单独或与用户最近与johnbradley发短信的事实相结合,也增加johnbradley将被自动选择的可能性。

另外或可替选地,与选项/输入参数相关联的其他信息信号可以用于响应于发布给个人助理模块56的模糊请求从这些选项/输入参数中自动选择。例如,假设具有名叫“sven”的两个联系人的用户发出“呼叫sven”的请求。通常可以偏爱一个sven联系人。然而,如果个人助理模块56轮询支持语音的设备52本地的资源(例如,日历、电子邮件、文本消息等)以确定用户在不久的将来具有与另一个sven商定的会议,则可能会选择另一个sven的可能性可能至少暂时升高,直至会议前、期间以及可能之后一段时间。类似地,如果支持语音的设备52本地的资源揭示一个sven具有即将到来的生日,或者被安排在特定航班上到达城镇,则优于另一个将自动地选择这个sven的可能性至少可能暂时增加。

在一些实施方式中,当用户在过去执行相同或类似的任务时(例如,在第一候选状态5241处)个人助理模块56将选择的特定选项/输入参数的可能性可以基于用户的当前场境与用户的场境之间的相似性的度量。假定用户通常在一周内打电话给同事davidsmith,并在周末给兄弟davidjones打电话。如果用户在一周内发出请求“呼叫dave”,则用户的场境可能更类似于其中用户呼叫davidsmith的先前实例,从而增加davidsmith被选择的可能性。同样,如果用户在周末期间发出请求,则用户的场境可能更类似于其中用户呼叫davidjones的先前实例。这可能增加在第一候选状态5241中选择davidjones的可能性。

也可以执行更复杂的场境比较以选择联系人。在一些实施方式中,可以从先前和当前场境中提取特征并且将其进行比较以确定相似性的度量。可以采用各种技术以计算场境之间的相似性的度量,包括但不限于kullback-leibler(“kl”)发散、余弦相似度、levenshtein距离等。例如,在发出诸如522的请求时,可以将对应于用户的当前场境的特征向量与在通过用户的个人助理模块56的类似于图5中的状态机的先前实现期间为用户的场境生成的特征向量进行比较。与表示用户的当前场境的特征向量最相似的过去特征向量可以被认为具有最高的响应机会,并且因此可以被用于从多个联系人中进行选择。与表示用户的当前场境的特征向量最不相似的过去特征向量可以被认为具有最低的响应机会。因此,用户在先前场境中呼叫的联系人可能最不可能在第一候选状态5241处被自动选择。

以上示例描述个人助理模块56在第一候选状态5241处从多个联系人的自动选择。然而,这并不意指限制。个人助理模块56可以在各个候选状态下采用类似技术以从多个选项和/或输入参数中进行选择。例如,个人助理模块56可以在第二候选状态5242处采用类似的技术以选择要呼叫的名叫“john/jon”的特定联系人的电话号码。

图6图示适合于由个人助理模块56执行以例如通过基于语音的查询处理器80向在线语义处理器54提供用户请求并且作为响应接收和实现有限状态机的例程650。例程650可以由处理基于语音的查询的相同服务执行,或者可以是完全不同的服务。

在块652处,例如,接收以数字音频信号的形式的语音输入。在块654处,可以将用户请求上传到在线语义处理器54。在一些实施方式中,可以在上传之前将语音输入转换为文本令牌(例如,使用图2的模块64和/或模型82)。在其它实施方式中,音频数据可以直接上传到在线语义处理器54,其自身可以将语音输入转换成文本令牌。

在块656处,个人助理模块56可以从在线语义处理器54例如直接或间接地接收状态机。在块658处,个人助理模块56可以分析(例如,轮询)支持语音的设备52的本地资源以确认一个或多个信息信号。例如,并且如上所述,个人助理模块56可以从各个本地资源获得信息信号,包括但不限于联系人列表、呼叫日志、文本消息日志、安装的应用注册表、日历、电子邮件、社交网络日志、例如位置坐标传感器(例如,gps、蜂窝三角测量)、光传感器和/或加速度计的传感器、任务列表,应用日志等。

在块660处,个人助理模块56可以基于在块658处确认的一个或多个信号转变到给定状态。例如,并且如上所述,如果从支持语音的设备52本地的轮询资源确定仅安装单个相机应用,则个人助理模块56可以根据用户请求422直接转变到第二候选状态4242(基本上跳过第一候选状态4241)。

取决于转变到的状态和本地可用的信息信号,在一些实施方式中,在块662处,个人助理模块56可以例如通过渲染计算机生成的语音来从用户征求输入。例如,在第二候选状态4242中,个人助理模块56可以输出诸如“您想拍摄照片还是视频?(doyouwanttoshootaphotographorvideo?)”的语音。在一些实施方式中,在块662处征求的输入可能由个人助理模块在块664处使用以消除两个或更多个选项/输入参数(例如,联系人、两个或更多个已安装的应用、应用设置、地址、电话号码、媒体文件等)之间的歧义。另一方面,如果在块660处转变到的状态下,个人助理模块56没有征求输出(例如,图5中的5243或5244),则个人助理模块56可以简单地发起与转变到状态相关联的动作(呼叫、发短信、设置任务提醒、创建日历条目等)。

尽管在附图中未被图示,但是在一些实施方式中,接收到的状态机可以由资源受限设备存储,并且在相同或类似的用户请求重现的情况下重新使用。因此,第二次设备接收到特定请求时,可以在无需与云交换的情况下提供功能。因此,在某些情况下,即使当没有访问云时,也能够在某种程度上提供功能。因此,不管网络条件如何,可以说该设备更可靠。

虽然本文描述的实施方式主要演示电话和相机应用的调用,但这并不意味着限制。这里描述的技术可以被使用以调用各种其他类型的应用,或者更一般地,发起其他类型的响应任务。例如,当用户发出“在xx为我设置提醒(setanalarmformeatxx)”的请求时,可以分析从她的生态系统的一个或多个支持语音的设备52的本地资源获得的信息信号以经由报警设置确定她的生活习惯。基于这些习惯和诸如日期、时间和位置的各种其他信息信号,在没有征求用户输入的情况下可以至少部分地导航个人助理模块56从在线语义处理器54接收的状态机。

另一个示例演示如何使用所公开的技术来消费媒体文件。假定用户发出请求,“我肯定可以从艺术家a那里获得一些音乐。(isurecouldgoforsomemusicfromartista.)”响应于这样的请求由在线语义处理器54返回的状态机可以包括用于征求用户以选择音乐播放应用的状态(例如,播放本地存储的音乐对流送)、用于征求用户以选择特定专辑或歌曲的状态、用于征求用户以选择诸如“播放随机(playrandom)”、“音量(volume)”等参数等的状态等等。个人助理模块56可以轮询资源受限设备本地的各种资源以确定用户的收听习惯、偏好、本地存储的匹配歌曲等,以通过在线语义处理器54生成和提供的状态机的至少一部分自动导航。除了这些示例之外,还可以响应于其他用户请求,诸如发送文本/电子邮件消息的请求、对到例如与联系人列表中的个人相关联的位置的路线指引的请求、预订请求(例如,航空公司、餐馆、酒店、租车等)等等来使用所公开的技术。

图7图示适合于由在线语义处理器54(和/或基于语音的查询处理器80)执行以基于用户请求生成并向个人助理模块56提供有限状态机的例程770。在块772处,在线语义处理器可以接收指示诸如例如通过解析器模块68已经解析的语音输入和/或文本令牌的用户请求的数据。

在块774处,在线语义处理器54可以分析各种在线资源以确认关于与个人助理模块56相关联的用户,特别是和/或关于普通用户的各种信息信号。关于特定用户,在线资源可以包括但不限于社交网络简档、电子邮件(假设用户已经允许这种访问)、用户的搜索历史(再次,假定用户已经允许这样的访问)、用户具有权利的应用(例如,可以从用户具有帐户的“应用商店”确认)等等。关于普通用户,在线资源可以包括但不限于聚合用户搜索历史、聚合用户活动日志(可以保持个人用户的匿名性)等。

在块776处,在线语义处理器54可以基于在块772处接收的用户请求以及在块774处确认的信号来生成可由个人助理模块56遍历的状态机。如上所述,状态机的一个或多个状态可以包括可以通过各个输出模态渲染给用户的相关联的输出,诸如语音、文本、图形等。状态机的一个或多个状态也可以与响应动作相关联,诸如拨打电话、发送文本消息、发送电子邮件、设置提醒、创建和/或至少部分填充日历条目、打开媒体播放应用以输出特定媒体文件、启动媒体流送服务、进行预订、打开一个应用对比另一个等等。

在一些实施方式中,在线语义处理器54可以使用在块774处确认的一个或多个信息信号来最初生成状态机,例如,使得响应于这样的请求的第一“默认”状态是被认为最有可能响应于用户的请求的响应。但是状态机的其他状态可以表示替代选项,在某些情况下,可以取决于从支持语音的设备52本地的资源轮询的一个或多个信息信号(例如,参考图6的块658)覆盖在线语义处理器已知的默认值。

例如,在线语义处理器54可以从在线呼叫日志或其他信息确定在家中呼叫johnsmith是对“呼叫john”的用户请求的最可能的响应。因此,在线语义处理器54可以生成具有与在家中呼叫johnsmith相关联的默认状态的状态机。然而,用户的移动设备上的其他信号可能建议在某些情况下,响应于相同的请求实际上可能需要另一个电话号码。假定默认的johnsmith位于通常由用户共享的中央时区,但是用户已经前往一个遥远的时区。进一步假定在用户的联系人列表中存在名叫“johnjones”的第二个较少利用的联系人。进一步假定“johnjones”位于遥远的时区。至少基于来自支持语音的设备52上的位置坐标分量(例如,gps、小区塔标识或三角测量)的信号,可以确定用户通常打算打电话给johnsmith,在这些特定情况下,用户实际上可能打算打电话给johnjones。为了解释这种可能性,在线语义处理器54可以在状态机中包括替代的“后退(fallback)”或“全部捕获(catchall)”状态(例如,“您指的是哪个john?”),用于个人助理模块56转变到默认状态,以通过从支持语音的设备52本地的资源获得的信息信号来覆盖该默认状态。

回到图7,在块778处,在线语义处理器54可以将指示在块776处生成的状态机的数据下载到个人助理模块56。此数据可以以通过个人助理模块56可执行和/或可解释的各种形式出现。在一些实施方式中,指示状态机的数据可以是标记语言的形式,诸如可由个人助理模块56解释的可扩展标记语言(“xml”)。在一些实施方式中,指示状态机的数据可以是由个人助理模块56解释的诸如统一建模语言(“uml”)的建模语言的形式。在一些实施方式中,状态机可以采用图形的形式,例如,具有表示状态(和相应的输出/响应动作)的节点和表示状态之间的转变的边缘。在一些实施方式中,状态机可以在可以由个人助理模块56解释和/或执行的编译的各种阶段中以字节码、脚本或其他计算机可执行指令的形式出现。

如在上面所解释的,在设备本地可用的计算资源小于云中可用的计算资源的意义上,资源受限设备可以是资源受限的。这样,在一些实施方式中,资源受限设备可以被称为用户设备或用户终端。这样的设备可以包括可操作以与云通信并且包括个人数字助理模块(例如,但不限于移动设备,诸如移动电话或平板计算机)的任何类型的设备。

虽然本文已描述和图示若干实施方式,但是可以利用本文中所描述的用于执行功能和/或获得结果的各种其它装置和/或结构和/或一个或多个优点,并且这些变化和/或修改中的每一个被认为是在本文描述的实施方式的范围内。更一般地,本文描述的所有参数、尺寸、材料和配置旨在是示例性的并且实际参数、尺寸、材料和/或配置将取决于特定应用或使用教导的应用。本领域的技术人员将认识到或能够使用不超过常规的实验确认本文所述具体实施方式的许多等效物。因此,要理解的是,前述实施方式仅作为示例被呈现,并且在所附权利要求及其等效物的范围内,可以以不同于具体描述和要求保护的方式实践实施方式。本公开的实施方式针对本文描述的每个单独的特征、系统、物品、材料、套件和/或方法。此外,如果这些特征、系统、物品、材料、套件和/或方法不相互矛盾,则两个或更多个这样的特征、系统、物品、材料、套件和/或方法的任何组合都包括在本公开的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1