專利名稱:語(yǔ)音識(shí)別系統(tǒng)中跟蹤矩陣存儲(chǔ)器的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及語(yǔ)音識(shí)別,尤其是涉及存儲(chǔ)用于語(yǔ)音識(shí)別系統(tǒng)的格子跟蹤信息的方法。
背景技術(shù):
在依賴于講話者的語(yǔ)音識(shí)別系統(tǒng)中,當(dāng)使用該系統(tǒng)時(shí),用戶必須注冊(cè)他們想要的詞匯表字(vocabulary word)。詞匯表的“字”可以是說出的單個(gè)字或者短語(yǔ),且詞匯表的字的選擇依賴于特定的應(yīng)用。例如,用于便攜式無線電話的語(yǔ)音識(shí)別裝置可能要求用戶提供經(jīng)常呼叫的人們的姓名和位置(例如,“弗瑞德的辦公室”),或者通常使用的特征的指令提供在用戶的接口(例如,“蓄電池安時(shí)計(jì)”,“消息”,或“電話鎖”)。
在注冊(cè)程序過程中,語(yǔ)音識(shí)別系統(tǒng)響應(yīng)用戶的輸入以導(dǎo)出用于每一個(gè)詞匯表字的代表性模板。在一些系統(tǒng)中,此模板由包括一系列狀態(tài)的隱式馬爾科夫模式(HMM)表示。每一個(gè)狀態(tài)代表語(yǔ)音表達(dá)(speechutterance)的有限的部分;在此使用的表達(dá)稱為“詞匯表字”,其可包括一個(gè)或多個(gè)字。使用由用戶說出的特定的詞匯表字的一個(gè)或多個(gè)注冊(cè)語(yǔ)音樣本字來計(jì)算每一個(gè)HMM的狀態(tài)的統(tǒng)計(jì)表示。這通過幀對(duì)狀態(tài)分配來完成。
這種狀態(tài)分配被用于訓(xùn)練和工作的語(yǔ)音識(shí)別模式。具體地說,已分配的狀態(tài)被用來創(chuàng)建在訓(xùn)練模式中的模型,其被用來作為在語(yǔ)音識(shí)別模式期間的比較參考。可使用在工作的語(yǔ)音識(shí)別模式中的輸入表達(dá)的分配來產(chǎn)生分?jǐn)?shù)信息,并且將輸入表達(dá)與已存儲(chǔ)的參考模型進(jìn)行比較。
諸如維特比算法的對(duì)準(zhǔn)算法(alignment algorithm)被用于表達(dá)的幀對(duì)狀態(tài)分配。提供了將語(yǔ)音表達(dá)與模型進(jìn)行最好匹配的對(duì)準(zhǔn)算法被用來將詞匯表字表達(dá)的每一幀分配給模型的各個(gè)狀態(tài)。使用這種分配,可以精煉用于每一個(gè)狀態(tài)的統(tǒng)計(jì)表式。
在幀對(duì)準(zhǔn)期間,通過找出表達(dá)幀與在模型中的狀態(tài)的最佳匹配來定義“路徑”。為了進(jìn)行這一步,需要對(duì)在每一幀中的HMM的每一狀態(tài)進(jìn)行評(píng)估。假設(shè)觀察到的語(yǔ)音總計(jì)為幀t,其中的進(jìn)入給定的狀態(tài)的狀態(tài)在幀t-1最好,確定了該估計(jì)的一部分。對(duì)于完全連接的HMM,任意的一個(gè)狀態(tài)可以轉(zhuǎn)變?yōu)槿我獾钠渌鼱顟B(tài)。因此,可能有到達(dá)每一個(gè)狀態(tài)的N個(gè)路徑,其中N為狀態(tài)數(shù)。
使用這種技術(shù),在對(duì)準(zhǔn)算法期間,需要跟蹤哪一個(gè)語(yǔ)音幀被映射到在模型中的每一個(gè)狀態(tài)。使用常規(guī)的技術(shù),這要求很大的存儲(chǔ)器。現(xiàn)有技術(shù)的方法使用稱為跟蹤矩陣的陣列來存儲(chǔ)每一幀的信息,詳細(xì)地給出到每一個(gè)狀態(tài)的最好路徑。通常,這需要N×T的陣列,其中N為模型中的狀態(tài)數(shù),T為表達(dá)中的最大幀數(shù)。由于通常N等于20,T等于30,這樣的表示需要6000字的存儲(chǔ)量。
為了在便攜式設(shè)備上完成依賴于講話者的訓(xùn)練算法,在提供非常小的隨機(jī)存儲(chǔ)器(RAM)的無線通信設(shè)備中,用于存儲(chǔ)格子跟蹤信息的技術(shù)需要使所要求的存儲(chǔ)空間最小。因此,需要一種方法,用于存儲(chǔ)需要用來訓(xùn)練HMM的格子跟蹤信息,其減小所要求的存儲(chǔ)空間量。
我們深信具有新穎性的本發(fā)明的特征被具體地闡述于所附權(quán)利要求中。通過參考下面的說明書,結(jié)合所附附圖可以更好地理解本發(fā)明及其進(jìn)一步的目的和優(yōu)點(diǎn),其中,相同的附圖標(biāo)記代表相同的元件,其中
圖1為以方框圖形式表示的根據(jù)本發(fā)明的存儲(chǔ)格子跟蹤信息的無線電話的電路示意圖;圖2為以方框圖形式表示的說明用于根據(jù)圖1中的無線電話中的語(yǔ)音識(shí)別電路的輸入電路的電路示意圖;圖3為說明具有被分段為幀的兩個(gè)相關(guān)的語(yǔ)音表達(dá)的左-右隱式馬爾科夫模型(left-right Hidden Markov Model);圖4為一種模型的狀態(tài)轉(zhuǎn)移圖,其中,允許有自身環(huán)、單個(gè)步驟和單個(gè)跳變轉(zhuǎn)移;圖5為與在圖4的狀態(tài)轉(zhuǎn)移圖中的狀態(tài)之間的每一個(gè)允許的路徑相關(guān)的跟蹤格子;圖6為根據(jù)本發(fā)明的存儲(chǔ)狀態(tài)時(shí)延計(jì)數(shù)(state dwell counts)的跟蹤陣列;圖7為根據(jù)本發(fā)明的陣列更新過程的示意框圖,所述陣列更新過程用于使用存儲(chǔ)位置來更新存儲(chǔ)在時(shí)延計(jì)數(shù)的跟蹤陣列中的格子跟蹤信息;圖8為根據(jù)本發(fā)明的存儲(chǔ)狀態(tài)時(shí)延計(jì)數(shù)的各行的存儲(chǔ)陣列的示意框圖;圖9和圖10為對(duì)應(yīng)于根據(jù)本發(fā)明的用于使用存儲(chǔ)位置來更新存儲(chǔ)在時(shí)延計(jì)數(shù)的跟蹤陣列中的跟蹤信息的方法的流程圖;圖11為說明用于產(chǎn)生線性陣列的過程的流程圖,該過程對(duì)應(yīng)于本發(fā)明,被用來根據(jù)圖9和10的陣列更新過程的結(jié)果來存儲(chǔ)為每一個(gè)幀的幀分配;圖12為使用圖11的產(chǎn)生過程生成的線性陣列的示意框圖;圖13為根據(jù)本發(fā)明的另一個(gè)實(shí)施例的使用數(shù)字編碼碼元來存儲(chǔ)狀態(tài)時(shí)延計(jì)數(shù)的陣列的示意框圖;圖14為根據(jù)本發(fā)明的用于使用數(shù)字編碼來更新跟蹤信息的陣列更新過程的示意框圖;圖15為根據(jù)本發(fā)明的使用數(shù)字編碼來更新存儲(chǔ)作為時(shí)延計(jì)數(shù)的跟蹤陣列的格子跟蹤信息的方法的流程圖;圖16為根據(jù)本發(fā)明的用于產(chǎn)生線性陣列的過程的流程圖,其被用于根據(jù)圖15的陣列更新過程的結(jié)果來存儲(chǔ)用于每一個(gè)幀的幀分配。
具體實(shí)施例方式
本文公開了一種用于語(yǔ)音識(shí)別的跟蹤矩陣更新和存儲(chǔ)方法。在依賴于講話者的注冊(cè)過程中,用戶提供一個(gè)或多個(gè)重復(fù)的語(yǔ)音表達(dá)以被注冊(cè)。使用一幀分配過程來將每一個(gè)此類表達(dá)與現(xiàn)有的隱式馬爾科夫模型進(jìn)行匹配。通過產(chǎn)生具有多行和一列或者多列的跟蹤幀列來存儲(chǔ)和更新用于語(yǔ)音識(shí)別系統(tǒng)的格子跟蹤信息,多行中的每一行對(duì)應(yīng)于跟蹤路徑終止的多個(gè)狀態(tài)中的一個(gè),并且每一列包含一個(gè)或多個(gè)用于在跟蹤路徑中的狀態(tài)的時(shí)延計(jì)數(shù)。進(jìn)入多個(gè)狀態(tài)中的給定的狀態(tài)的最佳的狀態(tài)轉(zhuǎn)移路徑被確定,并且響應(yīng)所述已確定的最佳的狀態(tài)轉(zhuǎn)移路徑,更新所述已產(chǎn)生的跟蹤陣列。當(dāng)執(zhí)行該過程時(shí),通過存儲(chǔ)用于每一個(gè)狀態(tài)的狀態(tài)時(shí)延計(jì)數(shù)集來影響記錄在表達(dá)的短時(shí)間分析幀與所述模型的狀態(tài)之間的相關(guān)性(association)的有效的方法。
本發(fā)明可以有利地采用的設(shè)備100示于圖1中。為了說明,在此將設(shè)備100描述為便攜式無線電話,但是其可以是計(jì)算機(jī)、個(gè)人數(shù)字助理、或者可以有利地采用語(yǔ)音識(shí)別的任意其它的設(shè)備,特別是可以利用有效的存儲(chǔ)語(yǔ)音識(shí)別系統(tǒng)的設(shè)備。所示的無線電話包括發(fā)射器102和連接到天線106的接收器104。發(fā)射器102和接收器104連接到執(zhí)行呼叫處理功能的呼叫處理器108。可以使用數(shù)字信號(hào)處理器(DSP)、微處理器、微控制器、可編程邏輯電路、兩個(gè)或多個(gè)上述器件的組合或者任何其它合適的數(shù)字電路來實(shí)現(xiàn)呼叫處理器108。
呼叫處理器108連接到存儲(chǔ)器110。存儲(chǔ)器110包括RAM、電可擦可編程只讀存儲(chǔ)器(EEPROM)、只讀存儲(chǔ)器(ROM)、閃爍ROM等、或者兩個(gè)或多個(gè)這些存儲(chǔ)器類型的組合。存儲(chǔ)器110支持呼叫處理器108的工作,改工作包括語(yǔ)音識(shí)別工作,并且必須包括電可改變的存儲(chǔ)器以支持在下文詳細(xì)地介紹的狀態(tài)轉(zhuǎn)移路徑存儲(chǔ)器??梢蕴峁㏑OM以存儲(chǔ)運(yùn)行程序的設(shè)備。
音頻電路112將數(shù)字信號(hào)從話筒114提供給呼叫處理器108。音頻電路112驅(qū)動(dòng)揚(yáng)聲器116響應(yīng)來自呼叫處理器108的數(shù)字信號(hào)。
呼叫處理器108連接到顯示處理器120。如果另外的處理器支持是設(shè)備100所希望的,則顯示處理器是可選的。具體而言,顯示處理器120提供顯示控制信號(hào)到顯示器126,并從鍵盤124接收輸入??梢允褂梦⑻幚砥?、微控制器、數(shù)字信號(hào)處理器、可編程邏輯電路及其組合等來實(shí)現(xiàn)顯示處理器120。存儲(chǔ)器122連接到現(xiàn)實(shí)處理器以支持?jǐn)?shù)字邏輯。可以使用RAM、EEPROM、ROM、閃爍ROM等等,或者兩個(gè)或多個(gè)這些存儲(chǔ)器類型的組合來實(shí)現(xiàn)存儲(chǔ)器122。
參考圖2,在音頻電路112的模數(shù)轉(zhuǎn)換器202中將話筒114接收到音頻信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,音頻電路112提供另外的信號(hào)處理,諸如在此為了簡(jiǎn)短而沒有介紹的濾波處理。呼叫處理器108在由話筒114輸出的模擬信號(hào)的已處理的數(shù)字信號(hào)表示上執(zhí)行特征抽取204,并且產(chǎn)生代表用戶表達(dá)的特征向量集。為每一個(gè)短時(shí)間分析窗口產(chǎn)生一個(gè)特征向量。短時(shí)間分析窗口為一幀,其中在此示例中為20ms。因此,每一幀有一個(gè)特征向量。處理器108使用用于語(yǔ)音識(shí)別206或訓(xùn)練207的特征。
在訓(xùn)練中,使用表達(dá)的特征向量來已被存儲(chǔ)在存儲(chǔ)器208中的和HMM的形式產(chǎn)生模板。在語(yǔ)音識(shí)別中,將表示輸入表達(dá)的特征向量于存儲(chǔ)在存儲(chǔ)器208中的詞匯表字的模板進(jìn)行表較以確定用戶說的是什么。系統(tǒng)可輸出最好的匹配,最好的匹配集,或者可選地,沒有匹配。存儲(chǔ)器208優(yōu)選地可以是存儲(chǔ)器110的非易失性存儲(chǔ)部分(圖1),并且可以是,例如EEPROM或閃爍ROM。正如在此使用的一樣,“字”可以是不只一個(gè)字,諸如“約翰多爾”,或者是諸如“呼叫”單字。
如上面的簡(jiǎn)短介紹一樣,在訓(xùn)練模式中產(chǎn)生在存儲(chǔ)器208中的已存儲(chǔ)的詞匯表字。例如,已存儲(chǔ)的詞匯表字被從兩個(gè)訓(xùn)練信號(hào)即表達(dá)U1和U2(圖3)中初始導(dǎo)出,分別由特征向量組成。表達(dá)U1代表講話者在訓(xùn)練期間說的特定的字的第一時(shí)間時(shí)存儲(chǔ)的信號(hào)。表達(dá)U2代表講話者在訓(xùn)練期間說的特定的字的第二時(shí)間時(shí)存儲(chǔ)的信號(hào)。在說明的例子中,表達(dá)U1和表達(dá)U2的長(zhǎng)度不同。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,可以使用更多的或更少的表達(dá)。
由于幀具有相同的長(zhǎng)度,而表達(dá)U1和U2具有不同的長(zhǎng)度,當(dāng)用幀表示每一表達(dá)時(shí),具有不同長(zhǎng)度的表達(dá)U1和U2將同樣地具有不同的幀數(shù)。多個(gè)幀F(xiàn)t組成了一表達(dá)。一般而言,盡管將表達(dá)標(biāo)識(shí)為Ft,其中t為從1到T,在圖3的符號(hào)中,表達(dá)幀由符號(hào)Fab標(biāo)識(shí),其中a為表達(dá)號(hào),而b為幀號(hào)。具體而言,表達(dá)U1具有10幀即F11,F(xiàn)12,F(xiàn)13,F(xiàn)14,F(xiàn)15,F(xiàn)16,F(xiàn)17,F(xiàn)18,F(xiàn)19,和F110。表達(dá)U2具有12幀,即F21,F(xiàn)22,F(xiàn)23,F(xiàn)24,F(xiàn)25,F(xiàn)26,F(xiàn)27,F(xiàn)28,F(xiàn)29,F(xiàn)210,F(xiàn)211,和F212。在示例中,每一幀包括代表20毫秒聲音的特征。
可以使用任何常規(guī)的方式產(chǎn)生特征向量。例如,特征向量可以包括從A/D轉(zhuǎn)換器202(圖2)的輸出產(chǎn)生的導(dǎo)頻(eepstral)和Δ-導(dǎo)頻特征。
參見圖3,開始時(shí),從表達(dá)U1的幀F(xiàn)11和F12和表達(dá)U2的F21和F22形成狀態(tài)1(S1)。這些幀值被用來初始地計(jì)算包括狀態(tài)1的統(tǒng)計(jì)表示的一些或所有的參數(shù)。在優(yōu)選實(shí)施例中,統(tǒng)計(jì)表示為表達(dá)U1和表達(dá)U2的幀的均值。因此,開始時(shí)將狀態(tài)1設(shè)為表達(dá)U1的幀F(xiàn)11和F12和表達(dá)U2的F21和F22的幀的均值。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,狀態(tài)也可包括方差。也產(chǎn)生其它狀態(tài)的統(tǒng)計(jì)表示。第二狀態(tài)S2為表達(dá)U1的幀F(xiàn)13和F14和表達(dá)U2的幀F(xiàn)23和F24的均值。類似地,第三狀態(tài)S3為表達(dá)U1的幀F(xiàn)15和F16和表達(dá)U2的幀F(xiàn)25和F26的均值。狀態(tài)S4為表達(dá)U1的幀F(xiàn)17和F18和表達(dá)U2的幀F(xiàn)27,F(xiàn)28和F29的均值。
如上述例子,在表達(dá)U2中的外面的幀被分配給最后的兩個(gè)狀態(tài)。如果第二表達(dá)僅僅具有一個(gè)外面的幀,只有最后的狀態(tài)獲得外面的幀。如果第二表達(dá)具有三個(gè)外面的幀,最后三個(gè)狀態(tài)中的每一個(gè)被分配一個(gè)外面的幀。類似地,如果第一表達(dá)具有外面的幀,如四個(gè)外面的幀,最后四個(gè)狀態(tài)中的每一個(gè)將具有一外面的幀。如果一個(gè)表達(dá)具有的幀多于其它表達(dá)的幀達(dá)5個(gè)幀,則每一個(gè)狀態(tài)從具有更多幀的表達(dá)接收三個(gè)幀,并從具有較少幀的表達(dá)接收兩個(gè)幀。
上述的幀分配被提供來作為一個(gè)例子,說明可以如何初始化地來將幀分配給狀態(tài),和如何形成狀態(tài)的統(tǒng)計(jì)表示。然而,本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,現(xiàn)有的其它多種方法可以用來初始地分配狀態(tài),并且統(tǒng)計(jì)地表示狀態(tài),因此,本發(fā)明不限于上述情形。
在例子中,使用5個(gè)狀態(tài)而不管表達(dá)的長(zhǎng)度。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,可以使用任意數(shù)目的狀態(tài),并且可以預(yù)料到,可以為每一個(gè)表達(dá)采用多于10個(gè)的狀態(tài)。此外,狀態(tài)數(shù)可以是固定的而不需要考慮表達(dá)的長(zhǎng)度,或者狀態(tài)數(shù)依賴于表達(dá)的長(zhǎng)度。下面的討論將針對(duì)任意的表達(dá)使用5個(gè)狀態(tài)的系統(tǒng)進(jìn)行介紹,而不考慮長(zhǎng)度。
一旦從表達(dá)U1和U2的幀的統(tǒng)計(jì)生成狀態(tài)S1至S5,就生成了隱式馬爾科夫模型(HMM)。呼叫處理器108采用對(duì)準(zhǔn)算法來通過生成的HMM的狀態(tài)運(yùn)行每一個(gè)表達(dá)。然后,可以使用對(duì)準(zhǔn)來重新估計(jì)狀態(tài)的統(tǒng)計(jì)表示。具體而言,對(duì)準(zhǔn)算法運(yùn)行以根據(jù)每一個(gè)考慮的路徑的分?jǐn)?shù)來確定從任何的點(diǎn)的最佳的路徑反饋。根據(jù)本發(fā)明的用于存儲(chǔ)和更新此信息的方法通常稱為格子跟蹤信息,將參考圖6和7對(duì)其進(jìn)行介紹。
圖4為一種模型的狀態(tài)轉(zhuǎn)移框圖,其中,允許有自身環(huán)、單步、和單跳轉(zhuǎn)移。盡管在圖4的狀態(tài)轉(zhuǎn)移框圖中僅示出狀態(tài)1-6,應(yīng)當(dāng)理解,可以包括任意數(shù)目的狀態(tài),將狀態(tài)數(shù)限制為6個(gè)狀態(tài)僅僅是為了簡(jiǎn)化介紹。
為了使模型序列化、在語(yǔ)音表達(dá)的聲音事件中的規(guī)則特征更好,通常限制在模型中的從狀態(tài)到狀態(tài)或者狀態(tài)轉(zhuǎn)移的可能路徑。例如,在一種最普通的隱式馬爾科夫模型結(jié)構(gòu)和被證明對(duì)于多種語(yǔ)音識(shí)別任務(wù)是有效的結(jié)構(gòu)中,將允許的狀態(tài)轉(zhuǎn)移限制為自身環(huán)、單步、或單跳。通常,實(shí)質(zhì)上將HMM狀態(tài)轉(zhuǎn)移限制為左到右,如圖4所示,其中進(jìn)入特地狀態(tài)Sn的允許的轉(zhuǎn)移路徑來自該狀態(tài)Sn,或者來自前兩個(gè)狀態(tài)S(n-1)或S(n-2)中的一個(gè)。來自狀態(tài)Sn進(jìn)入到狀態(tài)Sn的狀態(tài)轉(zhuǎn)移路徑被稱為自身環(huán),通常表示為ann,來自前一個(gè)狀態(tài)S(n-1)的進(jìn)入特定狀態(tài)Sn的狀態(tài)轉(zhuǎn)移路徑被稱為單步,通常表示為a(n-1)n,來自前二個(gè)狀態(tài)S(n-2)的進(jìn)入特定狀態(tài)Sn的狀態(tài)轉(zhuǎn)移路徑被稱為單跳,通常表示為a(n-1)n。
具體而言,如圖4所示,例如,進(jìn)入第五狀態(tài)300的允許的狀態(tài)轉(zhuǎn)移路徑或者來自自身環(huán)a55,其中前一幀狀態(tài)與當(dāng)前幀狀態(tài)相同,或者來自單步轉(zhuǎn)移a45,其中前一狀態(tài)為第四狀態(tài)302,或者來自單跳轉(zhuǎn)移a35,其中前一幀狀態(tài)為第三狀態(tài)304。類似地,進(jìn)入第四狀態(tài)302的允許的狀態(tài)轉(zhuǎn)移路徑或者來自本身環(huán)a44,其中前一幀狀態(tài)與當(dāng)前幀狀態(tài)相同,或者來自單步轉(zhuǎn)移a34,其中前一幀狀態(tài)為第三狀態(tài)304,或者來自單跳轉(zhuǎn)移a24,其中前一幀狀態(tài)為第二狀態(tài)306。
圖5為與在圖4的狀態(tài)轉(zhuǎn)移框圖中的狀態(tài)之間每一個(gè)允許的路徑相關(guān)的跟蹤格子。如圖5所示,格子310中的每一點(diǎn)308對(duì)應(yīng)于格子31中的幀和狀態(tài)位置。路徑延伸通過該點(diǎn),狀態(tài)之間的每一個(gè)允許的路徑為三種狀態(tài)轉(zhuǎn)移類型即自身環(huán)、單步或者單跳狀態(tài)轉(zhuǎn)移中的一個(gè)。例如,在時(shí)間t=5處進(jìn)入如圖4所示的第五狀態(tài)300的三個(gè)允許的狀態(tài)轉(zhuǎn)移路徑a55,a44和a55中的每一個(gè)由進(jìn)入格子310中的點(diǎn)A的路徑指定。進(jìn)入點(diǎn)A的自身環(huán)狀態(tài)轉(zhuǎn)移路徑a55由源于點(diǎn)B的路徑312指定,點(diǎn)B位于在時(shí)間t=4時(shí)如點(diǎn)A即縱軸上的狀態(tài)5一樣的相同的狀態(tài)。進(jìn)入點(diǎn)A的單步狀態(tài)轉(zhuǎn)移路徑a45由源于點(diǎn)C的路徑314指定,點(diǎn)C位于在時(shí)間t=4時(shí)點(diǎn)A的狀態(tài)前的狀態(tài)即縱軸上的狀態(tài)4。最后,進(jìn)入點(diǎn)A的單跳狀態(tài)轉(zhuǎn)移路徑a35由源于點(diǎn)D的路徑316指定,點(diǎn)D位于在時(shí)間t=4時(shí)點(diǎn)A的狀態(tài)前兩個(gè)狀態(tài)即縱軸上的狀態(tài)3。
從圖4和5可看出,在任意給定的狀態(tài)之前僅有三個(gè)狀態(tài)。盡管對(duì)允許的轉(zhuǎn)移的此類限制固存于此類HMM結(jié)構(gòu)中,傳統(tǒng)的跟蹤矩陣存儲(chǔ)技術(shù)沒有使用這種性質(zhì)。本發(fā)明使用這種限制狀態(tài)轉(zhuǎn)移的知識(shí),并且進(jìn)一步提供對(duì)跟蹤矩陣的改進(jìn),其中顯著地減小了需要記錄跟蹤路徑的存儲(chǔ)量。
具體而言,根據(jù)本發(fā)明,使用狀態(tài)時(shí)延計(jì)數(shù)的陣列來維持跟蹤矩陣,在所述狀態(tài)時(shí)延計(jì)數(shù)的陣列中記錄經(jīng)過模型的路徑。給定當(dāng)前狀態(tài),向后通過格子的路徑被記錄作為在該狀態(tài)所用的幀數(shù)(即用于該狀態(tài)的時(shí)延計(jì)數(shù))和在每一前面狀態(tài)使用的幀數(shù)。根據(jù)本發(fā)明,用于存儲(chǔ)狀態(tài)時(shí)延計(jì)數(shù)的跟蹤存儲(chǔ)陣列示于圖6中,其中狀態(tài)數(shù)N等于5(例如)。本發(fā)明的跟蹤陣列可以顯示為三角形,其中每一行對(duì)應(yīng)于跟蹤路徑終止的5個(gè)狀態(tài)1-5中的一個(gè),在每一列中,為跟蹤路徑中的每一狀態(tài)記錄時(shí)延計(jì)數(shù)。
因此,根據(jù)本發(fā)明,通過更新n個(gè)時(shí)延計(jì)數(shù)集,列舉有多少幀或者時(shí)間分段信號(hào)被用在狀態(tài)1至n中的每一個(gè)狀態(tài)來更新從5個(gè)狀態(tài)的每一個(gè)狀態(tài)n的路徑返回(path back)(n=1,2,...,5,對(duì)應(yīng)于行1-5)。例如,如圖6所示,行320對(duì)應(yīng)于結(jié)束于狀態(tài)5的狀態(tài)轉(zhuǎn)移路徑,存儲(chǔ)在列322和行322的信息指出用于該路徑的狀態(tài)5中的幀數(shù),存儲(chǔ)在列324和行320的信息指出用于該路徑的狀態(tài)4中的幀數(shù),存儲(chǔ)在列326和行320的信息指出用于該路徑的狀態(tài)3中的幀數(shù),存儲(chǔ)在列328和行320的信息指出用于該路徑的狀態(tài)2中的幀數(shù),存儲(chǔ)在列330和行320的信息指出用于該路徑的狀態(tài)1中的幀數(shù)。類似地,行332對(duì)應(yīng)于結(jié)束于狀態(tài)4的狀態(tài)轉(zhuǎn)移路徑,存儲(chǔ)在列324和行332的信息指出用于該路徑的狀態(tài)4中的幀數(shù),存儲(chǔ)在列326和行332的信息指出用于該路徑的狀態(tài)3中的幀數(shù),存儲(chǔ)在列328和行332的信息指出用于該路徑的狀態(tài)2中的幀數(shù),存儲(chǔ)在列330和行332的信息指出用于該路徑的狀態(tài)1中的幀數(shù),行334-338依此類推。
盡管圖6的跟蹤陣列包括5個(gè)狀態(tài),應(yīng)當(dāng)理解,本發(fā)明不限于使用5個(gè)狀態(tài),而是可以使用任意的狀態(tài)數(shù)。
在具有N個(gè)狀態(tài)的HMM中使用根據(jù)本發(fā)明的跟蹤陣列的模型,要求大小為 的陣列。因?yàn)镹可以多達(dá)小于在表達(dá)T中的最大的幀數(shù)數(shù)量級(jí),與傳統(tǒng)技術(shù)所要求的NxT大小的陣列相比,本發(fā)明的跟蹤矩陣顯現(xiàn)出顯著地節(jié)約所要求的存儲(chǔ)量。
利用根據(jù)本發(fā)明的存儲(chǔ)位置來更新在時(shí)延計(jì)數(shù)的跟蹤陣列中存儲(chǔ)的跟蹤信息的陣列更新過程示于圖7中。盡管可以理解可以包括任意數(shù)目的狀態(tài),并且將狀態(tài)數(shù)限制為4個(gè)狀態(tài)僅僅是為了簡(jiǎn)化介紹,圖7的例子說明了狀態(tài)數(shù)N=4的一種情況。根據(jù)本發(fā)明,更新過程可用于由格子340和跟蹤陣列342和360指定的自身環(huán)狀態(tài)轉(zhuǎn)移路徑,可用于由格子344和跟蹤陣列346和364指定的單步狀態(tài)轉(zhuǎn)移路徑,可用于由格子348和跟蹤陣列350和368指定的單跳狀態(tài)轉(zhuǎn)移路徑,可用于由格子352和跟蹤陣列354和372指定的雙跳狀態(tài)轉(zhuǎn)移路徑,依次類推,可以擴(kuò)展到N個(gè)狀態(tài)跳躍狀態(tài)轉(zhuǎn)移路徑。
格子中的每一點(diǎn)對(duì)應(yīng)于該格子中的幀和狀態(tài)位置,水平軸對(duì)應(yīng)于幀,縱軸對(duì)應(yīng)于狀態(tài)。
如圖7所示,用于在幀4處的每一路徑結(jié)束狀態(tài)的最佳路徑由陣列342(等價(jià)于陣列346,350,354)的時(shí)延計(jì)數(shù)行來指示。從下面的從幀4向后的路徑可以看出記錄在陣列中的跟蹤路徑格子340用于狀態(tài)4,格子344用于狀態(tài)3,格子348用于狀態(tài)2,格子352用于狀態(tài)1。例如,結(jié)束于(幀4,狀態(tài)4)的跟蹤路徑為狀態(tài)4的一個(gè)幀,在狀態(tài)3的一個(gè)幀,在狀態(tài)2的一幀,和在狀態(tài)1的一幀。結(jié)束于(幀4,狀態(tài)3)的跟蹤路徑為狀態(tài)3的一個(gè)幀,在狀態(tài)2的兩個(gè)幀,在狀態(tài)1的一幀。結(jié)束于(幀4,狀態(tài)2)的跟蹤路徑為狀態(tài)2的3個(gè)幀,在狀態(tài)1的一個(gè)幀。最后,結(jié)束于(幀4,狀態(tài)1)的跟蹤路徑為狀態(tài)1的4個(gè)計(jì)數(shù)。
盡管結(jié)束于4個(gè)狀態(tài)中的一個(gè)處的每一路徑對(duì)應(yīng)于用于該狀態(tài)的最佳路徑,也就是,結(jié)束于狀態(tài)4跟蹤路徑為用于狀態(tài)4的最佳路徑,結(jié)束于狀態(tài)3的跟蹤路徑為用于狀態(tài)3的最佳路徑等等,這些最佳路徑不必重疊。因此,對(duì)于每一個(gè)狀態(tài),有一個(gè)相應(yīng)的、可能是唯一的、最佳的路徑,如格子340、344、348和352所示。根據(jù)本發(fā)明,用跟蹤信息的陣列的行單獨(dú)地記錄每一狀態(tài)的跟蹤路徑。
根據(jù)本發(fā)明,根據(jù)被確定為最佳的狀態(tài)轉(zhuǎn)移路徑,應(yīng)用了一些確定的更新過程。使用對(duì)準(zhǔn)算法如維特比對(duì)準(zhǔn)算法來確定最佳的路徑,并且更新存儲(chǔ)在跟蹤陣列中的路徑信息以反映使用本發(fā)明更新過程的選擇的路徑。每一次接收到新幀時(shí),例如,在圖7的說明中考慮幀5時(shí),運(yùn)行對(duì)準(zhǔn)算法,并且更新路徑信息。
為了為新接收到的幀更新路徑信息,要考慮每一狀態(tài)。例如,考慮狀態(tài)4、幀5,其中考慮從幀4到幀5可能的路徑。如果進(jìn)入一狀態(tài)的最佳路徑為自身環(huán)狀態(tài)轉(zhuǎn)移路徑,如在圖7的格子340中從幀4到幀5,也就是進(jìn)入在幀5的狀態(tài)4的狀態(tài)轉(zhuǎn)移來自在第一列356和行358的對(duì)應(yīng)于在狀態(tài)4中用的幀數(shù)(時(shí)間分段信號(hào))的狀態(tài)4,其增加1。結(jié)果,更新后的陣列360指出結(jié)束于狀態(tài)4的最佳跟蹤路徑包括在狀態(tài)4的兩個(gè)幀,在狀態(tài)3的一個(gè)幀,在狀態(tài)2的一個(gè)幀,和在狀態(tài)1的一個(gè)幀。
如果進(jìn)入一狀態(tài)的最佳路徑為單步狀態(tài)轉(zhuǎn)移路徑,如圖7的格子344中的從幀4至幀5,也就是進(jìn)入在幀5的狀態(tài)4的狀態(tài)轉(zhuǎn)移來自狀態(tài)3,對(duì)應(yīng)于第一在前狀態(tài)的行362,也就是狀態(tài)3被復(fù)制進(jìn)入行358,并且行358的第一列入口被重設(shè)為1。結(jié)果,更新后的陣列364指出結(jié)束于狀態(tài)4的最佳跟蹤路徑包括在狀態(tài)4的一個(gè)幀,在狀態(tài)3的一個(gè)幀,在狀態(tài)2的兩個(gè)幀,和在狀態(tài)1的一個(gè)幀。
如果進(jìn)入一狀態(tài)的最佳路徑為單跳狀態(tài)轉(zhuǎn)移路徑,如圖7的格子348中的從幀4至幀5,也就是進(jìn)入在幀5的狀態(tài)4的狀態(tài)轉(zhuǎn)移來自狀態(tài)2,對(duì)應(yīng)于第二在前狀態(tài)的行366,也就是狀態(tài)2被復(fù)制進(jìn)入行358,并且行358的第一列的入口被重設(shè)為1。由于已跳過狀態(tài)3,并且行366不包括用于狀態(tài)3的時(shí)延計(jì)數(shù),用于狀態(tài)3的時(shí)延計(jì)數(shù)在行358中被設(shè)為0。在這個(gè)例子中,已更新的陣列368指出結(jié)束于狀態(tài)4的最佳的跟蹤路徑包括在狀態(tài)4的一個(gè)幀,在狀態(tài)3的0幀,在狀態(tài)2的3個(gè)幀,和在狀態(tài)1的一個(gè)幀。
與進(jìn)入一狀態(tài)的最佳路徑是單跳狀態(tài)轉(zhuǎn)移路徑的情形相似,如果進(jìn)入一狀態(tài)的最佳路徑為雙跳狀態(tài)轉(zhuǎn)移路徑,如圖7的格子352中的從幀4至幀5,也就是進(jìn)入在幀5的狀態(tài)4的狀態(tài)轉(zhuǎn)移來自狀態(tài)1,對(duì)應(yīng)于第三在前狀態(tài)的行370也就是狀態(tài)1被復(fù)制進(jìn)入行358,并且行358的第一列的入口被重設(shè)為1。由于已跳過狀態(tài)3和狀態(tài)2,并且行370不包括用于狀態(tài)3和狀態(tài)2的時(shí)延計(jì)數(shù),用于狀態(tài)2和狀態(tài)3的時(shí)延計(jì)數(shù)在行358中被設(shè)為0。在這個(gè)例子中,已更新的陣列372指出結(jié)束于狀態(tài)4的最佳的跟蹤路徑包括在狀態(tài)4的一個(gè)幀,在狀態(tài)3的0幀,在狀態(tài)2的0個(gè)幀,和在狀態(tài)1的4個(gè)幀。
將相似的更新過程應(yīng)用于三跳狀態(tài)轉(zhuǎn)移路徑,依此類推,使得根據(jù)本發(fā)明的更新過程可被擴(kuò)展至N個(gè)狀態(tài)跳躍。通過仔細(xì)的考慮,可觀察到單步、單跳、雙跳、和多達(dá)N個(gè)狀態(tài)跳躍的所有的跳躍均采用相同的通用的更新過程。即,通常通過將在第一列的當(dāng)前的狀態(tài)時(shí)延計(jì)數(shù)重設(shè)為1,并且復(fù)制對(duì)應(yīng)于相關(guān)的在前狀態(tài)的時(shí)延計(jì)數(shù)的行,并且將所有跳過的狀態(tài)時(shí)延計(jì)數(shù)設(shè)為0(如果有的話)來處理所有的更新。而且,通過首先在每一幀處執(zhí)行估計(jì)最后的狀態(tài),并且向第一狀態(tài)向下工作,可能就地執(zhí)行跟蹤陣列更新,因此,在對(duì)準(zhǔn)過程中要求最小的工作存儲(chǔ)量。因此,盡管參考包括了4個(gè)狀態(tài)的圖7介紹了更新過程,應(yīng)當(dāng)理解,可以將本發(fā)明的更新過程應(yīng)用于任意的狀態(tài)數(shù)。
根據(jù)本發(fā)明的用于存儲(chǔ)狀態(tài)時(shí)延計(jì)數(shù)的行的存儲(chǔ)陣列342(等價(jià)于346,350和354)一般地示于圖8中。存儲(chǔ)陣列342包括多個(gè)狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置343,每一個(gè)存儲(chǔ)位置343一般由Ln[i]標(biāo)識(shí),使得在位于每一個(gè)存儲(chǔ)位置343中的值對(duì)應(yīng)于在從狀態(tài)n向后跟蹤的路徑中分配給狀態(tài)i的多個(gè)幀。例如,對(duì)應(yīng)于L4[3]存儲(chǔ)位置為在存儲(chǔ)陣列342中的位置,對(duì)于從狀態(tài)4向后跟蹤的路徑,指出被分配給狀態(tài)3的幀數(shù),而對(duì)于從狀態(tài)2向后跟蹤的路徑,對(duì)應(yīng)于L2[2]的存儲(chǔ)位置指出被分配給狀態(tài)2的幀數(shù),等等。
在所概述的用于根據(jù)狀態(tài)時(shí)延計(jì)數(shù)來更新跟蹤信息的過程中,例如圖7中,進(jìn)行對(duì)陣列的“行”和“列”的參考說明。對(duì)于熟知所述狀態(tài)技術(shù)領(lǐng)域的技術(shù)人員來說,很顯然,通常不是以此類三角形或者矩形格式組織諸如動(dòng)態(tài)RAM和其他存儲(chǔ)介質(zhì)的存儲(chǔ)器。通常,以線性的方式用指向存儲(chǔ)字的單個(gè)參考指針來訪問存儲(chǔ)器。因此,為了展開本發(fā)明的跟蹤陣列,需要進(jìn)行運(yùn)算以將用于狀態(tài)時(shí)延計(jì)數(shù)的“行”和“列”號(hào)轉(zhuǎn)換為線性存儲(chǔ)字指針。根據(jù)如何將三角陣列映射到線性組織的存儲(chǔ)設(shè)備,此類算法運(yùn)算有一些變化,因此,不將這些內(nèi)容作為一部分包括在本說明書中,這些內(nèi)容被認(rèn)為是對(duì)于軟件開發(fā)的本領(lǐng)于技術(shù)人員來說是顯而易見的。
圖9和圖10為對(duì)應(yīng)于根據(jù)本發(fā)明的用于使用存儲(chǔ)位置來更新存儲(chǔ)在時(shí)延計(jì)數(shù)的跟蹤陣列中的跟蹤信息的方法的流程圖。如圖8和9所示,首先,在步驟400,通過將L1[1]的時(shí)延計(jì)數(shù)設(shè)為1、將在該陣列的剩余位置中的時(shí)延計(jì)數(shù)設(shè)為0、并且將幀計(jì)數(shù)器設(shè)為下一幀,t=2來初始化存儲(chǔ)陣列。然后,在步驟402,確定是否已評(píng)估所有的幀,也就是如果t>T?如果確定已經(jīng)評(píng)估了所有的幀,則結(jié)束更新過程,步驟404。然而,如果確定沒有評(píng)估完所有的幀,將當(dāng)前狀態(tài)n設(shè)為總的狀態(tài)數(shù)N(步驟408),使得首先評(píng)估最高的或者最后的狀態(tài)。例如,如圖7所示,根據(jù)本發(fā)明,當(dāng)前狀態(tài)n被設(shè)為4,示的評(píng)估開始于對(duì)應(yīng)于幀2、狀態(tài)4的格子340(等價(jià)于格子344,348,352)的點(diǎn)處。
然后在步驟410,確定是否已經(jīng)評(píng)估完所有狀態(tài),也就是如果n<1。如果已經(jīng)評(píng)估完所有的狀態(tài),則增加幀計(jì)數(shù)器,也就是幀t=3(步驟412),并且評(píng)估返回步驟402。然而,如果確定在步驟410沒有評(píng)估完所有狀態(tài),在步驟414,使用維特比搜索方法執(zhí)行對(duì)進(jìn)入在幀t處的當(dāng)前狀態(tài)n的最佳路徑的搜索。如果確定進(jìn)入在幀t處的當(dāng)前狀態(tài)n的最佳路徑位來自當(dāng)前狀態(tài)n(也就是自身環(huán)),在步驟418增加對(duì)應(yīng)于當(dāng)前狀態(tài)n的狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Ln[n],在步驟420減當(dāng)前狀態(tài)n,并且然后流程返回步驟410。從圖7可看出,對(duì)應(yīng)于圖9的序列步驟410和414-416的流程對(duì)應(yīng)于跟蹤信息更新過程,該跟蹤信息更新過程用于上面所介紹的當(dāng)狀態(tài)轉(zhuǎn)移為自身環(huán)時(shí)將陣列342更新為已更新的陣列360。
如果在步驟416確定進(jìn)入狀態(tài)n的最佳路徑不是來自狀態(tài)n(也就是除了自身環(huán)狀態(tài)轉(zhuǎn)移的一些狀態(tài)轉(zhuǎn)移),則流程繼續(xù)步驟A(如圖10所示)。如圖10所示,由于最佳路徑不是自身環(huán)狀態(tài)轉(zhuǎn)移,最佳路徑必定是來自于前面的狀態(tài)m而不是狀態(tài)n。結(jié)果,根據(jù)本發(fā)明,在步驟422,將狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Ln[n]設(shè)為1,流程繼續(xù)步驟424,至前面的狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Ln[i],其中狀態(tài)i等于在狀態(tài)n前的狀態(tài),或者i=n-1。然后在步驟426確定是否已經(jīng)評(píng)估完跳過的狀態(tài),也就是如果i小于或等于m。
如果確定沒有評(píng)估完所有跳過的狀態(tài),在步驟436清除狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Ln[i],使得狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Ln[i]為0,在步驟438,減狀態(tài)i,然后流程返回步驟426。如果在步驟426確定已經(jīng)評(píng)估完所有跳過的狀態(tài),或者等價(jià)地沒有狀態(tài)被跳過,在步驟428確定是否已經(jīng)評(píng)估完所有的狀態(tài),也就是如果i<1。
如果確定已經(jīng)評(píng)估完所有的狀態(tài),則在步驟430,流程繼續(xù)圖9的步驟420。然而,如果在步驟428確定沒有評(píng)估完所有的狀態(tài),在步驟432,將對(duì)應(yīng)于前面狀態(tài)m的狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Lm[i]復(fù)制到前一狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Ln[i],在步驟434,減狀態(tài)i,并且流程回到步驟428。
從圖7可看出,對(duì)應(yīng)于圖10的序列步驟426-434的流程對(duì)應(yīng)于跟蹤信息更新過程,所述跟蹤信息更新過程用于對(duì)應(yīng)于在上面介紹的狀態(tài)轉(zhuǎn)移為單步時(shí)將陣列346更新為已更新的陣列364。同樣,從圖7可看出,對(duì)應(yīng)于圖10的序列步驟426、436、438、428、432和434的流程對(duì)應(yīng)于跟蹤信息更新過程,所述跟蹤信息更新過程用于對(duì)應(yīng)于當(dāng)上面介紹的狀態(tài)轉(zhuǎn)移為單跳或雙跳步驟時(shí)分別將陣列350和354更新為已更新的陣列368和372。
圖11為說明對(duì)應(yīng)于本發(fā)明的產(chǎn)生線性陣列A[t]的流程圖,用來根據(jù)上面介紹的圖9和10的陣列更新過程的結(jié)果來存儲(chǔ)用于每一幀的幀分配。根據(jù)本發(fā)明,圖8的三角形存儲(chǔ)陣列342被展開為線性陣列A[t],該線性陣列A[t]具有對(duì)應(yīng)于在被對(duì)準(zhǔn)的表達(dá)中的幀T的總數(shù)的長(zhǎng)度。例如,如在圖7的更新陣列360所示,如果本發(fā)明的更新過程結(jié)果指出在從狀態(tài)4向后跟蹤的路徑中,分配給狀態(tài)4的幀數(shù)L4[4]等于2,則相應(yīng)地,L4[3]等于1,L4[2]等于1,和L4[1]等于1,幀總數(shù)等于5。
使用用于每一狀態(tài)向后跟蹤的路徑的已知幀數(shù),根據(jù)本發(fā)明的線性陣列A[t]的產(chǎn)生被使用圖11的過程來執(zhí)行,得到一般地示于圖12中的線性陣列。如圖12所示,產(chǎn)生的線性440包括對(duì)應(yīng)于5個(gè)狀態(tài)即f=1至f=5中的每一個(gè)的存儲(chǔ)位置,用于存儲(chǔ)對(duì)應(yīng)于幀所相關(guān)的狀態(tài)數(shù)的值。例如,幀4和5與狀態(tài)4相關(guān)。
在圖9的步驟404中,一旦已經(jīng)確定已經(jīng)評(píng)估完所有的幀,已經(jīng)完成更新狀態(tài)時(shí)延計(jì)數(shù)的陣列,根據(jù)本發(fā)明的用于產(chǎn)生線性陣列A[t]以存儲(chǔ)用于每一幀的幀分配的流程被初始化。如上所述,如果狀態(tài)時(shí)延計(jì)數(shù)的更新陣列指出L4[4]=2,L4[3]=1,L4[2]=1,和L4[1]=1,有對(duì)應(yīng)于從狀態(tài)4向后跟蹤的路徑的總計(jì)4個(gè)狀態(tài)和總計(jì)5個(gè)幀。結(jié)果,當(dāng)前幀t被初始化為等于總的幀數(shù),并且當(dāng)前狀態(tài)n被設(shè)為等于總狀態(tài)數(shù),步驟422。應(yīng)當(dāng)理解,本發(fā)明應(yīng)用于任意的狀態(tài)數(shù),并應(yīng)用于從LN[1]至LN[N]的任意可能的值,已經(jīng)選擇的用于狀態(tài)數(shù)和用于L4[1]-L4[4]的值僅僅是為了支持說明本發(fā)明。
在步驟444,通過設(shè)定計(jì)數(shù)器k等于LN[n]來設(shè)定計(jì)數(shù)器k,其對(duì)應(yīng)于分配給在從狀態(tài)N向后跟蹤的路徑中的幀數(shù),其從狀態(tài)時(shí)延計(jì)數(shù)的已更新陣列中獲得。由于在上述的狀態(tài)時(shí)延計(jì)數(shù)的已更新陣列的例子中,L4[4]=2,當(dāng)前值k等于2。在步驟450,確定是否已經(jīng)對(duì)當(dāng)前狀態(tài)n的所有的狀態(tài)分配進(jìn)行計(jì)數(shù)(account for),也就是當(dāng)前值小于1。如果沒有對(duì)所有的狀態(tài)計(jì)完數(shù),在步驟446記錄用于線性陣列的幀分配,然后在步驟448,減幀t和計(jì)數(shù)器k,并且流程返回步驟450。然而,如果在步驟450確定已經(jīng)對(duì)所有的狀態(tài)分配進(jìn)行完計(jì)數(shù),在步驟452減當(dāng)前狀態(tài)n,并且在步驟454確定是否已經(jīng)評(píng)估完所有的狀態(tài),也就是如果n<1。如果已經(jīng)評(píng)估了所有狀態(tài),則流程結(jié)束(步驟456),并且在上述的例子中,產(chǎn)生線性陣列A[t]。然而,如果沒有評(píng)估完所有狀態(tài),流程返回步驟444。
根據(jù)本發(fā)明的另一個(gè)實(shí)施例,是使用數(shù)字編碼而不是存儲(chǔ)位置來執(zhí)行跟蹤和幀分配過程。例如,圖13為根據(jù)本發(fā)明的使用基數(shù)-B數(shù)字編碼碼元來存儲(chǔ)狀態(tài)時(shí)延計(jì)數(shù)的陣列的框圖。狀態(tài)時(shí)延計(jì)數(shù)的陣列457包括狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置L1-L4,通常以Ln表示。每一個(gè)狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Ln包含從狀態(tài)n向后的已編碼的路徑信息,對(duì)應(yīng)于用于在從狀態(tài)n向后的路徑中每一狀態(tài)的狀態(tài)時(shí)延計(jì)數(shù),其被使用根據(jù)本發(fā)明的陣列更新過程來進(jìn)行更新,并將參考圖14在下面進(jìn)行介紹。狀態(tài)時(shí)延計(jì)數(shù)457的陣列使用基數(shù)-B數(shù)字值,使得在任意狀態(tài)中的時(shí)延時(shí)間不能超過B幀。在本發(fā)明的優(yōu)選實(shí)施例中,基數(shù)B被選擇為2的乘冪(例如,2,4,8,16,32等等)以便于在通常的計(jì)算設(shè)備上進(jìn)行計(jì)算,然而,應(yīng)當(dāng)理解,可選擇任意值的基數(shù)B。在本發(fā)明的另一個(gè)實(shí)施例中,基數(shù)B被選擇為10,該值用在圖14所時(shí)的例子中,并且相應(yīng)的說明將在下面介紹。
使用根據(jù)本發(fā)明的另一個(gè)實(shí)施例的數(shù)字編碼來更新存儲(chǔ)在時(shí)延計(jì)數(shù)的跟蹤陣列中的跟蹤信息的陣列更新過程被示于圖14中。與上面的對(duì)圖7的討論相似,圖14的更新例子說明了一種情形,其中狀態(tài)數(shù)N等于4,盡管應(yīng)當(dāng)理解,可以包括任意的狀態(tài)數(shù),選擇該狀態(tài)數(shù)為4個(gè)狀態(tài)僅僅是為了簡(jiǎn)化說明。
根據(jù)本發(fā)明的另一個(gè)實(shí)施例,更新過程可用于由格子458和跟蹤陣列460,462指定的自身環(huán)狀態(tài)轉(zhuǎn)移路徑,可用于由格子464和跟蹤陣列460,466指定的單步狀態(tài)轉(zhuǎn)移路徑,可用于由格子468和跟蹤陣列460,470指定的單跳狀態(tài)轉(zhuǎn)移路徑,可用于有格子472和跟蹤陣列460,474指定的雙跳狀態(tài)轉(zhuǎn)移路徑,依此類推,可以擴(kuò)展到N-狀態(tài)跳躍的狀態(tài)轉(zhuǎn)移路徑。
根據(jù)本發(fā)明,根據(jù)被確定為最佳的狀態(tài)轉(zhuǎn)移路徑,應(yīng)用特定的更新過程。使用諸如維特比對(duì)準(zhǔn)算法的對(duì)準(zhǔn)算法來確定最佳的路徑,并且使用根據(jù)本發(fā)明的另一個(gè)實(shí)施例的更新過程來更新存儲(chǔ)在跟蹤陣列中的路徑信息以反映選擇的路徑。每一次收到新的幀時(shí),例如當(dāng)在圖14的說明中為考慮的幀5時(shí),運(yùn)行對(duì)準(zhǔn)算法,并且更新路徑信息。
為了更新用于新接收到的幀的路徑信息,要考慮每一個(gè)狀態(tài)。如果考慮的狀態(tài)為狀態(tài)n,并且進(jìn)入狀態(tài)n的最佳路徑被確定為來自狀態(tài)m(這里m小于或等于n),則記錄來自狀態(tài)n的跟蹤路徑的已更新的編碼基數(shù)-B值由Ln=Lm+B(n-1)給出。例如,考慮狀態(tài)n=4,幀5,其中考慮來自幀4至幀5的可能的路徑。如果進(jìn)入一狀態(tài)的最佳路徑為自身環(huán)狀態(tài)轉(zhuǎn)移路徑,正如所示的在圖14的格子458中的從幀4至幀5一樣,根據(jù)本發(fā)明,通過獲得B(n-1)與狀態(tài)時(shí)延基數(shù)的和來更新跟蹤陣列460,所述狀態(tài)時(shí)延基數(shù)用于對(duì)應(yīng)于來自跟蹤陣列460的狀態(tài)時(shí)延計(jì)數(shù)位置Ln的當(dāng)前狀態(tài)n。
例如,由于用于在當(dāng)前跟蹤陣列460中的狀態(tài)時(shí)延計(jì)數(shù)位置L4的時(shí)延計(jì)數(shù)為狀態(tài)4中的一個(gè)時(shí)延計(jì)數(shù)、狀態(tài)3中的一個(gè)時(shí)延計(jì)數(shù)、狀態(tài)2中的一個(gè)時(shí)延計(jì)數(shù)和在狀態(tài)1中的一個(gè)時(shí)延計(jì)數(shù),并且當(dāng)前狀態(tài)n等于4,通過獲得狀態(tài)時(shí)延計(jì)數(shù)位置L4與B4-1的和來更新當(dāng)前的跟蹤陣列460。因此,使用本發(fā)明的更新過程,用于狀態(tài)時(shí)延計(jì)數(shù)位置L4的更新的時(shí)延計(jì)數(shù)等于2111,如在更新的跟蹤陣列462所示一樣。
如果進(jìn)入一狀態(tài)的最佳路徑為單步狀態(tài)轉(zhuǎn)移路徑,如所示的圖14的格子464中的從幀4至幀5一樣,根據(jù)本發(fā)明,通過獲得Bn-1與在對(duì)應(yīng)于來自跟蹤陣列460的前面狀態(tài)的狀態(tài)時(shí)延計(jì)數(shù)位置中的狀態(tài)時(shí)延計(jì)數(shù)的值的和來更新跟蹤陣列460。例如,由于跟蹤陣列460的狀態(tài)時(shí)延計(jì)數(shù)位置L3的時(shí)延計(jì)數(shù)為在狀態(tài)3中的一個(gè)時(shí)延計(jì)數(shù)、在狀態(tài)2中的兩個(gè)時(shí)延計(jì)數(shù)、和在狀態(tài)1中的一個(gè)時(shí)延計(jì)數(shù),并且當(dāng)前狀態(tài)n等于4,通過獲得狀態(tài)時(shí)延計(jì)數(shù)位置L3與B4-1的和來更新跟蹤陣列460,結(jié)果,狀態(tài)時(shí)延計(jì)數(shù)位置L4的已更新的時(shí)延計(jì)數(shù)等于1121,如在更新的跟蹤陣列466中所示。
類似地,如果進(jìn)入一狀態(tài)的最佳路徑為單跳狀態(tài)轉(zhuǎn)移路徑,如所示的圖14的格子468中的從幀4至幀5一樣,根據(jù)本發(fā)明,通過獲得Bn-1與狀態(tài)時(shí)延計(jì)數(shù)的值的和來更新跟蹤陣列460,所述狀態(tài)時(shí)延計(jì)數(shù)的值來自于跟蹤陣列460并且在對(duì)應(yīng)于在當(dāng)前狀態(tài)n前面的前兩個(gè)狀態(tài)的在前狀態(tài)的狀態(tài)時(shí)延計(jì)數(shù)中。例如,由于跟蹤陣列460的狀態(tài)時(shí)延計(jì)數(shù)位置L2的時(shí)延計(jì)數(shù)為在狀態(tài)2中的三個(gè)時(shí)延計(jì)數(shù)、在狀態(tài)1中的一個(gè)時(shí)延計(jì)數(shù),并且當(dāng)前狀態(tài)n等于4,通過獲得狀態(tài)時(shí)延計(jì)數(shù)位置L2與B4-1的和來更新跟蹤陣列460,結(jié)果,狀態(tài)時(shí)延計(jì)數(shù)位置L4的已更新的時(shí)延計(jì)數(shù)等于1031,如在更新的跟蹤陣列470中所示。
最后,如果進(jìn)入一狀態(tài)的最佳路徑為雙跳狀態(tài)轉(zhuǎn)移路徑,如所示的圖14的格子472中的從幀4至幀5一樣,根據(jù)本發(fā)明,通過獲得Bn-1與狀態(tài)時(shí)延計(jì)數(shù)的值的和來更新跟蹤陣列460,所述狀態(tài)時(shí)延計(jì)數(shù)的值來自于跟蹤陣列460并且在對(duì)應(yīng)于在當(dāng)前狀態(tài)n前面的前三個(gè)狀態(tài)的在前狀態(tài)的狀態(tài)時(shí)延計(jì)數(shù)中。例如,由于跟蹤陣列460的狀態(tài)時(shí)延計(jì)數(shù)位置L1的時(shí)延計(jì)數(shù)為在狀態(tài)1中的四個(gè)時(shí)延計(jì)數(shù),并且當(dāng)前狀態(tài)n等于4,通過獲得狀態(tài)時(shí)延計(jì)數(shù)位置L1與B4-1的和來更新跟蹤陣列460,結(jié)果,狀態(tài)時(shí)延計(jì)數(shù)位置L1的已更新的時(shí)延計(jì)數(shù)等于1004,如在更新的跟蹤陣列470中所示。對(duì)于本領(lǐng)域的普通技術(shù)人員來說,很顯然,計(jì)算Ln=Lm+B(n-1)的更新過程通常應(yīng)用于從狀態(tài)n到狀態(tài)m的任意的轉(zhuǎn)移,其中m小于或等于n。
在所概述的用于根據(jù)數(shù)字編碼來更新跟蹤信息的過程中,例如圖14中,進(jìn)行對(duì)各個(gè)數(shù)字編碼的基數(shù)-B值的參考說明。對(duì)于熟知本領(lǐng)域的狀態(tài)技術(shù)領(lǐng)域的技術(shù)人員來說,很顯然,通常在諸如動(dòng)態(tài)RAM和其他存儲(chǔ)介質(zhì)的存儲(chǔ)設(shè)備中的存儲(chǔ)字具有固定的存儲(chǔ)字大小。在將基數(shù)B用于編碼和在模型中的狀態(tài)數(shù)N足夠大的情況下,需要用來存儲(chǔ)編碼值Ln的位數(shù)可超過存儲(chǔ)字大小。在這種情況下,可能需要確定的算法運(yùn)算來執(zhí)行跟蹤信息更新過程以提供用來擴(kuò)展至多個(gè)存儲(chǔ)字的一編碼值。根據(jù)存儲(chǔ)字的大小和用來執(zhí)行運(yùn)算的設(shè)備的功能,此類算法運(yùn)算有一些變化,因此,不將這些內(nèi)容作為一部分包括在本說明書中,這些內(nèi)容被認(rèn)為是對(duì)于軟件開發(fā)的本領(lǐng)于技術(shù)人員來說是顯而易見的。
圖15為根據(jù)本發(fā)明的另一個(gè)實(shí)施例使用數(shù)字編碼來更新存儲(chǔ)作為時(shí)延計(jì)數(shù)的跟蹤陣列的格子跟蹤信息的方法的流程圖。如圖13和15所示,首先,在步驟500,通過將L1[1]的時(shí)延計(jì)數(shù)設(shè)為1、將在該陣列的剩余位置中的時(shí)延計(jì)數(shù)設(shè)為0、并且將幀計(jì)數(shù)器設(shè)為下一幀,t=2來初始化狀態(tài)時(shí)延計(jì)數(shù)的陣列457。然后,在步驟502,確定是否已評(píng)估所有的幀。如果確定已經(jīng)評(píng)估了所有的幀,則結(jié)束更新過程(步驟504)。然而,如果確定沒有評(píng)估完所有的幀,將當(dāng)前狀態(tài)n設(shè)為總的狀態(tài)數(shù)N(步驟508)來使流程開始于最后的狀態(tài),使得首先評(píng)估最高的或者最后的狀態(tài)。例如,如圖14所示,根據(jù)本發(fā)明的另一個(gè)實(shí)施例,狀態(tài)n被設(shè)為4,使得評(píng)估開始于對(duì)應(yīng)于幀2、狀態(tài)4的格子458(等價(jià)于格子464,468,472)的點(diǎn)處。
然后在步驟510,確定是否已經(jīng)評(píng)估完所有狀態(tài),也就是如果n<1。如果已經(jīng)評(píng)估完所有的狀態(tài),則增加幀計(jì)數(shù)器,也就是幀t=3(步驟512),并且評(píng)估返回步驟502。然而,如果在步驟510沒有評(píng)估完所有狀態(tài),在步驟514,使用維特比搜索方法執(zhí)行對(duì)進(jìn)入在幀t處的當(dāng)前狀態(tài)n的最佳路徑的搜索。
正如在圖9和15中看到的一樣,根據(jù)本發(fā)明的另一個(gè)實(shí)施例的、用于使用數(shù)字編碼來更新存儲(chǔ)作為時(shí)延計(jì)數(shù)的跟蹤陣列的跟蹤信息的更新過程的步驟500-514與上面介紹的根據(jù)本發(fā)明的用于使用存儲(chǔ)位置來更新作為時(shí)延計(jì)數(shù)的跟蹤陣列的跟蹤信息的更新過程的步驟400-414相同。然而,根據(jù)本發(fā)明的另一個(gè)實(shí)施例,在用于利用圖15的數(shù)字編碼來更新存儲(chǔ)作為時(shí)延基數(shù)的跟蹤陣列的跟蹤信息的更新過程中,一旦在步驟514完成搜索最佳的路徑,結(jié)果被用來識(shí)別進(jìn)入當(dāng)前狀態(tài)n的最佳路徑是來自狀態(tài)m,步驟516。然后,在步驟518,用于當(dāng)前狀態(tài)n的狀態(tài)時(shí)延計(jì)數(shù)被設(shè)為對(duì)應(yīng)于前面狀態(tài)m對(duì)應(yīng)的狀態(tài)時(shí)延計(jì)數(shù)位置Lm與B(n-1)的和的狀態(tài)時(shí)延計(jì)數(shù)。流程繼續(xù)前面的狀態(tài)n=n-1,步驟520,然后,返回步驟510。
圖16為根據(jù)本發(fā)明的用于產(chǎn)生線性陣列的過程的流程圖,其被用于根據(jù)圖15的陣列更新過程的結(jié)果來存儲(chǔ)用于每一個(gè)幀的幀分配。根據(jù)本發(fā)明的另一個(gè)實(shí)施例,圖13的狀態(tài)時(shí)延計(jì)數(shù)陣列457被展開為線性陣列A[t],該陣列具有對(duì)應(yīng)于在被對(duì)準(zhǔn)的表達(dá)中的幀總數(shù)的長(zhǎng)度,類似于上面介紹的圖12的產(chǎn)生的線性陣列440。
一旦在步驟502確定已經(jīng)評(píng)估所有的幀,并且結(jié)束了更新過程(圖15的步驟504),根據(jù)本發(fā)明的另一個(gè)實(shí)施例,通過將當(dāng)前幀t設(shè)為幀總數(shù)T、將當(dāng)前狀態(tài)n設(shè)為狀態(tài)總數(shù)N來在圖16的步驟600初始化基于圖15的陣列更新過程的結(jié)果的、用于產(chǎn)生線性陣列的流程。如果(例如)從圖14的已更新的跟蹤陣列462產(chǎn)生線性陣列,狀態(tài)總數(shù)為4,并且?guī)倲?shù)等于在狀態(tài)時(shí)延計(jì)數(shù)位置L4中的各個(gè)基數(shù)-B數(shù)字的和。
由于對(duì)應(yīng)于在狀態(tài)時(shí)延計(jì)數(shù)位置L4中的時(shí)延計(jì)數(shù)的數(shù)字已編碼的跟蹤信息為在狀態(tài)4中的兩個(gè)幀、和分別在每一狀態(tài)1、2和3中的一個(gè)幀,在狀態(tài)時(shí)延計(jì)數(shù)位置L4中的已編碼值為2111。在表達(dá)中的幀總數(shù)T等于5(2+1+1+1=5)??梢岳斫猓景l(fā)明的另一個(gè)實(shí)施例可以應(yīng)用任意的狀態(tài)數(shù)和幀數(shù),選定的用于狀態(tài)數(shù)和幀數(shù)的值僅僅是為了支持說明本發(fā)明的另一個(gè)實(shí)施例。
在初始化步驟600后,在步驟602,對(duì)應(yīng)于當(dāng)前狀態(tài)時(shí)延計(jì)數(shù)位置LN的數(shù)字已編碼跟蹤信息被復(fù)制,并且在步驟604確定已復(fù)制的跟蹤信息L是否大于或等于B(n-1)。如上所述,盡管在本發(fā)明的優(yōu)選實(shí)施例中,B等于10,可以理解,可以使用任意的值B。然而,根據(jù)本發(fā)明的另一個(gè)實(shí)施例,在任意的狀態(tài)中的時(shí)延時(shí)間不能超過B個(gè)幀。
如果在步驟604確定了已復(fù)制的數(shù)字編碼的跟蹤信息L大于或等于B(n-1),在步驟606中記錄用于線性陣列A[t]的相應(yīng)的幀分配,在步驟608減當(dāng)前幀t,在步驟610,已復(fù)制的跟蹤信息L被減掉對(duì)應(yīng)于狀態(tài)n的基數(shù)-B的值B(n-1),并且流程返回步驟604。
如果在步驟604確定了已復(fù)制的數(shù)字編碼的跟蹤信息L不大于或等于B(n-1),在步驟612將當(dāng)前狀態(tài)n減到前一狀態(tài)n-1,并且在步驟614確定是否已經(jīng)評(píng)估所有的狀態(tài)。如果在步驟614確定已經(jīng)評(píng)估所有的狀態(tài),則流程使用前一狀態(tài)n-1來繼續(xù)步驟604,在步驟616結(jié)束線性陣列產(chǎn)生流程,得到圖12的線性陣列440。
盡管已經(jīng)示出和介紹了本發(fā)明的特定的實(shí)施例,可以進(jìn)行修改。因此,所附權(quán)利要求希望覆蓋落在本發(fā)明的精神和范圍內(nèi)的所有的此類改變和修改。
權(quán)利要求
1.一種用于存儲(chǔ)和更新在語(yǔ)音識(shí)別系統(tǒng)中的格子跟蹤信息的方法,其包括步驟產(chǎn)生具有多行和一列或多列的跟蹤陣列,所述多行中的每一行對(duì)應(yīng)于跟蹤路徑結(jié)束的多個(gè)狀態(tài)中的一個(gè),并且所述一列或多列中的每一列包含用于在所述跟蹤路徑中的狀態(tài)的時(shí)延計(jì)數(shù);確定進(jìn)入所述多個(gè)狀態(tài)中的給定狀態(tài)的最佳的狀態(tài)轉(zhuǎn)移路徑;和響應(yīng)所述已確定的最佳狀態(tài)轉(zhuǎn)移路徑,更新所述已產(chǎn)生的跟蹤陣列。
2.根據(jù)權(quán)利要求1的方法,進(jìn)一步包括步驟響應(yīng)于所述確定的最佳狀態(tài)轉(zhuǎn)移路徑為自身環(huán)狀態(tài)轉(zhuǎn)移路徑,增加包含在具有對(duì)應(yīng)于所述給定狀態(tài)的行的第一列中的時(shí)延計(jì)數(shù)。
3.根據(jù)權(quán)利要求2的方法,進(jìn)一步包括步驟將對(duì)應(yīng)于在所述給定狀態(tài)前的第一在前狀態(tài)的行復(fù)制到對(duì)應(yīng)于所述給定狀態(tài)的行中;和響應(yīng)于所述已確定的最佳狀態(tài)轉(zhuǎn)移路徑為單步狀態(tài)轉(zhuǎn)移路徑,重設(shè)包含在具有對(duì)應(yīng)于所述給定狀態(tài)的行的第一列中的時(shí)延計(jì)數(shù)為1。
4.根據(jù)權(quán)利要求3的方法,進(jìn)一步包括步驟將對(duì)應(yīng)于在所述給定狀態(tài)前的第二在前狀態(tài)的行復(fù)制到對(duì)應(yīng)于所述給定狀態(tài)的行中;重設(shè)包含在具有對(duì)應(yīng)于所述給定狀態(tài)的行的第一列中的時(shí)延計(jì)數(shù)為1;和響應(yīng)于所述已確定的最佳狀態(tài)轉(zhuǎn)移路徑為單跳狀態(tài)轉(zhuǎn)移路徑,重設(shè)包含在對(duì)應(yīng)于所述給定狀態(tài)的行中、不包括在所述已復(fù)制的行中的剩余的時(shí)延計(jì)數(shù)為0。
5.根據(jù)權(quán)利要求4的方法,進(jìn)一步包括步驟將對(duì)應(yīng)于在所述給定狀態(tài)前的第三在前狀態(tài)的行復(fù)制到對(duì)應(yīng)于所述給定狀態(tài)的行中;重設(shè)包含在具有對(duì)應(yīng)于所述給定狀態(tài)的行的第一列中的時(shí)延計(jì)數(shù)為1;和響應(yīng)于所述已確定的最佳狀態(tài)轉(zhuǎn)移路徑為雙跳狀態(tài)轉(zhuǎn)移路徑,重設(shè)包含在對(duì)應(yīng)于所述給定狀態(tài)的行中、不包括在所述已復(fù)制的行中的剩余的時(shí)延計(jì)數(shù)為0。
6.根據(jù)權(quán)利要求3的方法,進(jìn)一步包括步驟將對(duì)應(yīng)于在所述給定狀態(tài)前的n個(gè)狀態(tài)的一狀態(tài)的行復(fù)制到對(duì)應(yīng)于所述給定狀態(tài)的行中;重設(shè)包含在具有對(duì)應(yīng)于所述給定狀態(tài)的行的第一列中的時(shí)延計(jì)數(shù)為1;和響應(yīng)于所述已確定的最佳狀態(tài)轉(zhuǎn)移路徑為n-1跳躍狀態(tài)轉(zhuǎn)移路徑,重設(shè)包含在對(duì)應(yīng)于所述給定狀態(tài)的行中、不包括在所述已復(fù)制的行中的剩余的時(shí)延計(jì)數(shù)為0。
7.根據(jù)權(quán)利要求6的方法,進(jìn)一步包括步驟確定進(jìn)入所述多個(gè)狀態(tài)中的每一個(gè)狀態(tài)的最佳狀態(tài)轉(zhuǎn)移路徑,開始于模型的所述最后狀態(tài)。
8.根據(jù)權(quán)利要求7的方法,進(jìn)一步包括步驟對(duì)于每一個(gè)新的幀f,確定進(jìn)入所述多個(gè)狀態(tài)中的每一個(gè)幀的最佳狀態(tài)轉(zhuǎn)移路徑。
9.根據(jù)權(quán)利要求8的方法,進(jìn)一步包括步驟確定是否已經(jīng)評(píng)估所有的幀;響應(yīng)于確定已經(jīng)評(píng)估所有幀,將當(dāng)前幀t設(shè)等于幀總數(shù)T,并且將當(dāng)前狀態(tài)n設(shè)為等于狀態(tài)總數(shù)N;將對(duì)應(yīng)于具有被分配給在從狀態(tài)N向后跟蹤的路徑中的狀態(tài)n的幀數(shù)的當(dāng)前計(jì)數(shù)器k設(shè)為等于狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置LN[n];確定是否已經(jīng)對(duì)用于所述當(dāng)前狀態(tài)n的所有狀態(tài)分配進(jìn)行了計(jì)數(shù);響應(yīng)于沒有對(duì)所有的狀態(tài)分配進(jìn)行了計(jì)數(shù),記錄幀分配,減所述當(dāng)前幀t和所述計(jì)數(shù)器k,并且返回到確定是否已經(jīng)對(duì)用于所述當(dāng)前狀態(tài)n的所有狀態(tài)分配進(jìn)行了計(jì)數(shù)的步驟;響應(yīng)于對(duì)用于所述當(dāng)前狀態(tài)n的所有狀態(tài)分配進(jìn)行了計(jì)數(shù),確定所述當(dāng)前狀態(tài)n;和確定是否已經(jīng)評(píng)估所有的狀態(tài),并且響應(yīng)于沒有評(píng)估所有的狀態(tài),返回到所述設(shè)定計(jì)數(shù)器k的步驟。
10.根據(jù)權(quán)利要求1的方法,進(jìn)一步包括步驟設(shè)定當(dāng)前狀態(tài)n為等于所述給定狀態(tài);確定進(jìn)入所述當(dāng)前狀態(tài)n的最佳狀態(tài)轉(zhuǎn)移路徑位來自狀態(tài)m,其中m小于或等于n;和將對(duì)應(yīng)于所述當(dāng)前狀態(tài)、存儲(chǔ)作為基數(shù)-B的數(shù)字編碼值的狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置設(shè)為等于對(duì)應(yīng)于狀態(tài)m的狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置與基數(shù)-B的值B(n-1)的和。
11.根據(jù)權(quán)利要求10的方法,進(jìn)一步包括步驟確定進(jìn)入所述多個(gè)狀態(tài)的每一個(gè)狀態(tài)的最佳狀態(tài)路徑,開始模型的所述最后步驟。
12.根據(jù)權(quán)利要求11的方法,進(jìn)一步包括步驟對(duì)于每一個(gè)新的幀f,確定進(jìn)入所述多個(gè)狀態(tài)的每一個(gè)狀態(tài)的最佳狀態(tài)轉(zhuǎn)移路徑。
13.根據(jù)權(quán)利要求12的方法,進(jìn)一步包括步驟(i)將當(dāng)前幀t設(shè)等于幀總數(shù)T,并且將當(dāng)前狀態(tài)n設(shè)為等于狀態(tài)總數(shù)N;(ii)將來自對(duì)應(yīng)于所述狀態(tài)總數(shù)N的狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置的基數(shù)-B的數(shù)字編碼值的跟蹤信息進(jìn)行復(fù)制;(iii)確定所述已復(fù)制的跟蹤信息是否大于或等于B(n-1);(iv)記錄幀分配,減所述當(dāng)前幀t,將所述已復(fù)制的跟蹤信息減掉對(duì)應(yīng)于所述當(dāng)前狀態(tài)的基數(shù)-B的值B(n-1),并且響應(yīng)于所述已復(fù)制的跟蹤信息大于或等于B(n-1),返回到步驟(iii);和(v)減所述當(dāng)前狀態(tài)n,并且響應(yīng)于所述已復(fù)制的跟蹤信息不大于或等于B(n-1),確定是否已經(jīng)評(píng)估了所有狀態(tài);和(vi)響應(yīng)于沒有評(píng)估完所有狀態(tài),返回步驟(iii)。
14.根據(jù)權(quán)利要求13的方法,其中所述B等于10。
15.根據(jù)權(quán)利要求13的方法,其中所述B等于2的乘冪。
16.一種更新存儲(chǔ)作為時(shí)延計(jì)數(shù)的跟蹤陣列的跟蹤信息的方法,該方法包括步驟(i)確定是否已經(jīng)評(píng)估所有幀;(ii)響應(yīng)于沒有評(píng)估完所有幀,將當(dāng)前狀態(tài)n設(shè)為等于狀態(tài)總數(shù)N;(iii)確定是否已經(jīng)評(píng)估所有狀態(tài);(iv)響應(yīng)于評(píng)估完所有狀態(tài),轉(zhuǎn)向下一幀,并且返回步驟(i);(v)響應(yīng)于沒有評(píng)估完所有狀態(tài),執(zhí)行對(duì)進(jìn)入在幀t的所述當(dāng)前狀態(tài)n的最佳路徑的搜索;和(vi)響應(yīng)于搜索到所述最佳路徑,更新所述跟蹤陣列。
17.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括步驟(vii)確定所述最佳路徑是否來自當(dāng)前狀態(tài)n;(viii)響應(yīng)于所述最佳路徑來自所述當(dāng)前狀態(tài)n,增加對(duì)應(yīng)于所述當(dāng)前狀態(tài)n的狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Ln[n],減所述當(dāng)前狀態(tài)n,并且返回到步驟(iii);(ix)響應(yīng)于在步驟(vii)確定所述最佳路徑不是來自當(dāng)前狀態(tài)n,將所述最佳路徑設(shè)為來自前面的狀態(tài)m而不是來自所述當(dāng)前狀態(tài)n,將對(duì)應(yīng)于所述當(dāng)前狀態(tài)n的所述狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Ln[n]設(shè)為等于1,并且前進(jìn)到對(duì)應(yīng)于所述當(dāng)前狀態(tài)前n的狀態(tài)i的狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Ln[i];(x)確定是否已經(jīng)評(píng)估所有已跳過的狀態(tài);(xi)響應(yīng)于在步驟(x)確定沒有評(píng)估完所有已跳過的狀態(tài),將狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Ln[i]設(shè)為等于0,減前一狀態(tài)i,并且返回步驟(x);(xii)響應(yīng)于在步驟(xi)確定已經(jīng)評(píng)估所有已跳過的狀態(tài),確定是否已經(jīng)評(píng)估完所有狀態(tài);(xiii)響應(yīng)于在步驟(xii)確定沒有評(píng)估完所有狀態(tài),減所述當(dāng)前狀態(tài)n,并且返回步驟(iii);和(xiv)響應(yīng)于在步驟(xii)已經(jīng)評(píng)估完所有狀態(tài),將對(duì)應(yīng)于所述在前狀態(tài)m的狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Lm[i]復(fù)制到狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置Ln[i],減狀態(tài)i,并且返回步驟(xii)。
18.根據(jù)權(quán)利要求17所述的方法,進(jìn)一步包括步驟確定是否已經(jīng)評(píng)估完所有幀;響應(yīng)于已經(jīng)評(píng)估完所有幀,將當(dāng)前幀t設(shè)為等于幀總數(shù)T,并將當(dāng)前狀態(tài)n設(shè)為等于狀態(tài)總數(shù)N;將對(duì)應(yīng)于被分配給在來自狀態(tài)向后跟蹤N的路徑的狀態(tài)n的幀數(shù)的計(jì)數(shù)器k設(shè)為等于狀態(tài)時(shí)延計(jì)數(shù)存儲(chǔ)位置LN[n];確定是否已經(jīng)對(duì)用于所述當(dāng)前狀態(tài)n的所有狀態(tài)分配進(jìn)行了計(jì)數(shù);響應(yīng)于沒有對(duì)用于所述當(dāng)前狀態(tài)n的所有狀態(tài)分配進(jìn)行了計(jì)數(shù),記錄幀分配,減所述當(dāng)前幀t和所述計(jì)數(shù)器k,并且返回到確定是否已經(jīng)對(duì)用于所述當(dāng)前狀態(tài)n的所有狀態(tài)分配進(jìn)行了計(jì)數(shù)的步驟;響應(yīng)于已經(jīng)對(duì)用于所述當(dāng)前狀態(tài)n的所有狀態(tài)分配進(jìn)行了計(jì)數(shù),減所述當(dāng)前狀態(tài)n;和響應(yīng)于沒有評(píng)估完所有狀態(tài),確定是否已經(jīng)評(píng)估了所有狀態(tài),并且返回到設(shè)置計(jì)數(shù)器k的步驟。
19.根據(jù)權(quán)利要求16的方法,進(jìn)一步包括步驟(vii)將進(jìn)入狀態(tài)n的所述最佳路徑設(shè)為來自狀態(tài)m,其中m小于或等于n;和(viii)將存儲(chǔ)作為基數(shù)-B數(shù)字編碼值的用于狀態(tài)n的狀態(tài)時(shí)延基數(shù)設(shè)為等于對(duì)應(yīng)于狀態(tài)m的狀態(tài)時(shí)延計(jì)數(shù)位置與基數(shù)-B的值B(n-1),減所述當(dāng)前狀態(tài)n,并且返回步驟(iii)。
20.根據(jù)權(quán)利要求19的方法,進(jìn)一步包括步驟(ix)將當(dāng)前幀t設(shè)為等于幀總數(shù)T,并將當(dāng)前狀態(tài)n設(shè)為等于狀態(tài)總數(shù)N;(x)復(fù)制來自對(duì)應(yīng)于所述狀態(tài)總數(shù)N的狀態(tài)時(shí)延計(jì)數(shù)位置的基數(shù)-B數(shù)字編碼跟蹤信息;(xi)確定是否所述已復(fù)制的跟蹤信息大于或等于B(n-1);(xii)響應(yīng)于所述已復(fù)制的跟蹤信息大于或等于B(n-1),記錄相應(yīng)的幀分配,減所述當(dāng)前幀t,將所述已復(fù)制的跟蹤信息減掉對(duì)應(yīng)于所述當(dāng)前狀態(tài)的基數(shù)-B的值B(n-1),并且返回步驟(xi);(xiii)響應(yīng)于所述已復(fù)制的跟蹤信息不大于或等于B(n-1),減所述當(dāng)前狀態(tài)n,并且確定是否已經(jīng)評(píng)估完所有狀態(tài);和(xiv)響應(yīng)于沒有評(píng)估完所有狀態(tài),返回步驟(xi)。
21.根據(jù)權(quán)利要求20的方法,其中所述B等于10。
22.根據(jù)權(quán)利要求20的方法,其中所述B等于2的乘冪。
23.一種無線通信設(shè)備,其包括話筒;和連接到所述話筒以接收信號(hào)并且負(fù)責(zé)提供語(yǔ)音識(shí)別的處理器,所述處理器產(chǎn)生具有多行和一列或多列的跟蹤陣列,所述多行中的每一行對(duì)應(yīng)于跟蹤路徑結(jié)束的多個(gè)狀態(tài)中的一個(gè),且一列或多列中的每一列包含用于在所述跟蹤路徑中的狀態(tài)的時(shí)延計(jì)數(shù),并且響應(yīng)于進(jìn)入所述多個(gè)狀態(tài)中的給定狀態(tài)的最佳狀態(tài)轉(zhuǎn)移路徑,所述處理器更新已產(chǎn)生的跟蹤陣列。
24.根據(jù)權(quán)利要求23的通信設(shè)備,其中所述處理器響應(yīng)于所述最佳狀態(tài)轉(zhuǎn)移路徑為自身環(huán)狀態(tài)轉(zhuǎn)移路徑,增加包含在具有對(duì)應(yīng)于所述給定狀態(tài)的行的第一列中的時(shí)延計(jì)數(shù),響應(yīng)于所述最佳狀態(tài)轉(zhuǎn)移路徑為單步狀態(tài)轉(zhuǎn)移路徑,將對(duì)應(yīng)于在所述給定狀態(tài)前的第一在前狀態(tài)的行復(fù)制到對(duì)應(yīng)于所述給定狀態(tài)的行中,并且將包含在具有對(duì)應(yīng)于所述給定狀態(tài)的行的第一列中的時(shí)延計(jì)數(shù)重設(shè)為等于1,和響應(yīng)于所述已確定的最佳狀態(tài)轉(zhuǎn)移路徑為n-1個(gè)跳躍狀態(tài)轉(zhuǎn)移路徑,將對(duì)應(yīng)于在所述給定狀態(tài)前的n個(gè)狀態(tài)的狀態(tài)的行復(fù)制到對(duì)應(yīng)于所述給定狀態(tài)的行,將包含在具有對(duì)應(yīng)于所述給定狀態(tài)的行的第一列中的時(shí)延計(jì)數(shù)重設(shè)為等于1,并且將包含在對(duì)應(yīng)于所述給定狀態(tài)的行中、不包括在所述已復(fù)制的行中的剩余的時(shí)延計(jì)數(shù)重設(shè)為等于0。
25.根據(jù)權(quán)利要求23的通信設(shè)備,其中所述處理器將當(dāng)前狀態(tài)n設(shè)為等于所述給定狀態(tài),確定進(jìn)入所述當(dāng)前狀態(tài)的所述最佳狀態(tài)轉(zhuǎn)移路徑為來自狀態(tài)m,其中m小于或等于n,并且將被存儲(chǔ)作為基數(shù)-B的數(shù)字編碼值的、對(duì)應(yīng)于所述當(dāng)前狀態(tài)的狀態(tài)時(shí)延基數(shù)存儲(chǔ)位置設(shè)為等于對(duì)應(yīng)于狀態(tài)m與基數(shù)-B的值B(n-1)的狀態(tài)時(shí)延基數(shù)存儲(chǔ)位置的和。
26.根據(jù)權(quán)利要求25的通信設(shè)備,其中所述B等于10。
27.根據(jù)權(quán)利要求25的通信設(shè)備,其中所述B等于2的乘冪。
全文摘要
包括語(yǔ)音識(shí)別系統(tǒng)(204,206,207,208)的設(shè)備(100)產(chǎn)生表示語(yǔ)音表達(dá)的信號(hào)。所述表達(dá)被劃分為表示所述表達(dá)的幀(Ft)。使用對(duì)準(zhǔn)算法將幀分配給狀態(tài)(S1-S5)。使用識(shí)別對(duì)每一個(gè)狀態(tài)的狀態(tài)轉(zhuǎn)移的狀態(tài)轉(zhuǎn)移信息來將代表幀到狀態(tài)分配的路徑存儲(chǔ)在存儲(chǔ)器(110)中。通過產(chǎn)生具有多行和一列或多列的跟蹤陣列來存儲(chǔ)和更新用于語(yǔ)音識(shí)別系統(tǒng)的格子跟蹤信息,多行中的每一行對(duì)應(yīng)于跟蹤路徑結(jié)束的多個(gè)狀態(tài)中的一個(gè),并且每一列包含用于在跟蹤路徑中的一個(gè)或多個(gè)時(shí)延計(jì)數(shù)。進(jìn)入多個(gè)狀態(tài)中的一個(gè)給定的狀態(tài)的最佳的狀態(tài)轉(zhuǎn)移路徑被確定,并且響應(yīng)于所述已確定的最佳的狀態(tài)轉(zhuǎn)移路徑,更新已產(chǎn)生的跟蹤陣列。
文檔編號(hào)G10L15/08GK1524259SQ01808981
公開日2004年8月25日 申請(qǐng)日期2001年4月12日 優(yōu)先權(quán)日2000年5月4日
發(fā)明者杰弗里·梅烏涅爾, 丹尼爾·波佩特, 波佩特, 杰弗里 梅烏涅爾 申請(qǐng)人:摩托羅拉公司