多模态交互方法、用户端设备、服务器及系统与流程

文档序号:19015232发布日期:2019-11-01 19:38阅读:177来源:国知局
多模态交互方法、用户端设备、服务器及系统与流程

本发明涉及人机交互技术领域,特别是涉及一种多模态交互方法、用户端设备、服务器及系统。



背景技术:

在pc时代,人机交互的主要模态是鼠标、键盘、显示、扬声器等设备。近些年来,随着技术革新,尤其是随着语音识别和语义理解技术等的发展,现有的交互模态得到了大大拓展,语音模态的人机交互越来越普及。

很多厂商推出了诸如智能音箱的智能设备,智能设备接收用户的语音输入并上传到诸如云端服务器的服务端中的语音服务,语音服务处理后将语音命令和数据下发给设备,设备端的软件开发工具集(softwaredevelopmentkit,简称sdk,又称软件开发工具包)解释和执行命令。其中,sdk封装了设备端的一些功能并通过应用程序编程接口(applicationprogramminginterface,简称api)的形式与设备端系统互相调用。

智能设备与pc的不同之处,除了引入语音交互,更重要的是交互内容由服务端处理并下发到设备端,这样既利用了服务端的计算能力,又通过动态下发交互内容达到可运营的目的。

现有的基于设备端的交互方法、以及现有的基于服务端的交互方法均具有许多缺点。例如,基于设备端的交互能力由设备的硬件能力和设备的系统能力决定,并且交互内容不能动态改变。虽然现有的基于服务端的交互方法利用了云端的计算能力,并可以动态下发给设备端,但现有的基于服务端的交互方法仍具有以下缺点:

1、交互能力由云端渲染语言能力和设备端交互sdk能力决定。sdk集成到设备的系统中,升级成本高,因此sdk能力的扩展不方便。

2、关于图形用户界面(graphicaluserinterface,简称gui,又称图形用户接口)等显示服务,由于不同设备端的gui体系不同,显示布局和控件的行为不同,用云端渲染gui的方式很难与设备端的风格保持统一。



技术实现要素:

本发明的目的在于提供一种新的多模态交互方法、用户端设备、服务器及系统。

本发明的目的采用以下技术方案来实现。依据本发明提出的多模态交互方法,包括以下步骤:一个或多个设备端接收用户输入的一种或多种模态的交互请求,将所述交互请求发送至服务端;所述服务端接收由所述设备端发出的所述交互请求,根据所述交互请求生成一个或多个交互命令,将所述交互命令发送至所述设备端;所述交互命令中的至少一些包括交互包或所述交互包的信息;所述设备端接收并执行所述交互命令,包括动态加载所述交互包以实现与用户交互。

本发明的目的还可以采用以下的技术措施来进一步实现。

前述的多模态交互方法,所述交互包包括一个或多个基于第一语言的对象作为第一对象、和针对所述第一对象的指令;所述动态加载所述交互包以实现与用户交互包括:采用动态加载方式、并采用桥接方式,根据所述第一对象和所述针对所述第一对象的指令来控制与所述第一对象桥接的第二对象;其中,所述第二对象是所述设备端本地的基于第二语言的对象。

前述的多模态交互方法,在所述一个或多个设备端接收用户输入的一种或多种模态的交互请求的步骤之前,还包括:预先在开发端进行开发得到所述交互包,将所述交互包发送至所述服务端;所述服务端接收由所述开发端上传的所述交互包,存储所述交互包。

前述的多模态交互方法,所述第二对象包括基于所述第二语言的一个或多个第二属性以及一个或多个第二方法;所述预先在开发端进行开发得到所述交互包包括:通过桥接方式,根据所述第二属性映射得到基于所述第一语言的属性作为第一属性,根据所述第二方法映射得到基于所述第一语言的方法作为第一方法,以得到包含所述第一属性和所述第一方法的基于所述第一语言的桥接对象作为所述第一对象;将一个或多个所述第一对象、脚本、和资源数据进行打包以得到所述交互包。

前述的多模态交互方法,所述交互包包括对象数据和脚本,所述对象数据包括用于为所述设备端添加扩展对象的数据、和/或用于为所述设备端中的原有对象进行更新的数据,所述脚本包括针对所述扩展对象的指令、和/或针对所述原有对象的指令;所述动态加载所述交互包以实现与用户交互包括:根据所述交互包来控制一种或多种模态的对象,具体包括根据所述交互包来进行更新所述原有对象、添加所述扩展对象、对所述原有对象进行操作、对更新后的所述原有对象进行操作、或对所述扩展对象进行操作的一个或多个。

前述的多模态交互方法,所述交互包的信息包括所述交互包的地址;所述设备端接收并执行所述交互命令还包括:在进行所述动态加载所述交互包之前,根据所述交互包的地址获取所述交互包。

前述的多模态交互方法,至少一些所述交互命令包括版本号;在所述根据所述交互包的地址获取所述交互包的步骤之前,还包括:根据所述版本号来查找所述设备端之中是否已经存在相同版本号的所述交互包,如果不存在,则进行所述根据所述交互包的地址获取所述交互包。

