一种基于安卓系统的语音交互方法和装置转让专利

申请号 : CN201610383136.4

文献号 : CN106098061A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 卢伟超

申请人 : TCL集团股份有限公司

摘要 :

本发明提供了一种基于安卓系统的语音交互方法包括:预先修改的系统中的Activity组件,将语音包广播注册到所述Activity组件;接收语音控制指令,识别所述语音控制指令所对应的文字信息;在所述Activity组件中查找所述文字信息对应的控件;根据查找的所述控件,调用所述控件对应的响应函数,响应所述语音控制指令。本发明可避免系统中的其它应用程序与语音应用程序进行复杂的对接适配操作,并且可以对所有的应用程序统一维护,移植方便。

权利要求 :

1.一种基于安卓系统的语音交互方法,其特征在于,所述方法包括:预先修改安卓系统中的Activity组件,将语音包广播注册到所述Activity组件;

接收语音控制指令,识别所述语音控制指令所对应的文字信息;

在所述Activity组件中查找所述文字信息对应的控件;

根据查找的所述控件,调用所述控件对应的响应函数,响应所述语音控制指令。

2.根据权利要求1所述方法,其特征在于,所述将语音包广播注册到所述Activity组件步骤包括:检测安卓系统中的Activity组件的状态信息;

如果所述安卓系统的Activity组件的状态信息为预设的状态信息,则在所述状态信息对应的函数中删除所述语音操作。

3.根据权利要求2所述方法,其特征在于,所述预设的状态信息为暂停状态、停止状态或者删除状态。

4.根据权利要求1所述方法,其特征在于,所述预先修改安卓系统中的Activity组件,将语音包广播注册到所述Activity组件步骤具体为:通过预先修改安卓系统中的Activity组件中的Activity.java文件,将语音包广播注册到所述Activity组件。

5.根据权利要求1所述方法,其特征在于,所述在所述Activity组件中查找所述文字信息对应的控件步骤包括:根据JAVA提供的API接口检测系统控件中包括的响应语音操作的控件获取所述控件上显示的文字内容,在所述控件上的文字内容中查找所述文字信息对应的控件。

6.一种基于安卓系统的语音交互装置,其特征在于,所述装置包括:注册单元,用于预先修改的安卓系统中的Activity组件,将语音包广播注册到所述Activity组件;

接收识别单元,用于接收语音控制指令,识别所述语音控制指令所对应的文字信息;

查找单元,用于在所述Activity组件中查找所述文字信息对应的控件;

响应单元,用于根据查找的所述控件,调用所述控件对应的响应函数,响应所述语音控制指令。

7.根据权利要求6所述装置,其特征在于,所述注册单元包括:状态检测子单元,用于检测安卓系统中的Activity组件的状态信息;

操作删除单元,用于如果所述系统的Activity组件的状态信息为预设的状态信息,则在所述状态信息对应的函数中删除所述语音操作。

8.根据权利要求7所述装置,其特征在于,所述预设的状态信息为暂停状态、停止状态或者删除状态。

9.根据权利要求6所述装置,其特征在于,所述注册单元具体用于:通过预先修改安卓系统中的Activity组件中的Activity.java文件,将语音包广播注册到所述Activity组件。

10.根据权利要求6所述装置,其特征在于,所述查找单元包括:组件检测子单元,用于根据JAVA提供的API接口检测系统控件中包括的响应语音操作的控件;

控件查找子单元,用于获取所述控件上显示的文字内容,在所述控件上的文字内容中查找所述文字信息对应的控件。

说明书 :

一种基于安卓系统的语音交互方法和装置

技术领域

[0001] 本发明属于语音控制领域,尤其涉及一种基于安卓系统的语音交互方法和装置。

背景技术

[0002] 在语音交互系统中,为了有效的进行语音识别和语义理解时能优先命中当前界面上的功能和实现语音调用,需要知道当前用户正在交互的应用和界面,以及应用界面中所显示的信息。
[0003] 目前的语音交互系统(比如语点应用程序)中,将上述的用户正在交互的应用和界面以及界面显示的信息称为个性化场景信息。所述个性化场景信息包括场景ID和动态数据。其中:
[0004] 对于场景ID,每个需要支持全程语音交互(即随时可通过语音指令对应用进行控制的交互方式)的应用在每个不同的场景界面下均要有一个唯一的场景ID,通过该ID可在语点中独立定义其可能的功能组合,比如同时支持语音选集和语音播放控制功能等。
[0005] 对于动态数据,是指界面提供辅助的动态信息(比如在影视检索列表中各个影视名字,这些都是动态检索出来的),以及所有的数据所对应的类型(比如描述类型可以是影视名称,也可以为人名等),数据的内容和格式由该界面的功能和内容决定,没有统一的硬性标准,后期只要传递的数据不变就可以保证兼容性和语音优化升级性。
[0006] 目前所使用的语音交互方案的流程大体如图1所示:
[0007] 1)启动语音交互时,语音助理,即语音交互应用程序以广播Broadcast消息的方式通知给应用,来告知应用开始提交场景信息。
[0008] 2)应用如果处于前台显示,则通过startservice方式将当前的场景信息提交给语音应用程序。
[0009] 3)语音识别时将结合场景信息,优先命中当前界面下的场景中的功能,语音助手可通过实现约定的startActivity、startService、sendBroadcast三种方式来调用应用,应用收到调用后,完成用户所要的功能。
[0010] 目前的语音交互方案,可以较好的对应用程序进行控制和互动,但是这种方案的不足在于,所有想要响应语音的应用,都需要与语音应用程序进行对接适配,工作量大,可移植性和可维护性较差。

