一種基于安卓系統的語音交互方法和裝置的制造方法
【專利摘要】本發明提供了一種基于安卓系統的語音交互方法包括:預先修改的系統中的Activity組件,將語音包廣播注冊到所述Activity組件;接收語音控制指令,識別所述語音控制指令所對應的文字信息;在所述Activity組件中查找所述文字信息對應的控件;根據查找的所述控件,調用所述控件對應的響應函數,響應所述語音控制指令。本發明可避免系統中的其它應用程序與語音應用程序進行復雜的對接適配操作,并且可以對所有的應用程序統一維護,移植方便。
【專利說明】
一種基于安卓系統的語音交互方法和裝置
技術領域
[0001]本發明屬于語音控制領域,尤其涉及一種基于安卓系統的語音交互方法和裝置。 【背景技術】
[0002]在語音交互系統中,為了有效的進行語音識別和語義理解時能優先命中當前界面上的功能和實現語音調用,需要知道當前用戶正在交互的應用和界面,以及應用界面中所顯示的信息。
[0003]目前的語音交互系統(比如語點應用程序)中,將上述的用戶正在交互的應用和界面以及界面顯示的信息稱為個性化場景信息。所述個性化場景信息包括場景ID和動態數據。其中:
[0004]對于場景ID,每個需要支持全程語音交互(即隨時可通過語音指令對應用進行控制的交互方式)的應用在每個不同的場景界面下均要有一個唯一的場景ID,通過該ID可在語點中獨立定義其可能的功能組合,比如同時支持語音選集和語音播放控制功能等。
[0005]對于動態數據,是指界面提供輔助的動態信息(比如在影視檢索列表中各個影視名字,這些都是動態檢索出來的),以及所有的數據所對應的類型(比如描述類型可以是影視名稱,也可以為人名等),數據的內容和格式由該界面的功能和內容決定,沒有統一的硬性標準,后期只要傳遞的數據不變就可以保證兼容性和語音優化升級性。
[0006]目前所使用的語音交互方案的流程大體如圖1所示:
[0007]1)啟動語音交互時,語音助理,即語音交互應用程序以廣播Broadcast消息的方式通知給應用,來告知應用開始提交場景信息。
[0008]2)應用如果處于前臺顯示,貝lj通過startservice方式將當前的場景信息提交給語音應用程序。
[0009]3)語音識別時將結合場景信息,優先命中當前界面下的場景中的功能,語音助手可通過實現約定的startActivity、startService、sendBroadcast三種方式來調用應用,應用收到調用后,完成用戶所要的功能。
[0010]目前的語音交互方案,可以較好的對應用程序進行控制和互動,但是這種方案的不足在于,所有想要響應語音的應用,都需要與語音應用程序進行對接適配,工作量大,可移植性和可維護性較差。
【發明內容】
[0011]本發明的目的在于提供一種基于安卓系統的語音交互方法和裝置,以解決現有技術的語音交互方案中,所有想要響應語音的應用,都需要與語音應用程序進行對接適配,工作量大,可移植性和可維護性較差的問題。
[0012]第一方面,本發明實施例提供了一種基于安卓系統的語音交互方法,所述方法包括:
[0013]預先修改的安卓系統中的Activity組件,將語音包廣播注冊到所述Activity組件;
[0014]接收語音控制指令,識別所述語音控制指令所對應的文字信息;
[0015]在所述Activity組件中查找所述文字信息對應的控件;
[0016]根據查找的所述控件,調用所述控件對應的響應函數,響應所述語音控制指令。
[0017]結合第一方面,在第一方面的第一種可能實現方式中,所述將語音包廣播注冊到所述Activity組件步驟包括:[〇〇18]檢測安卓系統中的Activity組件的狀態信息;[〇〇19]如果所述系統的Activity組件的狀態信息為預設的狀態信息,則在所述狀態信息對應的函數中刪除所述語音操作。
[0020]結合第一方面的第一種可能實現方式,在第一方面的第二種可能實現方式中,所述預設的狀態信息為暫停狀態、停止狀態或者刪除狀態。
[0021]結合第一方面,在第一方面的第三種可能實現方式中,所述預先修改的安卓系統中的Activity組件,將語音包廣播注冊到所述Activity組件步驟具體為:
[0022]通過預先修改安卓系統中的Activity組件中的Activity.java文件,將語音包廣播注冊到所述Activity組件。[〇〇23]結合第一方面,在第一方面的第四種可能實現方式中,所述在所述Activity組件中查找所述文字信息對應的控件步驟包括:
[0024]根據JAVA提供的API接口檢測系統控件中包括的響應語音操作的控件;[〇〇25]獲取所述控件上顯示的文字內容,在所述控件上的文字內容中查找所述文字信息對應的控件。
[0026]第二方面,本發明實施例提供了一種基于安卓系統的語音交互裝置,所述裝置包括:[〇〇27]注冊單元,用于預先修改的安卓系統中的Activity組件,將語音包廣播注冊到所述Activity組件;
[0028]接收識別單元,用于接收語音控制指令,識別所述語音控制指令所對應的文字信息;[〇〇29]查找單元,用于在所述Activity組件中查找所述文字信息對應的控件;
[0030]響應單元,用于根據查找的所述控件,調用所述控件對應的響應函數,響應所述語音控制指令。
[0031]結合第二方面,在第二方面的第一種可能實現方式中,所述注冊單元包括:[〇〇32]狀態檢測子單元,用于檢測安卓系統中的Activity組件的狀態信息;[〇〇33]操作刪除單元,用于如果所述系統的Activity組件的狀態信息為預設的狀態信息,則在所述狀態信息對應的函數中刪除所述語音操作。[〇〇34]結合第二方面的第一種可能實現方式,在第二方面的第二種可能實現方式中,所述預設的狀態信息為暫停狀態、停止狀態或者刪除狀態。
[0035]結合第二方面,在第二方面的第三種可能實現方式中,所述注冊單元具體用于:
[0036]通過預先修改安卓系統中的Activity組件中的Activity.java文件,將語音包廣播注冊到所述Activity組件。
[0037]結合第二方面,在第二方面的第四種可能實現方式中,所述查找單元包括:
[0038]組件檢測子單元,用于根據JAVA提供的API接口檢測系統控件中包括的響應語音操作的控件;
[0039]控件查找子單元,用于獲取所述控件上顯示的文字內容,在所述控件上的文字內容中查找所述文字信息對應的控件。
[0040]在本發明中,通過預先修改安卓系統中的Activity組件,將語音包廣播注冊到所述Activity組件中,從而使得系統中依附在Activity組件上的應用程序自動接收到語音控制指令對應的廣播信息,根據所述廣播信息查找對應的控件,調用相應的函數響應所述語音控制指令,本發明可避免系統中的其它應用程序與語音應用程序進行復雜的對接適配操作,并且可以對所有的應用程序統一維護,移植方便。【附圖說明】[0041 ]圖1是現有技術中的語音交互方法的示意圖;[〇〇42]圖2是本發明第一實施例提供的語音交互方法的實現流程圖;[〇〇43]圖3是本發明第二實施例提供的語音交互方法的實現流程圖;[〇〇44]圖4是本發明第三實施例提供的語音交互裝置的結構示意圖。【具體實施方式】
[0045]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
[0046]本發明實施例的目的在于提供一種基于安卓系統的語音交互方法和裝置,以解決現有技術中的語音交互方法中所存在的問題。目前所有需要響應語音的應用程序,需要先與語音應用程序,比如與語音助手進行適配連接,比如進行廣播的注冊連接,從而將應用的數據信息發送給語音應用程序,并接收語音應用程序針對語音控制指令所對應的控制指令。建立適配連接較為麻煩,而且使得語音系統的可維護性和可移植性較差。下面結合附圖,對本發明作進一步的說明。
[0047]實施例一:[〇〇48]圖2示出了本發明第一實施例提供的語音交互方法的實現流程,詳述如下:[〇〇49]在步驟S201中,預先修改的安卓系統中的Activity組件,將語音包廣播注冊到所述Activity組件。[0〇5〇]具體的,本發明實施例所述系統,可以為安卓系統。所述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[〇〇58] 如果一個Activity是Paused或者Stopped狀態,系統可以將該Activity從內存中刪除,Android系統采用兩種方式進行刪除,要么要求該Activity結束,要么直接終止它的進程。當該Activity再次顯示給用戶時,它必須重新開始和重置前面的狀態。
[0059]傳統的注冊方式,是用戶自己的應用程序中,手動注冊語音包的廣播。這種操作方式麻煩,而且工作量大。
[0060]為了使得應用程序注冊語音包的廣播更為簡單化,本發明根據應用程序開發者開發基于安卓系統的應用時,通常會繼承安卓安卓系統中的Activity組件。因此,我們可以獲取安卓系統的Activity組件的源碼,修改Activity.java文件,將語音包廣播注冊在這里。 這樣,對于發送給應用程序的廣播消息,都可以通過繼承的所述Activity組件接收。
[0061]在步驟S202中,接收語音控制指令,識別所述語音控制指令所對應的文字信息。
[0062]具體的,所述語音控制指令,可通過運行的本發明所述方法對應的語音應用程序接收。并通過所述語音應用程序對所述語音控制指令進行解析,得到所述語音控制指令所對應的文字信息。
[0063]本發明對于語音控制指令的識別,可通過去噪算法以及最優匹配算法,得到語音控制指令所對應的文字信息。[〇〇64] 在步驟S203中,在所述Activity組件中查找所述文字信息對應的控件。[〇〇65] 通過上述步驟,雖然已將語音操作注冊到了系統中安裝的應用程序中,但是應用程序仍然無法響應語音操作。這是因為應用程序接收到語音控制指令對應的文字信息時, 并不知道這個語音控制指令應當由哪個控件響應。因此,在本步驟中,需要查找所述語音控制指令所對應的控件。
[0066]在步驟中,我們研究安卓系統控件的繼承體系結構,雖然控件的種類很類,但是可以將控件進行分類,一類為響應語音操作的控件,一類為不響應語音操作的控件。其中,響應語音操作的控件都繼承自Text View控件,也就是說這些控件上都有對應的文字內容。本發明需要查找的控件,就是響應語音操作的控件。其中,在所述Activity組件中查找所述文字信息對應的控件步驟包括:
[0067]根據JAVA提供的API接口檢測系統控件中包括的響應語音操作的控件;[〇〇68]獲取所述控件上顯示的文字內容,在所述控件上的文字內容中查找所述文字信息對應的控件。[〇〇69]比如,我們通過檢測API接口的方式,獲取了響應語音操作的控件,并且根據TextView控件中的文字內容,獲取控件顯示的文字,比如控件的文字為“瑯琊榜”,如果語音控制指令對應的文字信息和這個控件的文字內容匹配為“狼琊榜”,則這個控件做出響應。
[0070]在步驟S204中,根據查找的所述控件,調用所述控件對應的響應函數,響應所述語音控制指令。
[0071]根據控件上的文字內容,查找到所述語音控制指令對應的所述控件后,調用所述控件上相應的響應函數,從而響應所述語音控制指令。[〇〇72]本發明實施例通過預先修改安卓系統中的Activity組件,將語音包廣播注冊到所述Activity組件中,從而使得系統中依附在Activity組件上的應用程序自動接收到語音控制指令對應的廣播信息,根據所述廣播信息查找對應的控件,調用相應的函數響應所述語音控制指令,本發明可避免系統中的其它應用程序與語音應用程序進行復雜的對接適配操作,并且可以對所有的應用程序統一維護,移植方便。[〇〇73] 實施例二:
[0074]圖3示出了本發明第二實施例提供的語音控制方法的實現流程,詳述如下:[〇〇75]在步驟S301中,預先修改的安卓系統中的Activity組件,將語音包廣播注冊到所述Activity組件。[〇〇76]在步驟S302中,檢測安卓系統中的Activity組件的狀態信息。[〇〇77]具體的,對于系統中的每個應用程序,我們通過修改系統的Activity組件后,默認給每個應用程序上添加了語音操作,應用開發者不方便將相應的語音操作刪除。但是,如果不能夠有效的將所述語音操作刪除,可能會導致系統泄露的問題。[〇〇78]為了解決這個問題,本發明利用安卓系統的Activity組件的生命周期,即在實施例一中介紹的Active、Paused、Stoped、killed四個狀態信息。可通過修改Activity ? java文件,使得系統的Activity組件預設的狀態時,比如在paused狀態時,或者在Stoped、killed 狀態時,刪除所述語音操作。[〇〇79]在步驟S303中,如果所述系統的Activity組件的狀態信息為預設的狀態信息,則在所述狀態信息對應的函數中刪除所述語音操作。
[0080]其中,所述預設的狀態信息為暫停狀態、停止狀態或者刪除狀態中的一種或者多種。
[0081]在步驟S304中,接收語音控制指令,識別所述語音控制指令所對應的文字信息。 [〇〇82] 在步驟S305中,在所述Activity組件中查找所述文字信息對應的控件;
[0083] 在步驟S306中,根據查找的所述控件,調用所述控件對應的響應函數,響應所述語音控制指令。[〇〇84]本發明實施例在實施例一的基礎上,進一步對系統的Activity組件的狀態信息進行監測,并根據系統的Activity組件的狀態信息,對語音操作進行剔除操作,從而使得本發明可以適應對語音操作剔除的功能,并且不會導致系統泄露。[〇〇85] 實施例三:[〇〇86]圖4示出了本發明第三實施例提供的語音交互裝置的結構示意圖,詳述如下:[〇〇87]本發明實施例所述語音交互裝置,包括:[〇〇88]注冊單元401,用于預先修改的安卓系統中的Activity組件,將語音包廣播注冊到所述Activity組件;
[0089]接收識別單元402,用于接收語音控制指令,識別所述語音控制指令所對應的文字信息;
[0090] 查找單元403,用于在所述Activity組件中查找所述文字信息對應的控件;[0091 ]響應單元404,用于根據查找的所述控件,調用所述控件對應的響應函數,響應所述語音控制指令。[〇〇92]優選的,所述注冊單元包括:[〇〇93]狀態檢測子單元,用于檢測安卓系統中的Activity組件的狀態信息;[〇〇94]操作刪除單元,用于如果所述系統的Activity組件的狀態信息為預設的狀態信息,則在所述狀態信息對應的函數中刪除所述語音操作。[〇〇95]優選的,所述預設的狀態信息為暫停狀態、停止狀態或者刪除狀態。[〇〇96]優選的,所述注冊單元具體用于:
[0097] 通過預先修改安卓系統中的Activity組件中的Activity.java文件,將語音包廣播注冊到所述Activity組件。[〇〇98]優選的,所述查找單元包括:[〇〇99]組件檢測子單元,用于根據JAVA提供的API接口檢測系統控件中包括的響應語音操作的控件;
[0100]控件查找子單元,用于獲取所述控件上顯示的文字內容,在所述控件上的文字內容中查找所述文字信息對應的控件。[〇1〇1]本發明實施例所述語音交互裝置,與實施例一和二所述語音交互方法對應,在此不作重復贅述。
[0102]在本發明所提供的幾個實施例中,應該理解到,所揭露的裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0103]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
[0104]另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用軟件功能單元的形式實現。
[0105]所述集成的單元如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分。而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(R0M,Read-0nly Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0106]以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
【主權項】
1.一種基于安卓系統的語音交互方法,其特征在于,所述方法包括:預先修改安卓系統中的Activity組件,將語音包廣播注冊到所述Activity組件;接收語音控制指令,識別所述語音控制指令所對應的文字信息;在所述Ac t i v i ty組件中查找所述文字信息對應的控件;根據查找的所述控件,調用所述控件對應的響應函數,響應所述語音控制指令。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接口檢測系統控件中包括的響應語音操作 的控件;控件查找子單元,用于獲取所述控件上顯示的文字內容,在所述控件上的文字內容中 查找所述文字信息對應的控件。
【文檔編號】G10L15/22GK106098061SQ201610383136
【公開日】2016年11月9日
【申請日】2016年6月1日 公開號201610383136.4, CN 106098061 A, CN 106098061A, CN 201610383136, CN-A-106098061, CN106098061 A, CN106098061A, CN201610383136, CN201610383136.4
【發明人】盧偉超
【申請人】Tcl集團股份有限公司