一種支持多級命令詞的語音交互方法
【專利摘要】本發(fā)明公開了一種支持多級命令詞的語音交互方法,根據(jù)所需識別的場景將命令詞設(shè)置為多個上下級關(guān)聯(lián)的級別,對每級命令詞分別對應建立識別模型;每個命令詞還分類為屬于控制詞還是非控制詞,其中控制詞觸發(fā)所需識別的場景中相應的控制模塊,非控制詞觸發(fā)與之關(guān)聯(lián)的下一級別命令詞的識別過程;對輸入的語音進行識別時,根據(jù)目標場景調(diào)用相應的識別模型并且針對目標場景的每一級別分別調(diào)用命令詞識別模型,具體按照命令詞級別的上下級的先后順序分為多級進行。本發(fā)明使得在有限的資源下極大的擴展了命令詞數(shù)量,從而應用領(lǐng)域大大增加,可應用于小家電及所有可加裝聲控模塊的設(shè)備上。
【專利說明】
一種支持多級命令詞的語音交互方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及語音識別領(lǐng)域,特別一種離線語音識別。
【背景技術(shù)】
[0002]近年來,隨著語音識別技術(shù)的進步,語音交互因其天然的便利性,在日常生活中應用越來越廣泛。語音喚醒和命令詞識別這兩個最常用的技術(shù)點在車載系統(tǒng)、智能家居等領(lǐng)域里已經(jīng)得到廣泛的應用。但我們也發(fā)現(xiàn),在目前大部分的應用方案中,語音交互采用的是在線識別的方式,這就要求設(shè)備在使用時需要連接互聯(lián)網(wǎng),將計算好的語音特征值上傳到服務器,服務器再返回識別后的結(jié)果。這種方式的好處是識別在云端進行,識別的結(jié)果會很精確,但這種方式的用戶體驗與網(wǎng)絡(luò)環(huán)境密切相關(guān),在沒有網(wǎng)絡(luò)的時候就無法使用;而且因為要傳回數(shù)據(jù)到服務器,這就牽涉到用戶隱私和網(wǎng)絡(luò)安全等因素,所以大大的影響了應用范圍。
[0003]在這種情況下,業(yè)界開始采用離線的語音交互方式,相對于在云端服務器的識別方法,離線語音識別精簡了語言和聲學模型,所有的運算都在本地進行。但是受制于硬件條件限制,如計算能力、RAM和Flash大小以及功耗散熱等因素,尤其是主頻和RAM大小,這兩項直接限制了模型的大小以及所支持的命令詞數(shù)量,模型精簡過度之后會嚴重影響識別的準確率。此外,這種離線識別方案中,不同的應用場景使用的是不同的命令詞,需要提前將模型和代碼寫入硬件,這意味著即便是采用同一套元器件,不同的應用場景必須得使用不同的模塊,這在實際使用中造成了極大的不便。
【發(fā)明內(nèi)容】
[0004]發(fā)明目的:為了克服現(xiàn)有技術(shù)中存在的不足,本發(fā)明提供一種新的離線語音識別方案,用于解決現(xiàn)有的離線語音識別受制于硬件條件限制導致模型大小及支持的命令詞數(shù)量受限、影響識別率,并且采用同一套元器件時對不同場景需使用具有不同模型和代碼的相應模塊才能正常使用所帶來的使用不便的技術(shù)問題。
[0005]技術(shù)方案:為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:
[0006]—種支持多級命令詞的語音交互方法,根據(jù)所需識別的場景將命令詞設(shè)置為i個級別,i取I至n,這里η為所需識別的場景數(shù)量,設(shè)定第i級命令詞與第i+Ι級命令詞之間為上下級關(guān)系;對每級命令詞分別對應建立識別模型;每個命令詞還分類為屬于控制詞還是非控制詞,其中控制詞觸發(fā)所需識別的場景中相應的控制模塊,非控制詞觸發(fā)與之關(guān)聯(lián)的下一級別命令詞的識別過程;
[0007]對輸入的語音進行識別時,按照命令詞級別的上下級的先后順序分為多級進行,其中每一級的識別過程如下:
[0008]首先調(diào)入該級別的命令詞的識別模型至RAM存儲器中并將該級別的命令詞作為偵聽目標進行偵聽:
[0009]若無法偵聽到,則根據(jù)本次偵聽目標按照下列規(guī)則重新偵聽:若本次偵聽目標為一級命令詞,則重新偵聽一級命令詞,若本次偵聽目標為其他級別命令詞,則返回進行識別上一級別命令詞;
[0010]若能偵聽到,則繼續(xù)判斷該命令詞為是否為控制詞,若為控制詞,則觸發(fā)所需識別的場景中相應的控制模塊,若為非控制詞,則觸發(fā)與之關(guān)聯(lián)的下一級別命令詞的識別過程并將當前級別的命令詞的識別模型從RAM存儲器中刪除。
[0011 ]進一步的,在本發(fā)明中,將每級命令詞的識別模型分別存儲于FLASH存儲器中,使用時根據(jù)需要從FLASH存儲器中調(diào)入相應的識別模型至RAM存儲器中。這樣RAM存儲器就不需要同時支持所有級別的命令詞,只需要分別支持每一級命令詞即可。
[0012]進一步的,在本發(fā)明中,對任意一個場景,將該場景所對應的命令詞的識別模型所組成的集合存儲于FLASH存儲器中,使用時根據(jù)所需場景從FLASH存儲器中調(diào)用該場景對應的識別模型所組成的集合至RAM存儲器中。這樣RAM存儲器就不需要同時支持所有的場景對應的命令詞,只需要在對某種場景有交互需求時相應的識別模型能夠被調(diào)用使用即可。
[0013]現(xiàn)有技術(shù)中,典型的語音喚醒/命令詞識別算法如下:通過實時語音采集,然后計算語音能量,如果一定時候這些能量沒有超過一個閾值,我們認為沒有聲音,這個時候也就不需要進行語音算法處理處理。一旦檢測到有聲音,我們將會對其后的語音數(shù)據(jù)計算特征然后語音識別。從工程的角度,從檢測到聲音和聲音結(jié)束,會有一段時間,如果時間太長或者太短,我們可以都認為不是我們期望的命令詞語??紤]到識別率和嵌入式計算性能的平衡,我們通常采用基于隱馬爾科夫模型的方法做語音識別?;陔[馬爾科夫模型的語音識別算法是一種經(jīng)典的、高效的、與說話人無關(guān)的一種語音識別算法。它通過使用大量語音語料對語音建模(比如中文可以對每個聲母和韻母建模,或者對每個音節(jié)建模等),然后使用這些模型搭建需要的識別網(wǎng)絡(luò)。在命令詞識別的時候,針對每個命令詞,我們對連續(xù)提取語音特征和建模數(shù)據(jù)進行計算得到得分,最終我們以最高得分的命令詞為識別結(jié)果。另外,為了識別排除一些不是屬于這些命令詞集的語音,我們提供一個通用的共有的模型來計算得分,通過比較這個得分和之前的命令詞網(wǎng)絡(luò)得分,以便于判斷這段語音是否是屬于命令詞中的一種,這樣子使得識別算法更有實用性?,F(xiàn)有技術(shù)中,實現(xiàn)時可通過對編譯器進行定點化代碼實現(xiàn)隱馬爾科夫模型中涉及到的各種浮點運算過程。
[0014]有益效果:本發(fā)明提供的多級命令詞識別方案,在有限的資源下極大的擴展了命令詞數(shù)量,從而應用領(lǐng)域大大增加,可應用于小家電及所有可加裝聲控模塊的設(shè)備上。具體來說,本發(fā)明主要有以下優(yōu)點:
[0015]1、可以大大的節(jié)省RAM,在同等硬件條件下,支持更多的命令詞。
[0016]2、進行分級之后,同一時間需要識別的命令詞大大縮小,這樣可以提高識別準確率,同時降低誤識別率。在上面電燈的例子中,普通方案需要同時識別6個命令詞,分級之后,在同一時間同時識別的命令詞變?yōu)?或4個,因而準確性和誤識別率可以同時改進。
[0017]3、實現(xiàn)了同一套元器件可以適用于不同的應用場景,并且不必針對不同的場景中RAM中寫入不同的代碼,只需要在實施的時候接上不同的管腳即可,大大的節(jié)省了應用成本,提尚經(jīng)濟效益。
【附圖說明】
[0018]圖1為本發(fā)明的框架圖;
[0019]圖2為本發(fā)明的硬件示意圖;
[0020]圖3為本發(fā)明的識別過程。
【具體實施方式】
[0021]【具體實施方式】I
[0022]在日常應用中,對于電燈的命令詞有“打開燈光”、“關(guān)閉燈光”、“調(diào)亮燈光”、“減弱燈光”、“溫暖光”、“寒冷光”,按照現(xiàn)有的識別方案,有14個不同的字需要識別,這樣就需要構(gòu)建這14個字的模型,識別時RAM要支持14個字的模型,這對目前的單片機是很大的考驗。
[0023]按照本發(fā)明的方法,可以把“打開燈光”、“關(guān)閉燈光”以及“電燈設(shè)置”作為一級命令詞,剩下的“調(diào)亮燈光”、“減弱燈光”、“溫暖光”、“寒冷光”作為二級命令詞。這樣一級命令詞是9個不同的字,二級命令詞是10個不同的字,這樣RAM存儲器只需要支持10個字的模型就可以實現(xiàn)識別。舉個例子:在具體的算法中,我們可以先偵聽一級命令詞,等到識別出“電燈設(shè)置”之后,我們再把二級命令的模型調(diào)入到RAM中,如果在規(guī)定的時間之內(nèi)(比如說3秒),沒有偵聽到“調(diào)亮燈光”、“減弱燈光”、“溫暖光”、“寒冷光”中任何一個,我們重新再把一級命令詞調(diào)回到RAM存儲器中。
[0024]【具體實施方式】2
[0025]在識別的時候根據(jù)需要從FLASH存儲器中將不同場景對應的命令詞的識別模型向RAM存儲器中調(diào)用時,在硬件電路中也采用類似方案:對不同的管腳進行編碼,例如:接高電壓表示1,接地表示0,這樣對于兩個管腳,總共可以得到00、01、10、11共計四種編碼,程序啟動時,按照不同管腳的高低電平編碼,調(diào)入不同的模型到RAM中,以適應不同的應用場景。這樣在實際應用中,我們都只需要提供同一套電子元器件,里面的軟件代碼也都一樣,只是在不同的應用場景的時候,硬件電路接通相應的管腳。例如:我們可以將00對應電燈的命令詞,01對應空調(diào)的命令詞,10對應冰箱的命令詞,11對應風扇的命令詞。在實現(xiàn)過程中,我們先檢測編碼,然后調(diào)入不同的命令詞模型到RAM存儲器中,這樣就不需要同時支持電燈、空調(diào)、冰箱和風扇的命令詞,實際應用只需要調(diào)入其中一個到RAM中即可。
[0026]以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出:對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。
【主權(quán)項】
1.一種支持多級命令詞的語音交互方法,其特征在于:根據(jù)所需識別的場景將命令詞設(shè)置為i個級別,i取I至n,這里η為所需識別的場景數(shù)量,設(shè)定第i級命令詞與第i + Ι級命令詞之間為上下級關(guān)系;對每級命令詞分別對應建立識別模型;每個命令詞還分類為屬于控制詞還是非控制詞,其中控制詞觸發(fā)所需識別的場景中相應的控制模塊,非控制詞觸發(fā)與之關(guān)聯(lián)的下一級別命令詞的識別過程; 對輸入的語音進行識別時,按照命令詞級別的上下級的先后順序分為多級進行,其中每一級的識別過程如下: 首先調(diào)入該級別的命令詞的識別模型至RAM存儲器中并將該級別的命令詞作為偵聽目標進行偵聽: 若無法偵聽到,則根據(jù)本次偵聽目標按照下列規(guī)則重新偵聽:若本次偵聽目標為一級命令詞,則重新偵聽一級命令詞,若本次偵聽目標為其他級別命令詞,則返回進行識別上一級別命令詞; 若能偵聽到,則繼續(xù)判斷該命令詞為是否為控制詞,若為控制詞,則觸發(fā)所需識別的場景中相應的控制模塊,若為非控制詞,則觸發(fā)與之關(guān)聯(lián)的下一級別命令詞的識別過程并將當前級別的命令詞的識別模型從RAM存儲器中刪除。2.根據(jù)權(quán)利要求1所述的支持多級命令詞的語音交互方法,其特征在于:將每級命令詞的識別模型分別存儲于FLASH存儲器中,使用時根據(jù)需要從FLASH存儲器中調(diào)入相應的識別模型至RAM存儲器中。3.根據(jù)權(quán)利要求1所述的支持多級命令詞的語音交互方法,其特征在于:對任意一個場景,將該場景所對應的命令詞的識別模型所組成的集合存儲于FLASH存儲器中,使用時根據(jù)所需場景從FLASH存儲器中調(diào)用該場景對應的識別模型所組成的集合至RAM存儲器中。
【文檔編號】G10L15/14GK105931639SQ201610373481
【公開日】2016年9月7日
【申請日】2016年5月31日
【發(fā)明人】楊若沖
【申請人】楊若沖