前述的多模态交互方法,所述一个或多个设备端接收用户输入的一种或多种模态的交互请求,将所述交互请求发送至服务端包括:利用所述设备端的动态引擎接收用户输入的第一模态的交互请求,并通过交互引擎将所述第一模态的交互请求发送至所述服务端,或者利用所述设备端的交互sdk接收用户输入的第二模态的交互请求,并将所述第二模态的交互请求发送至所述服务端;所述根据所述交互请求生成一个或多个交互命令包括:所述服务端根据接收到的所述交互请求进行判断,若是所述第一模态的交互请求,则生成所述包括交互包或所述交互包的信息的交互命令作为第一交互命令,若是所述第二模态的交互请求,则生成包含供所述设备端的交互sdk进行交互输出的一种或多种模态的交互数据和/或所述交互数据的地址、以及一种或多种模态的指令的第二交互命令。

前述的多模态交互方法,所述设备端接收并执行所述交互命令还包括:对接收到的所述交互命令进行判断;若所述交互命令是所述第一交互命令、或所述交互命令之中具有关于所述第一模态的部分,则进行所述的动态加载所述交互包,具体包括:利用所述交互引擎获取并解压所述交互包、利用所述动态引擎动态加载并解析所述交互包、以及通过所述动态引擎调用所述设备端中的一种或多种模态引擎来操作对应模态的对象;若所述交互命令是所述第二交互命令、或所述交互命令之中具有关于所述第二模态的部分,则将所述第二交互命令或关于所述第二模态的部分分发给所述交互sdk,通过所述交互sdk调用所述设备端中的一种或多种模态引擎来执行所述第二交互命令以实现与用户交互。

前述的多模态交互方法,所述在所述将所述交互命令发送至所述设备端的步骤之前,还包括:将一个或多个所述交互命令整合为javascript对象简谱格式;所述将所述交互命令发送至所述设备端包括:将所述javascript对象简谱格式的交互命令发送至所述设备端。

前述的多模态交互方法,所述javascript对象简谱格式的交互命令包括:用于记录所述交互命令的模态类型的键字段以及用于记录所述交互命令的内容的值字段;其中,所述值字段包括以键值对形式记录的所述版本号、所述交互包的地址、所述交互数据和/或所述交互数据的地址的一个或多个。

本发明的目的还采用以下的技术方案来实现。依据本发明提出的用户端设备,包括:用户输入接收模块,用于接收用户输入的一种或多种模态的交互请求,将所述交互请求发送至服务器;交互命令执行模块,用于接收并执行由所述服务器发出的交互命令;其中,至少一些所述交互命令包括交互包或所述交互包的信息;其中,所述交互命令执行模块包括动态加载单元,用于动态加载所述交互包以实现与用户交互。

本发明的目的还可以采用以下的技术措施来进一步实现。

前述的用户端设备,所述交互包包括一个或多个基于第一语言的对象作为第一对象、和针对所述第一对象的指令;所述动态加载单元具体用于:采用动态加载方式、并采用桥接方式,根据所述第一对象和所述针对所述第一对象的指令来控制与所述第一对象桥接的第二对象;其中,所述第二对象是所述用户端设备本地的基于第二语言的对象。

前述的用户端设备,所述交互包包括对象数据和脚本,所述对象数据包括用于为所述用户端设备添加扩展对象的数据、和/或用于为所述用户端设备中的原有对象进行更新的数据,所述脚本包括针对所述扩展对象的指令、和/或针对所述原有对象的指令;所述动态加载单元具体用于:根据所述交互包来控制一种或多种模态的对象,具体包括根据所述交互包来进行更新所述原有对象、添加所述扩展对象、对所述原有对象进行操作、对更新后的所述原有对象进行操作、或对所述扩展对象进行操作的一个或多个。

前述的用户端设备,所述交互包的信息包括所述交互包的地址;所述交互命令执行模块还包括交互包获取单元,用于根据所述交互包的地址获取所述交互包。

前述的用户端设备,至少一些所述交互命令包括版本号;所述用户端设备还包括版本号判断单元,用于根据所述版本号来查找所述用户端设备之中是否已经存在相同版本号的所述交互包,如果不存在,则通知所述交互包获取单元进行所述根据所述交互包的地址获取所述交互包。

前述的用户端设备,所述用户输入接收模块包括第一模态输入接收单元和第二模态输入接收单元;所述第一模态输入接收单元用于利用动态引擎接收用户输入的第一模态的交互请求,并通过交互引擎将所述第一模态的交互请求发送至所述服务器,以供所述服务器根据所述第一模态的交互请求生成所述包括交互包或所述交互包的信息的交互命令作为第一交互命令;所述第二模态输入接收单元用于利用交互sdk接收用户输入的第二模态的交互请求,并将所述第二模态的交互请求发送至所述服务器,以供所述服务器根据所述第二模态的交互请求生成包含供所述用户端设备的交互sdk进行交互输出的一种或多种模态的交互数据和/或所述交互数据的地址、以及一种或多种模态的指令的第二交互命令;所述交互命令执行模块还包括交互命令接收单元,用于接收由所述服务器发出的所述交互命令,包括接收所述第一交互命令或所述第二交互命令。

前述的用户端设备,所述交互命令执行模块还包括:判断单元,用于对接收到的所述交互命令进行判断,若所述交互命令是所述第一交互命令、或所述交互命令之中具有关于所述第一模态的部分,则通知所述动态加载单元进行处理,若所述交互命令是所述第二交互命令、或所述交互命令之中具有关于所述第二模态的部分,则通知交互sdk执行单元进行处理;所述动态加载单元具体用于:利用所述交互引擎获取并解压所述交互包、利用所述动态引擎动态加载并解析所述交互包、以及通过所述动态引擎调用所述用户端设备中的一种或多种模态引擎来操作对应模态的对象;所述交互sdk执行单元用于:将所述第二交互命令或关于所述第二模态的部分分发给所述用户端设备的交互sdk,通过所述交互sdk调用所述用户端设备中的一种或多种模态引擎来执行所述第二交互命令以实现与用户交互。

