发明内容
为了解决所述现有技术的不足,本申请提供了一种智能座舱的语音助手实现方法、装置及电子设备,用于解决现有技术中语音助手无法高效且准确地实现与其他应用的交互及调用的问题。
本申请所要达到的技术效果通过以下方案实现:
第一方面,本申请实施例提供一种智能座舱的语音助手实现方法,所述方法包括:
将语音助手的自身Jar包提供给第一应用,并集成第二应用的应用Jar包,其中,所述自身Jar包是所述语音助手生成的相关的Jar包,所述应用Jar包是所述第二应用生成的相关的Jar包,所述第一应用包括车控应用,空调应用,系统应用和多媒体应用,所述第二应用包括蓝牙电话应用,地图应用和天气应用;
所述语音助手通过多层级调用实现对所述第一应用的调用,其中,所述多层级调用包括:监听器调用,功能管理调用,服务实现调用以及服务管理调用;所述语音助手通过直接对所述第二应用的所述应用Jar包进行集成处理,使得所述应用Jar包集成成为所述语音助手的一部分,以实现所述语音助手的多次数据对话;
所述语音助手对接收的相关语音数据实现差异化处理,其中,所述差异化处理包括:采用JaveBean的方式对所述相关语音数据进行传输,将Json格式的所述相关语音数据转换为String格式后进行传输,以及采用功能调用对所述相关语音数据进行传输,直接将需要处理的逻辑转换成对应的方法,进而完成跨进程的实现;
将差异化处理之后的优化数据发送给所述第一应用和所述第二应用,实现所述语音助手与所述第一应用和所述第二应用之间的通信和调用。
在一些实施例中,所述将语音助手的自身Jar包提供给第一应用,包括:
通过第一Android接口定义语言AIDL和第一Binder的方式,将所述语音助手的自身Jar包提供给所述第一应用,实现所述语音助手与所述第一应用的通信,其中所述第一AIDL和所述第一Binder集成在所述语音助手中。
在一些实施例中,所述集成第二应用的应用Jar包,包括:
通过第二Android接口定义语言AIDL和第二Binder的方式,集成所述第二应用的应用Jar包,实现所述语音助手与所述第二应用的通信,其中所述第二AIDL和所述第二Binder集成在所述第二应用中。
在一些实施例中,所述数据对话包括人机界面HMI对话。
第二方面,本申请实施例提供一种智能座舱的语音助手实现装置,所述装置包括:
交互模块,用于将语音助手的自身Jar包提供给第一应用,并集成第二应用的应用Jar包,其中,所述自身Jar包是所述语音助手生成的相关的Jar包,所述应用Jar包是所述第二应用生成的相关的Jar包,所述第一应用包括车控应用,空调应用,系统应用和多媒体应用,所述第二应用包括蓝牙电话应用,地图应用和天气应用;
调用模块,用于所述语音助手通过多层级调用实现对所述第一应用的调用,其中,所述多层级调用包括:监听器调用,功能管理调用,服务实现调用以及服务管理调用;所述语音助手通过直接对所述第二应用的所述应用Jar包进行集成处理,使得所述应用Jar包集成成为所述语音助手的一部分,以实现所述语音助手的多次数据对话;
处理模块,用于所述语音助手对接收的相关语音数据实现差异化处理,其中,所述差异化处理包括:采用JaveBean的方式对所述相关语音数据进行传输,将Json格式的所述相关语音数据转换为String格式后进行传输,以及采用功能调用对所述相关语音数据进行传输,直接将需要处理的逻辑转换成对应的方法,进而完成跨进程的实现;
实现模块,用于将差异化处理之后的优化数据发送给所述第一应用和所述第二应用,实现所述语音助手与所述第一应用和所述第二应用之间的通信和调用。
在一些实施例中,所述将语音助手的自身Jar包提供给第一应用,包括:
通过第一Android接口定义语言AIDL和第一Binder的方式,将所述语音助手的自身Jar包提供给所述第一应用,实现所述语音助手与所述第一应用的通信,其中所述第一AIDL和所述第一Binder集成在所述语音助手中。
在一些实施例中,所述集成第二应用的应用Jar包,包括:
通过第二Android接口定义语言AIDL和第二Binder的方式,集成所述第二应用的应用Jar包,实现所述语音助手与所述第二应用的通信,其中所述第二AIDL和所述第二Binder集成在所述第二应用中。
在一些实施例中,所述数据对话包括人机界面HMI对话。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现前述任意一项所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一项所述的方法。
通过本申请实施例提供的智能座舱的语音助手实现方法和装置,该方法通过差异化处理Jar包的方法和差异化处理数据对象的方式,将Binder服务的方法直接集成在Jar包中,对外直接提供Manager方法,或者集成其他应用的Jar包时直接初始化对象并可完成调用,而不用Binder对象,减少调用流程;将数据对象根据需求拆解,按需获取数据对象,可实现既简化代码结构,减少代码复杂度和集中管理的技术效果。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本申请的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,除非另外定义,本申请一个或多个实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
相关技术中,语音助手既需要能够快速与云端网络数据进行交互,也需要快速与各个应用之间进行数据通信和语音播报;为了保证语音助手本身的稳定性和与各个应用的交互的便捷性,同时考虑开发集成的可维护性,需要对语音助手的框架进行细致有差异的设计。
因此需要提出本申请的智能座舱的语音助手实现方法,以更好地实现语音助手与智能座舱涉及的各个其他应用的交互与调用。
下面结合附图,详细说明本申请的各种非限制性实施方式。
图1为本申请一实施例中的智能座舱的语音助手实现方法的流程图;如图1所示,本实施例中的智能座舱的语音助手实现方法包括如下步骤:
S101:将语音助手的自身Jar包提供给第一应用,并集成第二应用的应用Jar包,其中,所述自身Jar包是所述语音助手生成的相关的Jar包,所述应用Jar包是所述第二应用生成的相关的Jar包,所述第一应用包括车控应用,空调应用,系统应用和多媒体应用,所述第二应用包括蓝牙电话应用,地图应用和天气应用;
S102:所述语音助手通过多层级调用实现对所述第一应用的调用,其中,所述多层级调用包括:监听器调用,功能管理调用,服务实现调用以及服务管理调用;所述语音助手通过直接对所述第二应用的所述应用Jar包进行集成处理,使得所述应用Jar包集成成为所述语音助手的一部分,以实现所述语音助手的多次数据对话;
S103:所述语音助手对接收的相关语音数据实现差异化处理,其中,所述差异化处理包括:采用JaveBean的方式对所述相关语音数据进行传输,将Json格式的所述相关语音数据转换为String格式后进行传输,以及采用功能调用对所述相关语音数据进行传输,直接将需要处理的逻辑转换成对应的方法,进而完成跨进程的实现;
S104:将差异化处理之后的优化数据发送给所述第一应用和所述第二应用,实现所述语音助手与所述第一应用和所述第二应用之间的通信和调用。
在一些实施例中,所述将语音助手的自身Jar包提供给第一应用,包括:
通过第一Android接口定义语言AIDL和第一Binder的方式,将所述语音助手的自身Jar包提供给所述第一应用,实现所述语音助手与所述第一应用的通信,其中所述第一AIDL和所述第一Binder集成在所述语音助手中。
在一些实施例中,所述集成第二应用的应用Jar包,包括:
通过第二Android接口定义语言AIDL和第二Binder的方式,集成所述第二应用的应用Jar包,实现所述语音助手与所述第二应用的通信,其中所述第二AIDL和所述第二Binder集成在所述第二应用中。
示例性地,语音助手可以指语音应用,智能座舱中的其他应用可以包括车控应用,空调应用,多媒体应用,系统应用,蓝牙电话应用,导航应用,咨询应用,天气应用等,此处为示例性地,本领域熟知的其他应用也可以应用与此。
本申请实现一种语音应用与其他应用进行通信的方法或者是软件框架,采用差异化的通信方式,通过提供Jar包到应用和集成应用Jar相结合的方式,以实现模块间通信稳定高效,集成快捷,从而达到整体功能稳定的目的。
语音助手在实践开发的时候,会提供Jar包(也可以称为Jar文件)给其他应用或者集成其他应用提供的Jar包文件。根据其他应用本身的特性,结合语音助手对其他应用提供接口的方式的差异,将对车控应用,空调应用,系统应用和多媒体应用等采用提供接口的方式;对蓝牙电话应用,地图应用,咨询应用,天气应用等应用采用集成第三方接口的方式实现落地。
AIDL,即Android Interface Definition Language,即Android接口定义语言,用于生成Android不同进程间进行进程通信(IPC)的代码,一般情况下一个进程是无法访问另一个进程的内存的。如果某些情况下仍然需要跨进程访问内存数据,这时Android系统就要将其对象分解成能够识别的原数据,编写这一组操作的代码是一项繁琐的工作,但是AIDL对底层进行了抽象的封装,简化了跨进程操作。
不管是语音助手对外(即对第一应用)提供Jar文件,还是集成第三方(即第二应用)提供Jar文件,主要需要解决问题包含有:数据的传输和接口易用性;跨应用间的通信基本采用ADIL和Binder的方式进行;不同的是提供对外Jar文件的AIDL和Binder方式集成在语音助手服务中,而集成第三方Jar文件的AIDL和Binder的实现方式位于在第三方应用本身。
需要说明的是本文中的第一应用和第二应用所对应的具体的应用并不是固定的,可以根据实际的需要进行调整。
语音助手对外提供Jar包的方式,包含对外接口的提供方式和最终对外提供方法的实现逻辑。
语音助手对外的提供方式是通过多层级调用的方法实现,具体包含有:
1)Service Manager:主要用于管理不同的Service对象
2)Service Implement:具体工具的服务实现
3)Function Manager:具体的功能管理
4)Listener:用于将DM语音转换的业务逻辑与Service实现对应。
如图2所示,图中示出了语音助手对第一应用提供Jar包的方式,其中DM表示Dialog Management,即对话管理;多层调用包括监听器调用(Listener),功能管理调用(Function Manager),服务实现调用(Service Implement)及服务管理调用(ServiceManager),与Jar包对应的有功能管理调用,AIDL服务和Binder服务。
示例性地,为了保证相关语音数据传输的数据多样性,并保证数据内容尽可能的多,将采用差异化方式对相关语音数据处理,相关语音数据指的是语音助手获取的实时语音数据,主要分为如下三类:
1.采用JaveBean的方式进行相关语音数据的传输,接收方拿到数据对象就可以进行数据操作发;
2.采用String字符的方式进行相关语音数据的传输,将Json数据转换为String对象;因为Json数据传输是灵活性强,可以处理较多不同格式的数据,这样对传输属性不确定的对象处理比较方便;
3.采用方法调用(或者说是功能调用)进行数据传输,直接将需要处理的逻辑转换成对应的方法,其他应用直接实现接口的方法就可以完成跨进程的实现和调度。
具体地,结合实际用例,多媒体应用和车控应用、车设应用等的命令主要是Command指令,对应的接口是单向流动的,采用语音助手对外提供Jar文件的方法比较合适,这样能够减少语音服务的主控权,而让多媒体应用和车控应用等逻辑自主性更强。
JavaBean使用案例包括:车控应用、车设应用、空调应用等;
Json使用案例包括:多媒体应用,因为多媒体应用中包含有专辑,歌曲名等,还包含调频广播电台等
功能调用使用案例包括:多媒体应用,因为多媒体引用中包含有播放,暂停,继续,上一首,下一首等。
图3是其他应用或者App提供Jar包到语音助手的示意图,语音助手将直接对Jar包进行集成处理,语音助手对Jar包集成后,Jar包就成为了语音助手的一部分;如图3所示,第二应用将Jar包到语音助手,其中DM表示Dialog Management,即对话管理;HMI表示人机界面,语音助手采用功能管理调用方式,第二应用包括功能服务调用(Function Service)。
本申请中的Jar包又可以称为Jar文件。
语音助手集成第三方提供的Jar包以后,可更好的解决语音中的多轮数据对话,实现多次HMI相互交互,不用单独为一些应用创建服务,而直接使用语音服务完成跨进程通信功能,相对比较独立高效;语音助手集成第三方Jar文件,将Jar包当成自身的一部分既可以解决多轮数据交互,也可减少对其他应用的依赖,业务逻辑更加独立可靠。
在一些实施例中,所述数据对话包括人机界面HMI对话。
本申请的智能座舱的语音助手实现方法,通过差异化处理Jar文件方法和差异化处理数据对象的方式,将Binder服务方法直接集成在Jar包中,对外直接提供管理方法,其他App集成Jar文件时候直接初始化对象就可完成调用,而不用Binder对象,减少调用流程;对数据对象根据需求拆解,按需获取数据对象,可达到既简化代码结构,减少代码复杂度和集中管理的目的。
本申请实施例提供一种智能座舱的语音助手实现装置,如图4所示,所述装置包括:
交互模块,用于将语音助手的自身Jar包提供给第一应用,并集成第二应用的应用Jar包,其中,所述自身Jar包是所述语音助手生成的相关的Jar包,所述应用Jar包是所述第二应用生成的相关的Jar包,所述第一应用包括车控应用,空调应用,系统应用和多媒体应用,所述第二应用包括蓝牙电话应用,地图应用和天气应用;
调用模块,用于所述语音助手通过多层级调用实现对所述第一应用的调用,其中,所述多层级调用包括:监听器调用,功能管理调用,服务实现调用以及服务管理调用;所述语音助手通过直接对所述第二应用的所述应用Jar包进行集成处理,使得所述应用Jar包集成成为所述语音助手的一部分,以实现所述语音助手的多次数据对话;
处理模块,用于所述语音助手对接收的相关语音数据实现差异化处理,其中,所述差异化处理包括:采用JaveBean的方式对所述相关语音数据进行传输,将Json格式的所述相关语音数据转换为String格式后进行传输,以及采用功能调用对所述相关语音数据进行传输,直接将需要处理的逻辑转换成对应的方法,进而完成跨进程的实现;
实现模块,用于将差异化处理之后的优化数据发送给所述第一应用和所述第二应用,实现所述语音助手与所述第一应用和所述第二应用之间的通信和调用。
在一些实施例中,所述将语音助手的自身Jar包提供给第一应用,包括:
通过第一Android接口定义语言AIDL和第一Binder的方式,将所述语音助手的自身Jar包提供给所述第一应用,实现所述语音助手与所述第一应用的通信,其中所述第一AIDL和所述第一Binder集成在所述语音助手中。
在一些实施例中,所述集成第二应用的应用Jar包,包括:
通过第二Android接口定义语言AIDL和第二Binder的方式,集成所述第二应用的应用Jar包,实现所述语音助手与所述第二应用的通信,其中所述第二AIDL和所述第二Binder集成在所述第二应用中。
本实施例中的智能座舱的语音助手实现装置能够实现本申请中的智能座舱的语音助手实现方法的技术效果,此处不再赘述。
需要说明的是,本申请一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还公开一种电子设备;
具体地,图5示出了本实施例所提供的一种智能座舱的语音助手实现方法的电子设备的硬件结构示意图,该设备可以包括:处理器410、存储器420、输入/输出接口430、通信接口440和总线450。其中,处理器410、存储器420、输入/输出接口430和通信接口440通过总线450实现彼此之间在设备内部的通信连接。
处理器410可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案。
存储器420可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器420可以存储操作系统和其他应用程序,在通过软件或者固件来实现本申请实施例所提供的技术方案时,相关的程序代码保存在存储器420中,并由处理器410来调用执行。
输入/输出接口430用于连接输入/输出模块,以实现信息输入及输出。输入/输出模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口440用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如,USB、网线等)实现通信,也可以通过无线方式(例如,移动网络、WIFI、蓝牙等)实现通信。
总线450包括一通路,在设备的各个组件(例如,处理器410、存储器420、输入/输出接口430和通信接口440)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器410、存储器420、输入/输出接口430、通信接口440以及总线450,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的智能座舱的语音助手实现方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请一个或多个实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的智能座舱的语音助手实现方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的智能座舱的语音助手实现方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以避免使本申请一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。