发明内容
针对上述问题,本申请提供了一种脚本执行方法、装置、电子设备及存储介质,有利于提高预配置场景脚本运行的成功率,提升用户体验。
为实现上述目的,本申请实施例第一方面提供了一种脚本执行方法,应用于客户端,该方法包括:
获取用户的语音信息;
根据所述语音信息确定当前场景;
向服务端发送脚本获取请求;所述脚本获取请求包括实现所述当前场景的至少一个目标应用程序的名称和标识,用于请求服务端根据所述目标应用程序的名称和标识检测是否存在与所述当前场景对应的第一场景脚本;
接收服务端返回的所述第一场景脚本,解析并运行所述第一场景脚本。
在第一方面的一种实施方式中,所述方法还包括:
在服务端不存在所述第一场景脚本的情况下,对用户操作所述目标应用程序实现所述当前场景进行录制,以生成所述当前场景对应的第二场景脚本;
向服务端上传所述第二场景脚本,使得服务端将所述第二场景脚本与所述目标应用程序的名称和标识关联存储。
在第一方面的另一种实施方式中,所述对用户操作所述目标应用程序实现所述当前场景进行录制,以生成所述当前场景对应的第二场景脚本,包括:
获取所述当前场景对应的预设脚本模板;所述预设脚本模板包括用户操作所述目标应用程序实现所述当前场景的待录制内容;
对所述待录制内容进行录制,得到所述第二场景脚本。
在第一方面的另一种实施方式中,所述待录制内容包括用户在所述目标应用程序的操作界面的触发事件、所述触发事件的触发时间、所述触发事件的类型、触发位置的坐标、触发的控件的类型以及该控件所在的视图的层级关系中的一项或多项;
所述对所述待录制内容进行录制,得到所述第二场景脚本,包括:
针对用户操作所述目标应用程序实现所述当前场景的每个操作界面,对所述每个操作界面的所述触发事件、所述触发时间、所述触发事件的类型、所述触发位置的坐标、所述控件的类型以及所述层级关系中的一项或多项进行录制,并对所述每个操作界面的操作顺序进行记录,得到所述第二场景脚本。
在第一方面的另一种实施方式中,在向服务端发送脚本获取请求之前,所述方法还包括:
检测本地是否存在实现所述当前场景的多个应用程序;
若是则获取所述多个应用程序中每个应用程序的优先级;
根据所述每个应用程序的优先级从所述多个应用程序中确定出所述目标应用程序。
在第一方面的另一种实施方式中,所述解析并运行所述第一场景脚本,包括:
对所述第一场景脚本进行逆向解析,得到解析后的所述第一场景脚本;
根据所述触发时间、所述触发事件的类型、所述触发位置的坐标、所述控件的类型以及所述层级关系中的一项或多项,确定所述每个操作界面的待执行触发事件;
根据所述触发时间获取每两个相邻的所述待执行触发事件之间的时间差;
按照所述操作顺序和所述时间差,执行所述每个操作界面的所述待执行触发事件,以完成解析后的所述第一场景脚本的运行。
在第一方面的另一种实施方式中,所述根据所述语音信息确定当前场景,包括:
对所述语音信息进行识别,得到语音识别结果;
基于所述语音识别结果进行意图识别和槽位填充,以确定所述当前场景。
在第一方面的另一种实施方式中,所述对所述语音信息进行识别,得到语音识别结果,包括:
对所述语音信息进行人声提取,得到M段人声语音信息;M为大于1的整数;
获取所述M段人声语音信息的特征序列,得到M段特征序列;
根据所述M段特征序列生成第一特征序列;
从所述第一特征序列中分别截取出P1段目标特征子序列和P2个目标特征;P1和P2为大于1的整数;
计算所述P1段目标特征子序列中每个目标特征和所述P2个目标特征之间的相似度,得到所述每个目标特征的P2个相似度;
基于所述每个目标特征的P2个相似度获取所述P1段目标特征子序列中每段目标特征子序列的更新特征子序列;
根据所述更新特征子序列生成第二特征序列;
将所述第二特征序列与语料库中存储的多条文本对应的特征序列进行匹配,得到所述语音识别结果;所述语料库用于存储所述多条文本及所述多条文本中每条文本对应的特征序列。
在第一方面的另一种实施方式中,所述基于所述每个目标特征的P2个相似度获取所述P1段目标特征子序列中每段目标特征子序列的更新特征子序列,包括:
对所述每个目标特征的P2个相似度进行归一化,得到所述每个目标特征的P2个权重;
基于所述每个目标特征以及所述每个目标特征的P2个权重计算得到所述每个目标特征的P2个输出特征;
对所述每个目标特征的P2个输出特征进行求和,得到所述每个目标特征的更新特征,由所述每个目标特征的更新特征组成所述更新特征子序列。
本申请实施例第二方面提供了一种脚本执行装置,该装置包括:
语音获取模块,用于获取用户的语音信息;
场景确定模块,用于根据所述语音信息确定当前场景;
场景脚本请求模块,用于向服务端发送脚本获取请求;所述脚本获取请求包括实现所述当前场景的至少一个目标应用程序的名称和标识,用于请求服务端根据所述目标应用程序的名称和标识检测是否存在与所述当前场景对应的第一场景脚本;
场景脚本执行模块,用于接收服务端返回的所述第一场景脚本,解析并运行所述第一场景脚本。
本申请实施例第三方面提供了一种电子设备,该电子设备包括输入设备和输出设备,还包括处理器,适于实现一条或多条指令;以及,计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如下步骤:
获取用户的语音信息;
根据所述语音信息确定当前场景;
向服务端发送脚本获取请求;所述脚本获取请求包括实现所述当前场景的至少一个目标应用程序的名称和标识,用于请求服务端根据所述目标应用程序的名称和标识检测是否存在与所述当前场景对应的第一场景脚本;
接收服务端返回的所述第一场景脚本,解析并运行所述第一场景脚本。
本申请实施例第四方面提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如下步骤:
获取用户的语音信息;
根据所述语音信息确定当前场景;
向服务端发送脚本获取请求;所述脚本获取请求包括实现所述当前场景的至少一个目标应用程序的名称和标识,用于请求服务端根据所述目标应用程序的名称和标识检测是否存在与所述当前场景对应的第一场景脚本;
接收服务端返回的所述第一场景脚本,解析并运行所述第一场景脚本。
本申请的上述方案至少包括以下有益效果:与现有技术相比,本申请实施例通过获取用户的语音信息;根据所述语音信息确定当前场景;向服务端发送脚本获取请求;所述脚本获取请求包括实现所述当前场景的至少一个目标应用程序的名称和标识,用于请求服务端根据所述目标应用程序的名称和标识检测是否存在与所述当前场景对应的第一场景脚本;接收服务端返回的所述第一场景脚本,解析并运行所述第一场景脚本。这样采用目标应用程序的名称和标识请求服务端检测是否存在与当前场景对应的第一场景脚本,若存在则直接获取并运行第一场景脚本,以完成用户需要实现的当前场景,有利于客户端运行与目标应用程序对应的预配置场景脚本,从而提高预配置场景脚本运行的成功率,以满足用户需求、提升用户体验。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请说明书、权利要求书和附图中出现的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同的对象,而并非用于描述特定的顺序。
本申请实施例提供一种脚本执行方法,可基于图1所示的网络***架构实施,如图1所示,该网络***架构包括服务端以及至少一个客户端,客户端通过有线或无线网络与服务端连接。其中,客户端至少包括通信模块、处理模块、显示模块和语音输入模块,服务端端至少包括通信模块和处理模块,客户端和服务端的通信模块均设置数据协议接口,基于该数据协议接口进行通信。具体的,用户发出用于实现当前场景的语音信息,例如:“帮我买一杯咖啡送到公司”,客户端的语音输入模块会获取到该语音信息,并通过处理模块对该语音信息进行语音识别、语义解析、意图识别等操作,以确定用户想要实现的场景,然后通过通信模块与服务端交互以使服务端检测是否存储有与当前场景对应的场景脚本,场景脚本是指可实现某些特定场景的程序指令,服务端基于客户端提交的请求进行查找,若服务端存在相应场景脚本,则服务端通过通信模块将当前场景对应的场景脚本下发给客户端,客户端对其进行解析、安装以及运行,自动完成用户需要实现的当前场景,例如:打开某订餐应用程序-选择某外卖商家-下单购买咖啡-选择收货地址为公司-支付提交。可选的,若服务端未检测到当前场景对应的场景脚本,则客户端可对当前场景的实现进行模拟、录制,以生成当前场景对应的场景脚本,并将生成的场景脚本发送至服务端进行存储,使得后续在实现该当前场景时,客户端可以运行适配的场景脚本。可选的,服务端可以是云端,客户端可以是安装于手机、可穿戴设备、车载终端等上的应用程序客户端,也可以指代手机、可穿戴设备、车载终端等设备。
基于图1所示的网络***,以下结合其他附图对本申请实施例提供的脚本执行方法进行详细阐述。
请参加图2,图2为本申请实施例提供的一种脚本执行方法的流程示意图,该方法应用于客户端,如图2所示,包括步骤S21-S24:
S21,获取用户的语音信息;
S22,根据所述语音信息确定当前场景;
本申请具体实施例中,用户可以唤醒终端设备,然后进行语音信息的输入,也可以不用唤醒终端设备,直接进行语音信息的输入,例如:在驾驶车辆时,直接对车载终端说“播放某某的A歌曲”。客户端在获取到用户的语音信息后,可对该语音信息进行识别,得到语音识别结果,然后基于语音识别结果进行意图识别和槽位填充,以确定当前场景,即确定用户想要实现什么目的,可选的,此处可采用ASR(Automatic Speech Recognition,自动语音识别)技术对用户的语音信息进行识别,将语音信息识别为文本信息,然后采用NLU(NaturalLanguageUnderstanding,自然语言理解)对语音识别结果进行意图识别和槽位填充,NLU对输入的文本信息进行文本分类以识别意图,通过序列标注进行槽位填充,其中,意图识别和槽位填充可以作为单独的任务进行处理,也可以作为联合任务处理,此处不作限定。
S23,向服务端发送脚本获取请求;所述脚本获取请求包括实现所述当前场景的至少一个目标应用程序的名称和标识,用于请求服务端根据所述目标应用程序的名称和标识检测是否存在与所述当前场景对应的第一场景脚本;
本申请具体实施例中,第一场景脚本是指预先已经生成并存储在服务端的当前场景对应的场景脚本。在确定当前场景后,客户端可先确定实现当前场景所需用到的目标应用程序,该目标应用程序可以是一个,也可以是多个,例如:“帮我买一杯咖啡送到公司”这一当前场景需要用到订餐类应用程序实现,则客户端可根据预先建立的场景与实现该场景的应用程序的映射关系确定目标应用程序,然后确定该目标应用程序的名称以及标识,将其名称和标识携带在脚本获取请求中发送给服务端,由服务端进行第一场景脚本的查找。
场景与实现该场景的应用程序的映射关系可如表1所示,在当前场景需要多个目标应用程序实现时,脚本获取请求中应包括该多个目标应用程序中每个目标应用程序的名称和标识,如表1中“分享淘宝链接给微信好友”这一场景需要淘宝、微信两个目标应用程序来实现,当然,表1仅仅是一种示例,并不对本申请造成限定。
场景 |
应用程序 |
买零食 |
良品铺子 |
订酒店 |
携程 |
… |
… |
买咖啡 |
美团 |
分享淘宝链接给微信好友 |
淘宝+微信 |
表1
由于服务端是将多个应用程序的名称和标识以及该名称和标识对应的场景脚本关联存储,因此,服务端如果能查找到目标应用程序的名称+标识,则说明存在当前场景对应的第一场景脚本。可选的,目标应用程序的标识可以是目标应用程序的版本号,例如:版本7.0.12、版本7.0.13等,服务端采用名称+版本号与场景脚本关联存储,可以保证终端上当前安装的应用程序在服务端只存在唯一对应的场景脚本,这样可以避免应用程序在更新版本后由于操作界面的调整而导致客户端获取到不对应的场景脚本,以至于运行出错。
S24,接收服务端返回的所述第一场景脚本,解析并运行所述第一场景脚本。
本申请具体实施例中,若服务端存在上述当前场景对应的第一场景脚本,则服务端将该第一场景脚本返回给客户端,客户端对其进行逆向解析,并运行该第一场景脚本,以实现当前场景,例如:打开某音乐播放器-搜索某某的某歌曲-播放。
在一种可能的实施方式中,所述方法还包括:
接收服务端针对所述脚本获取请求返回的响应消息;所述响应消息用于指示服务端不存在所述第一场景脚本;
在服务端不存在所述第一场景脚本的情况下,对用户操作所述目标应用程序实现所述当前场景进行录制,以生成所述当前场景对应的第二场景脚本;
向服务端上传所述第二场景脚本,使得服务端将所述第二场景脚本与所述目标应用程序的名称和标识关联存储。
其中,第二场景脚本是指对用户操作目标应用程序实现当前场景进行模拟录制后生成的场景脚本。若服务端不存在第一场景脚本,则服务端向客户端返回不存在第一场景脚本的响应消息,客户端在收到该响应消息的情况下,用户可手动操作目标应用程序来实现当前场景,比如手动操作美团购买咖啡,客户端可对用户操作目标应用程序的整个过程进行录制,也可通过调用第三方录制工具对用户操作目标应用程序的整个过程进行录制,以生成第二场景脚本,并将第二场景脚本、目标应用程序的名称和标识上传至服务端进行存储。该实施方式中,当服务端不存在当前场景对应的第一场景时,可通过对操作目标应用程序实现当前场景的过程进行录制,以生成第二场景脚本,将第二场景脚本上传至服务端进行存储,以丰富服务端存储的场景脚本,可有效避免用户在实现某个场景时,服务端却找不到相应的场景脚本。
在一种可能的实施方式中,所述对用户操作所述目标应用程序实现所述当前场景进行录制,以生成所述当前场景对应的第二场景脚本,包括:
获取所述当前场景对应的预设脚本模板;所述预设脚本模板包括用户操作所述目标应用程序实现所述当前场景的待录制内容;
对所述待录制内容进行录制,得到所述第二场景脚本。
具体的,在对用户操作所述目标应用程序实现所述当前场景进行录制时,需要确定当前场景对应的预设脚本模板,预设脚本模板定义了用户操作目标应用程序实现当前场景的待录制内容,该待录制内容包括用户在目标应用程序的操作界面的触发事件、触发事件的触发时间、发事件的类型、触发位置的坐标、触发的控件的类型以及该控件所在的视图的层级关系。其中,触发事件的类型包括但不限于点击、滑动,控件的类型包括但不限于按钮、文本显示类控件。针对用户操作目标应用程序实现当前场景的每个操作界面,对每个操作界面上的触发事件、触发事件的触发时间、触发事件的类型、触发位置的坐标、触发的控件的类型以及该控件在整个操作界面视图的层级关系进行录制,并对每个操作界面的操作顺序进行记录,得到所述第二场景脚本。
举例说明,若当前场景是拍照,则目标应用程序可以是“相机”,如图3A所示,终端当前处于桌面主页,用户点击相机这一目标应用程序,进入到相机的拍照操作界面,如图3B所示,客户端监测到目标应用程序被打开,便可开展录制操作,如图3C所示,当用户在拍照的操作界面点击了拍照的按钮,则客户端会记录下用户触发的事件,即点击拍照按钮这一事件,并且记录下点击拍照按钮的时间、事件类型(即点击)、点击的位置的坐标、点击的控件(即拍照按钮)以及该按钮在整个拍照操作界面的层级关系中的一项或多项,该一项或多项中至少应包括触发时间,由此完成一个操作界面上一个触发事件的录制,同理,当一个操作界面上存在多个触发事件时,亦是按照上述待录制内容完成录制。请继续参见图3D,图3D是用户点击拍照按钮之后进入的下一个操作界面,当用户在该操作界面点击“保存”这一文本显示控件时,客户端同样会录制下该触发事件的触发时间、事件类型等待录制内容,保存照片之后,目标应用程序回到图3C所示的拍照操作界面,如图3E所示,当用户在该界面点击左下角的返回按钮(同样录制下该触发事件),退出目标应用程序,回到图3A所示的桌面主页,即完成拍照这一当前场景,从图3B的拍照操作界面到点击返回按钮便是每个操作界面的操作顺序。可以理解的,当触发事件为滑动时,还需录制下滑动的轨迹,此时触发位置的坐标即滑动轨迹的起点的坐标和终端的坐标,当用户点击了文本显示控件时,还需录制下文本显示控件上的文字,比如上述的“保存”。该实施方式中,通过对目标应用程序多个操作界面、多个操作界面中每个操作界面上的待录制内容进行记录和学习,有利于保证及时对服务端存储的场景脚本进行丰富和更新,可有效避免后期运行时出错的情况。
在一种可能的实施方式中,在向服务端发送脚本获取请求之前,所述方法还包括:
检测本地是否存在实现所述当前场景的多个应用程序;
若是则获取所述多个应用程序中每个应用程序的优先级;
根据所述每个应用程序的优先级从所述多个应用程序中确定出所述目标应用程序。
具体的,终端上可能存在实现当前场景的多个应用程序,比如当前场景为订外卖,可能存在美团、饿了么、百度外卖等多个同类应用程序可实现当前场景,则可根据这多个应用程序中每个应用程序的优先级确定出目标应用程序,可选的,多个应用程序中每个应用程序的优先级可以是用户自己设置的,例如:用户习惯用美团订外卖,则可将美团设为订外卖的首选应用程序。可选的,多个应用程序中每个应用程序的优先级可以是客户端根据用户的行为习惯计算出的,如表2所示,客户端可以检索出用户在一段时间内使用这多个应用程序订外卖的频次,将这多个应用程序中使用频次最高或使用频次大于等于预设值的应用程序确定为目标应用程序,其中,该一段时间可自定义。该实施方式中,当存在多个可实现当前场景的应用程序时,根据每个应用程序的优先级确定出目标应用程序,可提升用户体验。
表2
在一种可能的实施方式中,所述解析并运行所述第一场景脚本,包括:
对所述第一场景脚本进行逆向解析,得到解析后的所述第一场景脚本;
根据所述触发时间、所述触发事件的类型、所述触发位置的坐标、所述控件的类型以及所述层级关系中的一项或多项,确定所述每个操作界面的待执行触发事件;
根据所述触发时间获取每两个相邻的所述待执行触发事件之间的时间差;
按照所述操作顺序和所述时间差,执行所述每个操作界面的所述待执行触发事件,以完成解析后的所述第一场景脚本的运行。
具体的,待执行触发事件即录制第二场景脚本时的触发事件,由上述录制第二场景脚本的实施方式可得知,在解析第一场景脚本后,其运行的具体内容就是录制第二场景脚本时所记录的一项或多项内容。继续以图3B进行说明,在拍照这个当前场景中,假设当前运行的是拍照的操作界面上的触发事件,则客户端可根据第一场景脚本中记录的点击拍照按钮的时间、该事件的类型、点击位置的坐标等一项或多项确定当前的待执行触发事件就是点击拍照按钮。并且,可根据所有触发事件中每两个相邻触发事件的触发时间计算得到该每两个相邻待执行触发事件之间的时间差,比如说图3B这一操作界面上存在两个触发事件,那么就有两个待执行触发事件,第一个待执行触发事件的触发时间是10:25,第二个待执行触发事件的触发时间是10:27,那么客户端会计算出这两个相邻触发事件之间的时间差为2分钟。当然,此处仅仅是为了举例说明,该每两个相邻待执行触发事件是指在触发时间上的相邻,不仅局限于同一操作界面上。由此按照录制时记录的每个操作界面的操作顺序以及上述时间差执行完所有操作界面上的待执行触发事件,便完成第一场景脚本的运行,例如:针对两个操作界面上相邻的两个待执行触发事件,在执行完第一个操作界面上的待执行触发事件后,等待2分钟再执行下一个操作界面上的待执行触发事件。该实施方式中,按照录制时记录的内容运行第一场景脚本,可以做到真正的“解放”用户的双手,并且按照时间差来执行每两个相邻的待执行触发事件,有时间上的间隔使得用户知道当前在做何种操作,用户体验更好,另外,第一场景脚本与目标应用程序是完全对应的,运行的成功率有所保证。
在一种可能的实施方式中,所述对所述语音信息进行识别,得到语音识别结果,包括:
对所述语音信息进行人声提取,得到M段人声语音信息;M为大于1的整数;
获取所述M段人声语音信息的特征序列,得到M段特征序列;
根据所述M段特征序列生成第一特征序列;
从所述第一特征序列中分别截取出P1段目标特征子序列和P2个目标特征;P1和P2为大于1的整数;
计算所述P1段目标特征子序列中每个目标特征和所述P2个目标特征之间的相似度,得到所述每个目标特征的P2个相似度;
基于所述每个目标特征的P2个相似度获取所述P1段目标特征子序列中每段目标特征子序列的更新特征子序列;
根据所述更新特征子序列生成第二特征序列;
将所述第二特征序列与语料库中存储的多条文本对应的特征序列进行匹配,得到所述语音识别结果;所述语料库用于存储所述多条文本及所述多条文本中每条文本对应的特征序列。
具体的,将用户的语音信息输入语音活动检测模型进行人声提取,得到M段人声语音信息,采用神经网络模型对该M段人声语音信息进行特征提取,得到如图4所示的M段特征序列,假设M=3,特征序列段1对应20音频帧,则有特征序列段1[K1,K2,K3,…,K20];特征序列段2对应30音频帧,则有特征序列段2[K21,K22,K23,…,K50];特征序列段3对应50音频帧,则有特征序列段3[K51,K52,K53,…,K100];对该三段特征序列进行拼接得到第一特征序列[K1,K2,K3,…,K100]。由于相邻两段特征序列拼接处会存在不平滑的情况,因此,需要对第一特征序列进行平滑处理,从第一特征序列中截取出P1段目标特征子序列,由上述例子可得P1段目标特征子序列中第一段目标特征子序列[K1,K2,K3,…,K21,K22,K23],P1段目标特征子序列中第二段目标特征子序列[K18,K19,K20,…,K51,K52,K53],P1段目标特征子序列中第三段目标特征子序列[K48,K49,K50,…,K100],P2个目标特征即每段目标特征子序列中重叠的部分[K18,K19,K20,K48,K49,K50,K51,K52,K53],采用相似度算法计算P1段目标特征子序列中每个目标特征和P2个目标特征之间的相似度,得到P1段目标特征子序列中每个目标特征对应的P2的相似度,其中相似度算法可以是欧氏距离、余弦相似度等。对每个目标特征的P2个相似度进行归一化,得到每个目标特征的P2个权重,将每个目标特征与其对应的P2个权重相乘得到每个目标特征对应的P2个输出特征,将该P2个输出特征求和累加便得到每个目标特征的更新特征,每个目标特征的更新特征组成更新特征子序列,将更新特征子序列拼接为第二特征序列,用该第二特征序列与语料库中存储的文本的特征序列进行匹配,将匹配度最高的文本作为语音信息的语音识别结果。
该实施方式中,语音识别过程时,对提取出的人声语音的特征序列在拼接后对拼接处进行以上处理,有利于使拼接后的第二特征序列更加平滑,提高语音识别精度。
可以看出,本申请实施例通过获取用户的语音信息;根据所述语音信息确定当前场景;向服务端发送脚本获取请求;所述脚本获取请求包括实现所述当前场景的至少一个目标应用程序的名称和标识,用于请求服务端根据所述目标应用程序的名称和标识检测是否存在与所述当前场景对应的第一场景脚本;接收服务端返回的所述第一场景脚本,解析并运行所述第一场景脚本。这样采用目标应用程序的名称和标识请求服务端检测是否存在与当前场景对应的第一场景脚本,若存在则直接获取并运行第一场景脚本,以完成用户需要实现的当前场景,有利于客户端运行与目标应用程序对应的预配置场景脚本,从而提高预配置场景脚本运行的成功率,以满足用户需求、提升用户体验。
请参见图5,图5本申请实施例提供的另一种脚本执行方法的流程示意图,应用于客户端,如图5所示,包括步骤S51-S56:
S51,获取用户的语音信息;
S52,根据所述语音信息确定当前场景;
S53,向服务端发送脚本获取请求;所述脚本获取请求包括实现所述当前场景的至少一个目标应用程序的名称和标识,用于请求服务端根据所述目标应用程序的名称和标识检测是否存在与所述当前场景对应的第一场景脚本;
S54,在服务端存在所述第一场景脚本的情况下,接收服务端返回的所述第一场景脚本,解析并运行所述第一场景脚本;
S55,在服务端不存在所述第一场景脚本的情况下,对用户操作所述目标应用程序实现所述当前场景进行录制,以生成所述当前场景对应的第二场景脚本;
S56,向服务端上传所述第二场景脚本,使得服务端将所述第二场景脚本与所述目标应用程序的名称和标识关联存储。
其中,步骤S51-S56的具体实施方式在图2所示的实施例中已有相关描述,且能达到相同或相似的有益效果,此处不再赘述。
基于上述脚本执行方法实施例的描述,请参见图6,图6为本申请实施例提供的一种脚本执行装置的结构示意图,如图6所示,该装置包括:
语音获取模块61,用于获取用户的语音信息;
场景确定模块62,用于根据所述语音信息确定当前场景;
场景脚本请求模块63,用于向服务端发送脚本获取请求;所述脚本获取请求包括实现所述当前场景的至少一个目标应用程序的名称和标识,用于请求服务端根据所述目标应用程序的名称和标识检测是否存在与所述当前场景对应的第一场景脚本;
场景脚本执行模块64,用于接收服务端返回的所述第一场景脚本,解析并运行所述第一场景脚本。
在一种可能的实施方式中,如图7所示,所述装置还包括场景脚本录制模块65;场景脚本录制模块65用于:
在服务端不存在所述第一场景脚本的情况下,对用户操作所述目标应用程序实现所述当前场景进行录制,以生成所述当前场景对应的第二场景脚本;
向服务端上传所述第二场景脚本,使得服务端将所述第二场景脚本与所述目标应用程序的名称和标识关联存储。
在一种可能的实施方式中,在对用户操作所述目标应用程序实现所述当前场景进行录制,以生成所述当前场景对应的第二场景脚本方面,场景脚本录制模块65具体用于:
获取所述当前场景对应的预设脚本模板;所述预设脚本模板包括用户操作所述目标应用程序实现所述当前场景的待录制内容;
对所述待录制内容进行录制,得到所述第二场景脚本。
在一种可能的实施方式中,所述待录制内容包括用户在所述目标应用程序的操作界面的触发事件、所述触发事件的触发时间、所述触发事件的类型、触发位置的坐标、触发的控件的类型以及该控件所在的视图的层级关系中的一项或多项;在对所述待录制内容进行录制,得到所述第二场景脚本方面,场景脚本录制模块65具体用于:
针对用户操作所述目标应用程序实现所述当前场景的每个操作界面,对所述每个操作界面的所述触发事件、所述触发时间、所述触发事件的类型、所述触发位置的坐标、所述控件的类型以及所述层级关系中的一项或多项进行录制,并对所述每个操作界面的操作顺序进行记录,得到所述第二场景脚本。
在一种可能的实施方式中,所述场景脚本请求模块63还用于:
检测本地是否存在实现所述当前场景的多个应用程序;
若是则获取所述多个应用程序中每个应用程序的优先级;
根据所述每个应用程序的优先级从所述多个应用程序中确定出所述目标应用程序。
在一种可能的实施方式中,在解析并运行所述第一场景脚本方面,场景脚本执行模块64具体用于:
对所述第一场景脚本进行逆向解析,得到解析后的所述第一场景脚本;
根据所述触发时间、所述触发事件的类型、所述触发位置的坐标、所述控件的类型以及所述层级关系中的一项或多项,确定所述每个操作界面的待执行触发事件;
根据所述触发时间获取每两个相邻的所述待执行触发事件之间的时间差;
按照所述操作顺序和所述时间差,执行所述每个操作界面的所述待执行触发事件,以完成解析后的所述第一场景脚本的运行。
在一种可能的实施方式中,在根据所述语音信息确定当前场景方面,场景确定模块62具体用于:
对所述语音信息进行识别,得到语音识别结果;
基于所述语音识别结果进行意图识别和槽位填充,以确定所述当前场景。
在一种可能的实施方式中,在对所述语音信息进行识别,得到语音识别结果方面,场景确定模块62具体用于:
对所述语音信息进行人声提取,得到M段人声语音信息;M为大于1的整数;
获取所述M段人声语音信息的特征序列,得到M段特征序列;
根据所述M段特征序列生成第一特征序列;
从所述第一特征序列中分别截取出P1段目标特征子序列和P2个目标特征;P1和P2为大于1的整数;
计算所述P1段目标特征子序列中每个目标特征和所述P2个目标特征之间的相似度,得到所述每个目标特征的P2个相似度;
基于所述每个目标特征的P2个相似度获取所述P1段目标特征子序列中每段目标特征子序列的更新特征子序列;
根据所述更新特征子序列生成第二特征序列;
将所述第二特征序列与语料库中存储的多条文本对应的特征序列进行匹配,得到所述语音识别结果;所述语料库用于存储所述多条文本及所述多条文本中每条文本对应的特征序列。
在一种可能的实施方式中,在基于所述每个目标特征的P2个相似度获取所述P1段目标特征子序列中每段目标特征子序列的更新特征子序列方面,场景确定模块62具体用于:
对所述每个目标特征的P2个相似度进行归一化,得到所述每个目标特征的P2个权重;
基于所述每个目标特征以及所述每个目标特征的P2个权重计算得到所述每个目标特征的P2个输出特征;
对所述每个目标特征的P2个输出特征进行求和,得到所述每个目标特征的更新特征,由所述每个目标特征的更新特征组成所述更新特征子序列。
根据本申请的一个实施例,图6或图7所示的脚本执行装置的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,脚本执行装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2或图5中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图6或图7中所示的脚本执行装置设备,以及来实现本申请实施例的脚本执行方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
基于上述方法实施例和装置实施例的描述,本申请实施例还提供一种电子设备。请参见图8,该电子设备至少包括处理器81、输入设备82、输出设备83以及计算机存储介质84。其中,电子设备内的处理器81、输入设备82、输出设备83以及计算机存储介质84可通过总线或其他方式连接。
计算机存储介质84可以存储在电子设备的存储器中,所述计算机存储介质84用于存储计算机程序,所述计算机程序包括程序指令,所述处理器81用于执行所述计算机存储介质84存储的程序指令。处理器81(或称CPU(Central Processing Unit,中央处理器))是电子设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
在一个实施例中,本申请实施例提供的电子设备的处理器81可以用于进行一系列脚本执行处理:
获取用户的语音信息;
根据所述语音信息确定当前场景;
向服务端发送脚本获取请求;所述脚本获取请求包括实现所述当前场景的至少一个目标应用程序的名称和标识,用于请求服务端根据所述目标应用程序的名称和标识检测是否存在与所述当前场景对应的第一场景脚本;
接收服务端返回的所述第一场景脚本,解析并运行所述第一场景脚本。
再一个实施例中,处理器81还用于:
在服务端不存在所述第一场景脚本的情况下,对用户操作所述目标应用程序实现所述当前场景进行录制,以生成所述当前场景对应的第二场景脚本;
向服务端上传所述第二场景脚本,使得服务端将所述第二场景脚本与所述目标应用程序的名称和标识关联存储。
再一个实施例中,处理器81执行所述对用户操作所述目标应用程序实现所述当前场景进行录制,以生成所述当前场景对应的第二场景脚本,包括:
获取所述当前场景对应的预设脚本模板;所述预设脚本模板包括用户操作所述目标应用程序实现所述当前场景的待录制内容;
对所述待录制内容进行录制,得到所述第二场景脚本。
再一个实施例中,所述待录制内容包括用户在所述目标应用程序的操作界面的触发事件、所述触发事件的触发时间、所述触发事件的类型、触发位置的坐标、触发的控件的类型以及该控件所在的视图的层级关系中的一项或多项;处理器81执行所述对所述待录制内容进行录制,得到所述第二场景脚本,包括:
针对用户操作所述目标应用程序实现所述当前场景的每个操作界面,对所述每个操作界面的所述触发事件、所述触发时间、所述触发事件的类型、所述触发位置的坐标、所述控件的类型以及所述层级关系中的一项或多项进行录制,并对所述每个操作界面的操作顺序进行记录,得到所述第二场景脚本。
再一个实施例中,在向服务端发送脚本获取请求之前,处理器81还用于:
检测本地是否存在实现所述当前场景的多个应用程序;
若是则获取所述多个应用程序中每个应用程序的优先级;
根据所述每个应用程序的优先级从所述多个应用程序中确定出所述目标应用程序。
再一个实施例中,处理器81执行所述解析并运行所述第一场景脚本,包括:
对所述第一场景脚本进行逆向解析,得到解析后的所述第一场景脚本;
根据所述触发时间、所述触发事件的类型、所述触发位置的坐标、所述控件的类型以及所述层级关系中的一项或多项,确定所述每个操作界面的待执行触发事件;
根据所述触发时间获取每两个相邻的所述待执行触发事件之间的时间差;
按照所述操作顺序和所述时间差,执行所述每个操作界面的所述待执行触发事件,以完成解析后的所述第一场景脚本的运行。
再一个实施例中,处理器81执行所述根据所述语音信息确定当前场景,包括:
对所述语音信息进行识别,得到语音识别结果;
基于所述语音识别结果进行意图识别和槽位填充,以确定所述当前场景。
再一个实施例中,处理器81执行所述对所述语音信息进行识别,得到语音识别结果,包括:
对所述语音信息进行人声提取,得到M段人声语音信息;M为大于1的整数;
获取所述M段人声语音信息的特征序列,得到M段特征序列;
根据所述M段特征序列生成第一特征序列;
从所述第一特征序列中分别截取出P1段目标特征子序列和P2个目标特征;P1和P2为大于1的整数;
计算所述P1段目标特征子序列中每个目标特征和所述P2个目标特征之间的相似度,得到所述每个目标特征的P2个相似度;
基于所述每个目标特征的P2个相似度获取所述P1段目标特征子序列中每段目标特征子序列的更新特征子序列;
根据所述更新特征子序列生成第二特征序列;
将所述第二特征序列与语料库中存储的多条文本对应的特征序列进行匹配,得到所述语音识别结果;所述语料库用于存储所述多条文本及所述多条文本中每条文本对应的特征序列。
再一个实施例中,处理器81执行所述基于所述每个目标特征的P2个相似度获取所述P1段目标特征子序列中每段目标特征子序列的更新特征子序列,包括:
对所述每个目标特征的P2个相似度进行归一化,得到所述每个目标特征的P2个权重;
基于所述每个目标特征以及所述每个目标特征的P2个权重计算得到所述每个目标特征的P2个输出特征;
对所述每个目标特征的P2个输出特征进行求和,得到所述每个目标特征的更新特征,由所述每个目标特征的更新特征组成所述更新特征子序列。
示例性的,客户端可包括但不仅限于处理器81、输入设备82、输出设备83以及计算机存储介质84。本领域技术人员可以理解,所述示意图仅仅是客户端的示例,并不构成对客户端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
需要说明的是,由于客户端的处理器81执行计算机程序时实现上述的脚本执行方法中的步骤,因此上述脚本执行方法的实施例均适用于该客户端,且均能达到相同或相似的有益效果。
本申请实施例还提供了一种计算机存储介质(Memory),所述计算机存储介质是电子设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括终端中的内置存储介质,当然也可以包括终端所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了终端的操作***。并且,在该存储空间中还存放了适于被处理器81加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器81的计算机存储介质。在一个实施例中,可由处理器81加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关脚本执行方法的相应步骤。
示例性的,计算机存储介质的计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
需要说明的是,由于计算机存储介质的计算机程序被处理器执行时实现上述的脚本执行方法中的步骤,因此上述脚本执行方法的所有实施例均适用于该计算机存储介质,且均能达到相同或相似的有益效果。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。