前述的用户端设备,所述交互命令执行模块具体用于:接收并执行javascript对象简谱格式的交互命令;其中,所述javascript对象简谱格式的交互命令包括用于记录所述交互命令的模态类型的键字段以及用于记录所述交互命令的内容的值字段;所述值字段包括以键值对形式记录的所述版本号、所述交互包的地址、所述交互数据和/或所述交互数据的地址的一个或多个。

本发明的目的还采用以下的技术方案来实现。依据本发明提出的服务器,包括:交互请求接收模块,用于接收由一个或多个用户端设备发出的一种或多种模态的交互请求;交互命令生成模块,用于根据所述交互请求生成一个或多个交互命令;交互命令发送模块,用于将所述交互命令发送至所述用户端设备;其中,至少一些所述交互命令包括交互包或所述交互包的信息。

本发明的目的还可以采用以下的技术措施来进一步实现。

前述的服务器,所述交互包包括一个或多个基于第一语言的对象作为第一对象、和针对所述第一对象的指令;其中,所述第一对象是第二对象的桥接对象,所述第二对象是所述用户端设备本地的基于第二语言的对象。

前述的服务器,还包括交互包存储模块,用于接收由开发端上传的所述交互包,存储所述交互包。

前述的服务器,所述交互包包括对象数据和脚本,所述对象数据包括用于为所述用户端设备添加扩展对象的数据、和/或用于为所述用户端设备中的原有对象进行更新的数据,所述脚本包括针对所述扩展对象的指令、和/或针对所述原有对象的指令。

前述的服务器,所述交互请求接收模块具体用于:接收由所述用户端设备发出的第一模态的交互请求或第二模态的交互请求;其中,所述第一模态的交互请求是通过所述用户端设备的动态引擎而接收到的,所述第二模态请求是通过所述用户端设备的交互sdk而接收到的;所述交互命令生成模块包括第一交互命令生成单元、第二交互命令生成单元的一个或多个;所述第一交互命令生成单元用于根据所述第一模态请求,生成所述包括交互包或所述交互包的信息的交互命令作为第一交互命令;所述第二交互命令生成单元用于根据所述第二模态请求,生成包含供所述用户端设备的交互sdk进行交互输出的一种或多种模态的交互数据和/或所述交互数据的地址、以及一种或多种模态的指令的第二交互命令。

前述的服务器,还包括统一格式模块,用于将一个或多个所述交互命令整合为javascript对象简谱格式;所述交互命令发送模块具体用于将所述javascript对象简谱格式的交互命令发送至所述用户端设备;其中,所述javascript对象简谱格式的交互命令包括用于记录所述交互命令的模态类型的键字段以及用于记录所述交互命令的内容的值字段;所述值字段包括以键值对形式记录的所述版本号、所述交互包的地址、所述交互数据和/或所述交互数据的地址的一个或多个。

本发明的目的还采用以下的技术方案来实现。依据本发明提出的多模态交互系统,所述系统包括至少一个设备端和至少一个服务端,实现了前述的任意一项多模态交互方法。

本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提出的多模态交互方法、用户端设备、服务器及系统至少具有下列优点及有益效果:

(1)本发明通过利用javascript等动态引擎的动态加载技术,将本地开发的多模态交互包上传到服务端,下发到设备的指令是这个包的下载地址,设备可以从该下载地址下载多模态交互包,把动态加载的应用范围从设备端的交互方式拓展到设备端与服务端结合的交互方式,在多模态交互有纯本地和纯云端的两种方式的基础上,增加了本地开发云端部署的方式,同时具备本地和云端的优势;

(2)本发明的交互包是在本地开发环境开发,通过桥接方式与本地系统对接,从而能力的扩展不依赖于sdk的版本更新,便于扩展,升级成本低;

(3)本发明通过桥接方式,能够打通不同语言,打通不同语言的运行环境,使得由服务端下发的交互内容与设备端的本地体系对接;以gui为例,本发明能够使得由服务端下发的gui控件能够与多个设备端的多种本地控件体系对接,与本地控件体系风格统一;

(4)本发明通过利用交互包为设备端扩展对象或更新原有对象,能够扩展交互能力。

上述说明仅是本发明技术方案的概述,为了能更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。

附图说明

图1是现有的多模态交互方法的流程示意图;

图2是本发明一个实施例的多模态交互方法的流程框图;

图3是本发明另一实施例的多模态交互方法的流程示意图;

图4是本发明一个实施例的用户端设备的结构示意图;

图5是本发明一个实施例的服务器的结构示意图;

图6是本发明一个实施例的多模态交互系统的结构示意图。

具体实施方式

为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的多模态交互方法、用户端设备、服务器及系统的具体实施方式、结构、特征及其功效,详细说明如后。

本文的模态,也称为交互模态,包括语音模态、视频模态、显示模态等。