发明内容

[0011] 本发明的目的在于提供一种基于安卓系统的语音交互方法和装置,以解决现有技术的语音交互方案中,所有想要响应语音的应用,都需要与语音应用程序进行对接适配,工作量大,可移植性和可维护性较差的问题。
[0012] 第一方面,本发明实施例提供了一种基于安卓系统的语音交互方法,所述方法包括:
[0013] 预先修改的安卓系统中的Activity组件,将语音包广播注册到所述Activity组件;
[0014] 接收语音控制指令,识别所述语音控制指令所对应的文字信息;
[0015] 在所述Activity组件中查找所述文字信息对应的控件;
[0016] 根据查找的所述控件,调用所述控件对应的响应函数,响应所述语音控制指令。
[0017] 结合第一方面,在第一方面的第一种可能实现方式中,所述将语音包广播注册到所述Activity组件步骤包括:
[0018] 检测安卓系统中的Activity组件的状态信息;
[0019] 如果所述系统的Activity组件的状态信息为预设的状态信息,则在所述状态信息对应的函数中删除所述语音操作。
[0020] 结合第一方面的第一种可能实现方式,在第一方面的第二种可能实现方式中,所述预设的状态信息为暂停状态、停止状态或者删除状态。
[0021] 结合第一方面,在第一方面的第三种可能实现方式中,所述预先修改的安卓系统中的Activity组件,将语音包广播注册到所述Activity组件步骤具体为:
[0022] 通过预先修改安卓系统中的Activity组件中的Activity.java文件,将语音包广播注册到所述Activity组件。
[0023] 结合第一方面,在第一方面的第四种可能实现方式中,所述在所述Activity组件中查找所述文字信息对应的控件步骤包括:
[0024] 根据JAVA提供的API接口检测系统控件中包括的响应语音操作的控件;
[0025] 获取所述控件上显示的文字内容,在所述控件上的文字内容中查找所述文字信息对应的控件。
[0026] 第二方面,本发明实施例提供了一种基于安卓系统的语音交互装置,所述装置包括:
[0027] 注册单元,用于预先修改的安卓系统中的Activity组件,将语音包广播注册到所述Activity组件;
[0028] 接收识别单元,用于接收语音控制指令,识别所述语音控制指令所对应的文字信息;
[0029] 查找单元,用于在所述Activity组件中查找所述文字信息对应的控件;
[0030] 响应单元,用于根据查找的所述控件,调用所述控件对应的响应函数,响应所述语音控制指令。
[0031] 结合第二方面,在第二方面的第一种可能实现方式中,所述注册单元包括:
[0032] 状态检测子单元,用于检测安卓系统中的Activity组件的状态信息;
[0033] 操作删除单元,用于如果所述系统的Activity组件的状态信息为预设的状态信息,则在所述状态信息对应的函数中删除所述语音操作。
[0034] 结合第二方面的第一种可能实现方式,在第二方面的第二种可能实现方式中,所述预设的状态信息为暂停状态、停止状态或者删除状态。
[0035] 结合第二方面,在第二方面的第三种可能实现方式中,所述注册单元具体用于:
[0036] 通过预先修改安卓系统中的Activity组件中的Activity.java文件,将语音包广播注册到所述Activity组件。
[0037] 结合第二方面,在第二方面的第四种可能实现方式中,所述查找单元包括:
[0038] 组件检测子单元,用于根据JAVA提供的API接口检测系统控件中包括的响应语音操作的控件;
[0039] 控件查找子单元,用于获取所述控件上显示的文字内容,在所述控件上的文字内容中查找所述文字信息对应的控件。
[0040] 在本发明中,通过预先修改安卓系统中的Activity组件,将语音包广播注册到所述Activity组件中,从而使得系统中依附在Activity组件上的应用程序自动接收到语音控制指令对应的广播信息,根据所述广播信息查找对应的控件,调用相应的函数响应所述语音控制指令,本发明可避免系统中的其它应用程序与语音应用程序进行复杂的对接适配操作,并且可以对所有的应用程序统一维护,移植方便。

