專利名稱:用于web啟用的識別的服務(wù)器的制作方法
背景技術(shù):
本發(fā)明涉及對在諸如Internet的廣域網(wǎng)上的信息的訪問。具體地說,本發(fā)明涉及WEB啟用的識別,該識別將允許使用各種方法輸入在客戶端上的信息和控制。
在人們的日常生活中越來越頻繁地使用諸如個(gè)人信息管理器(PIM)、設(shè)備以及便攜式電話的小型計(jì)算設(shè)備。伴隨著現(xiàn)在可以得到用于運(yùn)行這些設(shè)備的微處理器的處理能力的增加,這些設(shè)備的功能也正在增加,并且在某些情況下正在集成在一起。例如,當(dāng)前的很多便攜式電話能夠被用于訪問和瀏覽Internet以及能夠被用于存儲諸如地址、電話號等的個(gè)人信息。
鑒于這些計(jì)算設(shè)備一直被用于瀏覽Internet,或者被用于其他服務(wù)器/客戶機(jī)結(jié)構(gòu),因此,必須輸入信息到所述計(jì)算設(shè)備中。遺憾的是為了讓這些設(shè)備容易攜帶而保持他們盡可能地小,所以,由于在所述計(jì)算設(shè)備的殼體上可以得到的表面區(qū)域有限,因此具有所有字母表字符作為孤立按鈕的傳統(tǒng)鍵盤通常是不可能的。
最近,諸如借助于使用VoiceXML(聲音可擴(kuò)展的標(biāo)記語言)的聲音入口已經(jīng)發(fā)展到允許僅僅使用電話對所述Internet的內(nèi)容進(jìn)行訪問。在這種結(jié)構(gòu)中,文檔服務(wù)器(例如,網(wǎng)絡(luò)服務(wù)器)經(jīng)過VoiceXML翻譯機(jī)對來自一個(gè)客戶機(jī)的請求進(jìn)行處理。作為應(yīng)答,所述網(wǎng)絡(luò)服務(wù)器能夠產(chǎn)生由所述VoiceXML翻譯機(jī)處理、并且能夠可聽地發(fā)送給所述用戶的VoiceXML文檔。使用經(jīng)過聲音識別的聲音命令,所述用戶能夠?qū)Ш剿鯳eb。
VoiceXML是一種具有流控標(biāo)記的標(biāo)記語言;但是,所述流控不能遵循包括事件和單獨(dú)腳本在內(nèi)的HTML(超級文本標(biāo)記語言)流控模型。相反,VoiceXML通常包括一種特別適用于僅僅基于電話的語音交互、和從所述用戶獲得的信息在所述系統(tǒng)或應(yīng)用程序控制之下的場合的格式解釋算法。將voiceXML直接插入到其中也提供了圖形用戶接口的客戶機(jī)-服務(wù)器關(guān)系中可以得到的應(yīng)用程序中,將需要開發(fā)器精通兩種格式的Web創(chuàng)作,一種用于VoiceXML,另一種使用HTML(或與其類似的),每一種都遵循不同的流控模型。
由此,需要改善用于在諸如Internet的服務(wù)器/客戶機(jī)結(jié)構(gòu)中提供語音識別的結(jié)構(gòu)或者部分結(jié)構(gòu)和方法。用于語音識別的所述創(chuàng)作工具能夠很容易地適用于諸如PIM以及電話等的小型計(jì)算設(shè)備。特別需要致力于解決一個(gè)、多個(gè)或全部上述缺點(diǎn)的Web創(chuàng)作的結(jié)構(gòu)或方法。
發(fā)明概述一種用于處理數(shù)據(jù)的服務(wù)器/客戶機(jī)系統(tǒng)包括一個(gè)具有一個(gè)帶有可遠(yuǎn)程訪問的信息的網(wǎng)絡(luò)服務(wù)器的網(wǎng)絡(luò)。一個(gè)客戶機(jī)設(shè)備包括一個(gè)諸如話筒的輸入設(shè)備以及一個(gè)諸如揚(yáng)聲器或顯示器的顯示部件。該客戶機(jī)設(shè)備被配置為從該網(wǎng)絡(luò)服務(wù)器獲取信息并記錄與包含在該信息中的字段相關(guān)的輸入數(shù)據(jù)。該客戶機(jī)設(shè)備適于將該輸入數(shù)據(jù)和一個(gè)用于識別的語法的指示發(fā)送至一個(gè)遠(yuǎn)程地點(diǎn)。
作為本發(fā)明的第一個(gè)方面,一個(gè)識別服務(wù)器接收該輸入數(shù)據(jù)以及該語法指示。該識別服務(wù)器將指示輸入了什么的數(shù)據(jù)返回給該客戶機(jī)和網(wǎng)絡(luò)服務(wù)器中的至少一個(gè)。
作為本發(fā)明的第二個(gè)方面,一種用于在一個(gè)客戶機(jī)/服務(wù)器系統(tǒng)中的一個(gè)客戶機(jī)設(shè)備上執(zhí)行的標(biāo)記語言,包括用于在無顯示的基于聲音輸入的客戶機(jī)設(shè)備和基于多重模式的客戶機(jī)上、統(tǒng)一用于與每個(gè)客戶機(jī)設(shè)備交互的一個(gè)網(wǎng)絡(luò)服務(wù)器的識別相關(guān)事件、GUI事件和電話事件中的至少一個(gè)的指令。
附圖簡述
圖1的平面視圖示出了一個(gè)計(jì)算設(shè)備操作環(huán)境的第一實(shí)施例。
圖2的框圖示出了圖1的計(jì)算設(shè)備。
圖3是一個(gè)電話的平面視圖。
圖4的框圖示出了一個(gè)通用計(jì)算機(jī)。
圖5的框圖示出了一個(gè)用于客戶機(jī)/服務(wù)器系統(tǒng)的結(jié)構(gòu)。
圖6示出了一個(gè)用于獲得信用卡信息的顯示。
圖7示出了可在客戶機(jī)上執(zhí)行的標(biāo)記語言的一個(gè)頁。
圖8示出了可在具有顯示和語音識別能力的一個(gè)客戶機(jī)上執(zhí)行的標(biāo)記語言的一個(gè)范例頁。
圖9A和9B示出了可以在僅僅具有可聽播放和系統(tǒng)啟動(dòng)的客戶機(jī)上執(zhí)行的標(biāo)記語言的范例頁。
圖10A和10B示出了可在僅僅具有可聽播放和混合啟動(dòng)的客戶機(jī)上執(zhí)行的標(biāo)記語言的范例頁。
圖11示出了可由服務(wù)器側(cè)插件模塊執(zhí)行的腳本。
圖12示出了識別服務(wù)器的第一運(yùn)行模式。
圖13示出了所述識別服務(wù)器的第二運(yùn)行模式。
圖14示出了所述識別服務(wù)器的第三運(yùn)行模式。
圖15A和15B示出了可在沒有腳本的客戶機(jī)上執(zhí)行的說明標(biāo)記語言的范例頁。
所述實(shí)施例的詳細(xì)描述在描述一個(gè)基于Web的識別結(jié)構(gòu)和用于實(shí)現(xiàn)同一個(gè)結(jié)構(gòu)的方法之前,描述能夠在所述結(jié)構(gòu)中起作用的通用計(jì)算設(shè)備可能是有用的。參看圖1,標(biāo)號30示出了一個(gè)數(shù)據(jù)管理設(shè)備(PIM、PDA等)的范例格式。但是,可以預(yù)期本發(fā)明也能夠使用下述的其他計(jì)算設(shè)備、特別是那些具有有限表面面積用于輸入按鈕等的計(jì)算設(shè)備實(shí)現(xiàn)。例如,電話和/或數(shù)據(jù)管理設(shè)備也將從本發(fā)明中獲得益處。與現(xiàn)存的便攜式個(gè)人信息管理設(shè)備和其它便攜式電子設(shè)備比較,這種設(shè)備將具有增強(qiáng)的實(shí)用性,這種設(shè)備的功能和緊湊尺寸將很可能鼓勵(lì)所述用戶隨時(shí)攜帶所述設(shè)備。因此,這里所描述的所述結(jié)構(gòu)范圍并不受這里所描述的范例數(shù)據(jù)管理或PIM設(shè)備、電話或計(jì)算機(jī)的限制。
圖1中示出了一種數(shù)據(jù)管理移動(dòng)設(shè)備30的一個(gè)示范形式。移動(dòng)設(shè)備30包括殼體32并具有一個(gè)用戶界面,該用戶界面包括一個(gè)結(jié)合指示筆33使用的觸敏顯示屏的顯示器34。所述指示筆33被用于在指定坐標(biāo)處按壓或接觸顯示器34以選擇一個(gè)字段、選擇性地移動(dòng)光標(biāo)的起始位置,或反之提供諸如通過手勢或手寫的命令信息。作為替換或者添加,可以在設(shè)備30上包括一個(gè)或多個(gè)用于導(dǎo)航的按鈕35。另外,也可以提供諸如旋轉(zhuǎn)輪和滾柱等的其他輸入機(jī)制。但是,應(yīng)當(dāng)說明,這些輸入機(jī)制的形式并不對本發(fā)明構(gòu)成限制。例如,其他形式的輸入能夠包括諸如通過計(jì)算機(jī)視覺的虛擬輸入。
現(xiàn)在參看圖2,其框圖示出了一個(gè)包括移動(dòng)設(shè)備30的功能組件。中央處理單元(CPU)50執(zhí)行軟件控制功能。CPU50被連接到顯示器34上,從而使依據(jù)控制軟件產(chǎn)生的文本和圖形圖標(biāo)顯示在顯示器34上。揚(yáng)聲器43能夠被連接到通常具有數(shù)/模轉(zhuǎn)換器59的CPU50上以提供可聽輸出。由用戶下載或輸入到移動(dòng)設(shè)備30中的數(shù)據(jù)被存儲在一個(gè)被雙向連接到CPU50上的非易失性讀/寫隨機(jī)存取存儲器54中。隨機(jī)存取存儲器(RAM)54對由CPU50執(zhí)行的指令提供易失存儲,并存儲諸如寄存器值的暫存數(shù)據(jù)。用于配置選項(xiàng)和其他變量的缺省值存儲在只讀存儲器(ROM)58中。ROM58也能夠用于為設(shè)備存儲控制移動(dòng)設(shè)備30基本功能性和其他操作系統(tǒng)的核心程序功能的操作系統(tǒng)軟件(例如將軟件組件下載到RAM54中)。
RAM54還可以用做一個(gè)存儲器,用于以和在PC機(jī)上用于存儲應(yīng)用程序的硬件驅(qū)動(dòng)的功能類似的方式存儲代碼。應(yīng)當(dāng)注意,雖然非易失性存儲器被用于存儲所述代碼,所述代碼也可以存儲在不用于執(zhí)行所述代碼的易失性存儲器中。
利用移動(dòng)設(shè)備經(jīng)過連接到CPU50上的無線收發(fā)信機(jī)52可以發(fā)送/接收無線信號。也可以提供一個(gè)可選的通信接口60,用于如果需要的話從一個(gè)計(jì)算機(jī)(例如臺式計(jì)算機(jī))或從一個(gè)有線網(wǎng)絡(luò)直接下載數(shù)據(jù)。因此,接口60可以包括各種形式的通信設(shè)備,例如,紅外線鏈接、調(diào)制解調(diào)器、網(wǎng)卡等等。
移動(dòng)設(shè)備30包括話筒29、模/數(shù)(A/D)轉(zhuǎn)換器37和存儲在存儲器54中的可選識別程序(語音、DTMF、手寫、手勢或計(jì)算機(jī)視覺)。借助于舉例,響應(yīng)來自設(shè)備30的用戶的可聽信息、指令或命令,話筒29提供被A/D轉(zhuǎn)換器37數(shù)字化的多個(gè)語音信號。該語音識別程序可以在數(shù)字化的信號上執(zhí)行正規(guī)化和/或特征提取功能,以便獲得中間語音識別結(jié)果。使用無線收發(fā)信機(jī)52或通信接口60,語音數(shù)據(jù)被發(fā)送給下面將要討論并示于圖5結(jié)構(gòu)中的一個(gè)遠(yuǎn)程識別服務(wù)器204。然后,識別結(jié)果被返回到移動(dòng)設(shè)備30用于在其上面實(shí)現(xiàn)(例如,可視或者可聽地),并最終發(fā)送給網(wǎng)絡(luò)服務(wù)器202(圖5),其中,網(wǎng)絡(luò)服務(wù)器202和移動(dòng)設(shè)備30以客戶機(jī)/服務(wù)器的關(guān)系運(yùn)行。類似的處理可以用于其他形式的輸入。例如,可以在設(shè)備30上進(jìn)行或不進(jìn)行預(yù)處理的情況下數(shù)字化手寫輸入。與語音數(shù)據(jù)類似,這種形式的輸入能夠被發(fā)送給識別服務(wù)器204用于識別,其中所述識別結(jié)果被返回到設(shè)備30和/或網(wǎng)絡(luò)服務(wù)器202中的至少一個(gè)。同樣,DTMF數(shù)據(jù)、手勢數(shù)據(jù)和可視數(shù)據(jù)也能夠被進(jìn)行類似的處理。取決于輸入的形式,設(shè)備30(和下面將要討論的其他形式的客戶機(jī))應(yīng)當(dāng)包括諸如用于可視輸入的攝象機(jī)的必要硬件。
圖3是一個(gè)平面圖,它示出了便攜式電話80的一個(gè)示例實(shí)施例。電話80包括顯示器82和鍵盤84。盡管可能需要執(zhí)行其他功能的附加電路,但是通常圖2的框圖可應(yīng)用到圖3所示的電話中。例如,圖2所示的實(shí)施例將被要求作為電話運(yùn)行所需要的一個(gè)收發(fā)信機(jī)。但是,這種電路與本發(fā)明不相關(guān)。
應(yīng)當(dāng)理解,除了上述便攜或移動(dòng)計(jì)算設(shè)備以外,本發(fā)明能夠和諸如通用臺式計(jì)算機(jī)的多種其他計(jì)算設(shè)備一起使用。例如,當(dāng)諸如全字母-數(shù)字鍵盤的其它傳統(tǒng)輸入設(shè)備操作太困難時(shí),本發(fā)明允許具有有限物理能力的用戶將文本輸入或鍵入到計(jì)算機(jī)或其他計(jì)算設(shè)備中。
本發(fā)明還可以和多種其他通用或?qū)S糜?jì)算系統(tǒng)、環(huán)境或結(jié)構(gòu)共同操作。適于和本發(fā)明一起使用但不作為限制的公知計(jì)算系統(tǒng)、環(huán)境和/或結(jié)構(gòu)的例子包括常用的電話(沒有任何屏幕)、個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程的消費(fèi)電子、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、巨型計(jì)算機(jī)和包括任意上述系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等。
下面簡要描述圖4所示的通用計(jì)算機(jī)120。但是,計(jì)算機(jī)120僅僅是適當(dāng)計(jì)算環(huán)境的一個(gè)例子,并不對本發(fā)明的使用或者功能范圍作出限定。計(jì)算機(jī)120將不會(huì)被解釋為相對于這里所述組件的任何一個(gè)或組合具有相關(guān)性或要求。
本發(fā)明可以在諸如正由一臺計(jì)算機(jī)執(zhí)行的程序模塊的計(jì)算機(jī)可執(zhí)行指令的一般上下文中進(jìn)行描述。通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。本發(fā)明還可以用于分布式計(jì)算環(huán)境中,在這種環(huán)境中,使用經(jīng)過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行任務(wù)。在一個(gè)分布式計(jì)算環(huán)境中,程序模塊可以被定位于包含存儲器存儲設(shè)備的本地和遠(yuǎn)程計(jì)算機(jī)存儲介質(zhì)中。下而結(jié)合附圖描述由所述程序和模塊執(zhí)行的任務(wù)。本領(lǐng)域的普通技術(shù)人員可以把這些描述和附圖實(shí)現(xiàn)為處理器可執(zhí)行指令,所述處理器可執(zhí)行指令能被寫入到以任何形式的計(jì)算機(jī)可讀介質(zhì)上。
參看圖4,計(jì)算機(jī)120的組件可以包含但不局限于處理單元140、系統(tǒng)存儲器150、將包括所述系統(tǒng)存儲器的各種系統(tǒng)組件連接到處理單元140的系統(tǒng)總線141。系統(tǒng)總線141可以是包括存儲器總線或存儲器控制器、外圍總線和使用各種總線結(jié)構(gòu)中任何一種的局部總線中的任何一種。借助于舉例但不作為限制,這樣的結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線、通用串行總線(USB)、微信道結(jié)構(gòu)(MCA)總線、增強(qiáng)的ISA(EISA)總線、視頻電子標(biāo)準(zhǔn)關(guān)聯(lián)(VESA)局部總線和也被公稱為Mezzanine總線的外設(shè)部件互聯(lián)(PCI)總線。計(jì)算機(jī)120通常包括各種計(jì)算機(jī)可讀的介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能夠被計(jì)算機(jī)120訪問并包括易失和非易失介質(zhì)、可拆卸和不可拆卸介質(zhì)的任何介質(zhì)。借助于舉例但不作為限制,所述計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲介質(zhì)包括易失和非易失、可拆卸和不可拆卸的介質(zhì),其以任一方法或技術(shù)實(shí)現(xiàn)用于存儲諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)的信息。計(jì)算機(jī)存儲介質(zhì)包含但不局限于RAM、ROM、EEPROM、閃速存儲器或其他存儲器技術(shù)、CD-ROM、數(shù)字通用盤(DVD)或其他光盤存儲器、卡式磁帶、磁帶、磁盤存儲器或其他磁存儲設(shè)備、或其他任何能夠用于存儲所需要的信息和能夠被計(jì)算機(jī)120訪問的介質(zhì)。
通信介質(zhì)通常包含以諸如載波或其他傳輸機(jī)制的調(diào)制數(shù)據(jù)信號形式的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)并包括任一信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”的意思是指具有一個(gè)或多個(gè)特征集或者以這樣的方式進(jìn)行改變、對信號中的信息進(jìn)行編碼的信號。借助于不作為限制的舉例,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接有線連接的有線介質(zhì)和諸如聲學(xué)、FR、紅外和其他無線介質(zhì)的無線介質(zhì)。上述任意的組合也可以包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲器150包括以諸如只讀存儲器(ROM)151和隨機(jī)存取存儲器(RAM)152的易失和/或非易失存儲器形式出現(xiàn)的計(jì)算機(jī)存儲介質(zhì)。包含諸如在啟動(dòng)期間,幫助在計(jì)算機(jī)120內(nèi)的元件之間傳輸信息的基本例程的基本輸入/輸出系統(tǒng)153(BIOS)通常被存儲在ROM151中。RAM152通常包含可以被處理單元140直接訪問和/或當(dāng)前正在操作的數(shù)據(jù)和/或程序模塊。借助于不作為限制的舉例,圖4示出了操作系統(tǒng)54、應(yīng)用程序155、其他的程序模塊156和程序數(shù)據(jù)157。
計(jì)算機(jī)120還可以包括其它可拆卸/不可拆卸、易失/非易失計(jì)算機(jī)存儲介質(zhì)。僅僅作為例子,圖4示出了一個(gè)從或向不可拆卸非易失磁存儲介質(zhì)讀出或?qū)懭氲挠脖P驅(qū)動(dòng)161、從或向可拆卸非易失磁盤172讀出或?qū)懭氲拇疟P驅(qū)動(dòng)171、以及從或向諸如CD ROM或其他光介質(zhì)的可拆卸、非易失光盤176讀出或?qū)懭氲墓獗P驅(qū)動(dòng)175。能夠在范例操作環(huán)境中使用的其它可拆卸/不可拆卸、易失/非易失計(jì)算機(jī)存儲介質(zhì)包含但不局限于,卡式磁帶、閃速存儲器卡、數(shù)字通用盤、數(shù)字視頻磁帶、固態(tài)RAM和固態(tài)RAM等。硬盤驅(qū)動(dòng)161通常經(jīng)過一個(gè)諸如接口160的不可拆卸的存儲器接口連接到系統(tǒng)總線141上,磁盤驅(qū)動(dòng)器171和光盤驅(qū)動(dòng)器175通常經(jīng)過一個(gè)諸如接口170的可拆卸存儲器接口連接到系統(tǒng)總線141上。
上述圖4所示的設(shè)備及其相關(guān)的計(jì)算機(jī)存儲介質(zhì)提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和用于計(jì)算機(jī)120的其他數(shù)據(jù)的存儲。在圖4中,例如,硬盤驅(qū)動(dòng)161被表示為存儲操作系統(tǒng)164、應(yīng)用程序165、其他的程序模塊166和程序數(shù)據(jù)167。注意,這些組件既可以相同于也可以不同于操作系統(tǒng)154、應(yīng)用程序155、其他的程序模塊156和程序數(shù)據(jù)157。操作系統(tǒng)164、應(yīng)用程序165、其他的程序模塊166和程序數(shù)據(jù)167在這里被給予不同的號碼以至少表示它們是不同的拷貝。
用戶可以經(jīng)過諸如鍵盤182、一活筒183的輸入設(shè)備和諸如鼠標(biāo)、跟蹤球或觸摸板的定點(diǎn)設(shè)備181將命令和信息輸入到計(jì)算機(jī)120中。其它的輸入設(shè)備(未示出)可以包括游戲桿、游戲操縱桿、衛(wèi)星盤、掃描器等。這些和其他的輸入設(shè)備經(jīng)常經(jīng)過連接到所述系統(tǒng)總線上的用戶輸入接口180連接到處理單元140上,但是也可以由諸如并行端口、游戲端口或通用串形總線(USB)的其他接口和總線結(jié)構(gòu)連接。監(jiān)視器184或其他類型的顯示設(shè)備也經(jīng)過諸如視頻接口185的一個(gè)接口連接到系統(tǒng)總線141上。除了所述監(jiān)視器以外,所述計(jì)算機(jī)還可以包括諸如揚(yáng)聲器187和打印機(jī)186的外圍輸出設(shè)備,它們可以經(jīng)過輸出外設(shè)接口188進(jìn)行連接。
計(jì)算機(jī)120可以使用到一個(gè)或多個(gè)諸如遠(yuǎn)程計(jì)算機(jī)194的遠(yuǎn)程計(jì)算機(jī)的邏輯連接在一個(gè)網(wǎng)絡(luò)環(huán)境中進(jìn)行操作。遠(yuǎn)程計(jì)算機(jī)194可以是個(gè)人計(jì)算機(jī)、手持設(shè)備、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他公共網(wǎng)絡(luò)節(jié)點(diǎn),通常包括很多或全部上述與計(jì)算機(jī)120相關(guān)的元素。在圖4中描述的邏輯連接包括局域網(wǎng)(LAN)191和廣域網(wǎng)(WAN)193,但是也可以包括其它的網(wǎng)絡(luò)。這種聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)部網(wǎng)絡(luò)和Internet中是普遍的。
當(dāng)在LAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)120經(jīng)過網(wǎng)絡(luò)接口或適配器190連接到LAN191上。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)120通常包括調(diào)制解調(diào)器192或其他用于在諸如Internet的WAN 193上建立通信的裝置??梢允莾?nèi)部或外部的調(diào)制解調(diào)器192可以經(jīng)過用戶輸入接口180或其他的適當(dāng)機(jī)制連接到系統(tǒng)總線141上。在一個(gè)網(wǎng)絡(luò)環(huán)境中,相對于計(jì)算機(jī)120描述的程序模塊或它的一部分可以被存儲在遠(yuǎn)程存儲器設(shè)備中。借助于不作為限制的舉例,圖4示出了作為駐留在遠(yuǎn)程計(jì)算機(jī)194中的遠(yuǎn)程應(yīng)用程序195。很明顯,所示網(wǎng)絡(luò)連接是范例性的而且也可以使用在計(jì)算機(jī)之間建立通信鏈接的其它裝置。
圖5示出了能夠在本發(fā)明中實(shí)施的用于基于Web的識別的體系結(jié)構(gòu)200。通常,存儲在網(wǎng)絡(luò)服務(wù)器202中的信息能夠經(jīng)過移動(dòng)設(shè)備30(這里也表示具有顯示屏幕、話筒、攝象機(jī)、觸敏面板等其它形式的計(jì)算設(shè)備,如基于這種輸入形式所需要的那樣)、或者經(jīng)過其中信息被可聽地請求的電話80、或者經(jīng)過響應(yīng)被按壓的鍵由電話80產(chǎn)生的音調(diào)進(jìn)行訪問,并且其中來自網(wǎng)絡(luò)服務(wù)器202的信息僅僅是可聽地提供回到所述用戶。
更加重要的是,體系結(jié)構(gòu)200是統(tǒng)一的,是因?yàn)樾畔⑹墙?jīng)過設(shè)備30或經(jīng)過電話80使用語音識別獲得的,單個(gè)的識別服務(wù)器204可以支持其中的每一種操作模式。另外,體系結(jié)構(gòu)200使用一個(gè)公知標(biāo)記語言(例如,HTML、XHTML、cHTML、XML、WML等)的擴(kuò)展進(jìn)行工作。由此,存儲在網(wǎng)絡(luò)服務(wù)器202中的信息也能夠使用在這些標(biāo)記語言中獲得的公知GUI方法進(jìn)行訪問。通過使用公知標(biāo)記語言的擴(kuò)展,在網(wǎng)絡(luò)服務(wù)器202上的創(chuàng)作將變得容易,和當(dāng)前存在的傳統(tǒng)應(yīng)用程序能夠容易地進(jìn)行修改以包括聲音識別。
通常,設(shè)備30執(zhí)行由網(wǎng)絡(luò)服務(wù)器202提供的HTML頁、腳本等。舉例來說,當(dāng)需要聲音識別時(shí),能夠被數(shù)字化成音頻信號或其中音頻信號已經(jīng)被設(shè)備30如上所述預(yù)處理過的語音特征的語音數(shù)據(jù),被提供給具有語法指示或語言模塊以在語音識別期間使用的識別服務(wù)器204。識別服務(wù)器204的實(shí)現(xiàn)可以有多種形式,只示出了其中的一種,但是它們通常包括識別器211。如果需要并且適當(dāng)?shù)脑?,識別的結(jié)果被返回提供給設(shè)備30,以便進(jìn)行本地顯示。在經(jīng)過識別并且如果使用了任一圖形用戶界面對信息進(jìn)行編譯的基礎(chǔ)上,設(shè)備30將所述信息傳送給網(wǎng)絡(luò)服務(wù)器202以便做進(jìn)一步的處理,而且如果需要?jiǎng)t進(jìn)一步接收HTML頁/腳本。
如圖5所示,設(shè)備30、網(wǎng)絡(luò)服務(wù)器202和識別服務(wù)器204經(jīng)過網(wǎng)絡(luò)205被共同連接,而且可單獨(dú)尋址,這里,網(wǎng)絡(luò)205是諸如Internet的廣域網(wǎng)。因此,不需要使這些設(shè)備彼此位置物理相鄰。特別是,所述網(wǎng)絡(luò)服務(wù)器不需要包括識別服務(wù)器204。以這種方式,在網(wǎng)絡(luò)服務(wù)器202處的創(chuàng)作可以被集中到想要的應(yīng)用程序上而創(chuàng)作者不需要了解復(fù)雜的識別服務(wù)器204。此外,識別服務(wù)器可以被獨(dú)立地設(shè)計(jì)和連接到網(wǎng)絡(luò)205上,并借此可以在不要求網(wǎng)絡(luò)服務(wù)器202處的進(jìn)一步改變時(shí)請求就可得到更新和改善。如下面將要描述的,網(wǎng)絡(luò)服務(wù)器202也能夠包括一個(gè)創(chuàng)作機(jī)制,該創(chuàng)作機(jī)制能夠動(dòng)態(tài)地產(chǎn)生客戶機(jī)端的標(biāo)記和腳本。在另一個(gè)實(shí)施例中,網(wǎng)絡(luò)服務(wù)器202、識別服務(wù)器204和客戶機(jī)30可以根據(jù)實(shí)施機(jī)制的能力相互組合。例如,如果所述客戶機(jī)包括一個(gè)例如個(gè)人計(jì)算機(jī)的通用計(jì)算機(jī),那么,所述客戶機(jī)可以包括識別服務(wù)器204。類似的,如果需要的話,網(wǎng)絡(luò)服務(wù)器202和識別服務(wù)器204可以被包含在一個(gè)單機(jī)中。
對于客戶機(jī)設(shè)備,一種用于對客戶機(jī)/服務(wù)器系統(tǒng)中的輸入數(shù)據(jù)進(jìn)行處理的方法,包括從一個(gè)服務(wù)器中接收具有被配置為從一個(gè)客戶機(jī)設(shè)備的用戶中獲得輸入數(shù)據(jù)的擴(kuò)展的標(biāo)記語言頁;在所述客戶機(jī)設(shè)備上執(zhí)行所述標(biāo)記語言頁;將輸入數(shù)據(jù)(指示了從所述用戶處獲得的語音、DTMF、手寫、手勢和圖象)和相關(guān)語法發(fā)送給遠(yuǎn)離該客戶機(jī)的一個(gè)服務(wù)器;在所述客戶機(jī)處接收來自所述識別服務(wù)器的識別結(jié)果。可以提供一種計(jì)算機(jī)可讀介質(zhì),該介質(zhì)具有用于在一個(gè)客戶機(jī)/服務(wù)器系統(tǒng)中的客戶機(jī)上執(zhí)行的標(biāo)記語言,該標(biāo)記語言具有用于指出與通過所述客戶機(jī)設(shè)備輸入的輸入數(shù)據(jù)相關(guān)的一個(gè)語法的指令。
經(jīng)過電話80對網(wǎng)絡(luò)服務(wù)器202的訪問包括將電話80連接到有線或無線電話網(wǎng)絡(luò)208上,然后將電話80連接到第三方網(wǎng)關(guān)210上。網(wǎng)關(guān)210將電話80連接到電話聲音瀏覽器212上。電話聲音瀏覽器212包括用于提供電話接口的媒體服務(wù)器214和聲音瀏覽器216。與設(shè)備30相似,電話聲音瀏覽器212從web服務(wù)器202接收HTML頁/腳本或類似信息。更重要的是,所述HTML頁/腳本與提供給設(shè)備30的HTML腳本具有類似的格式。以這種方式,網(wǎng)絡(luò)服務(wù)器202不需要單獨(dú)地支持設(shè)備30和電話80,或者甚至單獨(dú)地支持標(biāo)準(zhǔn)的GUI客戶機(jī)。而且能夠使用公用的標(biāo)記語言。此外,與設(shè)備30類似,從聲音瀏覽器216經(jīng)過網(wǎng)絡(luò)205或?qū)>€207、例如使用TCP/IP,向識別服務(wù)器204提供對由電話80傳輸?shù)目陕犘盘柕穆曇糇R別。網(wǎng)絡(luò)服務(wù)器202、識別服務(wù)器204和電話聲音瀏覽器212能夠在任何適當(dāng)?shù)挠?jì)算環(huán)境、諸如圖4所示的通用臺式計(jì)算機(jī)中體現(xiàn)。
但是,應(yīng)當(dāng)注意,如果使用DTMF識別,這種形式的識別通常應(yīng)當(dāng)在媒體服務(wù)器214中執(zhí)行,而不是在識別服務(wù)器204中進(jìn)行。換言之,所述DTMF語法應(yīng)當(dāng)由所述媒體服務(wù)器使用。
如上所述,諸如HTML、XHTML、cHTML、XML、WML的標(biāo)記語言或具有任何其它從SGML導(dǎo)出的標(biāo)記的標(biāo)記語言,可以包括用于在客戶機(jī)/服務(wù)器體系結(jié)構(gòu)中提供識別的控制和/或?qū)ο?。以這種方式,創(chuàng)作者可以運(yùn)用在這些標(biāo)記語言中的、是在這種結(jié)構(gòu)中使用的主要web開發(fā)平臺的所有工具和專門知識。
通常,控制和/或?qū)ο罂梢园ㄒ粋€(gè)或多個(gè)下述功能用于識別器配置、識別器執(zhí)行和/或后處理的的識別器控制和/或?qū)ο?;用于合成器配置和提示播放的合成器控制?或?qū)ο螅挥糜谝?guī)定輸入語法資源的語法控制和/或?qū)ο?;?或用于處理識別結(jié)果的連接控制和/或?qū)ο蟆K鰯U(kuò)展被設(shè)計(jì)成輕型標(biāo)記層,它將可聽、可視和手寫等接口的功能添加到現(xiàn)有的標(biāo)記語言中。如此,所述擴(kuò)展能夠保持獨(dú)立于它們被包含在內(nèi)的高級頁,例如HTML;低級格式,使用該擴(kuò)展來參考例如文本-語音和語法格式的語言資源;和在識別服務(wù)器204中使用的識別和語音合成平臺的獨(dú)特特征。
在描述具有適用于識別的控制和/或?qū)ο蟮臉?biāo)記語言之前,解釋一下用HTML標(biāo)記語言實(shí)現(xiàn)的簡單GUI的例子是有用的。參看圖6,一個(gè)簡單的GUI接口包括將信用卡信息提交給所述網(wǎng)絡(luò)服務(wù)器以便完成在線銷售。在這個(gè)例子中,所述信用卡信息包括用于輸入正在使用的信用卡的類型的字段250,所述信用卡例如是Visa、MasterCard、或者American Express。第二字段252允許輸入信用卡號;而第三字段254允許輸入失效日期。提供提交(Submit)按鈕264來傳輸在字段250、252和254中輸入的信息。
圖7示出了用于從所述客戶機(jī)獲得前述信用卡信息的HTML代碼。通常,如在這些形式的標(biāo)記語言中普遍使用的那樣,所述代碼包括主體部分260和腳本部分262。主體部分260包括指出將被執(zhí)行的動(dòng)作類型、使用的表單、各種字段的信息250、252和254的多行代碼,以及一個(gè)用于提交按鈕264的代碼(圖6)。這個(gè)例子也示出了事件支持和嵌入式腳本宿主,其中,一旦啟動(dòng)了提交按鈕264,就在腳本部分262中調(diào)用或執(zhí)行函數(shù)“verify”。所述“verify”函數(shù)確定用于每個(gè)信用卡(Visa、MasterCard、或者American Express)的卡號長度是否具有適當(dāng)?shù)拈L度。
圖8示出了用于產(chǎn)生與圖6所示相同GUI的客戶機(jī)標(biāo)記,用于使用語音識別獲得將被提供給網(wǎng)絡(luò)服務(wù)器204的信用卡信息。雖然語音識別將在下面結(jié)合附圖8-14予以討論,但是,應(yīng)當(dāng)理解,所述技術(shù)也能夠應(yīng)用于手寫識別、手勢識別和圖象識別。
通常,擴(kuò)展(也被公稱為“標(biāo)簽(tag)”)是XML元素的一個(gè)小集,具有相關(guān)的屬性和DOM對象特征、事件和方法,這可以與源標(biāo)記文本結(jié)合使用以便將識別接口、DTMF或調(diào)用控制應(yīng)用于一個(gè)源頁上。擴(kuò)展的正式格式和語義與所述源文本的特征獨(dú)立,所以,所述擴(kuò)展實(shí)際上可以被等效地應(yīng)用在HTML、XHTML、cHTML、XML、WML中或者與任何其他從SGML導(dǎo)出的標(biāo)記一起使用。所述擴(kuò)展遵循文檔對象模型,其中提供了可以被分層的有新功能的對象或元素。每個(gè)元素都將在附錄中詳細(xì)討論,但是通常所述元素可以包括屬性、特征、方法、事件和/或其他“子(child)”元素。
關(guān)于這一點(diǎn),還應(yīng)當(dāng)注意,根據(jù)正在其上執(zhí)行瀏覽器的設(shè)備的能力,所述擴(kuò)展可以用兩種不同的“模式”加以解釋。在第一種模式、即對象模式中,可以使用全部的能力。通過一個(gè)應(yīng)用程序?qū)U(kuò)展的編程操作是由任何在所述設(shè)備上的瀏覽器啟動(dòng)的機(jī)制執(zhí)行的,例如在XHTML瀏覽器中的JScript解釋程序或在WML瀏覽器中的WMLScript解釋程序。為此,只需要定義一個(gè)小集合的所述擴(kuò)展核心特征和方法,而且這些由存在于所述設(shè)備或客戶機(jī)端的任何編程機(jī)制處理。所述對象模式提供事件發(fā)生和腳本編寫,并能夠提供更強(qiáng)的功能性,以便在語音的交互方面給對話創(chuàng)作者提供更好的客戶機(jī)端控制。如這里所使用的,支持所有事件和腳本的瀏覽器被稱之為“上層瀏覽器(uplevel browser)”。這種形式的瀏覽器將支持所述擴(kuò)展的所有屬性、特征、方法和事件。通??梢栽诰哂休^大處理能力的設(shè)備中找到所述上層瀏覽器。
所述擴(kuò)展也可以在“說明模式”中得到支持。如在這里所使用的,以說明模式操作的瀏覽器被稱之為“下層瀏覽器(downlevel browser)”,其并不支持所有的事件發(fā)生和腳本編寫性能。而且,這種形式的瀏覽器將支持給定擴(kuò)展的說明方面(即核心元素和屬性),但不可能是所有的DOM(文檔對象模型)對象特征、方法和事件。這種模式使用專門的說明語法,并可以進(jìn)一步與諸如SMIL2.0(同步的多媒體集成語言)的說明性多媒體同步和協(xié)作機(jī)制(同步的標(biāo)記語言)結(jié)合使用。下層瀏覽器通常會(huì)在具有有限處理能力的設(shè)備中找到。
關(guān)于這一點(diǎn),應(yīng)當(dāng)討論一種入口的特定模式。具體地說,結(jié)合至少一個(gè)顯示器和在進(jìn)一步實(shí)施例中的一個(gè)定點(diǎn)設(shè)備一起使用語音識別來指示與數(shù)據(jù)入口相關(guān)的字段,是特別有用的。特別是,在這種數(shù)據(jù)入口的模式下,所述用戶通常是在什么時(shí)間選擇一個(gè)字段和提供相應(yīng)信息的控制之下。例如,在圖6所示的例子中,用戶應(yīng)當(dāng)首先決定在字段252中輸入所述信用卡號,然后在字段250中輸入所述信用卡的類型,接著是在字段254中輸入截止日期。類似的,如果需要,所述用戶可以返回到字段252并糾正錯(cuò)誤的輸入。當(dāng)與如下所述的語音識別相結(jié)合時(shí),可以提供一種很容易和自然的導(dǎo)航形式。如這里所使用的,這種同時(shí)使用了一個(gè)允許無需選擇字段的屏幕顯示器和語音識別的形式被稱之為“多重模式(multi-modal)”。
回過來參看圖8,這里示出了HTML標(biāo)記語言代碼的一個(gè)例子。與圖7所示的代碼相似,這個(gè)代碼也包括主體部分270和腳本部分272。另外與圖7所示的代碼相似,圖8所示的代碼包括關(guān)于將執(zhí)行的動(dòng)作類型以及所述表單的位置的指示。由代碼部分280、282和284分別控制或執(zhí)行在字段250、252和254每一個(gè)中的信息輸入。首先參考代碼部分280,在例如使用設(shè)備30中的指示筆33選擇字段250時(shí),事件“onClick”就被啟動(dòng),它調(diào)用或執(zhí)行在腳本部分272中的“talk”函數(shù)。這個(gè)動(dòng)作激活用于語音識別的語法,所述語音識別與通常在字段250中希望的數(shù)據(jù)類型相關(guān)。這種包括一項(xiàng)以上輸入技術(shù)(例如聲音和筆點(diǎn)擊/滾柱)的交互類型被稱之為“多重模式”。
應(yīng)當(dāng)說明,由于對很多應(yīng)用程序來說,都假設(shè)所述創(chuàng)作者將使用所述源頁中的應(yīng)用說明圖形機(jī)制對所述頁中的各種組件的語音啟動(dòng)發(fā)出信號,所以,圖8中所例舉的語音識別擴(kuò)展并不試圖在所述客戶機(jī)的瀏覽器上具有缺省的可視表示。然而,如果需要所述可視表示,則所述擴(kuò)展也可以進(jìn)行修改。
下面反過來參看所述語法,所述語法是一種諸如但不局限于上下文無關(guān)語法、N-語法或混合語法的一種句法語法(Syntactic grammar)。(當(dāng)然,當(dāng)使用相應(yīng)形式的識別時(shí),可以使用DTMF語法、手寫語法、手勢語法和圖象語法。如這里所使用的那樣,“語法”包括用于執(zhí)行識別的信息,并且在進(jìn)一步的實(shí)施例中,例如在一個(gè)規(guī)定字段中對應(yīng)于所期望輸入的信息)。包括所述標(biāo)記語言第一擴(kuò)展的的一個(gè)新控制290(這里被標(biāo)識為“reco”)包括各種元素,示出了其中的兩個(gè),即語法元素“grammar”和“bind”元素。通常,與從網(wǎng)絡(luò)服務(wù)器下載到客戶機(jī)上的代碼相似,所述語法可以在網(wǎng)絡(luò)服務(wù)器202生成,并被下載到所述客戶機(jī)上和/或提供給一個(gè)遠(yuǎn)程服務(wù)器用于語音處理。然后,所述語法可以被本地存儲在一個(gè)高速緩存中。最后,所述語法被提供給識別服務(wù)器204以便在識別過程中使用。所述語法元素被用于使用一個(gè)屬性指定聯(lián)機(jī)的(inline)或被參考的(referenced)語法。
一旦從識別服務(wù)器204接收了與所識別的語音、手寫、手勢和圖象等對應(yīng)的識別結(jié)果,就提供reco控制290的文法以接收相應(yīng)的結(jié)果,并使其與能夠包括在顯示器34上顯示的,文本的對應(yīng)字段關(guān)聯(lián)。在所示的實(shí)施例中,一旦利用返回給所述客戶機(jī)的結(jié)果完成了語音識別,就去激活所述reco對象并使所識別的文本與對應(yīng)的字段關(guān)聯(lián)。部分282和284的操作類似,其中,調(diào)用唯一的Reco對象和語法用于字段252和254中的每一個(gè),并在接收所識別文本時(shí)與字段252和254中的每一個(gè)相關(guān)聯(lián)。關(guān)于接收信用卡號字段252,函數(shù)“handle”以和上述結(jié)合圖7所示類似的方式相對于所述卡類型檢查所述卡號的長度。
通常,結(jié)合體系結(jié)構(gòu)200以及客戶機(jī)端標(biāo)記語言的語音識別的使用是如下進(jìn)行的首先,指出與將給定的語音相關(guān)的字段。在所示的實(shí)施例中,使用了指示筆33,然而應(yīng)當(dāng)理解,本發(fā)明并不局限于所述指示筆33,其中,可以使用諸如按鈕、鼠標(biāo)指示器和旋轉(zhuǎn)輪等任何形式的指示。如在可視標(biāo)記語言使用中所周知的,可以提供諸如“onClick”的相應(yīng)事件。應(yīng)當(dāng)理解,本發(fā)明并不局限于使用“onClick”事件去指示聲音、手寫和手勢等命令的開始。任何一種可用的GUI事件、諸如“onSelect”,也都可以被用于相同的目的。在一個(gè)實(shí)施例中,對于其指出所述相應(yīng)語音的開始和/或結(jié)束作用來講,這種事件是非常有用的。還應(yīng)當(dāng)說明,引導(dǎo)所述語音的字段可以由所述用戶以及在保持跟蹤用戶交互作用的瀏覽器上運(yùn)行的程序指出。
關(guān)于這一點(diǎn),應(yīng)當(dāng)說明,語音識別的不同方案需要來自識別服務(wù)器204的不同行為和/或輸出。雖然,在所有情況下所述識別處理的開始是標(biāo)準(zhǔn)的-來自上層瀏覽器中顯式start()調(diào)用或在下層瀏覽器中的說明性<reco>元素-但是用于停止語音識別的裝置是不同的。
在上述的例子中,多重模式應(yīng)用程序中的用戶將通過例如壓敏顯示器上的敲擊和保持來控制對所述設(shè)備的輸入。然后所述瀏覽器使用例如“pen-up”的GUI事件控制識別應(yīng)當(dāng)停止的時(shí)間并返回相應(yīng)的結(jié)果。但是,在諸如電話應(yīng)用(后述)或在免提應(yīng)用中的只有聲音的方案中,所述用戶不能在所述瀏覽器上直接進(jìn)行控制,并且識別服務(wù)器204或客戶機(jī)30必須負(fù)責(zé)決定停止識別和返回所述結(jié)果的時(shí)間(通常,當(dāng)通過所述語法的路徑已經(jīng)被識別出時(shí))。另外,其中需要在識別停止之前返回中間結(jié)果的口述和其他方案(也稱為“開放話筒”)不僅要求顯式停止功能,而且還需要在所述識別被停止之前將多個(gè)識別結(jié)果返回給客戶機(jī)30和/或網(wǎng)絡(luò)服務(wù)器202。
在一個(gè)實(shí)施例中,所述Reco元素可以包括一個(gè)“mode”屬性,用于區(qū)分下述三種用于指示識別服務(wù)器204如何以及何時(shí)返回所述結(jié)果的識別模式。結(jié)果的返回意味著視情況提供“onReco”事件或激活所述“bind”元素。在一個(gè)實(shí)施例中,如果沒有規(guī)定所述模式,則缺省識別模式為“automatic(自動(dòng))”。
圖12示出了用于語音識別的“automatic”模式的操作(類似的模式、事件等可以用于其他形式的識別)。時(shí)間線281在283處指示識別服務(wù)器204何時(shí)將被開始識別,在285處指出識別服務(wù)器204檢測語音的位置,以及在287處確定所述語音已經(jīng)結(jié)束。
Reco元素的各種屬性控制識別服務(wù)器204的行為。“initialTimeout”(啟動(dòng)超時(shí))屬性289是在識別的開始283和語音檢測285之間的時(shí)間。如果這個(gè)時(shí)間周期被超過了,則將從識別服務(wù)器204提供一個(gè)“onSlience”事件291,從而發(fā)出一個(gè)信號通知那個(gè)識別已經(jīng)結(jié)束了。如果識別服務(wù)器204發(fā)現(xiàn)所述發(fā)言是不可識別的,則將發(fā)出一個(gè)“onNoReco”事件293,它也將指出識別已經(jīng)停止。
可以停止和取消識別的其他屬性包括“babbleTimeout”(串音超時(shí))屬性295,該屬性295是一個(gè)時(shí)間周期,在該時(shí)間周期中,識別服務(wù)器204必須在285處語音檢測之后返回一個(gè)結(jié)果。如果被超過了,則根據(jù)是否發(fā)生了誤差發(fā)布不同的事件。如果識別服務(wù)器204仍然在處理音頻,例如在特長發(fā)言的情況T,則發(fā)布“onNoReco”屬性293。但是,如果由于任何其它原因使“babbleTimeout”屬性295被超出,則更大可能是產(chǎn)生了識別器誤差,并發(fā)布“onTimeout”事件297。類似的,也可以提供“maxTimeout”(最大超時(shí))屬性299,它是在識別開始283和返回到客戶機(jī)30的所述結(jié)果之間的一個(gè)時(shí)間周期。如果這個(gè)時(shí)間周期被超過了,則發(fā)出“onTimeout”事件297。
但是,如果一個(gè)大于“endSilence”(結(jié)束靜默)屬性301的時(shí)間周期被超過了,則意味著所述識別已經(jīng)完成。識別服務(wù)器204將自動(dòng)地停止識別并返回它的結(jié)果。應(yīng)當(dāng)說明,識別服務(wù)器204能夠執(zhí)行一個(gè)置信度測量以確定所述識別結(jié)果是否應(yīng)被返回。如果所述置信度測量低于一個(gè)閾值,則發(fā)布“onNoReco”事件293,而如果所述可信度測量高于所述閾值,則發(fā)布“onNoReco”屬性303和識別結(jié)果。圖12借此示出了在“自動(dòng)模式”中沒有進(jìn)行顯式stop()調(diào)用。
圖13示出了識別服務(wù)器204的“單模式”的操作。上述針對“自動(dòng)模式”的屬性和事件仍可用,并因此使用相同的標(biāo)號表示。但是,在這種模式的操作中,stop()調(diào)用305在時(shí)間線281上被指出。stop()調(diào)用305與諸如由用戶提供的“pen-up”的事件對應(yīng)。在這種操作模式中,識別結(jié)果的返回是在顯式stop()調(diào)用305的控制下執(zhí)行的。如同所有的操作模式一樣,如果在“initialTimeout”周期289內(nèi)沒有檢測到語音,則發(fā)布“onSilence”事件291,但對于這種操作模式識別不被停止。類似的,在stop()調(diào)用305之前的由不可識別的發(fā)言產(chǎn)生的“onNoReco”事件293并不停止識別。但是,如果與“babbleTimeout”屬性295或“maxTimeout”屬性299相關(guān)的時(shí)間周期被超過了,則識別將停止。
圖14示出了識別服務(wù)器204的“multiple rnode”(多重模式)操作。如上所述,這種操作模式被用于“開放話筒”或口述方案。通常,在這種操作模式下,以一定的間隔返回所述結(jié)果,直到接收到顯式stop()調(diào)用305或與“babbleTimeout”屬性295或“maxTimeout”屬性299相關(guān)的時(shí)間周期被超過為止。但是應(yīng)當(dāng)注意,在任何一個(gè)不停止識別的“onSilience”事件291、“onReco”事件303或“onNoReco”事件293之后,用于“babbleTimeout”和“maxTimeout”的定時(shí)器將被復(fù)位。
通常,在這種操作模式下,對于每個(gè)被識別的短語,發(fā)布“onReco”事件303并返回所述結(jié)果,直到stop()調(diào)用305被接收為止。如果由于一個(gè)不可識別的發(fā)言而發(fā)出了“onSilence”事件291,則這些事件將被報(bào)告但識別將繼續(xù)。
如上所述,用于所述字段的相關(guān)Reco對象被激活,包括向所述識別服務(wù)器204提供至少一個(gè)使用哪種語法的指示。這個(gè)信息可以伴隨有記錄在客戶機(jī)30上、并被傳送給識別服務(wù)器204的語音數(shù)據(jù)。如上所述,語音數(shù)據(jù)可以包括與由用戶輸入的所述語音相關(guān)的流式數(shù)據(jù),或者可以包括指出在語音識別期間所使用的語音特征的預(yù)處理的語音數(shù)據(jù)。在進(jìn)一步的實(shí)施例中,客戶機(jī)端的處理還可以包括所述語音數(shù)據(jù)的正規(guī)化,從而使由識別服務(wù)器204接收的語音數(shù)據(jù)從客戶機(jī)到客戶機(jī)相對一致。由于所述識別服務(wù)器可以與客戶機(jī)和通信信道的類型無關(guān)(stateless),所以這簡化了識別服務(wù)器204的語音處理,借此,允許所述識別服務(wù)器更容易的可伸縮性。
一旦從識別服務(wù)器204接收了所述識別結(jié)果,所述識別結(jié)果就與對應(yīng)的字段相關(guān)聯(lián),如果需要,可以執(zhí)行客戶機(jī)端的驗(yàn)證或檢查。一旦完成所有字段與所述客戶機(jī)當(dāng)前提供的代碼的關(guān)聯(lián)后,信息被傳送給網(wǎng)絡(luò)服務(wù)器202以用于應(yīng)用程序的處理。從前面的描述來看,很清楚,雖然網(wǎng)絡(luò)服務(wù)器202已經(jīng)向客戶機(jī)30提供了適于識別的代碼或頁/腳本,但是,所述識別服務(wù)不是由網(wǎng)絡(luò)服務(wù)器202執(zhí)行的,而是由識別服務(wù)器204執(zhí)行的。但是,本發(fā)明并不排除這樣一種實(shí)現(xiàn)方法,其中,識別服務(wù)器204和網(wǎng)絡(luò)服務(wù)器202在同一位置,即識別服務(wù)器204是客戶機(jī)30的一部分。換言之,即使當(dāng)識別服務(wù)器204和網(wǎng)絡(luò)服務(wù)器202或客戶機(jī)30相互結(jié)合,但是由于擴(kuò)展在這些組件之間提供了一個(gè)簡單和方便的接口,所以,這里所提供的擴(kuò)展是非常有利的。
盡管在圖8所示實(shí)施例中沒有示出,但所述reco控制還可以包括一個(gè)遠(yuǎn)程音頻對象(RAO),用于將適當(dāng)?shù)恼Z音數(shù)據(jù)傳送給識別服務(wù)器204。由于聲音接口可能是不同的,所以將RAO制成插接型對象的益處在于允許用于每個(gè)不同設(shè)備的不同的一個(gè)。另外,所述遠(yuǎn)程音頻對象可以允許在相同時(shí)間處被激活的多個(gè)識別元素。
圖9A和9B示出了這里作為具有頁/腳本的HTML實(shí)施的只有聲音的標(biāo)記語言。如所清楚示出的,所述代碼還可以包括一個(gè)主體部分300和一個(gè)腳本部分302。標(biāo)記語言還有另一種擴(kuò)展-包括屬性相象bargein(attyibutes like bargein)的提示控制303。但是在圖9A和9B的只有聲音的實(shí)施例中語音識別的執(zhí)行是不同的。利用所述的腳本功能“checkFilled”整個(gè)地控制所述處理,該腳本功能確定沒有填滿的字段并激活相應(yīng)的提示和新對象。然而,使用與上述結(jié)合圖8所述相同的上下文激活所述語法,其中,語音數(shù)據(jù)和關(guān)于使用語法的指示被提供給識別服務(wù)器204。類似的,從識別服務(wù)器204接收的輸出與所述客戶機(jī)(這里是電話聲音瀏覽器212)的字段相關(guān)聯(lián)。
通常對于只有聲音的應(yīng)用程序來講是唯一的其他特征是當(dāng)語音沒有被識別出時(shí)對所述用戶的一個(gè)指示。在諸如圖8所示的多重模式的應(yīng)用程序中,“onNoReco”簡單地將一個(gè)零值放入到所顯示的字段中以指示沒有識別,由此也不需要進(jìn)一步的動(dòng)作。在所述只有聲音的實(shí)施例中,“onNoReco”305調(diào)用或執(zhí)行函數(shù)“mumble”,該函數(shù)將一個(gè)字短語傳送給識別服務(wù)器204,接下來使用適當(dāng)?shù)奈谋?語音系統(tǒng)307將其轉(zhuǎn)換成語音(圖5)。識別服務(wù)器204把一個(gè)音頻流返回給電話聲音瀏覽器212,接下來傳送給將被用戶收聽的電話80。類似的,在只有聲音的應(yīng)用中的其他波形提示在需要時(shí)也被識別服務(wù)器204轉(zhuǎn)換成音頻流。
應(yīng)當(dāng)說明,在這個(gè)例子中,在經(jīng)過函數(shù)“welcome”播放歡迎提示之后,函數(shù)“checkFilled”向用戶提示每個(gè)字段并激活適當(dāng)?shù)恼Z法,包括重復(fù)已經(jīng)輸入的字段和確認(rèn)所述信息是正確的,這包括激活“confirmation”語法。注意,在這個(gè)實(shí)施例中,每個(gè)reco控制都是從腳本部分302啟動(dòng)的,而不是從先前所述例子中的主體部分啟動(dòng)的。
該標(biāo)記語言在不同類型客戶機(jī)設(shè)備(例如諸如電話的、基于多重模式和無顯示的聲音輸入的客戶機(jī)設(shè)備)上可執(zhí)行統(tǒng)一用于與所述每一個(gè)客戶機(jī)設(shè)備交互的網(wǎng)絡(luò)服務(wù)器的與語音相關(guān)的事件、GUI事件和電話事件中的至少一個(gè)。這特別有好處,因?yàn)檫@允許網(wǎng)絡(luò)服務(wù)器應(yīng)用程序中的重要部分可以被屬類相關(guān)的寫入或者是獨(dú)立于客戶設(shè)備。一個(gè)例子在圖8和9A、9B中用”handle”函數(shù)示出。
雖然在圖9中沒有示出,但是,對于所述標(biāo)記語言還存在兩種以上用于支持電話功能性的擴(kuò)展,DTMF(雙音調(diào)制頻率)控制和呼叫控制元素或?qū)ο?。DTMF的工作情況類似于reco控制。它規(guī)定了一個(gè)從鍵盤字符串到文本輸入的簡單語法映像。例如,“1”意味著食品雜貨店,“2”表示藥店等。而另一方面,調(diào)用對象涉及電話功能、例如呼叫轉(zhuǎn)移和第三方呼叫。下面將在附錄中詳細(xì)討論屬性、特征、方法和事件。
而圖10A和10B示出了適用于僅有聲音的操作模式的標(biāo)記語言的另一個(gè)實(shí)施例。在這個(gè)實(shí)施例中,所述用戶被允許對整個(gè)信息輸入和講話期間具有某些控制。換言之,雖然所述系統(tǒng)可以啟動(dòng)或指示所述用戶開始講話,但是該用戶也可以提供比最初被要求更多的信息。這是“混合啟動(dòng)”的一個(gè)例子。通常,在這種對話交互的形式下,所述用戶被允許與所述系統(tǒng)共享對話主動(dòng)權(quán)。除在上面指出和下面將要詳細(xì)討論的、其中用戶提供比提示所要求信息更多的信息的例子之外,當(dāng)沒有提示時(shí),所述用戶也可以切換任務(wù)。
在圖10A和10B所示的例子中,標(biāo)識作為“do_field”的語法包括與“g_card_type”、“g_card_num”和“g_expiry_date”語法相關(guān)的信息。在這個(gè)例子中,電話聲音瀏覽器212一旦接收由“onReco”指示的經(jīng)過識別的語音,就把將從電話80接收的語音數(shù)據(jù)和一個(gè)使用“do_field”語法的指示傳送給識別服務(wù)器204,調(diào)用或執(zhí)行函數(shù)“handle”,它包括將這些值與從所述語音數(shù)據(jù)識別出的任一或全部字段相關(guān)聯(lián)。換言之,從識別服務(wù)器204獲得的結(jié)果也包括用于每個(gè)字段的指示。根據(jù)在405中規(guī)定的連接規(guī)則對該信息進(jìn)行語法分析并與相應(yīng)的字段關(guān)聯(lián)。如圖5指出的,識別服務(wù)器204可以包括語法分析程序309。
從圖7、8、9A、9B、10A和10B可以看出,使用了非常類似的web開發(fā)框架。在這些情況每一個(gè)中的數(shù)據(jù)表示也非常類似。另外,數(shù)據(jù)表示和流程控制的分開允許不同程序(系統(tǒng)啟動(dòng)和混合啟動(dòng))之間、或不同形式(基于GUI的web、僅有聲音的和多重模式)之間最大的可重復(fù)使用率。當(dāng)電話包括顯示器和與設(shè)備30類似的功能時(shí),這也允許從僅有聲音的操作經(jīng)過電話到多重模式操作的自然擴(kuò)展。附錄A進(jìn)一步提供了上面討論的控制和對象進(jìn)一步的細(xì)節(jié)。
如上面所指出的,上層瀏覽器可以使用腳本編寫以便執(zhí)行諸如在上面例子中包括的調(diào)用函數(shù)“handle”的各種需要去分配所述識別結(jié)果。在上面所討論和在附錄A第2.1.2節(jié)描述的實(shí)施例中,“bind”元素將對所述識別結(jié)果進(jìn)行語法分析并分配所述值,其中,“bind”元素是“reco”的子元素(subelement)或子系元素(child element)。
雖然腳本編寫是有用的,但例如由于安全關(guān)系,很多人并不認(rèn)為它總是瀏覽器的最佳形式。在本發(fā)明的另一個(gè)實(shí)施例或方面中,所述“bind”元素是一種高級元素(與“reco”類似)并被提供有其他更豐富的特征,這實(shí)際上可以模擬腳本化而無需進(jìn)行腳本化本身。
在不使用腳本或不使用下面將要討論的本發(fā)明所述方面的情況下,下面將要討論的某些諸如復(fù)雜對話效果的能力僅僅通過將一個(gè)頁發(fā)送回網(wǎng)絡(luò)服務(wù)器202、執(zhí)行在上面的應(yīng)用程序邏輯從而產(chǎn)生一個(gè)新的頁、將所述頁傳送回給客戶機(jī)設(shè)備來完成。本發(fā)明的該方面允許一個(gè)程序員對該頁中的對象調(diào)用方法而不會(huì)引起服務(wù)器往返行程(roundtrip)。
在上面討論的實(shí)施例中,“bind”元素僅僅具有用于以web頁形式向字段分配識別結(jié)果的屬性“TargetElment”和“TargetAttribute”。在進(jìn)一步的實(shí)施例中,“bind”元素還包括一個(gè)被添加以用于對象方法調(diào)用的“TargetMethod”。“TargetMethod”的使用和性能是用于模擬腳本編寫的原理技術(shù)。例如,下述語法可以被用于調(diào)用對象“OBJ1”的“X”方法<bind TargetElement=“OBJl”TargetMethod=“X”...>。
注意,雖然這里所示的例子遵循HTML/XHTML事件語法,但是,本領(lǐng)域內(nèi)普通技術(shù)人員應(yīng)當(dāng)發(fā)現(xiàn)將<bind>用途推廣到其他事件發(fā)生機(jī)制中是很容易的,這些機(jī)制包括但不局限于W3C文檔對象模型層2或?qū)?事件標(biāo)準(zhǔn)、ECMA公共語言信息基礎(chǔ)設(shè)施(CLI)事件模型、Java編程語言事件模型、W3C同步多媒體集成語言(SMIL)和突發(fā)W3CXML事件標(biāo)準(zhǔn)協(xié)議。
圖15A和15B示出了可在一個(gè)客戶機(jī)、特別是在一個(gè)下層瀏覽器上執(zhí)行的標(biāo)記語言頁。在這個(gè)例子中,所述用戶經(jīng)過音頻提示要求一杯飲料。然后,所述系統(tǒng)確認(rèn)點(diǎn)了什么樣的飲料。在識別結(jié)果的基礎(chǔ)上“bind”元素使用說明邏輯引導(dǎo)執(zhí)行。當(dāng)所述飲料被確認(rèn)時(shí),表單被發(fā)送回給網(wǎng)絡(luò)服務(wù)器202,所有這一切都無需腳本編寫。
通常,圖15A和15B所示的標(biāo)記示例包括一個(gè)數(shù)據(jù)部分350、一個(gè)語音部分352和用戶接口部分354、356和358。部分354從一般查詢中接收關(guān)于用戶喜歡什么飲料的識別結(jié)果并將交互識別流程導(dǎo)向查詢是否需要奶油和糖的再提示、或確認(rèn)所述飲料被訂購。特別是,當(dāng)奶油或糖也已經(jīng)被訂購時(shí),部分356接收一個(gè)識別結(jié)果。部分358接收用于確認(rèn)所述飲料的識別結(jié)果。部分360是一個(gè)使用新消息對象“SMEX”的調(diào)用控制部分,這將在后面進(jìn)一步討論。
如上面所指出的,本發(fā)明這個(gè)方面的“bind”元素包括對象方法調(diào)用,當(dāng)在361處執(zhí)行“welcome”對象上的“start”方法時(shí),它利用播放“welcome”提示啟動(dòng)圖15A和15B所示的用戶交互。
然后,在362處通過執(zhí)行“asked”對象的“start”方法,詢問用戶“是希望得到可樂、咖啡還是橙汁?”。然后通過在363處調(diào)用識別“reco drink”對象上的“start”方法執(zhí)行識別。
然后執(zhí)行部分354中的標(biāo)記,其中識別服務(wù)器204使用的語法由Xpath語句“./drink types”提供。注意,盡管這個(gè)例子使用了W3C Xpath語言,但是本領(lǐng)域內(nèi)的普通技術(shù)人員可以發(fā)現(xiàn)它也可以被用于其他的標(biāo)準(zhǔn)語言,這些語言包括但局限于W3C XML查詢語言(XQL)。如“bind”元素364所規(guī)定的,如果從識別服務(wù)器204接收的識別結(jié)果具有小于10的置信分,則在366處執(zhí)行提示對象“reprompt”,后面跟著執(zhí)行提示對象“ask”368,在這一點(diǎn),在370處重新啟動(dòng)識別對象“reco drink”。如果所返回的識別結(jié)果是具有大于10的置信分的“coffee”,則字段“drink”被分配有在372處識別結(jié)果的值,且在374處通過提示對象“craem_sugar”向用戶提示他/她是否喜歡奶油或糖。然后在376調(diào)用部分356中的識別對象“reco_cream_sugar”。否則,如果所述識別結(jié)果的置信分大于10但不是咖啡,則在378處再次分配字段飲料。在380處通過執(zhí)行提示對象“confirm”提供所述識別結(jié)果的確認(rèn),后面跟隨在382處在部分358中識別對象“reco_yesno”的調(diào)用。如果用戶利用大于10的置信分回答“yes”,則在384處顯示提示對象“thanks”,然后在386處發(fā)送表單。反之,如果用戶回答“no”或識別結(jié)果的置信分低于10,則在390處執(zhí)行提示對象“retry”,后面再次跟隨有在392處正在執(zhí)行的提示對象“ask”和在394處的“reco_drink”識別對象的調(diào)用。
從前面的例子可以看出,如在部分354、356或358中所指出的,“bind”元素允許方法的多重調(diào)用。如果需要,能夠說明識別結(jié)果的多重分配。在所示的實(shí)施例中,當(dāng)所述多重分配和方法調(diào)用被說明時(shí),他們是按照文檔順序被執(zhí)行的。
在另一個(gè)實(shí)施例中,還提供了用于傳遞方法參數(shù)的標(biāo)準(zhǔn)。換言之,某些方法需要一個(gè)參數(shù)列表。這是使用“arg”子元素實(shí)現(xiàn)的。例如,給出下述標(biāo)記<bind TargetElement=“OBJ”TargetMethod=“F”><arg>X</arg><arg>Y</arg></bind>
等效于“OBJ.F(X,Y)”,或“OBJ”是一個(gè)具有參數(shù)“X”和“Y”的方法“F”的對象。
所述“bind”元素還能夠包括一個(gè)“event”屬性,用于說明所述連接元素被試圖用于哪個(gè)事件。例如,標(biāo)記<bind event=“onNoReco”=TargetElement=“prompt1”TargetMethod=“start”/>
意味著當(dāng)“onNoReco”事件被傳送時(shí),對象“pyompt1”的方法“start”將被調(diào)用??紤]使用“bind”元素作為例如結(jié)合圖8所述的上述“Reco”元素的子元素,用于“bind”元素的缺省屬性是“onReco”。
作為一個(gè)高級元素,所述“bind”元素可以包括在所述附錄的部分2.4中規(guī)定的任一事件。另外,所述“bind”元素還可以包括具有能夠被訪問和用于指示程序流程的“status”屬性的“onError”事件。在這個(gè)方面所述“bind”元素的其他事件具有“status”屬性,這些都是能夠被訪問的。
除了檢查識別結(jié)果的狀態(tài)以外,也可以檢查正在執(zhí)行的當(dāng)前文本或頁本身。具體地說,“test”和“value”兩個(gè)屬性可以被擴(kuò)展成包括一個(gè)被稱為包含文檔的根節(jié)點(diǎn)的“host”基元。例如,回過來參看圖15A和15B,其中所包含的例子具有在部分354處的附加邏輯,用于詢問當(dāng)用戶希望得到咖啡時(shí)是否需要奶油或糖。當(dāng)利用標(biāo)記“host()/get_drink/ddnk=‘coffee’”進(jìn)行規(guī)定時(shí),如果所述飲料字段僅僅是“coffee”,則用于添加奶油或糖的標(biāo)記和隨后部分356的調(diào)用將被返回。
應(yīng)當(dāng)說明,“bind”元素不僅可以被應(yīng)用于來自語音服務(wù)器204的識別結(jié)果和在所述文檔中接收或分配值,還可以被應(yīng)用到消息對象(這里由“smex”表示),所述消息對象例如來自在所述客戶機(jī)設(shè)備上運(yùn)行的應(yīng)用程序。在圖15A和15B所示的例子中,當(dāng)在所述客戶機(jī)設(shè)備上運(yùn)行的電話應(yīng)用程序檢測到一個(gè)調(diào)用時(shí)執(zhí)行所述頁。在部分360中,當(dāng)接收到“/Call_connected”消息時(shí),“bind”元素通過執(zhí)行“reco_drink”對象來執(zhí)行或播放“welcome”提示并開始識別。與從語音服務(wù)器204接收的識別結(jié)果相似,所接收的消息也非常大。某些消息被很好地定義,以便啟動(dòng)所希望的程序流程。其他的可以被接收和處理(例如,正如接收的所述識別服務(wù)器的識別結(jié)果那樣被分析語法)。例如,這允許標(biāo)記語言與從鍵盤輸入的自然語言分析程序相似被使用。附錄A中的reco元素包括與執(zhí)行這個(gè)功能相關(guān)的特征。類似的,所述提示元素通過使用特征“innertext”可以被用來提供用于動(dòng)態(tài)內(nèi)容或音頻波文件的文本消息并在附錄A中給予解釋。事件發(fā)布可以與用于識別結(jié)果的事件發(fā)布類似。例如,所述事件發(fā)布可以包括當(dāng)所述消息源(例如運(yùn)行于所述客戶機(jī)設(shè)備上的應(yīng)用程序)具有可用于所述瀏覽器的消息時(shí)得到傳送的“onReceived”。
然后,“smex”或消息對象允許這里所討論的標(biāo)記語言標(biāo)記被擴(kuò)展到運(yùn)行于所述客戶機(jī)設(shè)備上的其它組件或應(yīng)用程序。作為另外一個(gè)例子,所述消息對象可以被用來與用于在所述客戶機(jī)上運(yùn)行受到損害的聽取的TTY組件進(jìn)行通信。所述TTY組件將不使用語音識別提供用戶已經(jīng)鍵入的消息。這個(gè)消息然后被使用,就象已經(jīng)從所述識別服務(wù)器中接收了一個(gè)識別結(jié)果一樣,其中,所述消息能夠被語法分析和分配給所述表單的字段,或使用上面討論的“reco”、“grammar”或“bind”元素進(jìn)行其他處理。在附錄A中提供了消息或“smex”對象的進(jìn)一步討論。
所述“bind”元素還可以包括一個(gè)“for”屬生,該屬性允許它的作用被附加到所述頁的其它對象上。例如,當(dāng)對象“prompt 1”傳送事件“onComplete”時(shí),諸如<bind for=“prompt 1”event=“onComplet targetElement”=“prompt 2”=targetMethod=“start”/>的標(biāo)記將調(diào)用對象“prompt 2”的start方法。
回過來參看圖5,網(wǎng)絡(luò)服務(wù)器202能夠包括一個(gè)服務(wù)器端的插接說明創(chuàng)作工具或模塊320(例如,Microsoft Corporation的ASP或ASP+,或JSP等)。服務(wù)器端插接模塊320可以動(dòng)態(tài)地產(chǎn)生客戶機(jī)端的標(biāo)記,甚至是用于訪問網(wǎng)絡(luò)服務(wù)器202的客戶機(jī)類型的特殊形式的標(biāo)記。在最初建立客戶機(jī)/服務(wù)器關(guān)系的基礎(chǔ)上,所述客戶機(jī)信息可以被提供給網(wǎng)絡(luò)服務(wù)器202,或網(wǎng)絡(luò)服務(wù)器202可以包括多個(gè)模塊或例行程序以檢測所述客戶機(jī)的性能。利用這種方式,服務(wù)器端插接模塊320可以為每個(gè)聲音識別方案產(chǎn)生客戶機(jī)端標(biāo)記,即僅僅通過電話80的聲音或用于設(shè)備30的多重模塊。通過使用一致的客戶機(jī)端的模塊(能夠在每個(gè)應(yīng)用程序中使用的reco和prompt控制),用于多個(gè)不同客戶機(jī)的創(chuàng)作更加容易。
除了動(dòng)態(tài)產(chǎn)生客戶機(jī)端的標(biāo)記以外,與使用圖8、9A和9B中的標(biāo)記例子獲得圖6所示的信用卡信息類似,上層對話模塊被實(shí)現(xiàn)為服務(wù)器端的控制并被存儲在存儲器324中,以便由開發(fā)者在應(yīng)用程序創(chuàng)作中使用。通常,上層對話模塊324將在由開發(fā)者規(guī)定的參數(shù)基礎(chǔ)上在只有聲音的和多重模式的方案中動(dòng)態(tài)地產(chǎn)生客戶機(jī)端的標(biāo)記和腳本。所述上層對話模塊能夠包括多個(gè)參數(shù),用于產(chǎn)生客戶機(jī)端的標(biāo)記,以適應(yīng)開發(fā)者的需要。例如,信用卡信息模塊可以包括一個(gè)用于指出客戶機(jī)端標(biāo)記腳本能夠允許的信用卡的類型的參數(shù)。在服務(wù)器端插接模塊320中使用的簡單的ASP+頁被示于圖11。
雖然已經(jīng)結(jié)合最佳實(shí)施例對本發(fā)明進(jìn)行了描述,但是本領(lǐng)域普通技術(shù)人員將認(rèn)識到在形式和細(xì)節(jié)上可以作出很多變化而不脫離本發(fā)明的精神和范圍。
附錄A1引言下面的標(biāo)簽(tag)是一組標(biāo)記元素,它們允許文檔使用語音作為輸入或輸出媒體。所述標(biāo)簽被設(shè)計(jì)成自包含的XML,它們能夠被放入諸如HTML、XHTML、CHTML、SMIL、WML等任何一種從SGML導(dǎo)出的標(biāo)記語言中。這里所使用的標(biāo)簽與可從Washington Redmond微軟公司得到的已知方法SAPI5.0類似。所述標(biāo)簽、元素、事件、屬性、特征、返回值等僅僅都是范例,并不作為限制。雖然這里解釋了語音和DTMF識別,但是,也可以提供類似的標(biāo)簽用于其他形式的識別。
這里所討論的主要元素是<prompt......>用于語音合成配置和提示播放<reco......>用于識別器配置和識別執(zhí)行和后處理<grammar......>用于規(guī)定輸入語法資源<bind......>用于識別結(jié)果的處理<dtmf......>用于DTMF的配置和控制2RecoReco元素被用于規(guī)定可能的用戶輸入和用于處理輸入結(jié)果的裝置。其主要元素可以是<grammar>和<bind>,且它包含用于配置識別器特征的資源。
Reco元素是在上層瀏覽器中經(jīng)過Start和Stop方法、或在SMIL啟用的瀏覽器中使用SMIL命令被編程激活的。它們被認(rèn)為在下層瀏覽器(即不支持腳本的瀏覽器)中通過它們在所述頁上的出現(xiàn)起說明作用。為了允許并行激活多種語法,可以考慮同時(shí)使多個(gè)Reco元素活動(dòng)。
Reco還可以采用一種特定的模式-‘a(chǎn)utomatic’,‘single’或‘multiple’-以區(qū)分它們允許的識別方案的種類和識別平臺的行為。
2.1 Reco內(nèi)容Reco元素包含一個(gè)或多個(gè)語法和可選的一組(bind)連接元素,它檢查識別的結(jié)果并將相關(guān)部分拷貝到所述包含頁的值上。
在上層瀏覽器中,Reco支持按程序設(shè)計(jì)的各個(gè)語法規(guī)則的激活和去激活。還要說明,通過用于識別環(huán)境的缺省值激活一個(gè)語法中所有的頂層規(guī)則。
2.1.1<gramma(語法)>元素所述語法元素被用于使用src屬性規(guī)定聯(lián)機(jī)或被參考的語法。通常至少規(guī)定一種語法(聯(lián)機(jī)或被參考)。聯(lián)機(jī)語法可以是基于文本的語法格式,被參考的語法可以是基于文本或二進(jìn)制類型的。可以規(guī)定多個(gè)語法元素。如果規(guī)定了一個(gè)以上的語法元素,則所述語法內(nèi)的規(guī)則被添加作為在相同語法中的額外規(guī)則。具有相同名稱的任何規(guī)則將被重寫。
屬性(Attributes)·src如果規(guī)定了聯(lián)機(jī)語法,則該項(xiàng)是可選的。包括所述語法的URI。注意,通過用于識別環(huán)境的缺省值激活一個(gè)語法中的所有頂層規(guī)則。
·lantgID可選。用于指出語音引擎將使用哪種語言的字符串。所述字符串格式遵循xmllang定義。例如,lang ID=“en-us”表示美國英語。這個(gè)屬性只有在所述langID不在語法URI中規(guī)定時(shí)才有效。如果沒有規(guī)定,則缺省值為美國英語。
如果在多個(gè)地方規(guī)定了所述langID,那么,langID遵循來自最低范圍的先前順序-遠(yuǎn)程語法文件(即,在該語法文件內(nèi)規(guī)定的語言標(biāo)識(id)),所述遠(yuǎn)程語法文件后面跟隨有一個(gè)語法元素,而該語法元素后面跟隨有reco元素。
<pre listing-type="program-listing"><![CDATA[ ?。糶rammar src=“EromCity.xml”/> 或 ?。糶rammar> <rule toplevel=“active”> ?。紁>from</p> ?。紃uleref name=“cities”/></rule> <rule name=“cities”> <1> ?。紁>Cambridge</p> ?。紁>Seattle</p> ?。紁>London</p> </1> </rule> </grammar>]]></pre>如果規(guī)定了一種參考src的語法和一種聯(lián)機(jī)語法,則所述聯(lián)機(jī)規(guī)則被添加到所述被參考的規(guī)則中,并且任一具有相同名稱的規(guī)則都將被重寫。
2.1.2 <bind(連接)>元素所述連接元素被用于把來自識別結(jié)果的值連接到所述頁中。
由所述連接元素使用的識別結(jié)果可以是包含用于規(guī)定識別結(jié)果的語義標(biāo)記語言(SML)的XML文檔。它的內(nèi)容包括語義值、所說的實(shí)際字和置信分。SML也可以包括可替換的識別選擇(像在N個(gè)最佳識別結(jié)果中一樣)。下面示出了“I’d like to travel from Seattle to Boston”這一發(fā)言的示范XML文本<pre listing-type="program-listing"><![CDATA[ ?。約ml confidenc=“40”> ?。紅ravel text=“I’d like to travel fiom Seattle to Boston”> <o(jì)rigin_city confidence=“15”>Seattle ?。?origin_city> <dest_city confidence=“35”>Boston ?。?dest_city> </travel> </sml>]]></pre>由于假設(shè)語法內(nèi)的識別產(chǎn)生一個(gè)XML文檔,所以,在語義標(biāo)記語言即SML中,使用Xpath查詢參考將從所述SML文檔連接的值。并且由于在所述值被連接進(jìn)入的頁中的所述元素應(yīng)被唯一地識別(它們可能將被形成控制),所以,這些目標(biāo)元素被直接參考。
屬性·targetElement必須。將分配來自于SML的值內(nèi)容的元素(如在W3CSMIL2.0中)。
·targetAttribute可選。將分配來自于SML值內(nèi)容的目標(biāo)元素的屬性(如在SMIL2.0中的attributeName屬性一樣)。如果未規(guī)定,默認(rèn)為“value”。
·test可選。一個(gè)用于指出條件的XML Pattern字符串,在所述條件下將分配所述識別結(jié)果。缺省條件是真。
·value必須。用于規(guī)定將被分配給所述目標(biāo)元素的、來自于識別結(jié)果文檔的值的XPATH字符串(如在所述W3C XML DOM說明中規(guī)定的)。
例子如此給出上述SML返回,隨后的reco元素使用bind將origin_city和dest_city中的值傳輸?shù)剿瞿繕?biāo)頁元素txtBoxOrigin和txtBoxDest<pre listing-type="program-listing"><![CDATA[ <input name=“txtBoxOrigin”type=“text”/> ?。糹nput name=“txtBoxDest”type=“text”/> ?。紃eco id=“travel”> ?。糶rammar src=“./city.xml”/> <bind targetElement=“txtBoxOrigin” value=“orogin_city”/> <bind TargetElement=“txtBoxDest” value=“//dest_city”/> ?。?reco>]]></pre>如在下面的例子中所描述的,這個(gè)連接是有條件的,其中,在作為一個(gè)預(yù)定條件加給所述連接操作的所述dest city結(jié)果的語義屬性上執(zhí)行一個(gè)測試<bind targetElement=“txtBoxDest”value=“//dest_city”test=“/sml_/“destcity[@confidence$gt$40]”/>
所述連接元素是一個(gè)在下層瀏覽器或上層瀏覽器上處理識別結(jié)果的簡單說明性裝置。對于更復(fù)雜的處理來講,由上層瀏覽器所支持的recoDOM對象實(shí)現(xiàn)了onReco事件處理程序以執(zhí)行編程的腳本分析和所述識別返回的后處理。
2.2屬性和特征下述屬性被所有瀏覽器所支持,所述特征被上層瀏覽器所支持。
2.2.1屬性下述Reco屬性用來配置用于一個(gè)對話回合的語音識別器。
·initialTimeout可選。在識別開始和語音檢測之間微秒級的時(shí)間。這個(gè)值被傳送給識別平臺,如果被超過,則將從所述識別平臺提供一個(gè)onSilence事件(見2.4.2)。如果未規(guī)定,則所述語音平臺將使用缺省值。
·babbleTimeout可選。微秒級的時(shí)間周期,在該周期中,在檢測語音之后所述識別器必須返回一個(gè)結(jié)果。就在automatic(自動(dòng))和single(單)模式情況下的reco來說,這適于在語音檢測和停止調(diào)用之間的所述周期。就在‘multiple(多重)’模式下的reco來說,這個(gè)超時(shí)應(yīng)用于在語音檢測和每次識別返回之間的所述周期上,即在每次結(jié)果返回或其他事件之后重新開始所述周期。如果被超過,則根據(jù)是否發(fā)生了誤差產(chǎn)生不同的事件。如果所述識別器仍然在處理音頻,即處于特別長發(fā)言情況下,則利用狀態(tài)代碼13(見2.4.4)產(chǎn)生onNoReco事件。但是,如果由于任何原因所述超時(shí)被超過,則將產(chǎn)生一個(gè)識別器誤差,并產(chǎn)生onTimeout事件。如果未規(guī)定,則所述語音平臺將默認(rèn)一個(gè)初始植。
·maxTimeout可選。在識別開始和返回到所述瀏覽器的結(jié)果之間的微秒級時(shí)間周期。如果被超過,則通過所述瀏覽器產(chǎn)生onTimeout事件-這為分布式環(huán)境中的網(wǎng)絡(luò)和識別器故障提供了必要的條件。就在‘多重’模式下的reco來說,和babbleTimeout一樣,在每次識別返回或其他事件之后重新開始所述周期。注意,maxTimeout屬性應(yīng)當(dāng)大于或等于initialTimeout和babbleTimeout的總和。如果未規(guī)定,則該值將是瀏覽器默認(rèn)值。
·endSilence可選。就在自動(dòng)模式下的reco來說,是在所述識別返回以后可能沒有語音的一次發(fā)言結(jié)束后微秒級的靜默周期。忽略除自動(dòng)模式外的其他模式的reco。如果未規(guī)定,缺省值默認(rèn)為平臺內(nèi)部值。
·reject可選。識別拒絕閾值,低于該閾值,所述平臺將產(chǎn)生‘no reco’事件。如果未規(guī)定,所述語音平臺將使用缺省值。置信分范圍為從0到100(整數(shù))。拒絕值位于其間。
·server可選。語音平臺的URI(當(dāng)標(biāo)簽解釋程序和識別平臺沒有位于一起時(shí)使用)。舉例值可以是server=protocol//yourspeechplatform。應(yīng)用程序?qū)懭肫饕材軌蛲ㄟ^將一個(gè)查詢字符串添加到URI字符串上以向語音平臺提供特定設(shè)置,例如protocol//yourspeechplatform?bargeinEnergyThreshold=0.5·langID可選。字符串,用于指出語音引擎應(yīng)使用哪一種語言。該字符串格式遵循所述xmllang規(guī)定。例如,langID=‘en-us’表示美國英語。只有當(dāng)langID在所述語法元素(見2.1.2)中沒有規(guī)定時(shí)這個(gè)屬性才有效。
·mode可選。用于規(guī)定將被遵循的識別模式。如果未規(guī)定,默認(rèn)為‘a(chǎn)utomatic’模式。
2.2.2特征下述特征包含由所述識別處理返回的結(jié)果(這些由所述上層瀏覽器支持)。
·recoResult只讀。識別結(jié)果,如2.1.2所述,保持在包含語義標(biāo)記語言(SML)的XML DOM節(jié)點(diǎn)對象中。在沒有識別的情況下,所述特征返回空值。
·text讀/寫。用于保持被識別的字的文本的字符串(即,在讀模式下在recoResult的SML識別返回中的最高層元素的文本屬性內(nèi)容的簡寫。在寫模式下,可以分配一個(gè)字符串,然后對該字符串進(jìn)行語法分析,如同該字符串與識別結(jié)果相對應(yīng)一樣。所述寫模式允許標(biāo)記語言標(biāo)簽的擴(kuò)展,并允許對所述客戶機(jī)設(shè)備的其他組件和應(yīng)用程序進(jìn)行處理。可以從“smex”消息對象中獲得所述字符串)。
·status只讀。從識別平臺返回的狀態(tài)代碼。對于成功識別來說可能的值是0,或者錯(cuò)誤值是-1到-4(如在Start方法(2.3.1部分)、Activate方法(2.3.4部分)上可能的異常中規(guī)定的那樣),在識別器事件的接收(見2.4)中被設(shè)置為-11到-15。
2.3 Object method(對象方法)使用在Reco的DOM對象中的下述方法可以控制Reco激活和語法激活。利用這些方法,上層瀏覽器能夠開始和停止Reco對象,取消進(jìn)行中的識別,激活和去激活個(gè)別的語法頂層規(guī)則(僅僅是上層瀏覽器)。
2.3.1 Start(開始)所述Start方法開始識別處理,將所有的用于沒有被明確去激活的識別環(huán)境的頂層規(guī)則作為有效語法使用,。
Syntax(語法)Object.Start()Return value(返回值)無。
Exception(例外)所述方法設(shè)置非零狀態(tài)代碼,當(dāng)錯(cuò)誤時(shí)激活一個(gè)onNoReco事件??赡艿腻e(cuò)誤包括沒有語法(reco狀態(tài)=-1),未能加載語法,該錯(cuò)誤可能是與不能編譯語法、不存在URI(reco狀態(tài)=-2)或語音平臺誤差(reco狀態(tài)=3)類似的各種原因引起的。
2.3.2 stop(停止)所述Stop方法是一個(gè)調(diào)用,用于結(jié)束識別處理。所述Reco對象停止記錄音頻,而且所述識別器將所接收音頻的識別結(jié)果返回到記錄被停止的點(diǎn)。釋放由所述Reco使用的所有識別資源,而且它的語法被去激活。(注意,由于識別器本身在識別一個(gè)完全語句之后將停止,所以,在自動(dòng)模式的典型識別中不需要使用這種方法。)如果所述Reco還沒有開始,那么,所述調(diào)用不起作用。
Syntax(語法)Object.Stop()Return value(返回值)無。
Exception(例外)無。
2.3.3 Cancel(取消)所述Cancel方法停止將所述音頻反饋給所述識別器、去激活所述語法和釋放所述識別器,并丟棄任何識別結(jié)果。所述瀏覽器將忽略用于被取消的識別的識別結(jié)果。如果所述識別器沒有被開始,則所述調(diào)用無效。
Syntax(語法)Object.concel()Return value(返回值)無。
Exception(例外)無。
2.3.4 Activate(激活)所述Activate方法激活上下文無關(guān)語法(CFG)中的頂層規(guī)則。由于在‘Started(開始的)’識別處理期間它將無效,所以,在開始識別之前必須調(diào)用激活。注意,用于還沒有被明顯去激活的識別上下文的所有語法頂層規(guī)則已經(jīng)被處理為激活。
Syntax(語法)Object.Activate(strName);Parameters(參數(shù))StrName必須的。將被去激活的規(guī)則名稱。一個(gè)空字符串將去激活所有規(guī)則。
Return value(返回值)無。
Exception(例外)無。
2.3.5 Deactivate(去激活)該方法去激活在語法中的頂層規(guī)則。如果該規(guī)則不存在,則該方法不起作用。
Syntax(語法)Object.Activate(strName);Parameters(參數(shù))strName必需的。要被去激活的規(guī)則名稱。一個(gè)空字符串去激活所有規(guī)則。
Return value(返回值)無Exception(例外)無2.4 Reco事件所述Reco DOM對象支持下述事件,這些事件的處理程序可以被規(guī)定為所述Reco元素的屬性。
2.4.1 onReco當(dāng)所述識別器具有所述瀏覽器可用的一個(gè)識別結(jié)果時(shí),這個(gè)事件獲得激活。對于在自動(dòng)模式中的Reco,這個(gè)事件自動(dòng)停止識別處理并清除資源(見2.3.2)。OnReco通常被用于對所述識別結(jié)果的程序分析和將所述結(jié)果處理為所述頁。
Syntax(語法) Event object Info(事件對象信息) Event Properties(事件特征)雖然所述事件處理程序沒有直接接收所述特征,但該處理程序能查詢與數(shù)據(jù)相關(guān)的事件對象(見在下面例子中的事件對象的使用)舉例下面的XHTML段落使用onReco調(diào)用一個(gè)腳本去分析識別結(jié)果并將所述值分配給適當(dāng)?shù)淖侄巍?br>
<pre listing-type="program-listing"><![CDATA[ <input name=“textBoxorigin”type=“text”/> ?。糹nput name=“txtBoxDest”type=“text”/> ?。糝eco onReco=“processCityRecognition()”/> ?。糶rammar src=“/grammars/cuties.xml”/> ?。?reco> ?。約cript><![CDATA[ >function processCityRecognition(){ smlResult=event.srcElenent.recoResult; origNode= smlResult.selectSingleNode(“//origin_city”);if(origNode!=null),txtBixDEST.value= origNode.text; destNode= smlResult.selectSinglNode(“//dest_city”); if(destNode?。娇?,txtBoxDestvalue=destNode.text; } ]]></script>]]></pre>2.4.2 onSilenceonSilence用于在所述Reco上的initialTimeout屬性(見2.2.1)中規(guī)定的持續(xù)時(shí)間周期之前對由所述識別平臺檢測的無語音事件進(jìn)行處理。這個(gè)事件自動(dòng)取消了與自動(dòng)識別模式相關(guān)的識別處理。 Event object Info(事件對象信息) Event Properties(事件特征)雖然所述事件處理程序沒有直接接收特征,但是,所述處理程序可以查詢與數(shù)據(jù)相關(guān)的事件對象。
2.4.3 onTimeoutonTimeout處理兩類通常反映了來自所述語音平臺的誤差的事件。
·它處理由所述標(biāo)簽解釋程序發(fā)出的事件,所述標(biāo)簽解釋程序發(fā)信號通知在所述識別被完成之前在maxtime屬性(見2.2.1)中規(guī)定的周期到期了。這個(gè)事件通常反映在分布式結(jié)構(gòu)中可能發(fā)生的問題。
·當(dāng)識別已經(jīng)開始、但處理已經(jīng)停止,而且在由babbleTimeout規(guī)定的所述周期中沒有識別時(shí)它還處理(ii)由所述語音識別平臺發(fā)出的事件(見2.2.1)。
這個(gè)事件自動(dòng)取消所述識別處理。
Syntax(語法) Event object Info(事件對象信息) Event Properties(事件特征)雖然所述事件處理程序沒有直接接收特征,但是,所述處理程序可以查詢與數(shù)據(jù)相關(guān)的事件對象。
2.4.4 onNoRecoonNoReco是一個(gè)當(dāng)它不能返回有效識別結(jié)果時(shí)用于由所述語音識別平臺發(fā)出的事件的處理程序。其中這可能發(fā)生的不同情況由狀態(tài)代碼區(qū)分。該事件自動(dòng)停止識別處理。
Syntax(語法) Event object Info(事件對象信息) Event Properties(事件特征)雖然所述事件處理程序沒有直接接收特征,但是,所述處理程序可以查詢與數(shù)據(jù)相關(guān)的事件對象。
3 Prompt(提示)所述提示元素被用于規(guī)定系統(tǒng)輸出。它的內(nèi)容包括下述中的一個(gè)或多個(gè)
·聯(lián)機(jī)的或被參考的文本,它可以利用韻律學(xué)或其他語音輸出信息進(jìn)行標(biāo)記;·從所包含的文本中隨機(jī)提取的可變值;·鏈接到音頻文件。
提示元素可以由下層瀏覽器(或被SMIL 命令激活的)或由在上層瀏覽器上的對象方法進(jìn)行說明性的解釋。
3.1 Prompt content(提示內(nèi)容)所述提示元素包含用于系統(tǒng)輸出的資源,所述系統(tǒng)輸出可以是文本、對音頻文件的參考或兩者。
簡單的提示僅僅需要規(guī)定輸出所需要的文本,例如,<promptid=“Welcome”>
Thank you for calling ACME weather report.
</prompt>
這個(gè)簡單的文本還可以進(jìn)一步包含下述類型之一的標(biāo)記。
3.1.1語音合成標(biāo)記(Speech Synthesis markup)在提示元素中可以使用任何格式的語音合成標(biāo)記語言。(這個(gè)格式在3.2.1中描述的‘tts’屬性中規(guī)定)下述的例子示出了具有用于強(qiáng)調(diào)其中某些字的指令的文本<prompt id=“giveBalance”>
you have<emph>five dollars</emph>left in your accont</prompt>
3.1.2動(dòng)態(tài)內(nèi)容可能是恰恰在輸出所述提示之前需要在所述客戶機(jī)上計(jì)算所述提示的實(shí)際內(nèi)容。為了確認(rèn)一個(gè)特定值,例如在一個(gè)變量中需要解除參考所述值。所述值元素可以被用于這個(gè)目的。
value元素value可選。在文檔中檢索一個(gè)元素的值。
屬性·targetElement可選。必須規(guī)定href或targetElement。該元素的id包含將要被檢索的值。
·targetAttribute可選。所述元素的屬性,將從中檢索所述值。
·href可選。一個(gè)音頻段的URI。如果兩個(gè)都存在,那么,href將取代targetElement。
所述targetElement屬性被用于參考位于包含文檔中的一個(gè)元素。其id由targetElement規(guī)定的元素的內(nèi)容被插入到將被合成的文本中。如果所希望的內(nèi)容被保持在所述元素的一個(gè)屬性中,則所述targetAttribute屬性可以被用于規(guī)定在targetElement上所需的屬性。對于在HTML格式控制中解除參考所述值時(shí)是有用的。例如,在下面的表述中,“txtBoxOrigin”和“txtBoxDest”的“value”屬性在輸出所示提示之前被插入到所述文本中<prompt id=“Confirn”>
do you want to travel fiom<value targetElement=“txtBoxOrigin”targetAttribute=“value”/>
?</prompt>
3.1.3 Audio files(音頻文件)
所述值元素也可以被用于引用一個(gè)代替一個(gè)合成提示或者在該合成提示內(nèi)的用于播放的預(yù)先記錄的音頻文件。下面的例子在所述提示結(jié)束處播放一個(gè)蜂鳴<prompt>
after the beep,please record your message.
<value href=“/way/beep.wav/”>
</prompt>
3.1.4 Referenced prompt(被參考的提示)不是規(guī)定內(nèi)容聯(lián)機(jī),而是所述src屬生可以經(jīng)過URI利用一個(gè)空元素去參考外部內(nèi)容,如下<prompt id=“welcome”src=“/ACMEWeatherPrompts#Welcome”/>
所述src屬性的目標(biāo)可以保持規(guī)定用于聯(lián)機(jī)提示的任何一個(gè)或所有的上述內(nèi)容。
3.2 Attributes和Properties(屬性和特征)所述提示元素保持下述屬性(下層瀏覽器)和特征(下層和上層瀏覽器)。
3.2.1 Attributes(屬性)·tts可選。用于文本-語音合成的標(biāo)記語言類型。缺省值為“SAPI 5”。
·src如果規(guī)定了聯(lián)機(jī)提示,則可選。一個(gè)被參考提示的URI(見3.1.4)。
·bargein可選。整數(shù)。從提示開始到提示所述重放可能被聽眾中斷時(shí)的一個(gè)微秒級的時(shí)間周期。缺省值是無限大,即,不允許任何bargein(bargein)。Bargein=0允許直接的bargein。它被用于判斷哪種bargein受到平臺的支持。根據(jù)在所述reco開始時(shí)哪一種被允許,這樣可以配置關(guān)鍵字或基于引擎的bargein次數(shù)。
·prefetch可選。布爾標(biāo)記,用于當(dāng)加載所述頁時(shí)指出所述提示是否應(yīng)當(dāng)被立即合成并被高速緩存在瀏覽器處。默認(rèn)值為假3.2.2 Properties(特征)上層瀏覽器支持下述所述提示的DOM對象中的特征。
·bookmark只讀。字符串對象,用于記錄所遇到的最后一個(gè)合成書簽的文本。
·status只讀。從所述語音平臺返回的狀態(tài)代碼。
·Innertext只讀。這個(gè)特征將提供所述提示的文本轉(zhuǎn)錄,該文本轉(zhuǎn)錄將被傳送給所述合成器。例如,如果一個(gè)提示包括播放音頻波文件,那么,這個(gè)特征提供那個(gè)提示(通常是作為所述音頻波文件存儲的)的文本版本,然后它將被顯示,或者例如通過將所述提示的文本版本提供給運(yùn)行于所述客戶機(jī)設(shè)備上的一個(gè)組件或應(yīng)用程序加以使用。該innertext特征還能夠被用于提供包含動(dòng)態(tài)內(nèi)容的提示的文本版本。
3.3 Prompt methods(提示方法)在所述提示的DOM對象中可以使用下述方法控制提示播放。利用這種方式,上層瀏覽器可以開始和停止提示對象。在進(jìn)行中暫停和恢復(fù)所述提示,以及改變被合成語音的速度和音量。
3.3.1 Start(開始)開始重放所述提示。除非給定一個(gè)參數(shù),否則所述方法播放所述對象的內(nèi)容。在一個(gè)給定時(shí)間,僅僅有一個(gè)單一的提示對象被認(rèn)為是‘開始’,因此,如果連續(xù)調(diào)用Start,所有的重放都將被按順序進(jìn)行。
Syntax(語法)Objects.Start([strText]);Parameters(參數(shù))o strText將被傳送給所述合成器的文本。如果存在,這個(gè)參數(shù)將取代所述對象的內(nèi)容。
Return value(返回值)無。
Exception(例外)如果服務(wù)器已經(jīng)釋放了音頻緩沖器,則將狀態(tài)設(shè)置為-1,并激活onComplete事件。
3.3.2 Pause(暫停)不用刷新所述音頻緩存器的情況下暫停重放。如果重放被暫?;蛲V沽?,則這種方法不起作用。
Syntax(語法)Object.Pause();Retum value(返回值)無。
例外無。
3.3.3 Resume(恢復(fù))不用刷新所述緩存器的情況下恢復(fù)重放。如果所述重放并沒有被暫停,則這種方法不起作用。
Syntax(語法)Object.Resume();Retum value(返回值)無。
Exception(例外)當(dāng)恢復(fù)失敗時(shí)產(chǎn)生一個(gè)例外。
3.3.4 Stop(停止)如果沒有準(zhǔn)備好,則停止重放,并刷新所述音頻緩存器。如果重放已經(jīng)被停止,則該方法簡單地刷新所述音頻緩存器。
Syntax(語法)Object.Stop();Return value(返回值)無。
Exception(例外)無。
3.3.5 Change(改變)改變重放的速度和/或音量。所述改變可以在播放期間被調(diào)用。
Syntax(語法)Object.Change(speed,volume);Parameters(參數(shù))o Speed(速度)必須。用于改變的因數(shù)。Speed=2.0表示當(dāng)前速率的兩倍,Speed=0.5表示當(dāng)前速率的一半,Speed=0表示恢復(fù)所述缺省值。
o volume(音量)必須。用于改變的因數(shù)。Volume=2.0表示當(dāng)前音量的兩倍,volume=0.5表示當(dāng)前音量的一半,volume=0表示恢復(fù)所述缺省值。
Return value(返回值)無。
Exception(例外)無。
3.3.6提示控制的例子下述的例子示出了使用上述方法的所述提示控制如何被創(chuàng)作以用于不支持關(guān)鍵字bargein機(jī)制的一個(gè)平臺。
<pre listing-type="program-listing"><![CDATA[ ?。糷tml> ?。紅itle>prompt control</title> ?。糷ead> ?。約cript><!- function checkKWBargein(){ news.change(1.0,0.5);//驗(yàn)證時(shí)關(guān)掉音量 if(keyword.text==””){∥結(jié)果低于閾值 news.change(1.0,2.0);//恢復(fù)音量 keyword.Start();//重新開始識別 }else{ news.Stop();∥檢測到關(guān)鍵字!停止該提示 //作任何所需要的事情 } } // ?。?script> <script for=“window”event=“onload”> <!- news.Start();keyword.Start(); // ?。?script> </head> body> ?。紁romptid=“news”bargein=“0”> Stocks turnd in another lackluster performance Wednesday as investors receivedlittle incentive to make any big moves ahead of next week’s Fedsral Reservemeeting.The tech-heavy Nasdaq Composition Index dropped 42.51 points to close at2156.26.The Dow Jones Industrial Average fell 17,05 points to 10866.46 after anearly-afternoon rally failed. -<!- ?。?prmpt> ?。紃eco id=“keyword”reject=“70” onReco=“checkKWBargein()”> <grammer src=http//denali/news bargein grammer.xml/> </reco> ?。?body> ?。?html>]]></pre>3.4提示事件所述提示DOM對象支持下述事件,它們的處理程序可以被規(guī)定為所述提示元素的屬性。
3.4.1 onBookmark當(dāng)遇到一個(gè)合成書簽時(shí)激活。所述事件不暫停重放。
Syntax(語法)
Event Object Info(事件對象信息)
Event Properties(事件特征)雖然所述事件處理程序沒有直接接收特征,但是,所述處理程序能夠查詢與數(shù)據(jù)相關(guān)的所述事件對象。
3.4.2 onBargein當(dāng)檢測到一個(gè)用戶的bargein事件時(shí)激活。(注意,對什么構(gòu)成了例如能量檢測或關(guān)鍵字識別的一個(gè)bargein事件的確定被傳送到所述平臺。)這個(gè)事件處理程序的說明不會(huì)自動(dòng)地打開所述bargein。
Syntax(語法) Event Object Info(事件對象信息) Event Properties(事件特征)雖然事件處理程序沒有直接接收特征,但所述事件處理程序可以查詢與數(shù)據(jù)相關(guān)的所述事件的對象。
3.4.3 onComplete當(dāng)所述提示重放達(dá)到終點(diǎn)或遇到例外時(shí)(如上面所定義的)激活。
Syntax(語法)
Event Object Info(事件對象信息) Event Properties(事件特征)雖然所述事件處理程序沒有直接接收特征,但是,所述處理程序可以查詢與數(shù)據(jù)相關(guān)的事件對象。
3.4.4使用bookmarks(書簽)和events(事件)下面的例子示出了書簽事件如何能夠被用于確定用戶響應(yīng)的語義-對出發(fā)城市的校正或?qū)δ繕?biāo)城市的提供-按照何時(shí)在所述提示輸出期間發(fā)生bargein。所述onBargein處理程序調(diào)用一個(gè)將全局‘mark’變量設(shè)置為在所述提示中遇到的最后一個(gè)書簽的腳本,并且這個(gè)‘mark’的值被用在所述reco的后處理函數(shù)(“heard”)中以設(shè)置正確的值。
<pre listing-type="program-listing"><![CDATA[ ?。約cript><![CDADA[ var mark; function interrupt(){ mark=event.srcElement.bookmark; } function ProcessCityConfirm(){ confirm stop();//flush the audio buffer(刷新音頻緩存) if(mark==“mark_origin_city”) txtBoxOrigin.value= event.srcElement.text; else txtBoxDest value=event srcElement>text; } ]]></script> <body> ?。糹nput name=“txtBoxOrigin”value=“Seattle” type=“text”/> ?。糹nput name=“txtBoxDest”type=“text”/> ....... ?。紁rompt id=“confirm”onBargein=“interrupt()” bargein=“0”> From<bookmark mark=“mark_origin_city”/> ?。紇alue targetElement=“origin” targetAttribute=“value”/> please say<bookmark mark=“mark_dest-city”/>the destination city you want to travel to. </prompt> <reco onReco=“ProcessCityConfirm()”> <grammar src=“/grm/1033/cities.xml”/> </reco> ....... ?。?body>]]></pre>4 DTMF創(chuàng)建一個(gè)DTMF識別對象。所述對象可以使用聯(lián)機(jī)標(biāo)記語言語法或通過腳本編寫被實(shí)例化。當(dāng)被激活時(shí),DTMF能夠使得提示對象激活一個(gè)bargein對象。應(yīng)當(dāng)注意,下面結(jié)合在第五部分中討論的DTMF識別和調(diào)用控制所討論的所述標(biāo)簽和事件通常適用于在聲音瀏覽器216和媒體服務(wù)器214之間的交互作用。
4.1 Content(內(nèi)容)
·dtmfgrammar用于聯(lián)機(jī)語法。
·bind將DTMF轉(zhuǎn)換結(jié)果分配給適當(dāng)?shù)淖侄?。Attributes(屬性)·targetElement必須。將向其分配部分識別結(jié)果的元素(與W3CSMIL2.0相同)。
·targetAttribute將向其分配所述識別結(jié)果的所述目標(biāo)元素的屬性(與SMIL 2.0相同).缺省值是“value”。
·test與所述分配相關(guān)的條件。缺省值是真。
例1將多個(gè)鍵映像到文本上。
<pre listing-type="program-listing"><![CDATA[ ?。糓DTF id=“city_choice”timeout=“2000”numDigits=“1”> <dtmfgrammar> <key value=“1”>Seattle</key> <keyvalue=“2”>Boston</key> ?。?dtmfgrammar> ?。糱ind targetElement=“city”targetAttribute=“value”> /> </DTMF>]]></pre>當(dāng)“city_choice”被激活時(shí),如果用戶按壓1,則“Seattle”將被分配給輸入字段,如果用戶按壓2,則“Boston”將被分配給輸入字段,其它情況則什么也不做。
例2DTMF如何與多個(gè)字段一起使用。
<pre listing-type="program-listing"><![CDATA[ <input type=“text”name=“area_code”/> ?。糹nput type=“text”name=“phone_number”/><DTMF id=“area_code”numDigits=“3”onReco=“extension.Actuvate()”><bind targetElement=“area_code”/></DTMF><DTMF id=“extension”numDigits=“7”> ?。糱ind targetElement=“phone_number”/><DTMF>]]></pre>這個(gè)例子表明了如何允許用戶輸入到多個(gè)字段。例3當(dāng)用戶開始DTMF時(shí)如何允許語音和DTMF輸入以及禁止所述語音。
<pre listing-type="program-listing"><![CDATA[<inputtype=“text”name=“credit_card_number”/><prompt onBookmark=“dtmf.Start();speech.Start()”bargein=“0”> please say<bookmark name=“starting”/> or enter your credit card number now</prompt><DTMF id=“dtmf”escape=“#”length=“16”interdigitTimeout=“2000”onkeypress=“speech.Stop()”><bind targetElement=“credit card number”/></DTMF><reco id=“speech”> <grammar src=“/grm/1033/digits.xml”/> <bind targetElement=“credit card number”/></reco>]]></pre>4.2屬性和特征
4.2.1屬性·dtmfgrammar必須。DTMF語法的URI。
4.2.2特征·DTMFgrammar讀-寫。
一個(gè)XML DOM節(jié)點(diǎn)對象,用于將DTMF表示到字符串轉(zhuǎn)換矩陣(也被稱之為DEMF語法)。缺省語法是<pre listing-type="program-listing"><![CDATA[ <dtmGrammar> ?。糼eyvalue=“0”>0</key> ?。糼eyvalue=“1”>1</key> ... <key value=“9”>9</key> <keyvalue=“*”>*</key> <keyvalue=“#”>#</key> </dtmfgrammar>]]></pre>·flush讀/寫,布爾標(biāo)記,用于指出在激活之前是否自動(dòng)刷新在基礎(chǔ)電話接口卡上的DTMF緩存器。缺省值是假,用于啟用超前鍵入。
·escape讀-寫。該escape鍵用于結(jié)束所述DRMF讀對話。Escape鍵是一個(gè)鍵。
·numDigits讀-寫。用于結(jié)束所述DTMF讀對話的擊鍵數(shù)量。如果同時(shí)規(guī)定了所述escape和length(),那么,當(dāng)滿足其中任何一個(gè)條件時(shí),所述DTMF對話結(jié)束。
·dtmfResult只讀字符串。用于存儲用戶已經(jīng)輸入的DTMF鍵。如果擊鍵了,則結(jié)果中包括所述escape。
·text只讀字符串,用于存儲空白間隔的符號串,其中根據(jù)DTMF語法轉(zhuǎn)換每個(gè)符號。
·initialTimeout讀-寫。用于接收第一次DTMF擊鍵的微秒級的超時(shí)周期。如果未規(guī)定,則缺省值為所述電話平臺的內(nèi)部設(shè)置。
·interdigitTimeout讀-寫。用于相鄰DTMF擊鍵的微秒級的超時(shí)周期。如果未規(guī)定,缺省值為所述電話平臺的內(nèi)部設(shè)置。
4.3 Object methods(對象方法)4.3.1 Start允許DTMF中斷和開始一次DTMF讀取對話。
Syntax(語法);Object.Start();Return(返回值)無Exception(例外)無4.3.2 Stop禁止DTMF。然而由所述用戶輸入的擊鍵,仍保留在所述緩存器中。
Syntax(語法)Object.Stop();Return(返回值)無Exception(例外)無4.3.3 Flush刷新所述DTMF緩存器。在DTMF對話期間不可以調(diào)用所述Flush。
Syntax(語法)object.Flush();Retum(返回值)無Exception(例外)無4.4事件4.4.1 onkeypress當(dāng)按壓DTMF鍵時(shí)激活。這取代遺傳自所述HTMF控制的缺省事件。當(dāng)用戶擊打所述escape鍵時(shí),是onReco事件、而不是onKeypress事件被激活。
語法
事件對象信息 事件特征雖然所屬事件處理程序沒有直接接收特征,但是,所述處理程序可以查詢與數(shù)據(jù)相關(guān)的事件對象。
4.4.2 onReco當(dāng)一次DTMF對話結(jié)束時(shí)激活。所述事件自動(dòng)禁止當(dāng)前DTMF對象。
語法 事件對象信息 事件特征雖然所述事件處理程序沒有直接接收特征,但是,所述處理程序可以查詢與數(shù)據(jù)相關(guān)的事件對象。
4.4.3 onTimeout當(dāng)在超時(shí)之前沒有接收到短語完成事件時(shí)激活。該事件自動(dòng)停止識別處理過程。
語法 事件特征信息; 事件特征雖然所述事件處理程序沒有直接接收到特征,但是,所述處理程序能查詢與數(shù)據(jù)相關(guān)的時(shí)間對象。
5 CallControl object(呼叫控制)對象表示電話聲音瀏覽器的電話接口(呼叫、終端和連接)。該對象在GUI瀏覽器中與窗口對象一樣。因此,所述電話對象的壽命與所述瀏覽器示例本身相同。用于所述電話的聲音瀏覽器用具體例子將所述電話對象實(shí)例化,一個(gè)對應(yīng)每個(gè)呼叫。用戶不能實(shí)例化或處理所述對象。
關(guān)于這一點(diǎn),只有和第一方呼叫控制相關(guān)的特性經(jīng)過這個(gè)對象顯露出來。
5.1特征·address(地址)只讀。XML DOM節(jié)點(diǎn)對象。實(shí)施專用。這是呼叫者的地址。對于PSTN,可以是ANI和ALI的一個(gè)組合。對于VOIP,可以是所述呼叫者的IP地址。
·ringsBeforeAnswer在對輸入呼叫應(yīng)答之前震鈴的數(shù)量。缺省無限制,這意味著開發(fā)者必須使用下面的Answer()方法回答所述電話呼叫。當(dāng)呼叫中心使用ACD查詢所輸入的電話呼叫時(shí),這個(gè)數(shù)量可以被設(shè)置為0。
5.2 Methods(方法)注意這里所有的方法都是同步的。
5.2.1 transfer(轉(zhuǎn)移)轉(zhuǎn)移所述呼叫。對于盲區(qū)轉(zhuǎn)移,所述系統(tǒng)可以終止原始呼叫,并且一旦所述轉(zhuǎn)移完成,則釋放系統(tǒng)資源。
語法telephone.Transfer(strText);參數(shù)o strText必須。想要的接收器地址。
返回值無例外當(dāng)所述呼叫轉(zhuǎn)移失敗時(shí)例如當(dāng)終端方正在忙、沒有這個(gè)號碼、傳真或應(yīng)答機(jī)制應(yīng)答時(shí)產(chǎn)生一個(gè)例外。
5.2.2 Bridge第三方轉(zhuǎn)移。在所述呼叫被轉(zhuǎn)移之后,所述瀏覽器可以釋放分配給所述呼叫的資源。當(dāng)該被轉(zhuǎn)移的呼叫使用strUID返回時(shí),它一直持續(xù)到所述應(yīng)用程序恢復(fù)所述對話狀態(tài)為止?;A(chǔ)電話平臺可以將返回的呼叫傳送給不同的瀏覽器。只有當(dāng)接收者終止所述呼叫時(shí)才可以返回所述呼叫。
語法telephone.Bridge(strText,strUID,[imaxTime]);
參數(shù)o strText必須。想要的接收器的地址。
o strUID必須。專用于識別當(dāng)前呼叫的對話ID。當(dāng)所轉(zhuǎn)移的呼叫被傳送回來時(shí),在地址屬性中將出現(xiàn)所述srtUID。
o imaxTime可選。被轉(zhuǎn)移呼叫的秒級最大持續(xù)時(shí)間。如果未規(guī)定,缺省值為平臺內(nèi)部值。
返回值無。
例外無。
5.2.3 Answer(應(yīng)答)應(yīng)答所述電話呼叫。
語法telephone.Answer();返回值無。
例外當(dāng)不存在連接時(shí)產(chǎn)生一個(gè)例外。在這種情況下將不激活onAnswer事件。
5.2.4 Hangup(掛機(jī))結(jié)束電話呼叫。如果當(dāng)前沒有呼叫在進(jìn)行,則不起作用。
語法telephone.Hangup();返回值無。
例外
無。
5.2.5 Connect(連接)開始第一方向外訪問的電話喊叫。
語法telephone.Connect(strText,[iTimeout]);參數(shù)o strText必須。希望的接收器的地址。
o iTimeout可選。在放棄嘗試之前微秒級的時(shí)間。如果未規(guī)定,缺省值為平臺內(nèi)部值。
返回值無。
例外當(dāng)所述呼叫不能被完成、包括遇到忙信號或到達(dá)一個(gè)FAX或應(yīng)答機(jī)制時(shí)產(chǎn)生一個(gè)例外(注意硬件可能不支持這個(gè)特性)。
5.2.6 Record(記錄)將用戶的音頻記錄到文件中。
語法telephone.Record(uel,endSilence,[maxTimeout],[initialTimeout]);參數(shù)o url必須。所述記錄結(jié)果的url。
o endSilence必須。微秒級的時(shí)間,用于在檢測到靜默之后停止所述記錄。
o maxTimeout可選。用于記錄的秒級最大時(shí)間。缺省值為平臺規(guī)定。
o initialTimeout可選。在記錄開始時(shí)允許的靜默最大時(shí)間(微秒級)。
返回值無。
例外當(dāng)所述記錄不能被寫入所述url時(shí)產(chǎn)生一個(gè)例外。
5.3事件處理程序使用電話聲音瀏覽器的APP開發(fā)者可以執(zhí)行下述事件處理程序。
5.3.1 onIncoming()當(dāng)聲音瀏覽器接收到一個(gè)輸入電話呼叫時(shí)被調(diào)用。所有的開發(fā)者都能夠使用這個(gè)處理程序去讀取呼叫者的地址和在應(yīng)答所述電話呼叫之前調(diào)用定制的特性。
5.3.2 onAnswer()當(dāng)所述聲音瀏覽器應(yīng)答所輸入的電話呼叫時(shí)被調(diào)用。
5.3.3 onhangup()當(dāng)用戶掛斷電話時(shí)被調(diào)用。當(dāng)所述程序調(diào)用Hungup或Transfer方法時(shí),這個(gè)事件不能被自動(dòng)激活。
5.4例子這個(gè)例子示出了腳本編制,用于鏈接到所述呼叫控制事件以操縱所述電話對話。
<pre listing-type="program-listing"><![CDATA[ ?。糎TML> ?。糎EAD> <TITLE>Logonpage</TITLE> ?。?HEAD> <SCRIPT> var focus; function RunSpeech(){ if(logon.user.value==“”){focus=“user;p_uid.Start();g_login.Start();dtmf.Start();return; } if(logon.pass.value==“”){ focus=“pin”; P_Pin.Start();g_lodin,Start();dtmf.Start();return; }p_thank.Start(0;logon.submit();}function logon_reco(){ res=event.srcElement.recoResult; Pnode=res.selectSingleNode(“//uid”);If(Pnode?。絥ull) Logon.user.value=Pnode.xml;Pnode=res.selectSingleNode(“∥password”);If(Pnode!=uull) Logon.pass.value=Pnode.xml;}function dtmf_reco(){ res=event.srcElement.dtmfResult; if(focus==“user”) logon.user.value=res; else logon.pin.value=res;}</SCRIPT><SCRIPT for=“callControl”event=“onIncoming”> ?。?!-//read address,prepare customized stufff any callControl.Answer();//</SCRIPT> <SCRIPT for=“callControl”event=“onOffhook”> <!-p_main.Start();g_login,Start();dtmf.Start(); focuse=“user”;// <SCRIPT><SCRIPT for=“window”event=“onload”> ?。?!- if(logon.user.value!=“”){ p_retry.Start(); logon.user.value=“”checkFields();}//</SCRIPT><BODY> <reco id=“g_login”>oReco=“l(fā)ogin_reco();runSpeech()”timeout=“5000”onTimeout=“p_miss.Start();runSpeech()”><grammar src=http//kokaneei/etradedemo/speechonlv/login.xml/> <reco><dtmfid=“dtmf” escape=“#” onkeypress=“g_login.Stop();”onreco=“dtmf_reco();RunSpeech()” interdigitTimeout=“5000” onTimeout“dtmf.Flush();p_miss.Start();RunSpeech”/> <prompt id=“p_main”>please say your user ID and pin number</prompt> ?。紁rompt id=“p_uid”>pleasejust say your user ID</prompt> <prompt id=“p_pin”>pleasejust say your pin number</prompt> ?。紁rompt id=“p_miss”>Sorry,I missed that</prompt> <prompt id=“p_thank”>thank you.please wait while I verify your identity</prompt> ?。紁rompt id=“p_retry”>sorry,your user ID and pin number do not match</prompt> <H2>login<“l(fā)ogon”> ?。糵ormid=“l(fā)ogon”> UID<input name=“user”type=“text”> OnChange=“runSpeech()”/> Pin<inputname=“pass”type=“password” OnChange=“runspeech()”/> </form> </BODY> ?。?HTML>]]></pre>6控制對話流程6.1使用HTML和腳本實(shí)現(xiàn)對話流程這個(gè)例子示出了如何實(shí)現(xiàn)一個(gè)簡單的對話流程,所述流程查找與輸入框相關(guān)的值并提供用于所述輸入的與上下文敏感的幫助。它使用在所述HTML輸入機(jī)制(在一可視瀏覽器中作為“tooltip”(工具觸點(diǎn))機(jī)制使用的)上的標(biāo)題屬性幫助形成所述幫助提示的內(nèi)容。
<pre listing-type="program-listing"><![CDATA[<html><title>Contex Sensitive help</title><head> <script>var focus;function RunSpeech(){ if(trade.stock.value=””){ focus=“trade.stock”; p_stock,Start(); retum; }if(trade.op.value=“”){ foeus=“trade.op”; p_op.Start(); retum;}//..repeat above for all fieldstrade.submit();}function handl(){ res=event.srcElement.recoResult; if(res.text=“help”){ text=“Pleasejust say”; text+=document.all[focus].title; p_help.Start(text);}else{ //proceed with value assignments } }</script></help><body> <prompt id=“p_help”onComplete=“checkFileds()”/> <prompt id=“p_stock”onComplete=“g_stock.start()”>please say the stock name</peompt> <peompt id-“p_op”onComplete=“g_op”.Start()>Do you want to buy or sell</prompt> <prompt id=“p_quantity”onComplete=“g_quantity.Start()”>how many shares?</prompt> <prompt ie=“p_peice”onComplete=“g_price.Start()”>W(wǎng)hat’s the price</prompt> <reco id=“gz-stock”onReco=“handle();checkFields()”> <grammar src=“g_stock.xml”/> </reco> <reco id=“g_op”onReco=“handle()”;checkFields()/> <gramnar src=“./g_op.Xml”/> </reco> <reco id=“g-quantity”onReco=“handle();checkFields()”/> ?。糶rammar src=“./g_quant.sml”/> </reco> <reco id=“g_price”onReco=“handle();checkFields()”/> <geammar src=“./guant.xml”/> </reco> <form id=“trade”> ?。糹nputname=“op”title=“stock name”/> ?。約elect name=“op”title=“buy or sell”> <o(jì)ption value=“buy”/> <o(jì)ption value=“sell”/> </select> <input name=“quantity”title=“numeber of shares”/><input name=“price”title=“price”/></form></body></html>]]></pre>6.2使用SMIL下面的例子示出了使用SMIL機(jī)制激活提示和reco元素。
<pre listing-type="program-listing"><![CDATA[ ?。糷tml xmlnst=“urnschemas-microsoft-comtime” xmlrssp=“runschemas-microsoft-comspeech”> ?。糷ead> <style> time{behaciorurl(#default#time2);} </style> ?。糷ead> <body> ?。糹nput name=“txtBoxOtigin”type=“text”> ?。糾Put name=“txtBoxDest”type=“text”/> ?。約pprompt class=“time”tbegin=“0”> Please say the origin and destination cities ?。?spprompt> ?。紅par tbegin=“time.end”trepeatCount=“indefinitely”<spreco class=“time”> <grammar src=./fity.xml/> <bind targetElement=“txtBoxOrigin” value=“∥origin_city”/> <bind targetElemert=“txtBoxDest”test=“/sml/dest_city[@confidence $gt$ 40]”value=“//dest_city”/> </spreco> </tpar> ?。?body> ?。?html>]]></pre>7SMEX(消息)元素/對象作為簡單消息交換/擴(kuò)展的簡稱,SMEX是一個(gè)與外部組件或客戶機(jī)設(shè)備平臺上的應(yīng)用程序進(jìn)行通信的對象。它可以被嵌入到XML或類似的基于標(biāo)記的文檔中作為具有標(biāo)簽名<smex>的元素。該消息對象的范例用途可以包括登錄和電話控制。該對象表示當(dāng)它允許一個(gè)新的功能性通過發(fā)消息被添加時(shí)基于標(biāo)記的識別和提示的可擴(kuò)展性。
在舉例說明的基礎(chǔ)上,所述對象被用于利用平臺組件或應(yīng)用程序經(jīng)過它自己的配置參數(shù)或?qū)傩哉f明建立一個(gè)異步消息交換信道。它具有一個(gè)字符串特性,每當(dāng)所述特性是分配操作的接收者(即1值)時(shí),該特性的內(nèi)容被傳送給所述平臺組件或應(yīng)用程序。類似的,它還具有SML DOM節(jié)點(diǎn)類型的特性,用于保持從所述平臺組件或應(yīng)用程序中接收的所述消息。所述消息對象每當(dāng)接收一個(gè)平臺消息時(shí)都要傳送一個(gè)事件。由于它的基礎(chǔ)操作是異步的,所以,該對象還具有內(nèi)置時(shí)鐘,供應(yīng)用程序的開發(fā)者操縱超時(shí)設(shè)置。
對于所述通信裝置來講,所述消息或smex對象是不可知的。但是,在一個(gè)實(shí)施例中,所述smex對象與原始XML或標(biāo)記元素具有相同的壽命,即,當(dāng)它的主機(jī)文檔沒有被加載時(shí),所述smex對象將被破壞。而在很多情況下(例如呼叫控制),當(dāng)它未被加載時(shí),所述smex對象能夠執(zhí)行自動(dòng)清除并釋放通信資源,可以有很多使用情況,在這些情況下,期望遍布標(biāo)記頁的持久的通信鏈接。對于那些情況,所述結(jié)構(gòu)將把放棄分配資源(例如關(guān)閉插座)的責(zé)任付諸于所述應(yīng)用程序的開發(fā)者。
所述smex對象在消息格式(方案)方面是中性的。在某些實(shí)施例中,可能希望要求執(zhí)行者利用對現(xiàn)存標(biāo)準(zhǔn)消息格式(例如在SIP或CCXML中使用的)的強(qiáng)烈偏愛支持少量的基本方案。實(shí)質(zhì)上,所述結(jié)構(gòu)允許所述平臺和應(yīng)用程序開發(fā)者采用XML或類似標(biāo)記的標(biāo)準(zhǔn)化可擴(kuò)展性的所有優(yōu)點(diǎn)以便引入其他的特性而不損失平均時(shí)間的相互可操作性。
例1使用smex作為登錄對象<pre listing-type="program-listing"><![CDATA[ ?。約mexid=“l(fā)ogServer”> <param name=“dserver”xnlnsd=“runMicrosoft.com/COM”> <dprotocol>DCOM</dprotocol> <dclsid>2093093029302029320942098432098</dclsid> <diid>090385930490349853095309094803</diid> </param> </smex> <listen...> ...//other directtices binding reco results to input fields <bind targetElement=“l(fā)ogServer”targetAttribude=“sent” value=“*[@log$ge$ 3]”/> </listen>]]></pre>這個(gè)例子說明了如何使用一個(gè)具有它的類id和接口id的com對象來實(shí)現(xiàn)一個(gè)登錄機(jī)制。語音開發(fā)者把一個(gè)指示用于登錄的興趣級別的屬性“l(fā)og”加到相關(guān)的SML節(jié)點(diǎn)上。在上述實(shí)施例中,app開發(fā)者通過使用單個(gè)連接指示選擇登錄值大于或等于3的所有節(jié)點(diǎn)登錄。該例子在上層和下層瀏覽器中都可使用。
這個(gè)例子還試圖說明只要不出現(xiàn)smex對象對返回到所述識別文檔的所述平臺消息的傳送響應(yīng)的混淆,一個(gè)頁就可以包含與相同平臺組件通信的多個(gè)smex對象。上述例子說明一個(gè)組件可以實(shí)現(xiàn)多個(gè)接口,其中的每一個(gè)接口都具有它自己的smex或消息導(dǎo)管。相同的參數(shù)應(yīng)用到TCP服務(wù)器上以聽取多個(gè)端口。
例2讀取與輸入呼叫相關(guān)的地址
<pre listing-type="program-listing"><![CDATA[ ?。糹nputtype=“text”id=“remote”/> ?。糹nputtype=“text”id=“transfer”/> <input type=“text”id=“l(fā)ocal”/> ?。糹nputtype=“hidden”id=“session id”/> ...... <smex id=“telephone”sent=“start_listening”> ?。紁aram name=“server”>http//tel-scr/whatever</param> ?。糱ind targetElement=“session id”value=“//sid”/> <bind targetElement=“remote”value=“//remote addr”/> ?。糱ind targetElement=“transfer” value=“//transfer addr”/> ?。糱ind targetElement=“l(fā)ocal”value=“//local addr”> ...... ?。?smex>]]></pre>這個(gè)例子示出了所述連接指示是如何能夠被用于處理所接收的消息的。這個(gè)例子假設(shè)用于輸入呼叫的消息具有多個(gè)子元素remote addr、transfer addr和local addr,它們的內(nèi)容分別表示所輸入呼叫的遠(yuǎn)程、轉(zhuǎn)移和本地地址。
在這個(gè)例子中,以HTTP為基礎(chǔ)的無連接協(xié)議被用于與所述電話服務(wù)器通信。這里所述電話服務(wù)器被設(shè)計(jì)成與一個(gè)以上的瀏覽器通信,因此,當(dāng)app開始時(shí),每個(gè)客戶機(jī)都必須使用由所述服務(wù)器指定的專用id識別它本身。在這個(gè)例子中,它是通過由所述服務(wù)器傳送“start_listening”消息實(shí)現(xiàn)的。在這個(gè)例子中,雖然其他技術(shù)(例如客戶機(jī)端COOKIE)也可以被用于管理對話狀態(tài),但是,對話id被存儲在可以被傳送回給所述網(wǎng)絡(luò)服務(wù)器并且被傳送給所述應(yīng)用程序的下一頁的隱藏字段中。與用于Reco的情況相同,對于每個(gè)平臺消息來講并不是每個(gè)連接指示都被執(zhí)行。上述例子并不意味著當(dāng)存在一個(gè)輸入電話呼叫時(shí)僅僅接收所述專用id。
7.1特征由于只有所述讀/寫特征被作為與初始值規(guī)定相關(guān)的屬性允許進(jìn)行服務(wù),所以,所述smex對象可以具有下述特征。
·Sent讀/寫。與將被傳送給所述平臺組件的消息對應(yīng)的一個(gè)字符串。每當(dāng)所述傳送被作為1值(lvalue)使用時(shí),它的內(nèi)容被發(fā)送。當(dāng)所述特征被用做r值(rvalue)或當(dāng)一個(gè)空對象被指定給這個(gè)特征時(shí),它不起作用。
·received只讀,用于指出所接收消息的SML DOM節(jié)點(diǎn)數(shù)據(jù)。在下一個(gè)onRecieve事件被準(zhǔn)備好傳送之前所述消息將可以得到作為所述r值(rvalue)。
·timer讀/寫,微秒級的、用于指出在觸發(fā)一個(gè)超時(shí)事件之前過去時(shí)間的數(shù)量。當(dāng)所述特征被分配給一個(gè)正值時(shí),所述時(shí)鐘開始啟動(dòng)。當(dāng)正在進(jìn)行向下計(jì)數(shù)時(shí),所述值可以變化。在不觸發(fā)所述超時(shí)事件的情況下,0或負(fù)值停止所述時(shí)鐘。缺省值為0。意味著沒有超時(shí)。
·status只讀,用于指出所述對象最新狀態(tài)的一個(gè)整數(shù)??赡艿闹凳?、-1和-2,他們分別意味著正常、超時(shí)期滿和不能建立與所述平臺的通信或已經(jīng)中斷。通過所接收的特征傳送平臺專用誤差消息。對于連續(xù)傳送所述誤差消息的情況下,所述狀態(tài)代碼為0。
7.2 Event(事件)所述對象具有下述特征·onRecieve當(dāng)?shù)玫剿銎脚_消息時(shí)傳送這個(gè)事件。如果具有通過bind元素傳送的任何命令,那么,在所述事件被啟動(dòng)之前首先評估這些命令。在傳送之前,所述received特征將被更新。
·onError當(dāng)所述超時(shí)期滿或遇到一個(gè)通信鏈接誤差時(shí)傳送這個(gè)事件。當(dāng)傳送該事件時(shí),如上所述將利用一個(gè)相應(yīng)的誤差碼來更新所述status特征。
7.3 Child Elements(子元素)當(dāng)假設(shè)一個(gè)元素形成時(shí),smex可以具有下述子元素·bind除了所述指令工作于所接收的消息以外,與在reco中的情況相同。
·param與在reco中情況相同,用于提供與所述smex對象相關(guān)的平臺專用參數(shù)??梢允褂谩皀ame”屬性,并且param元素的內(nèi)容是該參數(shù)的值。在一個(gè)實(shí)施例中,所述參數(shù)應(yīng)當(dāng)被理解為與名稱空間和XML數(shù)據(jù)類型傳送相關(guān)的標(biāo)準(zhǔn)XML屬性。
7.4 Other Comments(其它命令)一種用于擴(kuò)充與登錄功能相關(guān)的SMEX的理想方式是<smexid=“l(fā)ogSerwer”...>...</smex>
<script>function logMessage(logClass,message){logSerwer.sent=logClass+“|”+message;}</script>
實(shí)際上,這利用其性能可以被定制的(全局)功能擴(kuò)展了所述對象。在上述的例子中,所述登錄功能被編程以便在所述id和所述消息之間插入字段分割符“|”。
對于那些不喜歡全局功能的人來講,作為一種對象方法,他們可以使用ECMAScript的“prototype”屬性。例如<pre listing-type="program-listing"><![CDATA[ ?。約mex id=“l(fā)ogSerwer”onload=“addFunction()”>...</smex> ?。約cript> function my_logMessage(logClass,message){ logSerwer.sent=logClass+“l(fā)”+message;}function addFunction(){ logSerwer.prototype.logMessage=my_logMessage; }</script>]]></pre>可以以多種面向?qū)ο蟮姆绞綉?yīng)用所述函數(shù)
logSerwer.logMessage(RECO_LOG_ERROR,“My message”);應(yīng)當(dāng)注意,為了在上述例子中進(jìn)行擴(kuò)展,雖然所有必須的結(jié)構(gòu)都已經(jīng)被很好地建立了標(biāo)準(zhǔn)結(jié)構(gòu),但是,還需要來自所述smex對象構(gòu)成中的多項(xiàng)工作。
權(quán)利要求
1.一種包括計(jì)算機(jī)可讀指令的計(jì)算機(jī)可讀介質(zhì),在實(shí)施時(shí)所述指令使該計(jì)算機(jī)通過執(zhí)行下列步驟來處理信息,所述步驟包括經(jīng)由一個(gè)網(wǎng)絡(luò)接收指示了在客戶機(jī)設(shè)備處輸入的數(shù)據(jù)和指示了輸入的數(shù)據(jù)一起使用以執(zhí)行識別的一個(gè)語法的指示;以及將對于指示輸入的數(shù)據(jù)指示識別結(jié)果的數(shù)據(jù)發(fā)送給該網(wǎng)絡(luò)上的一個(gè)遠(yuǎn)程位置。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于所述指示提供對所述語法位置的一個(gè)參考。
3.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于所述指示包括對用于識別的語言的一個(gè)參考。
4.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于所述標(biāo)記語言包括HTML、XHTML、cHTML、XML、和WML中的一種。
5.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于所述標(biāo)記語言包括一種腳本編寫語言。
6.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于所述標(biāo)記語言包括同步的多媒體標(biāo)記語言。
7.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于所述識別器包括一個(gè)語音識別器,而且該語法與語音識別有關(guān)。
8.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于所述識別器包括一個(gè)手寫識別器,而且該語法與手寫識別有關(guān)。
9.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于所述識別器包括一個(gè)手勢識別器,而且該語法和與手勢識別有關(guān)。
10.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其特征在于所述識別器包括一個(gè)可視識別器,而且該語法與視覺識別有關(guān)。
11.一種用于在一個(gè)客戶機(jī)/服務(wù)器網(wǎng)絡(luò)中的語音識別的方法,該方法包括經(jīng)由一個(gè)網(wǎng)絡(luò)接收指示了輸入語音的數(shù)據(jù)以及一個(gè)和指示輸入的數(shù)據(jù)一起使用以執(zhí)行識別的語法的指示;使用該語法用一個(gè)識別器處理該數(shù)據(jù)以獲得識別結(jié)果;以及將用于指示輸入的所述數(shù)據(jù)的識別結(jié)果發(fā)送給在該網(wǎng)絡(luò)上的一個(gè)遠(yuǎn)程位置。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于所述指示提供對所述語法位置的參考。
13.根據(jù)權(quán)利要求11所述的方法,其特征在于所述指示包括對用于識別的語言的參考。
14.根據(jù)權(quán)利要求11所述的方法,還包括向所述遠(yuǎn)程位置提供一個(gè)提示。
15.根據(jù)權(quán)利要求14所述的方法,其特征在于提供一個(gè)提示包括將文本數(shù)據(jù)轉(zhuǎn)換為語音數(shù)據(jù),以及將該語音數(shù)據(jù)提供給所述遠(yuǎn)程位置。
16.一種具有用于在客戶機(jī)/服務(wù)器系統(tǒng)中的客戶機(jī)設(shè)備上執(zhí)行的標(biāo)記語言的計(jì)算機(jī)可讀介質(zhì),所述標(biāo)記語言包括對于與每一個(gè)客戶機(jī)設(shè)備交互作用的網(wǎng)絡(luò)服務(wù)器,用于在無顯示的基于聲音輸入的客戶機(jī)設(shè)備與基于多重模式的客戶機(jī)上統(tǒng)一識別相關(guān)事件、GUI事件和電話事件中至少一個(gè)的指令。
17.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其特征在于所述標(biāo)記語言包括HTML、XHTML、cHTML、XML和WML中的一個(gè)。
18.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其特征在于所述標(biāo)記語言包括一種腳本編寫語言。
19.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其特征在于所述標(biāo)記語言包括一個(gè)同步的多媒體標(biāo)記語言。
20.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其特征在于所述標(biāo)記語言模擬腳本編寫。
全文摘要
一種用于在客戶機(jī)/服務(wù)器系統(tǒng)中的客戶機(jī)設(shè)備上執(zhí)行的標(biāo)記語言,包括用于在無顯示的基于聲音輸入的客戶機(jī)設(shè)備與一個(gè)基于多重模式的客戶機(jī)上統(tǒng)一用于與每一個(gè)客戶機(jī)設(shè)備交互作用的網(wǎng)絡(luò)服務(wù)器的識別相關(guān)事件、GUI事件和電話事件中的至少一個(gè)。還提供了一個(gè)識別服務(wù)器,用于接收指示了提供給一個(gè)客戶機(jī)設(shè)備的輸入數(shù)據(jù)的數(shù)據(jù)、以及一個(gè)用于識別的語法的指示。
文檔編號G10L15/30GK1420446SQ0213180
公開日2003年5月28日 申請日期2002年4月30日 優(yōu)先權(quán)日2001年5月4日
發(fā)明者王冠三, 洪小文 申請人:微軟公司