图1为现有的基于服务端的多模态交互方法的示意性流程图。请参阅图1,设备端的交互sdk获取用户输入,上传给服务端的技能服务;服务端的技能服务基于业务和场景进行统一决策处理,包括根据接收到的用户输入来请求语音、视频、显示等多种模态的服务进行语音识别、视频处理等相应处理,以分别得到语音流、视频流、图像、显示布局等数据,再对多种模态的服务所返回的这些数据进行统一处理,然后向设备端的交互引擎下发供设备端向用户输出的命令和数据;设备端的交互引擎解释命令,并分发给交互sdk;交互sdk调用设备端系统中的语音、视频、显示等引擎,与最终用户交互。

其中,交互系统、交互应用程序提供的与外界交互的能力称为交互能力、或称为技能。以音箱设备为例,传统音箱仅有接收按键操作这种模态的输入以及控制音频播放等交互能力;与传统音箱相比,智能音箱具备更多的能力,例如一般还具备接收语音模态的输入的能力、控制台灯等其他设备的能力等。

需注意,在图1所示的示例中,服务端下发的是固定协议。固定协议也称为静态协议,是指开发完成的诸如可执行程序、库等程序的内容、格式固定。固定协议规定的能力由设备端交互sdk能力决定。固定协议为了考虑通用性,很难发挥每种设备每种模态的本地特别能力,能力的扩展依赖于sdk的版本更新。

图2为本发明的多模态交互方法一个实施例的示意性流程框图。图3为本发明的多模态交互方法另一实施例的示意性流程图。请参阅图2和图3,本发明示例的多模态交互方法主要包括以下步骤:

步骤s11,一个或多个设备端接收用户输入的一种或多种模态的交互请求,将该交互请求发送至服务端。需注意,该交互请求是在人机交互的用户向系统进行输入的过程中传递的信号,因此该交互请求也称为交互输入,设备端也称为客户端。

步骤s12,服务端接收由设备端发出的交互请求,根据该交互请求生成一个或多个交互命令,将该交互命令发送至设备端,以供设备端根据该交互命令进行交互输出。需注意,该交互命令是在人机交互的系统向用户反馈的过程中传递的信号,因此该交互命令也称为交互输出。其中,交互命令中的至少一些包括交互包或交互包的信息。可选地,该交互包的信息包括交互包的下载地址。可选地,交互命令之中还包括用于记录该交互命令所对应的模态类型的字段。

步骤s13,设备端接收并执行由服务端发出的交互命令,以实现与用户交互。其中,设备端执行交互命令具体包括:动态加载交互包以实现与用户交互。

其中,动态加载的定义为,在程序运行的时候,计算机系统加载程序自身原本不存在的可执行文件并运行这些文件里的代码逻辑。可选地,利用动态引擎来动态加载交互包以实现与用户交互。可选地,该动态引擎通过调用设备端系统中的诸如语音引擎、视频引擎、gui引擎(图形用户界面引擎,也可称为显示引擎)等一种或多种模态引擎来实现与用户交互。

在本发明的一些实施例中,交互包包括脚本,该脚本包括下发至设备端的指令。需注意,本发明不限制交互包的编程语言,但一般是脚本语言,例如可以是javascript语言(简称js),或者也可以是lua语言。另外需注意,本发明不限制所具体使用的动态引擎的类型,但一般是与交互包的编程语言相对应的引擎。

需要说明的是,本发明示出的“交互包”与“交互sdk”是不同的。交互sdk是设备上执行交互指令的模块,是静态安装到设备里的。而本发明的交互包是交互内容,且是动态下发到设备中的。可以将交互包视为sdk的一部分扩展,比sdk的优势是动态加载动态更新。例如可以通过动态引擎来实现对交互包的动态加载和动态更新。为此,也可以将交互包称为sdk动态插件。

在一个可选示例中,交互包的编程语言是javascript语言,动态引擎是javascript引擎,则动态加载能力是javascript引擎动态运行javascript脚本的能力。事实上,现有的主流javascript引擎都具有这种能力。

可选地,客户端的输入是每个设备、每种模态单独处理的。所有输入上传到服务端,服务端进行统一决策处理以及打包分发设备端的输出。

本发明示例的多模态交互方法,通过利用动态加载技术来动态下发技能、应用,下发的不再是固定协议而是动态的协议,即下发的交互命令的格式、内容都不是固定的,进而通过动态下发交互包来扩展和更新交互能力。

在本发明的一些实施例中,交互包包括对象数据和脚本。进一步地,交互包还包括资源数据。该对象数据包括用于为设备端添加扩展对象的数据、和/或用于为设备端中的原有对象进行更新的数据。该脚本包括针对扩展对象的指令、和/或针对原有对象的指令。可选地,该脚本还包括针对动态引擎内置的对象指令以及诸如纯数学计算等的通用逻辑。前述步骤s13中的动态加载交互包包括:根据交互包来控制一种或多种模态的对象,具体包括根据交互包来进行更新原有对象、添加扩展对象、对原有对象进行操作、对更新后的原有对象进行操作、或对扩展对象进行操作的一个或多个。可选地,通过调用设备端中的与待操作的对象相对应的模态引擎来操作该对象。

本发明示例的多模态交互方法,通过利用交互包为设备端扩展对象或更新原有对象,能够扩展交互能力。

需注意,图3虽然仅示出了“语音引擎、视频引擎、显示引擎”,但还可以包括其他类型的模态引擎。事实上,在本发明的利用交互包添加扩展对象的实施例中,javascript引擎还可以调用与扩展对象相对应的引擎,来对该扩展对象进行操作。