附图说明

[0041] 图1是现有技术中的语音交互方法的示意图;
[0042] 图2是本发明第一实施例提供的语音交互方法的实现流程图;
[0043] 图3是本发明第二实施例提供的语音交互方法的实现流程图;
[0044] 图4是本发明第三实施例提供的语音交互装置的结构示意图。

具体实施方式

[0045] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0046] 本发明实施例的目的在于提供一种基于安卓系统的语音交互方法和装置,以解决现有技术中的语音交互方法中所存在的问题。目前所有需要响应语音的应用程序,需要先与语音应用程序,比如与语音助手进行适配连接,比如进行广播的注册连接,从而将应用的数据信息发送给语音应用程序,并接收语音应用程序针对语音控制指令所对应的控制指令。建立适配连接较为麻烦,而且使得语音系统的可维护性和可移植性较差。下面结合附图,对本发明作进一步的说明。
[0047] 实施例一:
[0048] 图2示出了本发明第一实施例提供的语音交互方法的实现流程,详述如下:
[0049] 在步骤S201中,预先修改的安卓系统中的Activity组件,将语音包广播注册到所述Activity组件。
[0050] 具体的,本发明实施例所述系统,可以为安卓系统。所述Activity组件,是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供,Broadcast Receiver广播接收器)之一。在android(安卓)系统中,Activity拥有四种基本状态:
[0051] 1.Active/Running
[0052] 一个新Activity启动入栈后,它显示在屏幕最前端,处于栈的最顶端(Activity栈顶),此时它处于可见并可和用户交互的激活状态,叫做活动状态或者运行状态(active or running)。
[0053] 2.Paused
[0054] 当Activity失去焦点,被一个新的非全屏的Activity或者一个透明的Activity被放置在栈顶,此时的状态叫做暂停状态(Paused)。此时它依然与窗口管理器保持连接,Activity依然保持活力(保持所有的状态,成员信息,和窗口管理器保持连接),但是在系统内存极端低下的时候将被强行终止掉。所以它仍然可见,但已经失去了焦点,故在这种状态下,应用程序不可与用户进行交互。
[0055] 3.Stopped
[0056] 如果一个Activity被另外的Activity完全覆盖掉,叫做停止状态(Stopped)。它依然保持所有状态和成员信息,但是它不再可见,所以它的窗口被隐藏,当系统内存需要被用在其他地方的时候,Stopped的Activity将被强行终止掉。
[0057] 4.Killed
[0058] 如果一个Activity是Paused或者Stopped状态,系统可以将该Activity从内存中删除,Android系统采用两种方式进行删除,要么要求该Activity结束,要么直接终止它的进程。当该Activity再次显示给用户时,它必须重新开始和重置前面的状态。
[0059] 传统的注册方式,是用户自己的应用程序中,手动注册语音包的广播。这种操作方式麻烦,而且工作量大。
[0060] 为了使得应用程序注册语音包的广播更为简单化,本发明根据应用程序开发者开发基于安卓系统的应用时,通常会继承安卓安卓系统中的Activity组件。因此,我们可以获取安卓系统的Activity组件的源码,修改Activity.java文件,将语音包广播注册在这里。这样,对于发送给应用程序的广播消息,都可以通过继承的所述Activity组件接收。
[0061] 在步骤S202中,接收语音控制指令,识别所述语音控制指令所对应的文字信息。
[0062] 具体的,所述语音控制指令,可通过运行的本发明所述方法对应的语音应用程序接收。并通过所述语音应用程序对所述语音控制指令进行解析,得到所述语音控制指令所对应的文字信息。
[0063] 本发明对于语音控制指令的识别,可通过去噪算法以及最优匹配算法,得到语音控制指令所对应的文字信息。
[0064] 在步骤S203中,在所述Activity组件中查找所述文字信息对应的控件。
[0065] 通过上述步骤,虽然已将语音操作注册到了系统中安装的应用程序中,但是应用程序仍然无法响应语音操作。这是因为应用程序接收到语音控制指令对应的文字信息时,并不知道这个语音控制指令应当由哪个控件响应。因此,在本步骤中,需要查找所述语音控制指令所对应的控件。
[0066] 在步骤中,我们研究安卓系统控件的继承体系结构,虽然控件的种类很类,但是可以将控件进行分类,一类为响应语音操作的控件,一类为不响应语音操作的控件。其中,响应语音操作的控件都继承自Text View控件,也就是说这些控件上都有对应的文字内容。本发明需要查找的控件,就是响应语音操作的控件。其中,在所述Activity组件中查找所述文字信息对应的控件步骤包括:
[0067] 根据JAVA提供的API接口检测系统控件中包括的响应语音操作的控件;
[0068] 获取所述控件上显示的文字内容,在所述控件上的文字内容中查找所述文字信息对应的控件。
[0069] 比如,我们通过检测API接口的方式,获取了响应语音操作的控件,并且根据Text View控件中的文字内容,获取控件显示的文字,比如控件的文字为“琅琊榜”,如果语音控制指令对应的文字信息和这个控件的文字内容匹配为“琅琊榜”,则这个控件做出响应。
[0070] 在步骤S204中,根据查找的所述控件,调用所述控件对应的响应函数,响应所述语音控制指令。
[0071] 根据控件上的文字内容,查找到所述语音控制指令对应的所述控件后,调用所述控件上相应的响应函数,从而响应所述语音控制指令。
[0072] 本发明实施例通过预先修改安卓系统中的Activity组件,将语音包广播注册到所述Activity组件中,从而使得系统中依附在Activity组件上的应用程序自动接收到语音控制指令对应的广播信息,根据所述广播信息查找对应的控件,调用相应的函数响应所述语音控制指令,本发明可避免系统中的其它应用程序与语音应用程序进行复杂的对接适配操作,并且可以对所有的应用程序统一维护,移植方便。
[0073] 实施例二:
[0074] 图3示出了本发明第二实施例提供的语音控制方法的实现流程,详述如下:
[0075] 在步骤S301中,预先修改的安卓系统中的Activity组件,将语音包广播注册到所述Activity组件。
[0076] 在步骤S302中,检测安卓系统中的Activity组件的状态信息。
[0077] 具体的,对于系统中的每个应用程序,我们通过修改系统的Activity组件后,默认给每个应用程序上添加了语音操作,应用开发者不方便将相应的语音操作删除。但是,如果不能够有效的将所述语音操作删除,可能会导致系统泄露的问题。
[0078] 为了解决这个问题,本发明利用安卓系统的Activity组件的生命周期,即在实施例一中介绍的Active、Paused、Stoped、killed四个状态信息。可通过修改Activity.java文件,使得系统的Activity组件预设的状态时,比如在paused状态时,或者在Stoped、killed状态时,删除所述语音操作。
[0079] 在步骤S303中,如果所述系统的Activity组件的状态信息为预设的状态信息,则在所述状态信息对应的函数中删除所述语音操作。
[0080] 其中,所述预设的状态信息为暂停状态、停止状态或者删除状态中的一种或者多种。
[0081] 在步骤S304中,接收语音控制指令,识别所述语音控制指令所对应的文字信息。
[0082] 在步骤S305中,在所述Activity组件中查找所述文字信息对应的控件;
[0083] 在步骤S306中,根据查找的所述控件,调用所述控件对应的响应函数,响应所述语音控制指令。
[0084] 本发明实施例在实施例一的基础上,进一步对系统的Activity组件的状态信息进行监测,并根据系统的Activity组件的状态信息,对语音操作进行剔除操作,从而使得本发明可以适应对语音操作剔除的功能,并且不会导致系统泄露。
[0085] 实施例三:
[0086] 图4示出了本发明第三实施例提供的语音交互装置的结构示意图,详述如下:
[0087] 本发明实施例所述语音交互装置,包括:
[0088] 注册单元401,用于预先修改的安卓系统中的Activity组件,将语音包广播注册到所述Activity组件;
[0089] 接收识别单元402,用于接收语音控制指令,识别所述语音控制指令所对应的文字信息;
[0090] 查找单元403,用于在所述Activity组件中查找所述文字信息对应的控件;
[0091] 响应单元404,用于根据查找的所述控件,调用所述控件对应的响应函数,响应所述语音控制指令。
[0092] 优选的,所述注册单元包括:
[0093] 状态检测子单元,用于检测安卓系统中的Activity组件的状态信息;
[0094] 操作删除单元,用于如果所述系统的Activity组件的状态信息为预设的状态信息,则在所述状态信息对应的函数中删除所述语音操作。
[0095] 优选的,所述预设的状态信息为暂停状态、停止状态或者删除状态。
[0096] 优选的,所述注册单元具体用于:
[0097] 通过预先修改安卓系统中的Activity组件中的Activity.java文件,将语音包广播注册到所述Activity组件。
[0098] 优选的,所述查找单元包括:
[0099] 组件检测子单元,用于根据JAVA提供的API接口检测系统控件中包括的响应语音操作的控件;
[0100] 控件查找子单元,用于获取所述控件上显示的文字内容,在所述控件上的文字内容中查找所述文字信息对应的控件。
[0101] 本发明实施例所述语音交互装置,与实施例一和二所述语音交互方法对应,在此不作重复赘述。
[0102] 在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0103] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0104] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0105] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0106] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。