專利名稱:創(chuàng)建用于字母數(shù)字概念的語音識別語法的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及語音識別,尤其涉及自動創(chuàng)建用于字母數(shù)字概念的語音識別語法。
背景技術(shù):
語音識別系統(tǒng)越來越多地由公司和組織使用來降低成本、改進(jìn)顧客服務(wù)和/或完全或部分地自動化任務(wù)。這些系統(tǒng)用于各種各樣的計(jì)算設(shè)備,其范圍從獨(dú)立的臺式機(jī)、網(wǎng)絡(luò)設(shè)備到移動手持式計(jì)算設(shè)備。語音識別為應(yīng)用程序開發(fā)者提供了自然的用戶界面。例如,對于諸如手持式移動設(shè)備等計(jì)算設(shè)備,如果沒有顯著地增大計(jì)算設(shè)備的尺寸,完整的字母數(shù)字鍵盤是不切實(shí)際的。由此,語音識別提供了一種用于小型設(shè)備的方便的輸入方法,并且也允許用戶諸如通過簡單電話等遠(yuǎn)程地訪問計(jì)算機(jī)。
隨著語音識別被越來越廣泛地接受(如果不是必需),需要快速且有效地創(chuàng)建靈活、準(zhǔn)確、啟用語音地應(yīng)用程序。針對口語理解模型的研究實(shí)現(xiàn)了靈活性,因?yàn)檫@類系統(tǒng)允許系統(tǒng)和用戶之間混合發(fā)起的對話。盡管這類系統(tǒng)和研究在對包含多個短語語義單元(時隙)的命令建模方面實(shí)現(xiàn)了準(zhǔn)確性,例如,在航空旅行信息系統(tǒng)領(lǐng)域中如“列出周二從西雅圖到波士頓的價格不高于$400的航班”等“顯示航班”命令,然而它們很少學(xué)習(xí)對于諸如日期、時間、信用卡號、航班號等低級概念的短語模型的采集。相反,它們采用語法庫和數(shù)據(jù)庫條目(例如,來自應(yīng)用程序數(shù)據(jù)庫的城市名)用于解決方案。
盡管如此,迄今為止所采用的大多數(shù)口語系統(tǒng)是系統(tǒng)發(fā)起的、定向的對話系統(tǒng)。在這類系統(tǒng)中,大多數(shù)語法開發(fā)努力致力于低級概念。盡管語法庫和數(shù)據(jù)庫條目是可行的解決方案,然而它們無法完全解決問題。例如,語法庫開發(fā)者無法預(yù)見到所有可能的領(lǐng)域?qū)S酶拍畈樗鼈冾A(yù)先構(gòu)建語法。另外,拼字正確形式的數(shù)據(jù)庫條目不足以用作語音識別語法。例如,正確的語音識別語法需要對字母數(shù)字串的各種備選口頭表達(dá)建模。假定應(yīng)用程序需要識別零件號,且“ABB123”是零件號之一。啟用語音的系統(tǒng)應(yīng)當(dāng)即時在該零件號以諸如“A B B一二三”或“A兩個B一二十三”等不同方法說出的情況下也能夠識別該零件號。
因此,都認(rèn)識到,對諸如零件號和駕照號等字母數(shù)字概念的語法開發(fā)是最具挑戰(zhàn)性的任務(wù)之一。一種嘗試是采用基于單個狀態(tài)有限狀態(tài)模型的簡單語法。這一模型對每一字符(A-Z)和每一數(shù)字(0-9)都具有一個循環(huán)。然而,該模型一般由于包括語法不捕捉目標(biāo)子語言的特殊性等原因不能運(yùn)作良好。因此,模型的困惑程度遠(yuǎn)高于它應(yīng)有的困惑程度。例如,如果知道零件號總是以字母“B”開始,則語法應(yīng)當(dāng)明確地對該約束建模,使得將“E”與“D”、“E”、“G”和“P”混淆的識別錯誤永遠(yuǎn)不會出現(xiàn)。
另外,簡單語法不對許多類型的串的語言表達(dá)的多樣性建模。在以上的示例中,“ABB123”的“ABB”部分和“123”部分都可以用不同但十分常見的方法來提供,這些方法中的許多種都未由簡單語法建模。
此外,如“-”、“*”等特殊字符經(jīng)常出現(xiàn)在諸如零件號等字母數(shù)字序列中。這將要求通用字母數(shù)字語法在這種情況下是定制的。
鑒于以上問題,通常迫使開發(fā)者對特定的字母數(shù)字概念編寫其自己的語法。該過程是單調(diào)乏味且易于出錯的。與語法庫不同,由較無經(jīng)驗(yàn)的開發(fā)者創(chuàng)作的語法通常不是最優(yōu)的,由此在由解碼器使用時具有較差的性能。
因此,解決以上需求中的一個、幾個或所有的、用于生成字母數(shù)字語法的系統(tǒng)和方法將是有益的。
發(fā)明內(nèi)容
一種生成適用于由語音識別器使用的語法的方法和系統(tǒng)包括接收字母數(shù)字表達(dá)的表示。例如,該表示可采取正則表達(dá)式或掩碼的形式。語法基于該表示生成。以此方式,開發(fā)者可提供例如用于該字母數(shù)字表達(dá)的正則表達(dá)式,且系統(tǒng)自動構(gòu)造該語法。
在其它實(shí)施例中,該語法可適用于備選字符口頭表達(dá)(例如,“零”或“歐”,它們都可被說成“0”),和/或用于識別備選的字符序列口頭表達(dá)(例如,“AA”或“兩個A”,它們都可被說成“AA”)的規(guī)則。在這些情況下,該語法也可被修改成提供歸一化的信息,使得可由語音識別器使用該語法輸出歸一化的輸出。在又一實(shí)施例中,該語法用前綴優(yōu)化來構(gòu)造。
盡管語法的質(zhì)量最終是通過提供該表示的方法來確定的,但是此處描述的方法和系統(tǒng)將開發(fā)者從語法開發(fā)的困難任務(wù)中釋放出來,尤其是用于可能對于特定的應(yīng)用程序是獨(dú)特的字母數(shù)字表達(dá)的語法。以此方式,可以更快地,且無需語法開發(fā)者的獨(dú)特專家經(jīng)驗(yàn),來開發(fā)用于字母數(shù)字表達(dá)的語法。
圖1是其中可實(shí)施本發(fā)明的通用計(jì)算環(huán)境的框圖。
圖2是示意性地示出了生成基于字母數(shù)字概念的表示或表達(dá)的語法的系統(tǒng)的框圖。
圖3是用于創(chuàng)建語法的流程圖。
圖4A是未被前綴優(yōu)化的語法的一部分的圖示。
圖4B是前綴優(yōu)化的語法的一部分的圖示。
具體實(shí)施例方式
本發(fā)明涉及生成用于字母數(shù)字概念或表達(dá)的語法的系統(tǒng)、模塊和方法。然而,在更詳細(xì)討論本發(fā)明之前,首先討論其中可使用本發(fā)明的一個說明性環(huán)境。
示例性操作環(huán)境
圖1示出了適合在其中實(shí)現(xiàn)本發(fā)明的計(jì)算系統(tǒng)環(huán)境100的一個示例。計(jì)算系統(tǒng)環(huán)境100僅為合適的計(jì)算環(huán)境的一個示例,并非暗示對本發(fā)明的使用范圍或功能的局限。也不應(yīng)將計(jì)算環(huán)境100解釋為對示例性操作環(huán)境100中示出的任一組件或其組合具有任何依賴或需求。
本發(fā)明可以使用眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來操作。適合使用本發(fā)明的眾所周知的計(jì)算系統(tǒng)、環(huán)境和/或配置包括但不限于個人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)者電子設(shè)備、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)、包括任一上述系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
本發(fā)明可以在諸如由計(jì)算機(jī)執(zhí)行的程序模塊等計(jì)算機(jī)可執(zhí)行指令的一般上下文環(huán)境中描述。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。本領(lǐng)域的技術(shù)人員可以將此處的描述和/或附圖實(shí)現(xiàn)為可在以下討論的任何形式的計(jì)算機(jī)可讀介質(zhì)上具體化的計(jì)算機(jī)可執(zhí)行指令。
本發(fā)明也可以在分布式計(jì)算環(huán)境中實(shí)踐,其中,任務(wù)由通過通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備來執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲器存儲設(shè)備的本地和遠(yuǎn)程計(jì)算機(jī)存儲介質(zhì)中。
參考圖1,用于實(shí)現(xiàn)本發(fā)明的示例系統(tǒng)包括計(jì)算機(jī)110形式的通用計(jì)算裝置。計(jì)算機(jī)110的組件包括但不限于,處理單元120、系統(tǒng)存儲器130以及將包括系統(tǒng)存儲器的各類系統(tǒng)組件耦合至處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可以是若干種總線結(jié)構(gòu)類型的任一種,包括存儲器總線或存儲器控制器、外圍總線以及使用各類總線體系結(jié)構(gòu)的局部總線。作為示例而非局限,這類體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(VESA)局部總線以及外圍部件互連(PCI)總線,也稱為Mezzanine總線。
計(jì)算機(jī)110通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算機(jī)110訪問的任一可用介質(zhì),包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。作為示例而非局限,計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲介質(zhì)包括以用于儲存諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任一方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性,可移動和不可移動介質(zhì)。計(jì)算機(jī)存儲介質(zhì)包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁盒、磁帶、磁盤存儲或其它磁存儲設(shè)備、或可以用來儲存所期望的信息并可由計(jì)算機(jī)110訪問的任一其它介質(zhì)。通信介質(zhì)通常具體化為諸如載波或其它傳輸機(jī)制的已調(diào)制數(shù)據(jù)信號中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”指以對信號中的信息進(jìn)行編碼的方式設(shè)置或改變其一個或多個特征的信號。作為示例而非局限,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接連線連接,以及無線介質(zhì),如聲學(xué)、RF、紅外和其它無線介質(zhì)。上述任一的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲器130包括以易失性和/或非易失性存儲器形式的計(jì)算機(jī)存儲介質(zhì),如只讀存儲器(ROM)131和隨機(jī)存取存儲器(RAM)132?;据斎?輸出系統(tǒng)133(BIOS)包括如在啟動時幫助在計(jì)算機(jī)110內(nèi)的元件之間傳輸信息的基本例程,通常儲存在ROM131中。RAM132通常包含處理單元120立即可訪問或者當(dāng)前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計(jì)算機(jī)110也可包括其它可移動/不可移動、易失性/非易失性計(jì)算機(jī)存儲介質(zhì)。僅作示例,圖1示出了對不可移動、非易失性磁介質(zhì)進(jìn)行讀寫的硬盤驅(qū)動器141、對可移動、非易失性磁盤152進(jìn)行讀寫的磁盤驅(qū)動器151以及對可移動、非易失性光盤156,如CD ROM或其它光介質(zhì)進(jìn)行讀寫的光盤驅(qū)動器155??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動/不可移動、易失性/非易失性計(jì)算機(jī)存儲介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字視頻帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動器141通常通過不可移動存儲器接口,如接口140連接到系統(tǒng)總線121,磁盤驅(qū)動器151和光盤驅(qū)動器155通常通過可移動存儲器接口,如接口150連接到系統(tǒng)總線121。
上文討論并在圖1示出的驅(qū)動器及其關(guān)聯(lián)的計(jì)算機(jī)存儲介質(zhì)為計(jì)算機(jī)110提供了計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲。例如,在圖1中,示出硬盤驅(qū)動器141儲存操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147。注意,這些組件可以與操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137相同,也可以與它們不同。這里對操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147給予不同的標(biāo)號來說明至少它們是不同的副本。
用戶可以通過輸入設(shè)備,如鍵盤162、話筒163和定位設(shè)備161(諸如鼠標(biāo)、跟蹤球或觸摸板)向計(jì)算機(jī)110輸入命令和信息。其它輸入設(shè)備(未示出)可包括操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常通過耦合至系統(tǒng)總線的用戶輸入接口160連接至處理單元120,但是也可以通過其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器191或其它類型的顯示設(shè)備也通過接口,如視頻接口190連接至系統(tǒng)總線121。除監(jiān)視器之外,計(jì)算機(jī)也可包括其它外圍輸出設(shè)備,如揚(yáng)聲器197和打印機(jī)196,它們通過輸出外圍接口190連接。
計(jì)算機(jī)110可以使用到一個或多個遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)180的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)180可以是個人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它普通網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括許多或所有相對于計(jì)算機(jī)110所描述的元件。圖1描述的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可包括其它網(wǎng)絡(luò)。這類網(wǎng)絡(luò)環(huán)境常見于辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時,計(jì)算機(jī)110通過網(wǎng)絡(luò)接口或適配器170連接至LAN171。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時,計(jì)算機(jī)110通常包括調(diào)制解調(diào)器172或用于通過WAN173,如因特網(wǎng)建立通信的其它裝置。調(diào)制解調(diào)器172可以是內(nèi)置或外置的,通過用戶輸入接口160或其它適當(dāng)?shù)臋C(jī)制連接至系統(tǒng)總線121。在網(wǎng)絡(luò)化環(huán)境中,相對于計(jì)算機(jī)110所描述的程序模塊或其部分可儲存在遠(yuǎn)程存儲器存儲設(shè)備中。作為示例,而非局限,圖1示出遠(yuǎn)程應(yīng)用程序185駐留在遠(yuǎn)程計(jì)算機(jī)180上??梢岳斫?,示出的網(wǎng)絡(luò)連接是示例性的,也可以使用在計(jì)算機(jī)之間建立通信鏈路的其它裝置。
應(yīng)當(dāng)注意,本發(fā)明可以在諸如相對于圖1所描述的計(jì)算機(jī)系統(tǒng)上實(shí)現(xiàn)。然而,本發(fā)明可以在服務(wù)器、專用于消息處理的計(jì)算機(jī)、或分布式系統(tǒng)上實(shí)現(xiàn),在分布式系統(tǒng)中,本發(fā)明的不同部分在其不同的部分上實(shí)現(xiàn)。
語法生成系統(tǒng)
如上所述,本發(fā)明的一方面包括使具有極少語法創(chuàng)作經(jīng)驗(yàn)的開發(fā)者能夠構(gòu)造用于諸如零件號、駕照等字母數(shù)字概念或表達(dá)的高性能語音語法的系統(tǒng)和方法。表達(dá)的這些類型存在于許多類型的應(yīng)用程序中,然而,表達(dá)一般對于應(yīng)用程序是唯一的,因此較不可能在跨許多類型的應(yīng)用程序使用的語法庫中預(yù)先構(gòu)建。
圖2示出了可用于以上所討論的任一形式的操作環(huán)境實(shí)例的語法生成模塊200。一般而言,語法生成模塊200接收指示要識別的字母數(shù)字概念或表達(dá)的類型的表示。該表示一般指定了要識別的字母數(shù)字表達(dá)可包括的字符以及它們互相的位置。換言之,該表示指定了對要識別的字母數(shù)字表達(dá)的約束。該表示可采取許多形式來表示該信息,諸如但不限于,例如由可從www.w3.org/TR/xmlschema-2/獲得的“XML Schema Part2Datatypes W3C Recommendation 02 May 2001(XML模式部分2數(shù)據(jù)類型W3C推薦,2001年5月2日)”中的W3C定義的“正則表達(dá)式”,它將在下文用作示例。以另一種形式,該表示可采用“掩?!钡男问剑试S用戶為要識別的字母數(shù)字表達(dá)定義模式。
語法生成模塊200接收表示,并處理該表示以創(chuàng)建適用于識別所期望的字母數(shù)字表達(dá)的語法202。語法生成模塊200可適用于處理一種或多種形式的表示。然而,鑒于要識別的字母數(shù)字表達(dá)可采用的一般良好定義的形式,使用可任選的轉(zhuǎn)換器204是可能的,它接受一種或多種形式的表示,并將所有形式的表示轉(zhuǎn)換成被設(shè)計(jì)成由語法生成模塊200接收的單個形式。
作為示例,語法生成模塊200將被描述為處理如由W3C定義的正則表達(dá)式。該標(biāo)準(zhǔn)的簡要回顧將是有幫助的。W3C標(biāo)準(zhǔn)具有用于正則表達(dá)式的以下形式定義
regExp=branch(′|′branch)*
branch=pieces*
piece =atom quantifier?
atom =char|charClass|(′(′regExp′)′)
依照該定義,一個正則表達(dá)式由一個或多個備選者(分支(branch))構(gòu)成,其中,備選者由“|”來定界。每一分支由片斷(piece)序列構(gòu)成。每一片斷是可任選地被定量化的原子(atom)。量詞(quantifier)指定了原子的重復(fù)。它可以是數(shù)字(例如,{3})、數(shù)字范圍(例如,{0-3})或保留字符(例如,“+”表示一次以上,或“*”表示零或多次)。原子可以是字符(char)、字符類(charClass)(例如,[A-Z]表示所有大寫字母,或\d表示十個數(shù)字
)、或遞歸地為帶括號的正則表達(dá)式(regExp)。
應(yīng)當(dāng)注意,具有遞歸正則表達(dá)式原子的正則表達(dá)式可以被轉(zhuǎn)換成沒有遞歸原子的正則表達(dá)式。例如,“(\d{3}|[A-Z]){2}C”定義了與“\d{3}[A-Z]C|\d{6}C|[A-Z]\d{3}C|[A-Z]{2}C”所定義的相同的語法。以下討論的算法處理沒有遞歸正則表達(dá)式原子的正則表達(dá)式;由此,如果在表示中存在遞歸正則表達(dá)式,則適當(dāng)?shù)霓D(zhuǎn)換是必需的。
同樣,為本描述的目的,但是不是為了在以下轉(zhuǎn)換算法中使用,“分支”和“片斷”也將應(yīng)用于處理掩碼形式的表示。例如,假定用于零件號的掩碼具有“&##-###-&&&”的形式,其中“&”表示集合{A-Z}中的任何字符,而“#”表示數(shù)字{0-9}中的任何字符,則“片斷”包括“&##”、“###”和“&&&”,而“原子”包括任何“&”、“#”或“-”。
轉(zhuǎn)換算法
以下偽代碼是用于處理表示(此處為正則表達(dá)式“regexp”)來獲得適用于識別由regexp定義的所期望的字母數(shù)字表達(dá)的語法“gram”的一個示例性實(shí)施例。包含在該偽代碼中的模塊及其在圖2中對應(yīng)的表示不應(yīng)當(dāng)被認(rèn)為是限制的。部分地提供了偽代碼和圖2的框圖以解釋處理概念,其形式不應(yīng)當(dāng)被認(rèn)為是限制的。如本領(lǐng)域的技術(shù)人員所理解的,處理可以使用不同的步驟或順序的改變來執(zhí)行,而不影響最終結(jié)果。另外,由圖2的模塊執(zhí)行的處理可以被分離成其它模塊和/或與所示出的模塊或另外的其它模塊相組合,而不脫離本發(fā)明的各方面。
表1
行號
1.create_regexp_grammar(regexp,gram){ 2. foreach branch in(regexp .branches()){ 3.string symbol= 4. create_branch_grammar(branch,gram); 5.rule_token token(symbol,1,1); 6.array RHS=(token); 7.gram.add_rule(gram.root(),RHS); 8. } 9.} 10. create_pranch_grammar(branch,gram){ 11. array RHS=(); 12. foreach piece in(branch.pieces()){ 13. string symbol= 14. create_piece_grammar(piece,gram); 15. rule_token token(symbol,1,1); 16. RHS.add(token); 17. } 18. string LHS=new_symbol(); 19. gram.add_rule(LHS,RHS); 20. return LHS; 21. } 22. create_piece_grammr(piece,gram){ 23. atom unit=piece.atom(); 24. pair(min,max)=piece.quantity(); 25. set charset=unit.CharSet(); 26. if(charset=={0,...,9}){ 27. string LHS=new_symbol(); 28. for(int i=min;i<=max;i++){ 29. string ref=ruleref(lib,digit_i); 30. array RHS=(rule_token(ref,1,1)); 31. gram.add_rule(LHS,RHS); 32. } 33. return LHS;<!-- SIPO <DP n="8"> --><dp n="d8"/> 34.} 35.else{ 36. string charset_nt= 37.create_charset_grammar(charset,gram); 38. return 39.create_repeats(charset_nt,min,max); 40.} 41. } 42. create_repeats(symbol,min,max){ 43.if(hash[symbol,min,max]?。絥ull) 44. return hash(symbol,min,max); 45.string LHS=new_symbol(); 46.hash[symbol,min,max]=LHS; 47.array RHS=(); 48.if(min==0){ 49. rule_token token(symbol,0,0); 50. RHS.add(token); 51. gram.add_rule(LHS,RHS); 52.} 53.if(max<=0)return LHS 54.rule_token token(symbol,1,1); 55.RHS=(token); 56.if(min<=1) 57. gram.add_rule(LHS,RHS); 58.if(max>=2){ 59. string rest1= 60.create_repeats(symbol,min-1,max-1); 61. rule_token rest1_token(rest1,1,1); 62. RHS.add(rest1_token); 63. gram.add_rule(LHS,RHS); 64. RHS=(rule_token(″double″,1,1)); 65. RHS.add(token); 66. string rest2= 67.create_repeats(symbol,min-2,max-2); 68. rule_token rest2_token(rest2,1,1);<!-- SIPO <DP n="9"> --><dp n="d9"/> 69. RHS.add(rest2_token); 70. gram.add_rule(LHS,RHS); 71.} 72.if(max>=3){ 73. RHS=(rule_token(″triple″,1,1)); 74. RHS.add(token); 75. string rest3= 76.create_repeats(symbol,min-3,max-3); 77. rule_token rest3_token(rest3,1,1); 78. RHS.add(rest2_token); 79. gram.add_rule(LHS,RHS); 80.} 81.return LHS; 82. } 83. create_charset_grammar(charset,gram){ 84.string LHS=new_symbol(); 85.array RHS=(); 86.foreach ch in(charset){ 87. switch(ch){ 88. case′0′RHS=(rule_token(″zero″,1,1)); 89. gram.add_rule(LHS,RHS); 90. RHS=(rule_token(″oh″,1,1)); 91. gram.add_rule(LHS,RHS); 92. break; 93. case′1′...... 94.} 95.return LHS; 96. }
應(yīng)當(dāng)注意,以上提供的偽代碼假定正則表達(dá)式語法分析模塊206具有訪問其組件的方法。例如,方法branches()返回正則表達(dá)式中分支的列表,而方法pieces()返回分支(正則表達(dá)式中的分支)中的片斷的列表。它將規(guī)則的右側(cè)表示為rule_token(規(guī)則標(biāo)記)的數(shù)組。每一rule_token是元組(符號,最小,最大),它指定了在重寫規(guī)則中重復(fù)從最小到最大次數(shù)的符號。
還參考示出用于處理表示的方法300的圖3,處于在理步驟302開始,由語法生成模塊200接收該表示。該表示然后在步驟304由語法分析模塊206進(jìn)行語法分析,以標(biāo)識該表示的子組(即,分支)。通常分支由諸如“|”等分隔字符來確定。
標(biāo)識了分支之后,在該示例性實(shí)施例中,處理每一分支,以生成語法202的規(guī)則,其中,特別是每一分支的每一片斷被處理。該步驟在圖3中306處表示,而分支處理由圖2中的分支規(guī)則生成器模塊208來提供,片斷處理由圖2中的片斷規(guī)則生成器模塊210來提供。以更寬泛的術(shù)語而言,分支規(guī)則生成器模塊208為所標(biāo)識的表示的分支生成備選規(guī)則,而片斷規(guī)則生成器210為首先提到的分支的每一個的較小部分(片斷)生成規(guī)則。通常,正則表達(dá)式語法分析模塊標(biāo)識由定界符“-”、“/”、空格等分隔的片斷。
在圖2中,來自分支規(guī)則生成器模塊208和片斷規(guī)則生成器模塊210的處理結(jié)果被提供給將規(guī)則添加到語法202的規(guī)則添加模塊212。
參考以上轉(zhuǎn)換算法,第一(主)函數(shù)create_regexp_grammar(行1-9)調(diào)用第二函數(shù)create_branch_grammar(行10-21),以對輸入正則表達(dá)式的每一分支創(chuàng)建規(guī)則,并將重寫根符號的規(guī)則添加到分支的“符號”(由該算法生成)。第二函數(shù)create_branch_grammar調(diào)用第三函數(shù)create_piece_grammar(行22-41),以對分支中的每一片斷創(chuàng)建規(guī)則,并將重寫分支符號的規(guī)則添加到片斷序列中(即,將片斷串接在一起)。應(yīng)當(dāng)注意,如果一個表示包括“-”或用作片斷定界符的其它字符,則它也被認(rèn)為是片斷,并且特別地,當(dāng)片斷被串接在一起時,通常被認(rèn)為是可任選片斷。由此,對于包括“AXD-134”的零件號,用戶可以說“A X D短劃線一三四”或“A X D一三四”(即,沒有說出短劃線),但是該語法將認(rèn)為兩種話語是等效的。應(yīng)當(dāng)注意,諸如短劃線、斜杠等字符可任選地包含在語法規(guī)則中。
第三函數(shù)create_piece_grammar為片斷創(chuàng)建規(guī)則。規(guī)則由函數(shù)gram.add.rule(LHS,RHS)添加,其中LHS和RHS表示規(guī)則的左側(cè)和右側(cè)。
片斷處理可任選地利用可能存在于許多形式的字母數(shù)字表達(dá)中的某些相似性。例如,一個或多個數(shù)字的序列的口語變體的識別是都理解的。由此,對于包括“AXD-134”的零件號,用戶可說“A X D一三四”、“A X D一三十四”、“A X D一百三十四”等等。被表示為正則表達(dá)式中的片斷“\d3”的號碼序列或數(shù)字集合“134”然后可由片斷規(guī)則生成模塊210標(biāo)識,并且其中,片斷規(guī)則生成模塊210訪問所儲存的語法規(guī)則庫214,以獲得用于識別該類型的數(shù)字集合的語法規(guī)則。所儲存的庫214也可包括用于識別例如由諸如“\d{1-3}”等范圍定義的可任選長度的數(shù)字集合。所儲存的庫214不限于用于數(shù)字集合的語法規(guī)則;然而,它們可以是最常見的。在該轉(zhuǎn)換算法中,行26-34通過從庫中獲得規(guī)則標(biāo)識和處理了數(shù)字集合。
如果片斷處理未標(biāo)識具有庫中所儲存的語法規(guī)則的片斷,或者所處理的片斷不是具有庫214中所儲存的語法規(guī)則的類型,則然后標(biāo)識片斷的特征以對該片斷提供一組豐富的語法規(guī)則。在該轉(zhuǎn)換算法中,該處理在行36-41處控制。
作為示例,使用片斷正則表達(dá)式“[A-C]{1-3}”,片斷規(guī)則生成模塊210可標(biāo)識片斷中的各個字符,并生成對應(yīng)的規(guī)則。然而,另外,片斷規(guī)則生成模塊可對每一字符標(biāo)識適當(dāng)?shù)膫溥x口頭表達(dá),并在每一備選字符口頭表達(dá)的語法202內(nèi)包括對應(yīng)的規(guī)則。在該轉(zhuǎn)換算法中,行36-37處調(diào)用且在行83-96處指定的函數(shù)create_charset_grammar創(chuàng)建了覆蓋字符集的所有元素的語法規(guī)則,其中每一字符的所有字符表達(dá)在“case”語句中定義,其中作為示例提供了“case′0′”。
如行88-92所指示的,對“0”作為“零”以及“歐”的發(fā)音的語法添加規(guī)則。未示出的另一示例可提供用于字符“A”作為“a”或“阿爾法”的發(fā)音的語法規(guī)則。在圖2中,與備選字符口頭表達(dá)相關(guān)聯(lián)的數(shù)據(jù)在216指示,并可儲存在庫中或在片斷規(guī)則生成模塊210中編碼。
除如上所述地標(biāo)識和生成用于備選字符口頭表達(dá)的規(guī)則以外,片斷規(guī)則生成模塊210也可標(biāo)識備選字符序列口頭表達(dá)。使用以上示例“[A-C]{1-3}”,除諸如“A B”、“A”、“A B C”等表達(dá)之外,用戶可提供“兩個A”表示“AA”,或“三個B”表示“BBB”。在該轉(zhuǎn)換算法中,行42-82處定義且最初在行39處調(diào)用(并且如果有必要的話要遞歸調(diào)用,取決于片斷表達(dá)式)的函數(shù)create_repeats創(chuàng)建了用于0次出現(xiàn)(行48-52);一次出現(xiàn)的(行54-57);一次以上出現(xiàn)(行58-80)的前綴語法規(guī)則-注意在行64-70中它是如何對諸如“兩個零”等表達(dá)建模的;以及兩次以上出現(xiàn)(行72-80)。當(dāng)然,也可包括備選字符序列口頭表達(dá)的其它變體,如“四個”或?qū)ψ址蛄械娜魏纹渌陬^表達(dá)。在圖2中,與備選字符序列口頭表達(dá)相關(guān)聯(lián)的數(shù)據(jù)在218處指示,并可被儲存在庫中或在片斷規(guī)則生成模塊210中編碼。
在某些字母數(shù)字表達(dá)中,存在相同的某些片斷。如果這些片斷對應(yīng)于具有如在所儲存的語法庫214中找到的所儲存的語法規(guī)則集,如數(shù)字集的片斷,則它們可被添加到語法202。然而,即使該片斷不對應(yīng)于庫214中的語法集,這些片斷在表示中也可以是相同的。例如,在表示“[A-Z]{1-2}-\d{2}-[A-Z]{1-2}”中,片斷“[A-Z]{1-2}”出現(xiàn)兩次。因此,在另一實(shí)施例中,片斷規(guī)則生成器模塊210適用于標(biāo)識相同的片斷,并使用從對該片斷的先前處理中生成的語法規(guī)則,使得不必對該片斷再一次重復(fù)規(guī)則的生成。在該轉(zhuǎn)換算法中,使用散列表(行43-46)作為當(dāng)處理表示時跟蹤每一片斷部分的機(jī)制,盡管也可使用其它機(jī)制。如果在對表示的進(jìn)一步處理期間,遇到相同的片斷,則可復(fù)制先前生成的規(guī)則。在圖2中,這一方面由儲存用于已處理片斷部分的規(guī)則的庫200來表示。
如上所述,語法202的識別規(guī)則的生成包括用于備選口頭表達(dá)的語法規(guī)則的生成,例如“零”和“歐”表示“0”,“兩個A”表示“AA”以及“二十三”表示“23”。在另一實(shí)施例中,也提供歸一化,使得來自語音識別器的輸出是已知的,因此接收來自語音識別器的輸出的應(yīng)用程序不必辨別“AA”和“兩個A”是等效的。
在第一實(shí)施例中,可在語法202的規(guī)則的編碼或編寫過程中提供歸一化。具體地,由于片斷規(guī)則生成模塊210較佳地是已編碼的,以在處理片斷來生成規(guī)則時標(biāo)識備選字符口頭表達(dá)和備選字符序列口頭表達(dá),因此它可在適當(dāng)時提供語法202中的歸一化信息。作為示例,如果語法202是使用XML語義解釋標(biāo)記以W3C語音識別語法規(guī)范(SRGS)格式來編寫的,則該語法中的標(biāo)簽提供了歸一化。作為示例,以W3C SRGS格式編寫的用于“AA”的識別的規(guī)則可采用以下形式
<rule id=″S2″>
<one-of>
<item>A A
<tag>$=AA</tag>
</item>
<item>double A
<tag>$=AA</tag>
</item>
</one-of>
</rule>
其中,“<tag>$=AA</tag>”指示歸一化的輸出。盡管未在該轉(zhuǎn)換算法中具體示出,該算法可在生成語義解釋標(biāo)簽時將其附加到規(guī)則標(biāo)記,使得基于語法獲得的識別輸出被適當(dāng)?shù)貧w一化。盡管上文對字符序列示出了歸一化,然而在可以用類似的方式提供對單個字符以及對數(shù)字序列的歸一化。
在圖2的說明性實(shí)施例中,開發(fā)了用于數(shù)字集或序列的語法規(guī)則并將其儲存在庫214內(nèi)。因此,對于數(shù)字集或其它片斷的歸一化也可與語法規(guī)則一起儲存。
在一個替換實(shí)施例中,歸一化規(guī)則可與語法202分開儲存。例如,歸一化可通過在與語法202相關(guān)聯(lián)的歸一化映射數(shù)據(jù)庫226中儲存歸一化映射(例如,“AA”“AA”;“兩個A”“AA”)來提供。適當(dāng)?shù)臍w一化映射由片斷規(guī)則生成器模塊210在片斷處理期間提供,或者適當(dāng)?shù)挠成淇梢詮闹T如用于數(shù)字集等用于對應(yīng)的所儲存語法規(guī)則的庫214中獲得。在這一形式的歸一化中,語法指示了用戶的實(shí)際話語,如“兩個A”;然而,在語音識別器返回這一結(jié)果之前,它檢查對該結(jié)果是否存在歸一化形式,如果存在,則用歸一化的結(jié)果來代替該結(jié)果。盡管語音識別器的實(shí)現(xiàn)或操作可在這些技術(shù)的每一個之間變化,然而開發(fā)者只需提供字母數(shù)字表達(dá)的表示,然后系統(tǒng)考慮可以被適當(dāng)?shù)貧w一化成由開發(fā)者提供的表示指定的格式的備選口頭表達(dá)。
在一個實(shí)施例中,語法202是用前綴優(yōu)化來創(chuàng)建的。這提供了通過將識別期間的備選假設(shè)最小化來與語音識別器一起有效地工作的語法。如果沒有前綴優(yōu)化,語法可包括單獨(dú)的規(guī)則,它們也圖示地在圖4A中示出
S→aB
S→aC
然而,如上所述,如果語音識別器識別了“a”,它然后必需考慮兩個假設(shè)“aB”和“aC”。
相反,在前綴優(yōu)化的語法中,規(guī)則可以是以下的形式且在圖4B中示出
S→aD
D→B
D→C
由此,在識別了“a”之后,語音識別器只需考慮一個假設(shè)“aD”。
在以上轉(zhuǎn)換算法中,形成語法的規(guī)則作為前綴樹(例如,以由圖4B的圖解表示來表示的形式)來儲存,其頂層節(jié)點(diǎn)包括左側(cè)“LHS”,而其它節(jié)點(diǎn)作為形成右側(cè)“RHS”的數(shù)組來儲存。以此方式,當(dāng)諸如圖4A的那些規(guī)則被添加到語法中,已經(jīng)用圖4B的前綴樹實(shí)現(xiàn)了前綴優(yōu)化。在該轉(zhuǎn)換算法中,函數(shù)gram.add.rule()將每一規(guī)則添加或追加到語法中,這在圖2中由規(guī)則添加模塊212表示。如果如在轉(zhuǎn)換算法中,規(guī)則最初作為前綴樹來儲存,則到諸如使用XML的W3C SRGS格式等任何形式的適當(dāng)轉(zhuǎn)換也可由規(guī)則添加模塊212來實(shí)現(xiàn)。
總之,本發(fā)明的各方面允許從諸如正則表達(dá)式或掩碼等適當(dāng)?shù)谋硎局袑ψ帜笖?shù)字概念自動構(gòu)造高質(zhì)量的語音識別語法。自動語法創(chuàng)建將開發(fā)者從創(chuàng)建有效工作且準(zhǔn)確地用于應(yīng)用專用字母數(shù)字概念的語法的任務(wù)中釋放出來。其它特征允許所創(chuàng)建的語法可通過使用前綴結(jié)構(gòu)來優(yōu)化,和/或例如通過分配適當(dāng)?shù)恼Z義解釋標(biāo)簽來提供歸一化。以此方式,此處所描述的方法和系統(tǒng)對于具有極少語音識別語法創(chuàng)作經(jīng)驗(yàn)的開發(fā)者很大程度上加速了語法開發(fā)。
盡管參考特定實(shí)施例描述了本發(fā)明,然而本領(lǐng)域的技術(shù)人員將認(rèn)識到,可以在不脫離本發(fā)明的精神和范圍的情況下在形式和細(xì)節(jié)上做出改變。
權(quán)利要求
1.一種生成適于供語音識別器使用的語法的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括
接收字母數(shù)字表達(dá)的表示;以及
基于所述表示生成語法。
2.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,生成所述語法包括將所述表示語法分析成部分。
3.如權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,生成所述語法包括對所述部分的每一個生成語法規(guī)則。
4.如權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,對所述表示語法分析包括將所述表示語法分析成分支。
5.如權(quán)利要求4所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,生成所述語法包括對所述分支的每一個生成語法規(guī)則。
6.如權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,生成所述語法包括標(biāo)識所述表示的首先提到的部分的每一個的較小部分,并且生成所述語法包括對所述較小部分的每一個生成規(guī)則。
7.如權(quán)利要求6所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,對所述較小部分的每一個生成語法規(guī)則包括標(biāo)識具有儲存在庫中的規(guī)則的較小部分,并基于所述儲存在庫中的規(guī)則生成所述語法的規(guī)則。
8.如權(quán)利要求6所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,對所述較小部分的每一個生成語法規(guī)則包括對備選字符口頭表達(dá)生成規(guī)則。
9.如權(quán)利要求8所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,生成所述語法包括使用一機(jī)制來對備選字符口頭表達(dá)的識別提供來自語音識別器的歸一化輸出。
10.如權(quán)利要求9所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,生成所述語法包括提供所述語法中的歸一化信息,以對備選字符口頭表達(dá)提供來自語音識別器的歸一化輸出。
11.如權(quán)利要求10所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,生成所述語法包括生成與所述語法相關(guān)聯(lián)的數(shù)據(jù)庫,所述數(shù)據(jù)庫具有歸一化信息。
12.如權(quán)利要求6所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,對所述較小部分的每一個生成語法規(guī)則包括對備選字符序列口頭表達(dá)生成規(guī)則。
13.如權(quán)利要求9所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,生成所述語法包括使用一機(jī)制來對備選字符口頭表達(dá)的識別提供來自語音識別器的歸一化輸出。
14.如權(quán)利要求13所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,生成所述語法包括提供所述語法中的歸一化信息,以對備選字符口頭表達(dá)的識別提供來自語音識別器的歸一化輸出。
15.如權(quán)利要求14所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,生成所述語法包括生成與所述語法相關(guān)聯(lián)的數(shù)據(jù)庫,所述數(shù)據(jù)庫具有歸一化信息。
16.如權(quán)利要求6所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,對所述較小部分的每一個生成語法規(guī)則包括標(biāo)識與所述表示中該語法規(guī)則先前所基于的第二較小部分相同的第一較小部分,并通過使用基于所述第二較小部分的規(guī)則生成基于所述第一較小部分的規(guī)則。
17.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,生成所述語法包括生成前綴優(yōu)化的語法規(guī)則。
18.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述表示具有正則表達(dá)式或掩碼的形式。
19.一種具有指令的計(jì)算機(jī)可讀介質(zhì),所述指令在計(jì)算機(jī)上操作以生成適于供語音識別器使用的語法,所述指令包括
接收字母數(shù)字表達(dá)的表示;以及
基于所述表示生成語法。
20.如權(quán)利要求19所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述表示包括正則表達(dá)式或掩碼。
21.如權(quán)利要求20所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,生成語法包括標(biāo)識所述表示的分支和片斷。
22.如權(quán)利要求21所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,生成所述語法包括對每一所述分支和每一所述片斷生成規(guī)則。
23.如權(quán)利要求22所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,對所述每一片斷生成規(guī)則包括以下的至少一個對備選字符口頭表達(dá)生成規(guī)則;對備選字符序列口頭表達(dá)生成規(guī)則;以及標(biāo)識具有儲存在庫中的規(guī)則的片斷并基于所述儲存在庫中的規(guī)則生成語法的規(guī)則。
24.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,生成所述語法包括使用一機(jī)制來對備選字符口頭表達(dá)和備選字符序列口頭表達(dá)的至少一個的識別提供來自語音識別器的歸一化輸出。
25.如權(quán)利要求24所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,生成所述語法包括提供所述語法中的歸一化信息,以對備選字符口頭表達(dá)和備選字符序列口頭表達(dá)的至少一個的識別提供來自語音識別器的歸一化輸出。
26.如權(quán)利要求25所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,生成所述語法包括生成與所述語法相關(guān)聯(lián)的數(shù)據(jù)庫,所述數(shù)據(jù)庫具有用于備選字符口頭表達(dá)和備選字符序列口頭表達(dá)的至少一個的歸一化信息。
27.一種生成適于供語音識別器使用的語法的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括
一語法分析模塊,它適用于接收字母數(shù)字表達(dá)的表示并標(biāo)識所述表示的分支;
一分支規(guī)則生成器模塊,它適用于基于所述分支生成所述語法的規(guī)則;以及
一片斷規(guī)則生成器模塊,它適用于標(biāo)識所述分支的每一個的片斷,并基于所述片斷的每一個生成所述語法的規(guī)則。
28.如權(quán)利要求27所述的系統(tǒng),其特征在于,還包括用于儲存基于片斷的語法規(guī)則的庫,并且其中,所述片斷規(guī)則生成器適用于標(biāo)識對應(yīng)于具有儲存在所述庫中的規(guī)則的片斷的所述表示的片斷,并且其中,所述片斷規(guī)則生成器適用于基于所述庫中的規(guī)則生成所述語法的規(guī)則。
29.如權(quán)利要求28所述的系統(tǒng),其特征在于,所述片斷規(guī)則生成器適用于將所處理的所述表示的第一片斷的規(guī)則儲存在所述庫中,并且其中,所述片斷規(guī)則生成器適用于標(biāo)識所述表示中與所述表示的第一片斷相同的第二片斷,并基于所述庫中用于所述表示的第一片斷的規(guī)則對所述表示的第二片斷生成規(guī)則。
30.如權(quán)利要求26所述的系統(tǒng),其特征在于,所述片斷規(guī)則生成器適用于對備選字符口頭表達(dá)和備選字符序列口頭表達(dá)的至少一個生成規(guī)則。
31.如權(quán)利要求30所述的系統(tǒng),其特征在于,所述片斷規(guī)則生成器適用于提供所述語法中用于備選字符口頭表達(dá)和備選字符序列口頭表達(dá)的至少一個的歸一化信息。
全文摘要
一種生成適于供語音識別器使用的語法的方法和系統(tǒng)包括接收字母數(shù)字表達(dá)的表示。例如,該表示可采用正則表達(dá)式或掩碼的形式。基于該表示生成語法。
文檔編號G10L15/06GK1750119SQ200510091799
公開日2006年3月22日 申請日期2005年8月15日 優(yōu)先權(quán)日2004年9月15日
發(fā)明者A·阿瑟洛, L·A·科林斯, M·L·塞西斯, 王野翊, 朱允誠 申請人:微軟公司