在本发明的一些实施例中,交互命令中包含交互包的地址。前述的步骤s13还包括:在进行动态加载交互包之前,根据交互命令中的交互包的地址获取交互包。下发到设备的交互命令可以是交互包的下载地址、也可以是完整的交互包,但一般是交互包的下载地址,以便于节省流量。

可选地,利用设备端的交互引擎来接收和解释交互命令以及下载交互包。

在本发明的一些实施例中,至少一些交互命令包括版本号,该版本号用于表示交互包、交互命令、或协议格式的版本。在步骤s13中的根据交互包的地址下载交互包的步骤之前,本发明示例的多模态交互方法还包括:根据交互命令中的版本号来查找设备端本地之中是否已经存在相同版本号的交互包,如果不存在、或版本号不同,则进行前述的根据交互包的地址获取下载交互包。可选地,可以利用设备端的交互引擎来执行本步骤。本发明示例的多模态交互方法,通过在交互命令中添加版本号字段,便于后续修改或扩展协议,提高了兼容性。

在本发明的一些实施例中,交互包是基于第一语言的。并且前述的步骤s13具体包括:采用动态加载方式、并采用桥接方式,来执行该基于第一语言的交互包,用以根据该交互包来控制设备端本地的基于第二语言的对象,以实现与用户交互。具体地,可以利用支持动态加载和桥接的第一语言的引擎来实现本步骤。一般来说,第一语言的能力是由其引擎提供的,通过第一语言的引擎提供与本地的第二语言打通的能力,第一语言能够具备第二语言所具备的能力。在实际中,主流的javascript引擎都具有该桥接能力。

其中,桥接方式是一种既能把两个对象连接在一起,又能避免二者间的强耦合的方法,通过“桥”把彼此联系起来,同时又允许他们各自独立变化。而本发明示例的多模态交互方法,利用桥接方式实现了对象扩展,能够为对象扩展属性,直接调用本地方法。

进一步地,在本发明的一些实施例中,交互包包括一个或多个基于第一语言的对象作为第一对象、和针对第一对象的指令。可选地,该针对第一对象的指令也是基于第一语言的。可选地,交互包还包括资源数据。步骤s13中的动态加载交互包具体包括:采用动态加载方式、并采用桥接方式,根据第一对象和针对第一对象的指令,来控制与第一对象桥接的第二对象。其中,该第二对象是设备端本地的基于第二语言的对象。需注意,第一对象和第二对象可以是前述的原有对象,或者也可以是前述的扩展对象。

在一些示例中,由javascript引擎来实现在根据javascript脚本和桥接的javascript对象来控制基于本地语言的对象。具体是javascript引擎提供注册函数,javascript引擎的使用者注册javascript对象和本地对象的绑定关系。javascript引擎通过映射表维护所有绑定关系。其中,该使用者可以是设备端或多模态交互系统。

需注意,对于作为设备端本地对象的开发语言的第二语言,本发明不限制其类型,例如在第一语言是javascript的情形,第二语言可以是c++或java等。作为一个可选示例,以显示模态为例,前述的基于第一语言的对象是javascript对象,前述的设备端本地的基于第二语言的对象可以是设备端本地的基于c++或java语言的gui控件。

本发明示例的多模态交互方法,利用桥接方式能够打通不同语言,打通不同语言的运行环境,使得由服务端下发的交互内容与设备端的本地体系对接。以gui为例,本发明能够使得由服务端下发的gui控件能够与多个设备端的多种本地控件体系对接,与本地控件体系风格统一。

在本发明的一些实施例中,在步骤s11之前,本发明示例的多模态交互方法还包括:

步骤s21,预先在开发端进行开发,得到交互包,将该交互包发送至服务端。可选地,该开发端可以是诸如台式计算机、笔记本计算机的个人计算机(personalcomputer,简称为pc)等开发平台。

步骤s22,服务端接收由开发端上传的交互包,存储该交互包。可选地,可以通过将交互包发送至服务端的存储服务以进行存储。可选地,在第一语言是javascript的情形中,该存储服务具体是javascript脚本存储服务。

在本发明的一些实施例中,第二对象包括基于第二语言的一个或多个第二属性以及一个或多个第二方法。而前述的步骤s21具体包括:

步骤s31,通过桥接方式,根据第二属性映射得到对应的基于第一语言的属性作为第一属性,根据第二方法映射得到对应的基于第一语言的方法作为第一方法,以得到包含该第一属性和该第一方法的基于第一语言的第二对象的桥接对象作为第一对象;

步骤s32,将一个或多个桥接的第一对象、脚本、和资源数据进行打包以得到交互包。

在本发明的一些实施例中,例如在第二对象是新添加的扩展对象的情形中,先在开发端开发得到该第二对象,再进行前述的步骤s31和s32。

可选地,javascript脚本的交互包是完全由开发端生成的。服务端仅负责存储和转发,不需要利用服务端的语音服务、视频服务、显示服务等多种模态的服务来生成javascript脚本的交互包。

作为一个具体实施例,针对于显示模态和第一语言是javascript的情形,前述的第二对象是设备端本地的gui控件,前述的第一对象是与该gui控件桥接的javascript对象。在开发端开发gui控件,该gui控件包括布局属性、图片资源和文字资源等资源数据、以及交互方法。在开发端,通过桥接方式,将布局属性映射为同名的javascript对象属性、将交互方法映射为同名的javascript对象方法。再将该javascript对象属性和该javascript对象方法封装为javascript对象。然后,对一个或多个桥接的控件对象、资源数据和javascript脚本进行打包和压缩以得到javascript交互包。最后将该javascript交互包发送至服务端,并存储在该服务端。

