本發明實施例涉及人工智能自動控制領域,例如涉及一種機器人喚醒方法、裝置和機器人。
背景技術:
隨著人工智能技術的發展,機器人為人類的生產生活帶來了很多便利。當前用戶對機器人進行控制時,可對機器人預先設置喚醒詞,當機器人聽到一個特定的喚醒詞時,就知道是用戶在呼喚自己。用戶可以以喚醒詞加命令內容的形式向機器人發布語音命令,例如,“mike(喚醒詞),今天天氣怎么樣(命令內容)?”,聽到語音命令的機器人將對上述語音命令進行解析,解析出喚醒詞,如果喚醒詞與該機器人內設置的喚醒詞一致,機器人將能夠判別出是在叫自己,并將語音命令中喚醒詞后的內容作為命令內容,即識別出用戶是在詢問今天的天氣,于是便可直接做出回答,如圖1示出了用戶對一個機器人進行控制的場景。
在實現本發明過程中,發明人發現相關技術中至少存在如下問題:當同一用戶擁有多個機器人,且某項任務需要多個機器人共同完成時,現有方法將不再適用。例如,用戶命令:“mike,tom,jerry,幫我把房間收拾一下”,按照上述解析方法,喚醒詞為mike的機器人解析出的命令內容是“tom,jerry,幫我把房間收拾一下”。由于不能正確的解析出命令內容,機器人將無法完成用戶交代的任務。
技術實現要素:
本發明實施例的一個目的是提供一種新的機器人喚醒方法、裝置和機器人,當用戶同時對多個機器人發布語音命令時,機器人能正確的解析出命令內容,從而正確的完成用戶交代的任務。
第一方面,本發明實施例提供了一種機器人喚醒方法,所述喚醒方法應用于機器人,所述方法包括:
獲取語音命令;
根據所述語音命令和預設的喚醒詞庫,解析出所述語音命令中的喚醒詞以及命令內容,所述喚醒詞庫包括至少兩個喚醒詞,所述喚醒詞庫中的喚醒詞用于喚醒至少兩個機器人,所述機器人對應一個或一個以上的喚醒詞;
根據解析出的喚醒詞和命令內容執行操作。
第二方面,本發明實施例還提供了一種機器人喚醒裝置,所述喚醒裝置應用于機器人,所述裝置包括:
語音命令獲取模塊,用于獲取語音命令;
語音命令解析模塊,用于根據所述語音命令和預設的喚醒詞庫,解析出所述語音命令中的喚醒詞以及命令內容,所述喚醒詞庫包括至少兩個喚醒詞,所述喚醒詞庫中的喚醒詞用于喚醒至少兩個機器人,所述機器人對應一個或一個以上的喚醒詞;
執行模塊,用于根據解析出的喚醒詞和命令內容執行操作。
第三方面,本發明實施例還提供了一種機器人,包括:
至少一個處理器;以及,
與所述至少一個處理器通信連接的存儲器;其中,
所述存儲器存儲有可被所述至少一個處理器執行的指令,所述指令被所述至少一個處理器執行,以使所述至少一個處理器能夠執行如上所述的方法。
本發明實施例提供的喚醒方法和裝置,通過在機器人內預設包括至少兩個喚醒詞的喚醒詞庫,例如用戶擁有多個機器人,可以將該多個機器人對應的喚醒詞預先設置于喚醒詞庫內,當用戶同時對多個機器人發布語音命令時,機器人可以根據預設的喚醒詞庫正確的解析出語音命令中含有的喚醒詞,從而正確的解析出語音命令中的命令內容,進而正確的完成用戶交代的任務。
附圖說明
一個或多個實施例通過與之對應的附圖中的圖片進行示例性說明,這些示例性說明并不構成對實施例的限定,附圖中具有相同參考數字標號的元件表示為類似的元件,除非有特別申明,附圖中的圖不構成比例限制。
圖1是現有技術中用戶對一個機器人進行控制的示意圖;
圖2是本發明方法和裝置的應用場景示意圖;
圖3是本發明喚醒方法的一個實施例的流程圖;
圖4a是本發明喚醒方法的一個實施例中獲取語音命令步驟的流程圖;
圖4b是本發明喚醒方法的一個實施例中獲取語音命令步驟的流程圖;
圖5是本發明喚醒方法的一個實施例中解析語音命令步驟的流程圖;
圖6a是本發明喚醒方法的一個實施例中執行語音命令步驟的流程圖;
圖6b是本發明喚醒方法的一個實施例中執行語音命令步驟的流程圖;
圖7a是本發明喚醒方法的一個實施例的流程圖;
圖7b是本發明喚醒方法的一個實施例的流程圖;
圖8是本發明喚醒裝置的一個實施例的結構示意圖;
圖9是本發明喚醒裝置的一個實施例中語音命令獲取模塊的結構示意圖;
圖10是本發明喚醒裝置的一個實施例的結構示意圖;
圖11是本發明喚醒裝置的一個實施例的結構示意圖;以及
圖12是本發明實施例提供的喚醒方法的機器人的硬件結構示意圖。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
本發明提供的機器人喚醒方法和裝置適用于如圖2所示的應用場景,包括多個機器人20,多個機器人20之間可以通過網絡30互相通信,其中,網絡30可以是例如家庭或公司的局域網,或一個特定網絡等。機器人20具有至少一個網絡接口,與網絡30建立通信連接,從網絡30獲取數據或者指令。用戶10可以對多個機器人20進行設置或者發布命令。
每個機器人都具有與其對應的喚醒詞用于將自身從休眠狀態中喚醒或者響應用戶的呼喚(喚醒詞一般為一個,也可以為多個)。其中,所述喚醒詞可以為機器人的名字,識別碼或者其他任意詞匯,所述喚醒詞可以由用戶進行設置,也可以在出廠時自帶。
每個機器人都具有用于放置喚醒詞的喚醒詞庫,所述喚醒詞庫可以在出廠時自帶,也可以由用戶設置。同一用戶的各個機器人之間可以共享相同的喚醒詞庫,以圖2所示的實施例為例,假設用戶10擁有三個機器人,三個機器人的喚醒詞分別為mike、tom和jerry(此處以每個機器人對應一個喚醒詞為例說明,但并不限于此,每個機器人也可以關聯兩個以上的喚醒詞),那么三個機器人的喚醒詞庫均可以設置成包括mike、tom和jerry。當用戶同時向該三個機器人發布語音命令“mike,tom,jerry,幫我把房間收拾一下”時,由于每個機器人的喚醒詞庫均包括mike、tom和jerry,根據該喚醒詞庫,機器人可以解析出喚醒詞mike、tom和jerry,從而能正確的解析出喚醒詞后的命令內容“幫我把房間收拾一下”。
在實際使用中,對語音命令中喚醒詞的解析可以采用聲學模型,喚醒詞庫中的喚醒詞采用與喚醒詞對應的音素序列,根據用戶發出的語音和預設的聲學模型解碼出音素序列,再將該音素序列與喚醒詞音素序列進行匹配,從而解析出喚醒詞。解析出喚醒詞后,語音命令中喚醒詞后面的內容作為命令內容。語音命令中命令內容的語義解析需要事先構建命令詞語法文件,用戶發出的命令內容需要存在于事先構建的命令詞語法文件中,根據用戶發出的語音和命令詞語法文件解析出命令內容的語義。
喚醒詞庫的更新可以由用戶進行設置,也可以由機器人之間自行完成更新。例如目前的喚醒詞庫中包括mike、tom和jerry三個喚醒詞,當用戶又購入一個機器人(假設喚醒詞為john)并通過網絡與其他機器人之間建立通信連接后,新加入的機器人會通過網絡向其他機器人廣播自己的喚醒詞john,其他機器人接收到該喚醒詞后,會將該喚醒詞加入到喚醒詞庫中,并將更新后的喚醒詞庫發送給新加入的機器人。
需要說明的是,雖然在圖2中僅顯示了1個用戶10、3個機器人20。但本領域技術人員可以理解的是,在實際應用過程中,該應用場景還可以包括更多的用戶10和機器人20。本發明提供的機器人喚醒方法和裝置亦適用于用戶對一個或兩個機器人進行控制的場合。
本發明實施例提供了一種機器人喚醒方法,所述喚醒方法可由圖2所示的任一機器人執行,如圖3所示,為所述喚醒方法的一個實施例的流程圖,所述喚醒方法包括:
步驟101:獲取語音命令;
在實際應用中,可以在機器人身上設置麥克風用于實時接收語音信號。所述語音命令可以是實時接收的語音信號。但是有時用戶雖然發出語音,但不一定是針對機器人的語音命令,因此需要對語音信息進行進一步判斷,如果該語音信息是針對喚醒詞庫中的任一喚醒詞對應的機器人的命令,則將該語音信息作為語音命令。
步驟102:根據所述語音命令和預設的喚醒詞庫,解析出所述語音命令中的喚醒詞以及命令內容,所述喚醒詞庫包括若干個喚醒詞,所述喚醒詞庫中的喚醒詞對應至少兩個機器人;
其中,所述命令內容可以是從用戶發出的語音命令中截取的命令內容對應的語音,也可以是對該語音進行語義解析后的結果。如果是前者,機器人在執行命令內容對應的操作時還需要進行語義解析。所述若干個包括一個或者多個,即所述喚醒詞庫可以包括一個或多個喚醒詞。
步驟103:根據解析出的喚醒詞和命令內容執行操作。
可選的,機器人解析出喚醒詞和命令內容后,如果解析中的喚醒詞包括自身對應的喚醒詞,則執行命令內容對應的操作,如果不包含自身對應的喚醒詞,則不執行任何操作。或者,無論解析出的喚醒詞是否包含自身對應的喚醒詞,都將命令內容發送給喚醒詞對應的其他機器人,由喚醒詞對應的機器人共同完成用戶交代的任務。也可以由機器人根據命令內容將用戶交代的任務分解成若干個子任務,將子任務分別通知喚醒詞對應的其他機器人,由喚醒詞對應的機器人協作完成用戶交代的任務。
需要說明的是,上述步驟101、102和103并不必然被每個機器人都執行到,任一機器人有可能執行全部步驟也有可能只執行其中的一或兩個步驟。以圖2所示的應用場景為例,當用戶發出語音“mike,tom,jerry,幫我把房間收拾一下”時。機器人mike,tom,jerry可以分別獲取用戶發出的語音命令,解析出喚醒詞和命令內容后,如果發現自己是用戶的命令對象,則根據解析出的命令內容執行操作。在這種情況下,三個機器人都執行了步驟101、102和103。也可能只有機器人mike聽到了用戶發出的語音命令,mike獲取了語音命令后,解析出喚醒詞和命令內容,將命令內容發送給tom和jerry,三個機器人共同執行任務。在這種情況下只有mike執行了步驟101、102和103,而tom和jerry只執行了步驟103。步驟102可能只被一個機器人或幾個機器人執行,執行的機器人會將解析出的喚醒詞和命令內容通過網絡共享給其他機器人。
本發明實施例提供的喚醒方法,通過在機器人內預設包括若干個喚醒詞的喚醒詞庫,例如用戶擁有多個機器人,可以將該多個機器人對應的喚醒詞預先設置于喚醒詞庫內,當用戶同時對多個機器人發布語音命令時,機器人可以根據預設的喚醒詞庫正確的解析出語音命令中含有的喚醒詞,從而正確的解析出語音命令中的命令內容,進而完成用戶交代的任務。
其中,具體的,在本發明的某些實施例中,如圖4a所示,所述獲取語音命令包括以下步驟;
步驟1011:監聽語音信息;
每個機器人都會實時監聽用戶發出的語音信息;
步驟1012:確認所述語音信息是否為針對喚醒詞庫對應的機器人的命令;
步驟1013:如果所述語音信息為針對喚醒詞庫對應的機器人的命令,則記錄所述語音信息作為語音命令。
確認上述語音信息是否是用戶針對喚醒詞庫中的任一喚醒詞對應的機器人發出的命令,如果是,則該語音信息即為用戶發出的語音命令。具體的,確認所述語音信息是否為針對喚醒詞庫對應的機器人的命令,首先確認所述語音信息是否包括預設喚醒詞庫中的任一喚醒詞,如果包括喚醒詞庫中的任一喚醒詞,則繼續判斷該喚醒詞的出現是否為用戶對機器人的命令或者呼喚,而不是用戶在與其他人的通話中提到機器人。判斷用戶發出的語音信息是否是對機器人的命令或者呼喚,可以通過判斷喚醒詞與后面的語音內容之間停頓的時間間隔是否超過一預設時間,如果超過一預設時間,則該語音信息是對機器人的命令或者呼喚。或者可以通過判斷第一個喚醒詞前面是否有其他語音內容,如果沒有其他語音內容,則該語音信息是對機器人的命令或者呼喚。
可選的,在所述喚醒方法的其他實施例中,如圖4b所示,所述獲取語音命令包括:
步驟1014:監聽語音信息;
每個機器人都會實時監聽用戶發出的語音信息;
步驟1015:確認所述語音信息是否為針對喚醒詞庫對應的機器人的命令;
步驟1016:如果所述語音信息為針對喚醒詞庫對應的機器人的命令,則記錄所述語音信息以及監聽到語音信息的起始時刻,并加入預設的臨時命令記錄組;
如果機器人監聽到用戶發出的語音信息,會進一步判斷所述語音信息是否是用戶針對喚醒詞庫中的任一喚醒詞對應的機器人發出的命令,如果是,則記錄所述語音信息以及機器人聽到語音信息的時刻,并加入預設的臨時命令記錄組。
在實際應用中,機器人可以將所述語音信息和聽到語音信息的時刻存入機器人的緩存中。建立臨時命令組的目的是獲取相對完整和清晰的用戶命令,以圖2所示的三個機器人為例,假設用戶發布的語音命令為“mike,tom,jerry,幫我把房間收拾一下”,則聽到“mike”開頭、“tom”開頭或“jerry”開頭的每一個機器人記錄其聽到上述喚醒詞時的時間戳t(起始時刻),并不一定每個機器人都能聽到完整的命令,可能有的機器人正在遠處向用戶移動,沒有聽到最開始的“mike”,聽到的是“tom,jerry,幫我把房間收拾一下”,此處記錄的時間戳就是為了防止這種半截語句被當作完整命令的情況發生。
具體的,確認所述語音信息是否為針對喚醒詞庫對應的機器人的命令,首先確認所述語音信息是否包括預設喚醒詞庫中的任一喚醒詞,如果包括喚醒詞庫中的任一喚醒詞,則繼續判斷該喚醒詞的出現是否為用戶對機器人的命令或者呼喚,而不是用戶在與其他人的通話中提到機器人。判斷用戶發出的語音信息是否是對機器人的命令或者呼喚,可以通過判斷喚醒詞與后面的語音內容之間停頓的時間間隔是否超過一預設時間,如果超過一預設時間,則該語音信息是對機器人的命令或者呼喚。或者可以通過判斷第一個喚醒詞前面是否有其他語音內容,如果沒有其他語音內容,則該語音信息是對機器人的命令或者呼喚。
步驟1017:確認臨時命令記錄組內的機器人記錄的起始時刻中的最早時刻,根據所述最早時刻確定起始時間段;
比較臨時命令記錄組內的機器人記錄的起始時刻,確定最早的時刻,因為最早的時刻記錄的語音信息相對最完整。例如最早時刻為t1,以最早時刻t1為起點,并按照一個經驗設定閾值t0確定起始時間段為從t1到t1+t0。
t0的設置可以根據機器人的性能和經驗來設定,例如0.1s。一方面,不同機器人的反應有快有慢,因此需要設定一個時間差,另一方面,用戶發出的兩個喚醒詞之間會有一個相對固定的間隔,因此設定的時間差應小于此間隔,以防漏掉一個喚醒詞。
步驟1018:獲得起始時刻位于所述起始時間段內的語音信息中清晰度最高的語音信息作為語音命令。
語音信息記錄結束后,臨時命令記錄組內的機器人會對自身緩存的語音信息進行清晰度判定,得到分數值x,取起始時間段(t1到t1+t0)內的清晰度最高的語音信息作為語音命令。
需要說明的是,上述步驟1014、1015、1016、1017和1018并不必然被每個機器人都執行到,一般聽到語音信息的機器人都會執行步驟1014、1015和1016,但是步驟1017和1018可能只被一個機器人或幾個機器人執行,每個機器人可以向其他機器人廣播自己的工作狀態,由最空閑的機器人來執行,然后執行的機器人會將執行結果通過網絡共享給其他機器人。
本發明實施例通過各機器人記錄監聽到語音信息的起始時刻,并加入臨時命令記錄組,通過比較臨時命令記錄組內的機器人記錄的起始時刻,可以確定聽到語音信息的最早時刻,能獲得相對完整的語音命令。通過確定起始時間段內清晰度最高的語音信息作為語音命令,能獲得相對完整和清晰的語音命令,增強了獲取用戶語音命令的可靠性。語音命令的清晰便于對所述語音命令的正確解析,語音命令的完整,可以保證能盡可能完整的解析出用戶發出的喚醒詞,便于各喚醒詞對應的機器人之間的協同合作。
具體的,在所述喚醒方法的某些實施例中,如圖5所示,所述根據所述語音命令和預設的喚醒詞庫,解析出所述語音命令中的喚醒詞以及命令內容,包括:
步驟1021:根據語音命令和喚醒詞庫解析出語音命令中的喚醒詞;
由于用戶可能命令一個或者同時命令多個機器人,用戶對機器人的語音命令的語法格式一般如下:
<name>,[與|和|還有|那個|嗯|…]<name>,[與|和|還有|那個|嗯|…]<name>,……,<command>。
其中,<name>為某個機器人的喚醒詞,<name>的出現次數可以是一個或多個;
[與|和|還有|那個|嗯|…]為兩個喚醒詞間可能出現的連詞,如“張三還有李四”,此連詞并不是一定出現的,因此用[]表示;
<command>為喚醒詞后的命令內容。
例如,用戶語音命令為“張三,李四,還有王五,幫我十二點前準備好午飯”,此句話按照上述語法格式套用,則可判定“張三,李四,王五”為三個機器人的喚醒詞,“還有”為連詞或口頭語,“幫我十二點前準備好午飯”為命令內容。
通過將語音命令和喚醒詞庫中的喚醒詞逐一進行匹配,就可以解析出語音命令中的喚醒詞。
步驟1022:根據語音命令和喚醒詞解析出語音命令中的命令內容。
解析出語音命令中的喚醒詞后,語音命令中喚醒詞后面的內容即為用戶實際的命令內容,通過對該命令內容的語義解析,就能獲知用戶的真實用意。
需要說明的是,上述步驟1021和1022并不必然被每個機器人都執行到,可能只被一個機器人或幾個機器人執行,每個機器人可以向其他機器人廣播自己的工作狀態,由最空閑的機器人來執行。
具體的,在所述喚醒方法的某些實施例中,如圖6a所示,所述根據解析出的喚醒詞和命令內容執行操作,包括:
步驟1031:將命令內容通知與喚醒詞對應的機器人,以使與喚醒詞對應的機器人執行命令內容對應的操作。
可以是解析出喚醒詞和命令內容的機器人也可以是通過網絡獲取喚醒詞和命令內容的其他機器人將命令內容通知與喚醒詞對應的機器人。例如,用戶發布的語音命令為“mike,tom,jerry,幫我把房間收拾一下”,假設解析語音命令的機器人是mike,那么mike會將命令內容“幫我把房間收拾一下”發送給tom和jerry,然后mike、tom和jeery一起收拾房間。其中,mike發送給tom和jeery的命令內容可以是進行語義解析后的結果,也可以是語音,需要tom和jerry自行對語音進行語義解析。
可選的,在所述喚醒方法的其他實施例中,如圖6b所示,所述根據解析出的喚醒詞和命令內容執行操作,包括:
步驟1032:根據命令內容分解任務,將分解后的任務分別通知與喚醒詞對應的機器人,以使與喚醒詞對應的機器人協作執行命令內容對應的操作。
在實際應用中,機器人解析出喚醒詞和命令內容后,可以是解析出喚醒詞和命令內容的機器人也可以是通過網絡獲取喚醒詞和命令內容的其他機器人,可以通知喚醒詞對應的其他機器人等待任務,使各個機器人建立任務組,任務組成員間開始同步(如共享位置信息,唯一識別碼,自身能力等等),然后等待任務。解析語音命令的機器人根據命令內容結合各個機器人的位置和自身能力,將用戶交代的任務進行拆解,分成若干個子任務,然后將拆解后的子任務發送給任務組內的其他成員,任務組內的機器人協作完成用戶交代的任務。例如,以圖2為例說明,假設解析語音命令的機器人為mike,mike將收拾房間的任務分成三個子任務:收拾客廳和臥室、收拾衛生間以及收拾廚房,mike可以將收拾衛生間和收拾廚房的子任務分別發送給tom和jerry,自己收拾客廳和臥室。
本發明實施例相對于現有技術,執行任務的主體不再是單獨的機器人,而是將多個機器人聯合起來共同執行任務,執行效率更高,用戶體驗好。
如圖7a所示,為所述喚醒方法的一個實施例的流程示意圖,在該實施例中,所述喚醒方法,包括:
步驟201:監聽語音信息;
每個機器人都會實時監聽用戶發出的語音信息;
步驟202:確認所述語音信息是否為針對喚醒詞庫對應的機器人的命令;
步驟203:如果所述語音信息為針對喚醒詞庫對應的機器人的命令,則記錄所述語音信息作為語音命令。
每個監聽到語音信息的機器人都會確認上述語音信息是否是用戶針對喚醒詞庫中的任一喚醒詞對應的機器人發出的命令,如果是,則將該語音信息作為語音命令。
步驟204:根據所述語音命令和預設的喚醒詞庫,解析出所述語音命令中的喚醒詞以及命令內容。
在該實施例中,每個監聽到語音命令的機器人會對語音命令進行解析,解析出喚醒詞和命令內容。
步驟205:將命令內容通知與喚醒詞對應的機器人,以使與喚醒詞對應的機器人執行命令內容對應的操作。
解析語音命令的機器人,如果解析出的喚醒詞不包括自己,則將命令內容發送給其他喚醒詞對應的機器人;如果解析出的喚醒詞包括自己,則開始執行命令內容對應的操作,并將命令內容發送給其他相關的機器人。機器人如果自身解析出命令內容,則按照自身解析出的命令內容執行操作,如果自身沒有解析出命令內容,則按照其他機器人發送的命令內容執行操作。
本發明實施例提供的喚醒方法,通過在機器人內預設包括若干個喚醒詞的喚醒詞庫,機器人可以根據預設的喚醒詞庫正確的解析出語音命令中含有的喚醒詞,從而正確的解析出語音命令中的命令內容,進而正確的完成用戶交代的任務。用戶可以對多個機器人同時發出指令,多個機器人可以聯合起來共同執行用戶發布的任務,執行效率更高,用戶體驗好。
如圖7b所示,為所述喚醒方法的一個實施例的流程示意圖,在該實施例中,所述喚醒方法,包括:
步驟301:監聽語音信息;
每個機器人都會實時監聽用戶發出的語音信息;
步驟302:確認所述語音信息是否為針對喚醒詞庫對應的機器人的命令;
步驟303:如果所述語音信息為針對喚醒詞庫對應的機器人的命令,則記錄所述語音信息以及監聽到語音信息的起始時刻,并加入預設的臨時命令記錄組;
每個監聽到語音信息的機器人都會確認上述語音信息是否是用戶針對喚醒詞庫中的任一喚醒詞對應的機器人發出的命令,如果是,則記錄所述語音信息以及監聽到語音信息的起始時刻,并加入預設的臨時命令記錄組。然后,加入臨時命令記錄組的機器人會向其他機器人廣播自己加入了臨時命令記錄組,以使臨時命令記錄組內的組員能知曉其他組員的存在。
步驟304:確認臨時命令記錄組內的機器人記錄的起始時刻中的最早時刻,根據所述最早時刻確定起始時間段;
臨時命令記錄組中的機器人會向組內的其他機器人廣播自己記錄的起始時刻,某個機器人會確定各個起始時刻中的最早時刻,并根據該最早時刻確定起始時間段。
步驟305:獲得起始時刻位于所述起始時間段內的語音信息中清晰度最高的語音信息作為語音命令
語音信息記錄結束后,臨時命令記錄組中的機器人對自身記錄的語音信息進行清晰度判定,得到清晰度分數值,然后向臨時命令記錄組中的其他機器人廣播該清晰度分數值,某個機器人會找出位于起始時間段內清晰度最高的語音信息。
步驟306:根據所述語音命令和預設的喚醒詞庫,解析出所述語音命令中的喚醒詞以及命令內容;
步驟307:根據命令內容分解任務,將分解后的任務分別通知與喚醒詞對應的機器人,以使與喚醒詞對應的機器人協作執行命令內容對應的操作。
需要說明的是,上述步驟304、305、306和307并不必然被每個機器人執行,每個機器人可以向其他機器人廣播自己的工作狀態,由最空閑的機器人來執行。
本發明實施例提供的喚醒方法,通過在機器人內預設包括若干個喚醒詞的喚醒詞庫,機器人可以根據預設的喚醒詞庫正確的解析出語音命令中含有的喚醒詞,從而正確的解析出語音命令中的命令內容,進而正確的完成用戶交代的任務。通過各機器人記錄監聽到語音信息的起始時刻,并加入臨時命令記錄組,通過比較臨時命令記錄組內的機器人記錄的起始時刻,可以確定聽到語音信息的最早時刻,能獲得相對完整的語音命令。通過確定起始時間段內清晰度最高的語音信息作為語音命令,能獲得相對完整和清晰的語音命令,增強了獲取用戶語音命令的可靠性。用戶可以對多個機器人同時發出指令,多個機器人可以以協作的方式完成用戶發布的任務,執行效率更高,用戶體驗好。
可選的,在所述喚醒方法的其他實施例中,所述方法還包括:
更新喚醒詞庫。
當用戶又購入一個機器人,并通過網絡與其他機器人之間建立通信連接后,新加入的機器人會通過網絡向其他機器人廣播自己的喚醒詞,收到喚醒詞的機器人會將該喚醒詞同步到自身的喚醒詞庫,并將同步后的全集喚醒詞庫發回給該新加入的機器人。
可選的,在所述喚醒方法的其他實施例中,所述方法還包括:
解散臨時命令記錄組。
任務分配完成后,各個機器人開始執行任務,此時可以解散臨時命令記錄組,釋放內存,提高資源利用率。
相應的,本發明實施例還提供了一種機器人喚醒裝置,所述喚醒裝置設置于圖2所示的任一機器人內,如圖8所示,所述喚醒裝置400包括:
語音命令獲取模塊401,用于獲取語音命令;
語音命令解析模塊402,用于根據所述語音命令和預設的喚醒詞庫,解析出所述語音命令中的喚醒詞以及命令內容,所述喚醒詞庫包括若干個喚醒詞,所述喚醒詞庫中的喚醒詞對應至少兩個機器人;
執行模塊403,用于根據解析出的喚醒詞和命令內容執行操作。
本發明實施例提供的喚醒裝置,通過在機器人內預設包括若干個喚醒詞的喚醒詞庫,機器人可以根據預設的喚醒詞庫正確的解析出語音命令中含有的喚醒詞,從而正確的解析出語音命令中的命令內容,進而正確的完成用戶交代的任務。
具體的,在所述喚醒裝置的某些實施例中,所述語音命令獲取模塊401包括:
語音信息監聽子模塊,用于監聽語音信息;
語音命令確認子模塊,用于確認所述語音信息是否為針對喚醒詞庫對應的機器人的命令;
第一語音命令獲取子模塊,用于如果所述語音信息為針對喚醒詞庫對應的機器人的命令,則記錄所述語音信息作為語音命令。
可選的,在所述喚醒裝置的其他實施例中,如圖9所示,所述語音命令獲取模塊401包括:
語音信息監聽子模塊4011,用于監聽語音信息;
語音命令確認子模塊4012,用于確認所述語音信息是否為針對喚醒詞庫對應的機器人的命令;
語音命令記錄子模塊4013,用于如果所述語音信息為針對喚醒詞庫對應的機器人的命令,則記錄所述語音信息以及監聽到語音信息的起始時刻,并加入預設的臨時命令記錄組;
起始時間段確認子模塊4014,用于確認臨時命令記錄組內的機器人記錄的起始時刻中的最早時刻,根據所述最早時刻確定起始時間段;
第二語音命令獲取子模塊4015,用于獲得起始時刻位于所述起始時間段內的語音信息中清晰度最高的語音信息作為語音命令。
具體的,在所述喚醒裝置的某些實施例中,,所述語音命令確認子模塊包括:
語音命令確認子單元,用于如果所述語音信息包括預設喚醒詞庫中的任一喚醒詞且該喚醒詞的出現為呼喚,則所述語音信息為針對喚醒詞庫對應的機器人的命令。
可選的,如圖10所示,在所述喚醒裝置的其他實施例中,所述喚醒裝置500除了包括語音命令獲取模塊501、語音命令解析模塊502和執行模塊503之外,還包括:
喚醒詞庫更新模塊504,用于更新喚醒詞庫。
其中,在一些實施例中,所述喚醒詞庫更新模塊包括:
第一喚醒詞庫更新子模塊,用于根據喚醒詞設置指令設置喚醒詞,并廣播所述喚醒詞。
在另一些實施例中,所述喚醒詞庫更新模塊還包括:
第二喚醒詞庫更新子模塊,用于接收廣播的喚醒詞,將所述喚醒詞加入預設的喚醒詞庫中,并將更新后的喚醒詞庫發送給廣播喚醒詞的機器人。
具體的,在所述喚醒裝置的某些實施例中,所述語音命令解析模塊包括:
喚醒詞解析子模塊,用于根據語音命令和喚醒詞庫解析出語音命令中的喚醒詞;
命令內容解析子模塊,用于根據語音命令和喚醒詞解析出語音命令中的命令內容。
具體的,在所述喚醒裝置的某些實施例中,所述執行模塊包括:
第一執行子模塊,用于將命令內容通知與喚醒詞對應的機器人,以使與喚醒詞對應的機器人執行命令內容對應的操作。
在所述喚醒裝置的其他實施例中,所述執行模塊包括:
第二執行子模塊,用于根據命令內容分解任務,將分解后的任務分別通知與喚醒詞對應的機器人,以使與喚醒詞對應的機器人協作執行命令內容對應的操作。
如圖11所示,為所述喚醒裝置的一個實施例的結構示意圖,在該實施例中,所述喚醒裝置600包括:
語音命令獲取模塊601,用于獲取語音命令;其中,所述語音命令獲取模塊601包括:
語音信息監聽子模塊6011,用于監聽語音信息;
語音命令確認子模塊6012,用于確認所述語音信息是否為針對喚醒詞庫對應的機器人的命令;
語音命令記錄子模塊6013,用于如果所述語音信息為針對喚醒詞庫對應的機器人的命令,則記錄所述語音信息以及監聽到語音信息的起始時刻,并加入預設的臨時命令記錄組;
起始時間段確認子模塊6014,用于確認臨時命令記錄組內的機器人記錄的起始時刻中的最早時刻,根據所述最早時刻確定起始時間段;
第二語音命令獲取子模塊6015,用于獲得起始時刻位于所述起始時間段內的語音信息中清晰度最高的語音信息作為語音命令。
語音命令解析模塊602,用于根據所述語音命令和預設的喚醒詞庫,解析出所述語音命令中的喚醒詞以及命令內容,所述喚醒詞用于喚醒機器人;其中,所述語音命令解析模塊602包括:
喚醒詞解析子模塊6021,用于根據語音命令和喚醒詞庫解析出語音命令中的喚醒詞;
命令內容解析子模塊6022,用于根據語音命令和喚醒詞解析出語音命令中的命令內容。
執行模塊603,用于根據解析出的喚醒詞和命令內容執行操作,其中,所述執行模塊603包括:
第二執行子模塊6031,用于根據命令內容分解任務,將分解后的任務分別通知與喚醒詞對應的機器人,以使與喚醒詞對應的機器人協作執行命令內容對應的操作。
喚醒詞庫更新模塊604,用于更新喚醒詞庫。
語音信息監聽子模塊6011實時監聽用戶發出的語音,語音命令確認子模塊6012確認語音信息監聽子模塊6011監聽到的語音信息是否為用戶針對喚醒詞庫對應的機器人的命令,如果所述語音信息為針對喚醒詞庫對應的機器人的命令,語音命令記錄子模塊6013對所述語音信息以及監聽到語音信息的起始時刻進行記錄,并加入預設的臨時命令記錄組。臨時命令記錄組中的機器人會向其他機器人廣播自己記錄的起始時刻,起始時間段確認子模塊6014根據各個起始時刻確認監聽到用戶語音命令的最早時刻,并根據該最早時刻確定起始時間段。語音信息記錄結束后,臨時命令記錄組中的機器人對自身記錄的語音信息進行清晰度判定,得到清晰度分數值,然后向臨時命令記錄組中的其他機器人廣播該清晰度分數值,第二語音命令獲取子模塊6015確定起始時刻位于所述起始時間段內的語音信息中清晰度最高的語音信息作為語音命令。喚醒詞解析子模塊6021根據該語音命令解析出喚醒詞,命令內容解析子模塊6022,根據語音命令和上述喚醒詞解析出命令內容。第二執行子模塊6031,根據上述命令內容分解任務,促使與喚醒詞對應的機器人協作執行命令內容對應的操作。
本發明實施例提供的喚醒裝置,通過在機器人內預設包括若干個喚醒詞的喚醒詞庫,機器人可以根據預設的喚醒詞庫正確的解析出語音命令中含有的喚醒詞,從而正確的解析出語音命令中的命令內容,進而正確的完成用戶交代的任務。通過各機器人記錄監聽到語音信息的起始時刻,并加入臨時命令記錄組,通過比較臨時命令記錄組內的機器人記錄的起始時刻,可以確定聽到語音信息的最早時刻,能獲得相對完整的語音命令。通過確定起始時間段內清晰度最高的語音信息作為語音命令,能獲得相對完整和清晰的語音命令,增強了獲取用戶語音命令的可靠性。用戶可以對多個機器人同時發出指令,多個機器人可以以協作的方式完成用戶發布的任務,執行效率更高,用戶體驗好。
需要說明的是,上述喚醒裝置可執行本發明實施例所提供的喚醒方法,具備執行方法相應的功能模塊和有益效果。未在喚醒裝置實施例中詳盡描述的技術細節,可參見本發明實施例所提供的喚醒方法。
圖12是本發明實施例提供的機器人喚醒方法的機器人700的硬件結構示意圖,如圖12所示,該機器人700包括:
一個或多個處理器701以及存儲器702,圖12中以一個處理器701為例。
處理器701和存儲器702可以通過總線或者其他方式連接,圖12中以通過總線連接為例。
存儲器702作為一種非易失性計算機可讀存儲介質,可用于存儲非易失性軟件程序、非易失性計算機可執行程序以及模塊,如本發明實施例中的喚醒方法對應的程序指令/模塊(例如,附圖8所示的語音命令獲取模塊401、語音命令解析模塊402、執行模塊403)。處理器701通過運行存儲在存儲器702中的非易失性軟件程序、指令以及模塊,從而執行服務器的各種功能應用以及數據處理,即實現上述方法實施例的喚醒方法。
存儲器702可以包括存儲程序區和存儲數據區,其中,存儲程序區可存儲操作系統、至少一個功能所需要的應用程序;存儲數據區可存儲根據喚醒裝置的使用所創建的數據等。此外,存儲器702可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他非易失性固態存儲器件。在一些實施例中,存儲器702可選包括相對于處理器701遠程設置的存儲器,這些遠程存儲器可以通過網絡連接至喚醒裝置。上述網絡的實例包括但不限于互聯網、企業內部網、局域網、移動通信網及其組合。
所述一個或者多個模塊存儲在所述存儲器702中,當被所述一個或者多個處理器701執行時,執行上述任意方法實施例中的喚醒方法,例如,執行以上描述的圖3中的方法步驟101至步驟103,圖4a中的方法步驟1011至步驟1013,圖4b中的方法步驟1014至步驟1018,圖5中的方法步驟1021至步驟1022,圖6a中的方法步驟1031,圖6b中的方法步驟1032,圖7a中的方法步驟201-205,圖7b中的方法步驟301-307;實現圖8中的模塊401-403、圖9中子模塊4011和4015,圖10中模塊501-504,圖11中模塊601-604、子模塊6011-6015、子模塊6021-6022、子模塊6031的功能。
上述產品可執行本發明實施例所提供的方法,具備執行方法相應的功能模塊和有益效果。未在本實施例中詳盡描述的技術細節,可參見本發明實施例所提供的方法。
本發明實施例提供了一種非易失性計算機可讀存儲介質,所述計算機可讀存儲介質存儲有計算機可執行指令,該計算機可執行指令被一個或多個處理器執行,例如圖12中的一個處理器701,可使得上述一個或多個處理器可執行上述任意方法實施例中的喚醒方法,例如,執行以上描述的圖3中的方法步驟101至步驟103,圖4a中的方法步驟1011至步驟1013,圖4b中的方法步驟1014至步驟1018,圖5中的方法步驟1021至步驟1022,圖6a中的方法步驟1031,圖6b中的方法步驟1032,圖7a中的方法步驟201-205,圖7b中的方法步驟301-307;實現圖8中的模塊401-403、圖9中子模塊4011和4015,圖10中模塊501-504,圖11中模塊601-604、子模塊6011-6015、子模塊6021-6022、子模塊6031的功能。
以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。
通過以上的實施方式的描述,本領域普通技術人員可以清楚地了解到各實施方式可借助軟件加通用硬件平臺的方式來實現,當然也可以通過硬件。本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(read-onlymemory,rom)或隨機存儲記憶體(randomaccessmemory,ram)等。
最后應說明的是:以上實施例僅用以說明本發明的技術方案,而非對其限制;在本發明的思路下,以上實施例或者不同實施例中的技術特征之間也可以進行組合,步驟可以以任意順序實現,并存在如上所述的本發明的不同方面的許多其它變化,為了簡明,它們沒有在細節中提供;盡管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的范圍。