本发明示例的多模态交互方法,通过预先开发桥接的对象,并在前述的步骤s13中利用具有动态加载动态更新能力和桥接能力的动态引擎来对该桥接的对象进行加载和执行,使得该第一语言也具备了第二语言所具备的能力。

在本发明的一些实施例中,如图3所示,交互引擎用于:获取交互包,解压得到对象数据、javascript脚本、和资源数据。javascript引擎用于:解析和执行javascript脚本。javascript脚本中如果有操作某一个模态的对象,则调用该模态引擎的方法。模态引擎是第二对象的执行器,第二对象是被其执行的内容。

在本发明的一些实施例中,可以同时对多种不同的模态进行不同方式的交互。

具体地,前述的步骤s11具体包括以下的一个或多个:

利用设备端的第一语言的动态引擎接收用户输入的第一模态的交互请求,并通过交互引擎将第一模态的交互请求发送至服务端;

利用设备端的交互sdk接收用户输入的第二模态的交互请求,并将第二模态的交互请求发送至服务端。

可选地,动态引擎为开发者提供注册监听机制,由开发者决定哪些输入要由动态引擎处理。例如,可以基于场景或基于交互模态种类,来选择由动态引擎处理的用户输入。

前述的步骤s12中的服务端根据交互请求生成一个或多个交互命令的步骤具体包括:

服务端根据接收到的交互请求进行判断;

若接收到的是第一模态的交互请求,则生成供设备端通过动态引擎进行交互输出的前述的包括交互包或该交互包的信息的交互命令,作为第一交互命令;可选地,根据第一模态的交互请求并通过请求前述的存储服务来生成该第一交互命令;

若接收到的是第二模态的交互请求,则生成第二交互命令,其中,该第二交互命令包含供设备端通过交互sdk进行交互输出的一种或多种交互数据和/或交互数据的地址、以及一种或多种模态的指令;可选地,根据第二模态的交互请求并通过技能服务来请求语音、视频、显示等一种或多种模态服务,来得到语音流、视频流、图像、显示布局等一种或多种交互数据,以得到该第二交互命令。可选地,该第二交互命令是基于固定协议的交互命令。

进一步地,前述的步骤s13还包括:

设备端对接收到的交互命令进行判断,包括判断接收到的交互命令是第一交互命令还是第二交互命令,或者判断接收到的交互命令之中是否有关于第一模态的部分、或是否有关于第二模态的部分;可选地,可以利用设备端的交互引擎来进行该判断;

若接收到的交互命令是第一交互命令、或接收到的交互命令之中具有关于第一模态的部分,则进行前述的根据交互包的地址下载交互包到本地,利用动态引擎来动态加载交互包以实现与用户交互,具体包括:利用设备端的交互引擎获取并解压交互包、利用设备端的动态引擎动态加载并解析交互包、以及通过动态引擎调用设备端中的一种或多种模态引擎来操作对应模态的对象;

若接收到的交互命令是第二交互命令、或接收到的交互命令之中具有关于第二模态的部分,则将该第二交互命令或该关于第二模态的部分分发给设备端的交互sdk,通过该交互sdk调用设备端系统中的诸如语音引擎、视频引擎、gui引擎(图形用户界面引擎,也可称为显示引擎)等一种或多种模态引擎来执行第二交互命令以实现与用户交互。

在本发明的一些实施例中,在前述的步骤s12中的将交互命令发送至设备端的步骤之前,还包括:服务端将一个或多个交互命令整合为统一格式的交互命令。可选地,将关于一种或多种模态的一个或多个交互命令、或将第一交互命令和第二交互命令,整合为统一格式的交互命令。而步骤s12中的将交互命令发送至设备端具体包括:将整合得到的统一格式的交互命令发送至设备端。作为一个可选实施例,该统一格式是javascript对象简谱(javascriptobjectnotation,简称为json)格式。具体地,javascript对象简谱格式的交互命令是键值对形式的(或称为key-value形式),包括用于记录交互命令的模态类型的键字段以及用于记录交互命令的内容的值字段。进一步地,该值字段包括以键值对形式记录的:版本号、交互包的地址、交互数据和/或交互数据的地址的一个或多个。

需注意,json是一种公认的标准数据格式,c++、java、lua等绝大部分编程语言都支持json,而且json的解析库也很多,c++、java都有很多流行的json库,便于交互引擎实现。

作为一个具体示例,本发明提出的一种json标准格式的交互命令,如下:

{

"type":data,

"type":data,

……

}。

其中,"type":data是一个键值对,用于表示一个交互命令。其中的type是键字段,用于记录交互命令的模态类型(交互模态的名称),例如语音模态、视频模态、显示模态等。可选地,type是字符串格式。data是值字段,用于记录交互需要的数据。可选地,data也是json格式,包括一个或多个键值对,data中的一个键值对用于记录一个数据的类型和具体取值。

比如,一种关于显示模态的交互命令的格式为:

其中,display字段是这条命令的键字段,表示正在处理显示命令。方括号“[]”之中内容的都是这条命令的值字段。整个命令的值字段又包括多个键值对:version这个键值对表示版本号;width这个键值对是显示宽度,height这个键值对是显示高度,这是为了方便设备端显示系统做屏幕布局的适配;url这个键值对是gui交互包的下载地址。

又比如,一种关于语音模态的交互命令的格式为:

其中,voice字段表示正在处理语音命令;version键值对表示版本号;text键值对是语音文本;url键值对是语音文件的下载地址。需注意,该语音文件与该语音文本是不同的,语音文本是用于记录语音流的内容的文本,语音文件是语音文本的语音流。

需注意,在前述示例中,关于显示模态的交互命令是前述的第一交互命令,其中记录了交互包的下载地址;关于语音模态的交互命令是前述的第二交互命令,其中记录的是交互数据的具体内容或交互数据的地址。

本发明示例的多模态交互方法,通过将交互命令整合为json格式,便于扩展模态、扩展交互需要的数据。

需注意,将交互命令整合为json格式仅是本发明的一种较优实施例,本发明并非必须包括对交互命令进行整合的步骤,而整合的格式也并非必须是json格式。例如也可以用固定的命令值来实现:例如利用固定的整数来表示设备进行不同功能,比如1代表播放播放音乐、2代表亮灯等。

需注意,本发明不限制设备端和服务端的类型。可选地,前述的服务端是服务器。前述的设备端是用户端设备,包括智能手机、智能音箱、机顶盒、智能眼镜、智能手表、移动电脑等具有多模态交互的产品。

可选地,本发明提出的多模态交互方法可以利用应用程序(application,简称为app)等软件来实施。设备端和服务端安装有用于实现本发明提出的多模态交互方法的软件,从而能够利用该设备端和服务端来实现前述实施例所示的各个步骤。

在本发明的一些实施例中,可以利用web方式实现gui模态的交互。具体地,本发明通过在交互sdk中嵌入webview(网络视图)来实现交互。其中,该webview可以看作是页面浏览器。

需注意,web页面(也称为网页)一般由html+css语言构成,页面浏览器是展示web页面的引擎。html语言支持用<script>标签嵌入javascript语言脚本。javascript脚本运行在浏览器沙箱中,能够通过操作浏览器内置的javascript对象来访问浏览器提供的能力,比如操作窗口。

图4为本发明一个实施例提供的用户端设备100的示意性结构图。该用户端设备100可以是智能手机、智能音箱、机顶盒、智能眼镜、智能手表、移动电脑等具有多模态交互的产品。图5为本发明一个实施例提供的服务器200的示意性结构图。

请参阅图4和图5,在一些实施例中,本发明示例的用户端设备100主要包括用户输入接收模块110和交互命令执行模块120。

其中,用户输入接收模块110用于接收用户输入的一种或多种模态的交互请求,将该交互请求发送至服务器200。

交互命令执行模块120用于接收并执行由服务器200发出的交互命令。其中,至少一些交互命令包括交互包或交互包的信息。

进一步地,该交互命令执行模块120包括动态加载单元(图中未示出)。该动态加载单元用于动态加载交互包以实现与用户交互。

在本发明的一些实施例中,交互包包括对象数据和脚本。进一步地,交互包还包括资源数据。该对象数据包括用于为用户端设备100添加扩展对象的数据、和/或用于为用户端设备100中的原有对象进行更新的数据。该脚本包括针对扩展对象的指令、和/或针对原有对象的指令。可选地,该脚本还包括针对动态引擎内置的对象指令以及诸如纯数学计算等的通用逻辑。前述的动态加载单元具体用于:根据交互包来控制一种或多种模态的对象,具体包括根据交互包来进行更新原有对象、添加扩展对象、对原有对象进行操作、对更新后的原有对象进行操作、或对扩展对象进行操作的一个或多个。可选地,通过调用用户端设备100中的与待操作的对象相对应的模态引擎来操作该对象。

在本发明的一些实施例中,前述的交互包的信息包括交互包的地址。交互命令执行模块120还包括交互包获取单元,用于根据交互包的地址获取交互包。

在本发明的一些实施例中,至少一些交互命令包括版本号。用户端设备100还包括版本号判断单元,用于:根据版本号来查找用户端设备100之中是否已经存在相同版本号的交互包,如果不存在、或版本号不同,则通知前述的交互包获取单元进行根据交互包的地址获取交互包。

在本发明的一些实施例中,交互包是基于第一语言的。前述的动态加载单元具体用于:利用动态引擎,采用动态加载方式、并采用桥接方式,来执行交互包,用以根据该交互包来控制用户端设备100本地的基于第二语言的对象。其中,该动态引擎是支持动态加载和桥接的第一语言的引擎。

进一步地,在本发明的一些实施例中,交互包包括一个或多个基于第一语言的对象作为第一对象、和针对第一对象的指令。可选地,该针对第一对象的指令也是基于第一语言的。可选地,交互包还包括资源数据。前述的动态加载单元具体用于:采用动态加载方式、并采用桥接方式,根据第一对象和针对第一对象的指令,来控制与该第一对象桥接的第二对象。其中,第二对象是用户端设备100本地的基于第二语言的对象。

在本发明的一些实施例中,用户输入接收模块110包括第一模态输入接收单元和第二模态输入接收单元。该第一模态输入接收单元用于:利用动态引擎接收用户输入的第一模态的交互请求,并通过交互引擎将该第一模态的交互请求发送至服务器200,以供服务器200根据该第一模态的交互请求生成前述的包括交互包或交互包的信息的交互命令,作为第一交互命令。该第二模态输入接收单元用于:利用交互sdk接收用户输入的第二模态的交互请求,并将该第二模态的交互请求发送至服务器200,以供服务器200根据该第二模态的交互请求生成第二交互命令。其中,该第二交互命令包含供用户端设备100的交互sdk进行交互输出的一种或多种模态的交互数据和/或交互数据的地址、以及一种或多种模态的指令。交互命令执行模块120还包括交互命令接收单元,用于:接收由服务器200发出的交互命令,包括接收前述的第一交互命令或第二交互命令。

在本发明的一些实施例中,交互命令执行模块120还包括判断单元和交互sdk执行单元。

该判断单元用于:对接收到的交互命令进行判断,具体包括判断接收到的交互命令是第一交互命令还是第二交互命令、或判断接收到的交互命令之中是否有关于第一模态的部分或是否有关于第二模态的部分;若接收到的交互命令是第一交互命令、或交互命令之中具有关于第一模态的部分,则通知交互包获取单元和/或动态加载单元进行处理;若接收到的交互命令是第二交互命令、或交互命令之中具有关于第二模态的部分,则通知交互sdk执行单元进行处理。

在本发明的一些实施例中,交互包获取单元具体用于:利用用户端设备100的交互引擎获取并解压交互包。动态加载单元具体用于:利用用户端设备100的动态引擎动态加载并解析交互包,以及通过动态引擎调用用户端设备100中的一种或多种模态引擎来操作对应模态的对象。

该交互sdk执行单元用于:将第二交互命令或关于第二模态的部分分发给用户端设备100的交互sdk,通过交互sdk调用用户端设备100中的一种或多种模态引擎来执行第二交互命令以实现与用户交互。

在本发明的一些实施例中,交互命令执行模块120具体用于:接收、解释并执行javascript对象简谱格式的交互命令。

作为一个可选实施例,javascript对象简谱格式的交互命令包括:用于记录交互命令的模态类型的键字段以及用于记录交互命令的内容的值字段。其中,该值字段包括以键值对形式记录的版本号、交互包的地址、交互数据和/或交互数据的地址的一个或多个。

请参阅图4和图5,在一些实施例中,本发明示例的服务器200主要包括交互请求接收模块210、交互命令生成模块220和交互命令发送模块230。

其中,交互请求接收模块210用于接收由一个或多个用户端设备100发出的一种或多种模态的交互请求。

交互命令生成模块220用于根据交互请求生成一个或多个交互命令。其中,至少一些交互命令包括交互包或交互包的信息。可选地,该交互包的信息包括交互包的下载地址。

交互命令发送模块230用于将交互命令发送至用户端设备100。

在本发明的一些实施例中,交互包包括对象数据和脚本。进一步地,交互包还包括资源数据。该对象数据包括用于为用户端设备100添加扩展对象的数据、和/或用于为用户端设备100中的原有对象进行更新的数据。该脚本包括针对扩展对象的指令、和/或针对原有对象的指令。可选地,该脚本还包括针对动态引擎内置的对象指令以及诸如纯数学计算等的通用逻辑。

在本发明的一些实施例中,至少一些交互命令包括版本号。

在本发明的一些实施例中,服务器200还包括交互包存储模块。该交互包存储模块也称为存储服务,用于接收由开发端上传的交互包,存储交互包。

在本发明的一些实施例中,交互包是基于第一语言的,包括一个或多个基于第一语言的对象作为第一对象、和针对第一对象的指令。可选地,该针对第一对象的指令也是基于第一语言的。其中,该第一对象是第二对象的桥接对象。该第二对象是用户端设备100本地的基于第二语言的对象。

在本发明的一些实施例中,交互请求接收模块210具体用于:接收由用户端设备100发出的第一模态的交互请求或第二模态的交互请求。其中,第一模态的交互请求是通过用户端设备100的动态引擎而接收到的用户输入的交互请求,第二模态请求是通过用户端设备100的交互sdk而接收到的用户输入的交互请求。

交互命令生成模块220包括第一交互命令生成单元、第二交互命令生成单元的一个或多个。该第一交互命令生成单元用于根据第一模态请求生成前述的包括交互包或交互包的信息的交互命令作为第一交互命令。该第二交互命令生成单元用于根据第二模态请求生成第二交互命令。其中,该第二交互命令包含供用户端设备100的交互sdk进行交互输出的一种或多种模态的交互数据和/或交互数据的地址、以及一种或多种模态的指令。

在本发明的一些实施例中,服务器200还包括统一格式模块。该统一格式模块用于:将一个或多个交互命令整合为统一格式的交互命令。可选地,将关于一种或多种模态的一个或多个交互命令、或将第一交互命令和第二交互命令,整合为统一格式的交互命令。作为一个可选实施例,该统一格式是javascript对象简谱格式。交互命令发送模块230具体用于将统一格式的交互命令发送至用户端设备100。

作为一个可选实施例,javascript对象简谱格式的交互命令包括:用于记录交互命令的模态类型的键字段以及用于记录交互命令的内容的值字段。其中,该值字段包括以键值对形式记录的版本号、交互包的地址、交互数据和/或交互数据的地址的一个或多个。

图6为本发明的多模态交互系统300一个实施例的示意性结构图。请参阅图6,本发明示例的多模态交互系统300,主要包括至少一个设备端和至少一个服务端,实现了前述的任意一个实施例所示的多模态交互方法。

以上所述,仅是本发明的较佳实施例而已,并非对本发明做任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

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