專利名稱:以對(duì)話為目的的應(yīng)用抽象的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及執(zhí)行特殊應(yīng)用的編碼計(jì)算機(jī)。更具體地,本發(fā)明涉及多個(gè)控制,用于限定執(zhí)行識(shí)別和/或聽覺提示的應(yīng)用,諸如產(chǎn)生由識(shí)別和/或聽覺提示啟動(dòng)的客戶端標(biāo)記的服務(wù)器。
背景技術(shù):
在人們的日常生活中,諸如個(gè)人數(shù)字助理(PDA)、裝置和便攜式電話的小型計(jì)算裝置的使用不斷增加。隨著現(xiàn)在微處理器可用于運(yùn)行這些裝置的處理能力的提高,這些裝置的功能性也提高了,且在某些情況下合并了。例如,現(xiàn)在,許多便攜式電話可以被用于訪問和瀏覽互聯(lián)網(wǎng),并可以被用于存儲(chǔ)諸如地址、電話號(hào)碼等的個(gè)人信息。
從這些計(jì)算裝置被用于瀏覽互聯(lián)網(wǎng)或被用在其它服務(wù)器/客戶機(jī)結(jié)構(gòu)中來看,就有必要將信息輸入計(jì)算裝置。遺憾的是,由于要將這些裝置保持得盡量小以便容易攜帶,由于該計(jì)算裝置外殼上可用的表面面積受限,通常不可能用所有字母作為分開按鈕的常規(guī)鍵盤。
對(duì)于這一問題,人們的興趣增加了,并采取用語音或話音經(jīng)諸如互聯(lián)網(wǎng)的廣域網(wǎng)存取信息。例如,諸如通過使用VoiceXML(語音擴(kuò)展標(biāo)記語言)的語音入口已經(jīng)發(fā)展到允許只用電話就訪問互聯(lián)網(wǎng)內(nèi)容。該結(jié)構(gòu)中,文本服務(wù)器(例如,網(wǎng)絡(luò)服務(wù)器)處理經(jīng)VoiceXML解釋器來自客戶機(jī)的請(qǐng)求。網(wǎng)絡(luò)服務(wù)器可以回應(yīng)產(chǎn)生VoiceXML文本,用VoiceXML解釋器處理這些文本并出聲地反應(yīng)給用戶。通過語音識(shí)別的語音命令,用戶可以瀏覽網(wǎng)頁。
通常,有“話音啟動(dòng)”信息或網(wǎng)絡(luò)內(nèi)容這兩種技術(shù)。在第一種技術(shù)中,現(xiàn)有通??梢杂糜酗@示器的裝置來看的視覺標(biāo)記語言頁被翻譯和反應(yīng)為聽覺的。然而,因?yàn)閷?duì)視覺相互作用有意義的頁通常沒有足夠的信息來自動(dòng)產(chǎn)生可感知的聽覺對(duì)話,所以這種方法的效果總是很差。另外,語音相互作用易于出錯(cuò),尤其是經(jīng)過諸如電話的有噪聲的信道時(shí)。不使用視覺或其它形式的持久反饋,用戶就會(huì)很難經(jīng)網(wǎng)絡(luò)服務(wù)器應(yīng)用程序來導(dǎo)航。因此這種方法要求諸如幫助信息的機(jī)制,這些機(jī)制也被出聲地反映給用戶以便幫助他們經(jīng)網(wǎng)站導(dǎo)航。這些機(jī)制通常稱為“語音對(duì)話”,當(dāng)用戶響應(yīng)聽覺的問題而提供不正確的信息或不提供信息時(shí),它們也會(huì)出錯(cuò)。由于這些機(jī)制不是共同基于網(wǎng)頁的視覺內(nèi)容,不自動(dòng)產(chǎn)生這些機(jī)制,因而應(yīng)用程序開發(fā)者通常要求大量的開發(fā)時(shí)間。
話音啟動(dòng)網(wǎng)絡(luò)內(nèi)容的第二種方法包括以新的語言編寫特殊的語音頁。該種方法的優(yōu)勢(shì)是話音啟動(dòng)頁包含聽覺對(duì)話所需的所有機(jī)制,如修復(fù)和導(dǎo)航幫助。然而,顯著的缺點(diǎn)是應(yīng)用程序頁就必須適于包括視覺內(nèi)容頁中的應(yīng)用邏輯。換句話說,視覺內(nèi)容頁的應(yīng)用邏輯必須以話音啟動(dòng)語言重寫。甚至在用從相同標(biāo)準(zhǔn)產(chǎn)生視覺和聽覺頁的工具使該過程自動(dòng)化時(shí),視覺和話音啟動(dòng)頁的保持通常難以同步。另外,該方法不易于允許多模態(tài)應(yīng)用,例如,在網(wǎng)頁上同時(shí)提供視覺和話音相互作用時(shí)。由于視覺頁和話音啟動(dòng)頁無關(guān),所以不易于輸入和輸出邏輯相互一致工作。
到此為止,由于當(dāng)前用作接口的組織和格式,話音相互作用也很麻煩。通常,話音接口與應(yīng)用程序的商業(yè)邏輯聯(lián)系過緊,這制約了其它應(yīng)用程序中話音接口單元(element)的再利用,或者話音接口被過分簡單的對(duì)話模式(例如,格式和字段)限制過死。
因此,目前需要改善用于在應(yīng)用中提供話音識(shí)別的的結(jié)構(gòu)和方法,如服務(wù)器/客戶機(jī)結(jié)構(gòu),如互聯(lián)網(wǎng)。尤其是,需要針對(duì)上述一個(gè)、幾個(gè)或全部缺點(diǎn)的方法、系統(tǒng)或程序設(shè)計(jì)工具,以在應(yīng)用中提供產(chǎn)生話音啟動(dòng)識(shí)別和/或話音啟動(dòng)提示。
發(fā)明內(nèi)容
提供對(duì)網(wǎng)絡(luò)服務(wù)器的控制,以產(chǎn)生包括識(shí)別和/或聽覺提示的客戶端標(biāo)記。這些控制包含諸如問題、回答、確認(rèn)、命令或陳述的對(duì)話元素。一個(gè)模塊用這些控制攜帶的信息形成對(duì)話。
每個(gè)控制在對(duì)話中起一個(gè)作用。例如,陳述控制被用來產(chǎn)生用于客戶機(jī)裝置的標(biāo)記以將信息呈現(xiàn)給用戶,同時(shí)詢問控制產(chǎn)生用于客戶機(jī)裝置的標(biāo)記以便問問題?;卮鹂刂飘a(chǎn)生用于客戶機(jī)裝置的標(biāo)記以便用于識(shí)別的語法與涉及所問的問題的輸入字段關(guān)聯(lián)。如果識(shí)別結(jié)果是否正確不清楚的話,確認(rèn)控制可以被激活,產(chǎn)生標(biāo)記以確認(rèn)識(shí)別結(jié)果。命令控制產(chǎn)生允許用戶提供命令的標(biāo)記,否則產(chǎn)生對(duì)特定問題的預(yù)期回答,這樣,允許用戶經(jīng)例如網(wǎng)絡(luò)服務(wù)器應(yīng)用程序?qū)Ш?。每個(gè)控制包括表示相關(guān)控制是否可以被激活的屬性。比如在客戶端執(zhí)行的模塊產(chǎn)生對(duì)話來征求或提供信息作為激活控制的功能。
圖1是計(jì)算裝置操作環(huán)境的第一實(shí)施例的平面圖;圖2是圖1的計(jì)算裝置的框圖;圖3是通用計(jì)算機(jī)的框圖;圖4是用于客戶機(jī)/服務(wù)器系統(tǒng)的結(jié)構(gòu)的框圖;圖5是用于獲得信用卡信息的顯示;圖6是可以在具有顯示和語音識(shí)別能力的客戶端執(zhí)行的標(biāo)記語言示例頁;圖7是說明用于提供客戶端標(biāo)記中的識(shí)別和聽覺提示的第一種方法框圖;圖8是說明用于提供客戶端標(biāo)記中的識(shí)別和聽覺提示的第二種方法框圖;圖9是說明用于提供客戶端標(biāo)記中的識(shí)別和聽覺提示的第三種方法框圖;圖10是說明伴隨控制的框圖;圖11是說明伴隨控制的詳細(xì)框圖。
具體實(shí)施例方式
在描述基于網(wǎng)絡(luò)的識(shí)別結(jié)構(gòu)和用于實(shí)現(xiàn)它的方法之前,描述該結(jié)構(gòu)中起作用的普通計(jì)算裝置會(huì)很有用?,F(xiàn)在參考圖1,30說明了數(shù)據(jù)管理裝置(PIM,PDA等)的示例形式。然而,要知道本發(fā)明也可以利用下面的討論的其它計(jì)算裝置來實(shí)現(xiàn),尤其是,那些對(duì)于輸入按鈕等表面面積有限的計(jì)算裝置。例如,電話和/或數(shù)據(jù)管理裝置也可以從本發(fā)明受益。與已有便攜式個(gè)人計(jì)算機(jī)信息管理裝置和其它便攜式電子裝置相比,這種裝置實(shí)用性更強(qiáng),這種裝置的功能和小尺寸會(huì)更促使用戶隨時(shí)攜帶。因此,本文中描述的結(jié)構(gòu)的范圍不會(huì)被本文中所公開說明的示例數(shù)據(jù)管理或PIM裝置、電話或計(jì)算機(jī)所限制。
數(shù)據(jù)管理移動(dòng)裝置30的示例形式如圖1所示。移動(dòng)裝置30包括外殼32和用戶接口,用戶接口包括顯示器34,它結(jié)合輸入筆33使用觸摸式顯示屏。輸入筆33用于在制定坐標(biāo)按壓或接觸顯示器34以便選擇區(qū)域,從而選擇性地移動(dòng)光標(biāo)的開始位置,或者例如經(jīng)手勢(shì)或手寫提供命令信息?;蛘?或另外),可以在裝置30上包括一個(gè)或多個(gè)按鈕35用于導(dǎo)航。另外,也可以提供諸如轉(zhuǎn)輪、滾子等的其它輸入機(jī)制。然而,應(yīng)當(dāng)注意,本發(fā)明不會(huì)被這些形式的輸入機(jī)制所限制。例如,其它形式的輸入可以包括視覺輸入,例如經(jīng)計(jì)算機(jī)視覺。
現(xiàn)在參考圖2,框圖說明了包含移動(dòng)裝置30的功能成分。中央處理單元(CPU)50實(shí)現(xiàn)軟件控制功能,CPU50與顯示器34連接以便根據(jù)出現(xiàn)在顯示器34上控制軟件產(chǎn)生的文本和圖標(biāo)。通??梢杂脭?shù)-模轉(zhuǎn)換器59將揚(yáng)聲器43連接到CPU50以便提供聽覺輸出。用戶下載或輸入到移動(dòng)裝置30中的數(shù)據(jù)被存儲(chǔ)在非易失性讀/寫隨機(jī)存取存儲(chǔ)器54中,非易失性讀/寫隨機(jī)存取存儲(chǔ)器54雙向連接到CPU50。隨機(jī)存取存儲(chǔ)器(RAM)54提供用于由CPU50執(zhí)行的指令的易失性存儲(chǔ)和用于臨時(shí)數(shù)據(jù)的存儲(chǔ),諸如登記數(shù)據(jù)。配置選擇和其它變量的缺省值被存儲(chǔ)在只讀存儲(chǔ)器(ROM)58中。ROM58也可以被用于存儲(chǔ)操作系統(tǒng)軟件,操作系統(tǒng)軟件用于控制移動(dòng)裝置30的基本功能和其它操作系統(tǒng)核芯函數(shù)(例如將軟件成分安裝到RAM54中)。
RAM54也起用于代碼存儲(chǔ)的作用,其方式類似于PC上用于存儲(chǔ)應(yīng)用程序的硬驅(qū)的功能。應(yīng)當(dāng)注意,雖然非易失性存儲(chǔ)器被用于存儲(chǔ)代碼,但是,它也可被存儲(chǔ)在不用于執(zhí)行這些代碼的易失性存儲(chǔ)器中。
可以用移動(dòng)裝置經(jīng)無線收發(fā)信機(jī)52發(fā)射/接收無線信號(hào),無線收發(fā)信機(jī)52與CPU50連接。也可以按需要提供選擇通信接口60來直接從計(jì)算機(jī)(例如臺(tái)式計(jì)算機(jī))或從有線網(wǎng)絡(luò)下載數(shù)據(jù)。因此,接口60可以包含多種形式的通信裝置,例如紅外鏈路、調(diào)制解調(diào)器、網(wǎng)卡等。
移動(dòng)裝置30包括麥克風(fēng)29、模-數(shù)(A/D)轉(zhuǎn)換器37和存儲(chǔ)在存儲(chǔ)54中的選擇識(shí)別程序(話音,DTMF,手寫,手勢(shì)或計(jì)算機(jī)視覺)。用實(shí)例的方式,響應(yīng)聽覺信息,來自裝置30、麥克風(fēng)29的指令或命令提供話音信號(hào),話音信號(hào)被A/D轉(zhuǎn)換器37數(shù)字化。話音識(shí)別程序可以執(zhí)行對(duì)數(shù)字化的話音信號(hào)執(zhí)行標(biāo)準(zhǔn)化和/或特征提取以獲得中間話音識(shí)別結(jié)果。利用無線收發(fā)信機(jī)52或通信接口60,話音數(shù)據(jù)可以被發(fā)射到下面要討論的遠(yuǎn)端識(shí)別服務(wù)器204,如圖5的結(jié)構(gòu)所示。然后將識(shí)別結(jié)果回復(fù)到移動(dòng)裝置30以反映(例如視覺和/或聽覺)在上面,最后發(fā)射到網(wǎng)絡(luò)服務(wù)器202(圖5),其中,網(wǎng)絡(luò)服務(wù)器202和移動(dòng)裝置30以客戶機(jī)/服務(wù)器關(guān)系操作。類似的處理可以被用于其它形式的輸入。例如,可以經(jīng)或不經(jīng)裝置30上的預(yù)處理而將手寫輸入數(shù)字化。象話音數(shù)據(jù)那樣,可以將該形式的輸入發(fā)射到識(shí)別服務(wù)器204用于識(shí)別,其中,將識(shí)別結(jié)果回復(fù)到裝置30和/或網(wǎng)絡(luò)服務(wù)器202中的至少一個(gè)。類似地,DTMF數(shù)據(jù)、手勢(shì)數(shù)據(jù)和視覺數(shù)據(jù)可以進(jìn)行類似地處理。按輸入形式,裝置30(和下面要討論的其它形式客戶機(jī))應(yīng)包括必要的硬件,如用于視覺輸入的照相機(jī)。
除了上述便攜式或移動(dòng)計(jì)算裝置,要知道,可以用諸如普通臺(tái)式計(jì)算機(jī)的其它計(jì)算裝置來利用本發(fā)明。例如,當(dāng)諸如全字母數(shù)字鍵盤的常規(guī)輸入裝置難以操作時(shí),本發(fā)明會(huì)允許具有物理能力的用戶向計(jì)算機(jī)或其它裝置輸入或送入文本。
本發(fā)明也可以用多種其它通用計(jì)算機(jī)或?qū)S糜?jì)算系統(tǒng)環(huán)境或結(jié)構(gòu)來操作。適用于本發(fā)明的周知計(jì)算系統(tǒng)、環(huán)境和/或結(jié)構(gòu)的實(shí)例包括(但不限于)無線或蜂窩電話、常規(guī)電話(無屏幕)、個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持或手提式裝置、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、電視機(jī)頂盒、可編程消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、微型計(jì)算機(jī)、大型計(jì)算機(jī)、包括任何上述系統(tǒng)或裝置的分布式計(jì)算環(huán)境等。
下文是對(duì)圖3所示通用計(jì)算機(jī)120的簡要描述。然而,計(jì)算機(jī)120也只是適當(dāng)?shù)挠?jì)算環(huán)境的一個(gè)實(shí)例而不是限制本發(fā)明的使用范圍或功能。計(jì)算機(jī)120也不應(yīng)被看作是與本文中所述的任何成分或其組合有關(guān)的從屬性或要求。
可以在計(jì)算機(jī)可執(zhí)行指令的普通前后關(guān)系下描述本發(fā)明,計(jì)算機(jī)可執(zhí)行指令如計(jì)算機(jī)可執(zhí)行的程序模塊。通常,程序模塊包括執(zhí)行特殊任務(wù)或?qū)崿F(xiàn)特殊抽象數(shù)據(jù)類型的例程、程序、對(duì)象、成分、數(shù)據(jù)結(jié)構(gòu)等。也可以在經(jīng)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)端處理裝置執(zhí)行任務(wù)的分布計(jì)算環(huán)境下實(shí)踐本發(fā)明。在分布計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)裝置的本地和遠(yuǎn)端計(jì)算機(jī)存儲(chǔ)媒體中。下面結(jié)合附圖描述程序和模塊所執(zhí)行的任務(wù)。本領(lǐng)域的技術(shù)人員可以將描述和圖作為處理器可執(zhí)行指令來實(shí)現(xiàn),處理器可執(zhí)行指令可以被寫在任何形式的計(jì)算機(jī)可讀媒體上。
參考圖3,計(jì)算機(jī)120的部件包括(但不限于)處理單元140、系統(tǒng)存儲(chǔ)器150和將包括系統(tǒng)存儲(chǔ)器的多個(gè)系統(tǒng)部件連接到處理單元140的系統(tǒng)總線141。系統(tǒng)總線141可以是以下幾種類型總線中的任何一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外設(shè)總線和利用多種總線結(jié)構(gòu)中任何一種的局域總線。用實(shí)例的方式而不是限制本發(fā)明,這種結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線、通用串行總線(USB)、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)型工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)總線和外設(shè)部件互連(PCI)總線,它也稱為中層總線。計(jì)算機(jī)120通常包括多個(gè)計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能用計(jì)算機(jī)120訪問的任何一種介質(zhì),包括易失性和非易失性的介質(zhì)、可移動(dòng)或不可移動(dòng)媒體。用實(shí)例的方式而不是限制本發(fā)明,計(jì)算機(jī)可讀介質(zhì)可以包含計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)媒體包括以用于存儲(chǔ)信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì),信息諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括(但不限于)RAM、ROM、EEPROM、閃存存儲(chǔ)器或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多用途光盤(DVD)或其它光盤存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其它磁性存儲(chǔ)裝置或可以用于存儲(chǔ)預(yù)期信息和可被計(jì)算機(jī)120訪問的任何其它介質(zhì)。
通信媒體通常體現(xiàn)為計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或在諸如載波或其它傳送機(jī)制的調(diào)制后數(shù)據(jù)信號(hào)中的其它數(shù)據(jù),并包括任何信息傳送媒體。術(shù)語“調(diào)制后數(shù)據(jù)信號(hào)”的意思是為了編碼信號(hào)中的信息而設(shè)定或改變了一個(gè)或多個(gè)信號(hào)特性的信號(hào)。用實(shí)例的方式而不是限制本發(fā)明,通信媒體包括諸如有線網(wǎng)絡(luò)或直接線連接的有線介質(zhì)、諸如聲、FR、紅外的無線介質(zhì)和其它無線介質(zhì)。上述任何一種的組合也可以包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。
系統(tǒng)存儲(chǔ)器150包括易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),如只讀存儲(chǔ)器(ROM)151和隨機(jī)存取存儲(chǔ)器(RAM)152。包含基本例程的基本輸入/輸出系統(tǒng)153(BIOS)通常存儲(chǔ)在ROM151中,基本例程有助于例如在起動(dòng)時(shí)在計(jì)算機(jī)120的元件之間傳送信息。RAM152通常包含用處理單元140立即訪問和/或即時(shí)操作的數(shù)據(jù)和/或程序模塊。用實(shí)例的方式而不是限制本發(fā)明,圖3說明了操作系統(tǒng)54、應(yīng)用程序155、其它程序模塊156和程序數(shù)據(jù)157。
計(jì)算機(jī)120也可包括其它可移動(dòng)/不可移動(dòng)易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。只用實(shí)例方式,圖3說明了從不可移動(dòng)、非易失性磁性介質(zhì)讀取或向其寫入的硬盤驅(qū)動(dòng)器161,從可移動(dòng)、非易失性磁盤172讀取或向其寫入的磁盤驅(qū)動(dòng)器172,和從諸如CD-ROM或其它光學(xué)介質(zhì)的可移動(dòng)、非易失性光盤176讀取或向其寫入的光盤驅(qū)動(dòng)器175。其它可以在示例操作環(huán)境下使用的可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括(但不限于)盒式磁帶、閃存存儲(chǔ)卡、數(shù)字多用途光盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等。硬盤驅(qū)動(dòng)器161通常經(jīng)諸如接口160的不可移動(dòng)存儲(chǔ)接口與系統(tǒng)總線141連接,磁盤驅(qū)動(dòng)器171和光盤驅(qū)動(dòng)器175通常用諸如接口170的可移動(dòng)存儲(chǔ)接口與系統(tǒng)總線141連接。
圖3中說明的上述驅(qū)動(dòng)器和與它們相關(guān)的計(jì)算機(jī)存儲(chǔ)媒體提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和由于計(jì)算機(jī)120的其它數(shù)據(jù)。圖3中,例如,硬盤驅(qū)動(dòng)器161被示為存儲(chǔ)操作系統(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被給予不同的數(shù)字以便說明它們至少是不同的拷貝。
用戶可以經(jīng)諸如鍵盤182、麥克風(fēng)183和定點(diǎn)設(shè)備181(如鼠標(biāo),跟蹤球或觸摸墊)的輸入裝置向計(jì)算機(jī)120輸入命令和信息。其它輸入裝置(沒畫)可以包括游戲操縱桿、游戲墊、圓盤式衛(wèi)星電視天線、掃描儀等。這些和其它輸入裝置常經(jīng)與系統(tǒng)總線連接的用戶輸入接口180連接到處理單元140,但是,可以用諸如并行端口、游戲端口或通用串行總線(USB)的其它接口和總線結(jié)構(gòu)來連接。監(jiān)視器185或其它類型的顯示裝置也經(jīng)諸如視頻接口185的接口與系統(tǒng)總線141連接。除了監(jiān)視器,計(jì)算機(jī)也可以包括其它外設(shè)輸出裝置,如揚(yáng)聲器187和打印機(jī)186,它們可經(jīng)輸出外部接口188來連接。
計(jì)算機(jī)120可以在利用與諸如遠(yuǎn)端計(jì)算機(jī)194的一個(gè)或多個(gè)遠(yuǎn)端計(jì)算機(jī)邏輯連接的網(wǎng)絡(luò)環(huán)境下操作。遠(yuǎn)端計(jì)算機(jī)194可以是個(gè)人計(jì)算機(jī)、手持裝置、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等裝置或其它公共網(wǎng)絡(luò)節(jié)點(diǎn),且通常包括與計(jì)算機(jī)120有關(guān)的上述多個(gè)和所有元件。圖3中描繪的邏輯連接包括局域網(wǎng)(LAN)191和廣域網(wǎng)(WAN)193,但是也可以包括其它網(wǎng)絡(luò)。這種網(wǎng)絡(luò)環(huán)境在辦公室里、企業(yè)計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)部網(wǎng)絡(luò)和互聯(lián)網(wǎng)中很常見。
當(dāng)用在LAN網(wǎng)絡(luò)環(huán)境中時(shí),計(jì)算機(jī)120經(jīng)網(wǎng)絡(luò)接口或適配器190與LAN191連接。當(dāng)用在WAN網(wǎng)絡(luò)環(huán)境中時(shí),計(jì)算機(jī)120通常包括調(diào)制解調(diào)器192或用于經(jīng)諸如互聯(lián)網(wǎng)的WAN193建立通信的其它裝置。內(nèi)置或外置的調(diào)制解調(diào)器192可以經(jīng)用戶輸入接口180或其它適當(dāng)機(jī)制與系統(tǒng)總線141連接。在網(wǎng)絡(luò)環(huán)境中,所描繪的關(guān)于計(jì)算機(jī)120的程序模塊或其多個(gè)部分可以存儲(chǔ)在遠(yuǎn)端存儲(chǔ)器存儲(chǔ)裝置中。用實(shí)例的方式而不是限制本發(fā)明,圖3說明了位于遠(yuǎn)端計(jì)算機(jī)194上的遠(yuǎn)端應(yīng)用程序195。要注意,所示的網(wǎng)絡(luò)連接是示例性的,可以使用在多個(gè)計(jì)算機(jī)之間建立通信鏈接的其它裝置。
示例結(jié)構(gòu)圖4說明了可以使用本發(fā)明的用于基于網(wǎng)絡(luò)的識(shí)別的結(jié)構(gòu)200。通常,可以通過移動(dòng)裝置30(本文中也表示根據(jù)所要求的輸入形式具有顯示屏幕、麥克風(fēng)、照相機(jī)、觸摸感知面板等其它形式的計(jì)算裝置)、或通過電話80訪問存儲(chǔ)在網(wǎng)絡(luò)服務(wù)器202中的信息,其中,響應(yīng)按鍵聽覺地或通過電話80產(chǎn)生的音調(diào)請(qǐng)求信息,且其中,只將來自網(wǎng)絡(luò)服務(wù)器202的信息聽覺地供回給用戶。
本示例實(shí)施例中,結(jié)構(gòu)200被統(tǒng)一為通過利用話音識(shí)別的裝置30還是電話80獲得信息,單個(gè)識(shí)別服務(wù)器204可以支持兩種操作模式中的任何一種。另外,結(jié)構(gòu)200用周知的標(biāo)記語言(例如,HTML,XHTML,cHTML,XML,WML等)的擴(kuò)展來操作。因此,也可以用這些標(biāo)記語言中周知的GUI方法來訪問存儲(chǔ)網(wǎng)絡(luò)服務(wù)器202上的信息。用周知的標(biāo)記語言的擴(kuò)展,易于在網(wǎng)絡(luò)服務(wù)器202上編寫,現(xiàn)有的法定應(yīng)用易于被修改成包括語音或其它形式的識(shí)別。
通常,裝置30執(zhí)行網(wǎng)絡(luò)服務(wù)器202提供的HTML+腳本等。當(dāng)要求語音識(shí)別時(shí),用實(shí)例的方式,將話音數(shù)據(jù)提供給具有語法或語言模型指示的識(shí)別服務(wù)器204以在話音識(shí)別期間使用,該話音數(shù)據(jù)可以被數(shù)據(jù)化成音頻信號(hào)或話音特征,其中音頻信號(hào)已經(jīng)被裝置30進(jìn)行了上述預(yù)處理??梢圆扇《喾N形式實(shí)現(xiàn)識(shí)別服務(wù)器204,說明了其中之一,但是通常包括識(shí)別器211。如果是預(yù)期的或適當(dāng)?shù)脑捑蛯⒆R(shí)別結(jié)果供回給裝置30用于局部反映。通過識(shí)別和可能用到的圖形用戶界面匯編之后,裝置30將所有信息發(fā)送到網(wǎng)絡(luò)服務(wù)器202用于處理和接收其它HTML腳本,如果需要的話。
如圖4所述,裝置30、網(wǎng)絡(luò)服務(wù)器202和識(shí)別服務(wù)器204公共連接,且可通過網(wǎng)絡(luò)205在諸如互聯(lián)網(wǎng)的廣域網(wǎng)中分別尋址。因而這些裝置不必在物理上都相互接近。尤其是,網(wǎng)絡(luò)服務(wù)器202不必包括識(shí)別服務(wù)器204。以這種方式,在網(wǎng)絡(luò)服務(wù)器202的編寫可以集中在應(yīng)用上,編寫者不用知道識(shí)別服務(wù)器204的復(fù)雜結(jié)構(gòu)。相反,識(shí)別服務(wù)器204可以被獨(dú)立設(shè)計(jì)和連接到網(wǎng)絡(luò)205,因而,不要求再對(duì)網(wǎng)絡(luò)服務(wù)器202進(jìn)行改變來更新和改善識(shí)別服務(wù)器204。如下所述,網(wǎng)絡(luò)服務(wù)器202也可以包括可以動(dòng)態(tài)產(chǎn)生客戶端標(biāo)記和腳本的編寫機(jī)制。在另一實(shí)施例中,可以根據(jù)實(shí)現(xiàn)機(jī)器的性能將網(wǎng)絡(luò)服務(wù)器202、識(shí)別服務(wù)器204和客戶機(jī)30組合起來。例如,如果客戶機(jī)包含通用計(jì)算機(jī),例如個(gè)人計(jì)算機(jī),客戶機(jī)可以包括識(shí)別服務(wù)器204。類似地,按需要,網(wǎng)絡(luò)服務(wù)器202和識(shí)別服務(wù)器204可以被包括在一個(gè)機(jī)器中。
通過電話80對(duì)網(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,媒體服務(wù)器214提供電話接口和語音瀏覽器216。象裝置30那樣,電話語音瀏覽器212從網(wǎng)絡(luò)服務(wù)器202接收HTML腳本等。在一個(gè)實(shí)施例中,HTML腳本是類似于被提供給裝置30的HTML腳本的形式。以這種方式,網(wǎng)絡(luò)服務(wù)器202不需分別支持裝置30和電話80,或者分別支持標(biāo)準(zhǔn)GUI客戶機(jī)。甚至可以使用普通標(biāo)記語言。另外,象裝置30那樣,例如,用TCP/IP,來自電話80發(fā)送的聽覺信號(hào)的語音識(shí)別被通過網(wǎng)絡(luò)205或?qū)S镁€路207從語音瀏覽器216提供給識(shí)別服務(wù)器204。網(wǎng)絡(luò)服務(wù)器202、識(shí)別服務(wù)器204和電話語音瀏覽器212可以體現(xiàn)在任何適當(dāng)?shù)挠?jì)算環(huán)境中,如圖3所示的普通目的臺(tái)式計(jì)算機(jī)。
然而,應(yīng)當(dāng)注意,如果利用DTMF識(shí)別,通常在媒體服務(wù)器214而不是在識(shí)別服務(wù)器204執(zhí)行這種形式的識(shí)別。換句話說,DTMF語法要用媒體服務(wù)器214來使用。
再看圖4,網(wǎng)絡(luò)服務(wù)器202可以包括服務(wù)器端插件編寫工具或模塊209(例如,微軟公司的ASP、ASP+、ASP.Net,JSP,Javabeans等)。服務(wù)器端插件209可以動(dòng)態(tài)產(chǎn)生客戶端標(biāo)記、甚至用于訪問網(wǎng)絡(luò)服務(wù)器202的客戶機(jī)類型的特殊形式標(biāo)記。隨著客戶機(jī)/服務(wù)器關(guān)系的建立,客戶機(jī)信息可以被提供給網(wǎng)絡(luò)服務(wù)器202,或者網(wǎng)絡(luò)服務(wù)器202可以包括模塊或例程來檢測客戶機(jī)裝置的性能。以這種方式,服務(wù)器端插件209可以產(chǎn)生用于每個(gè)語音識(shí)別場景的客戶端標(biāo)記,即,只通過電話80或用于裝置30的多模態(tài)語音。用恒定客戶端模型,用于多個(gè)不同的客戶機(jī)的應(yīng)用編寫顯然更容易了。
除了動(dòng)態(tài)產(chǎn)生客戶端標(biāo)記之外,可以將下述高級(jí)對(duì)話模塊作為存儲(chǔ)在存儲(chǔ)器211中的服務(wù)器端控制來實(shí)現(xiàn),供開發(fā)者在應(yīng)用編寫時(shí)使用。通常,高級(jí)對(duì)話模塊211會(huì)根據(jù)開發(fā)者指定的參數(shù)在純語音和多模態(tài)場景中都動(dòng)態(tài)產(chǎn)生客戶端標(biāo)記和腳本。高級(jí)對(duì)話模塊211可以包括多個(gè)參數(shù)以產(chǎn)生客戶端標(biāo)記來符合開發(fā)者的需要。
示例客戶端擴(kuò)展描述本發(fā)明所注重的客戶端腳本的動(dòng)態(tài)產(chǎn)生之前,先討論對(duì)基于網(wǎng)絡(luò)的識(shí)別用使用的標(biāo)記語言的示例形式的擴(kuò)展是會(huì)有幫助的。
如上所述,諸如HTML、XHTML、cHTML、XML、WML或其它SGML-派生標(biāo)記的標(biāo)記語言被擴(kuò)展為包括多個(gè)控制和/或在客戶機(jī)/服務(wù)器結(jié)構(gòu)中提供識(shí)別的對(duì)象,這些標(biāo)記語言用于網(wǎng)絡(luò)服務(wù)器202和客戶機(jī)裝置30之間的相互作用。通常,多個(gè)控制和/或多個(gè)對(duì)象可以包括一個(gè)或多個(gè)下述功能用于識(shí)別器構(gòu)成的識(shí)別器控制和/或?qū)ο?,識(shí)別器執(zhí)行和/或后處理;用于合成器構(gòu)成和即時(shí)播放的合成器控制和/或?qū)ο?;用于指定輸入語法源的語法控制和/或?qū)ο?;?或用于處理識(shí)別結(jié)果的捆綁控制和/或?qū)ο?。擴(kuò)展被設(shè)計(jì)成輕權(quán)標(biāo)記層,它向現(xiàn)有標(biāo)記語言添加聽覺、視覺、手寫等接口能力。這樣,擴(kuò)展可以仍獨(dú)立于它們所在的高級(jí)頁,例如HTML;低級(jí)格式,擴(kuò)展用它來參考語言資源,例如文本-話音和語法格式;和被用在識(shí)別服務(wù)器204中的識(shí)別和話音合成平臺(tái)的單獨(dú)性質(zhì)。雖然下面討論了話音識(shí)別,但是,要知道,下文要描述的技術(shù)、標(biāo)簽(tag)和服務(wù)器控制可以被類似地應(yīng)用在手寫識(shí)別、手勢(shì)識(shí)別和圖像識(shí)別中。
在示例實(shí)施例中,擴(kuò)展(也就是“標(biāo)簽”)是一小組具有相關(guān)屬性和DOM對(duì)象性質(zhì)的XML元素、事件和方法,可以結(jié)合源標(biāo)記文檔使用這些方法來將識(shí)別和/或聽覺提示接口、DTMF或調(diào)入控制應(yīng)用于源頁(source page)。擴(kuò)展的格式和語義于源文檔的本質(zhì)無關(guān),所以擴(kuò)展可以被等效地用在HTML、SHTML、cHTML、XML、WML或其它任何SGML-派生標(biāo)記中。擴(kuò)展遵循文檔對(duì)象模型,其中提供了可以被分級(jí)的新的功能對(duì)象或元素。在附錄中詳細(xì)討論了每個(gè)元素,但是,通常元素可以包括屬性、性質(zhì)、方法、事件和/或其它“子”元素。
這時(shí),也應(yīng)當(dāng)注意,可以根據(jù)執(zhí)行瀏覽的裝置的性能用兩種不同的“模式”解釋擴(kuò)展。第一模式,即“對(duì)象模式”下,可以使用完全性能。由應(yīng)用進(jìn)行的擴(kuò)展的綱領(lǐng)性操縱被裝置上的瀏覽器啟動(dòng)的任何機(jī)制所執(zhí)行,這些機(jī)制例如XHTML瀏覽器中的Jscript解釋器、或WML瀏覽器中的WMLScript解釋器。因此,只需要定義一小組擴(kuò)展的核芯特性和方法,這些被任何綱領(lǐng)性(programmatic)機(jī)制所操縱的性質(zhì)和方法位于裝置或客戶端。對(duì)象模式提供了事件和腳本,并可提供更強(qiáng)的功能以經(jīng)話音相互作用給予對(duì)話編寫者更精細(xì)的客戶端控制。如本文中所用的那樣,支持完全事件和腳本的瀏覽器被稱為“上級(jí)瀏覽器”。這種形式的瀏覽器支持?jǐn)U展的所有屬性、性質(zhì)、方法和事件。上級(jí)瀏覽器常見于具有更強(qiáng)處理能力的裝置中。
也可以在“聲明性(declarative)模式”下執(zhí)行擴(kuò)展。如本文中所用的那樣,以宣言模式操作的瀏覽器被稱為“下級(jí)瀏覽器”,且不支持完全事件和腳本能力。相反,這一形式的瀏覽器支持給定擴(kuò)展的聲明性方面(即核芯元素和屬性),但是不支持所有DOM(文檔對(duì)象模式)對(duì)象性質(zhì)、方法和事件。該模式利用專用的聲明性語法,還可以結(jié)合諸如SMIL(同步多媒體集成語言)2.0的聲明性多媒體同步和同位機(jī)制(同步標(biāo)記語言)來使用。下級(jí)瀏覽器常見于處理能力有限的裝置中。
這時(shí),應(yīng)討論一種特殊的進(jìn)入模式。尤其是,使用話音識(shí)別時(shí)結(jié)合至少一個(gè)顯示器且在另一實(shí)施例中還結(jié)合定位設(shè)備是很有用的,定位設(shè)備能協(xié)調(diào)多種輸入模式,例如指示數(shù)據(jù)進(jìn)入的區(qū)域。具體地說,這一數(shù)據(jù)進(jìn)入模式下,用戶通常能協(xié)調(diào)定位設(shè)備和話音輸入的作用,所以,例如用戶在選擇區(qū)域和提供與該區(qū)域有關(guān)的相應(yīng)信息時(shí)是受控制的。例如,圖5說明了信用卡提交圖形用戶界面(GUI),用戶可以先決定在區(qū)域252中輸入信用卡號(hào)再在區(qū)域254中輸入到期日。類似地,用戶可以回到區(qū)域252并修改錯(cuò)誤的輸入,如果需要的話。當(dāng)與話音識(shí)別結(jié)合時(shí),提供了一種簡易和自然的導(dǎo)航形式。如本文中所用的那樣,這一同時(shí)使用屏幕顯示和識(shí)別的輸入形式被稱為“多模態(tài)”,屏幕顯示允許定位設(shè)備在屏幕上自由形式的作用,例如選擇。
參考圖6,說明HTML標(biāo)記語言代碼。HTML代碼包括主體部分270和腳本部分272。在每個(gè)區(qū)域250、252和254中的信息輸入分別由代碼部分280、282或284來控制或執(zhí)行。先參考代碼部分280,例如用裝置30的輸入筆在區(qū)域250上選擇時(shí),啟動(dòng)了事件“onClick”,它在腳本部分272中調(diào)入或執(zhí)行“談話”。該作用激活了用于話音識(shí)別的語法,該話音識(shí)別與區(qū)域250中的通常預(yù)期數(shù)據(jù)類型有關(guān)。這一包括一種以上輸入技術(shù)(例如語音和筆點(diǎn)/滾子)類型的相互作用稱為“多模態(tài)”。
現(xiàn)在再返回語法,該語法是諸如上下文無關(guān)語法、N-語法或混合語法的合成語法,但不限于這些。(當(dāng)然,當(dāng)利用相應(yīng)形式的識(shí)別時(shí)會(huì)使用DTMF語法、手寫語法、手勢(shì)語法和圖像語法。如本文中所用的那樣,“語法”包括用于執(zhí)行識(shí)別的信息;在另一實(shí)施例中還包括相應(yīng)于預(yù)期輸入的信息,例如,在特殊區(qū)域中)。控制290(本文中識(shí)別為“reco”)包括多個(gè)元素,說明了它們中的兩個(gè),即語法元素“語法”和“聯(lián)編”元素。通常,象從網(wǎng)絡(luò)服務(wù)器202下載到客戶機(jī)的代碼那樣,可以在網(wǎng)絡(luò)服務(wù)器202產(chǎn)生語法并被下載到客戶機(jī)和/或傳給用于話音處理的遠(yuǎn)端服務(wù)器。然后,語法可以被局部存儲(chǔ)在高速緩存中。結(jié)果,將語法提供給識(shí)別服務(wù)器204,在識(shí)別中使用。語法元素被用于指定語法,內(nèi)聯(lián)或用屬性來參考。
一從相應(yīng)于所識(shí)別的話音的識(shí)別服務(wù)器204收到識(shí)別結(jié)果,就提供手寫、手勢(shì)、圖像等語法的reco控制290來接收相應(yīng)結(jié)果和使它與相應(yīng)區(qū)域關(guān)聯(lián),該區(qū)域可包括顯示器34上反映的文本。在所說明的實(shí)施例中,一用被發(fā)回到客戶機(jī)的結(jié)果完成話音識(shí)別,就使reco對(duì)象無效并將所識(shí)別的文本與相應(yīng)區(qū)域關(guān)聯(lián)。部分282和284的操作類似,其中為每個(gè)區(qū)域252和254調(diào)入唯一的reco對(duì)象和語法,并隨著收到所識(shí)別的文本使每個(gè)區(qū)域252和254相關(guān)聯(lián)。對(duì)應(yīng)于卡號(hào)區(qū)域252的接收,功能“handle”對(duì)應(yīng)卡類型檢查卡號(hào)的長度。
客戶端標(biāo)記的產(chǎn)生如上所述,當(dāng)從客戶機(jī)裝置30發(fā)出請(qǐng)求時(shí),服務(wù)器端插件209輸出客戶端標(biāo)記。簡言之,服務(wù)器端插件209允許網(wǎng)站,從而允許定義和構(gòu)建應(yīng)用和應(yīng)用所提供的服務(wù)。服務(wù)器端插件209中的指令由編譯代碼構(gòu)成。當(dāng)網(wǎng)絡(luò)請(qǐng)求到達(dá)網(wǎng)絡(luò)服務(wù)器202時(shí)運(yùn)行該代碼。然后,服務(wù)器端插件209輸出新的客戶端標(biāo)記頁,該頁被發(fā)送到客戶機(jī)裝置30。眾所周知,該過程常被稱為反映。服務(wù)器端插件209對(duì)“控制”進(jìn)行操作,該“控制”抽象和壓縮了標(biāo)記語言,從而抽象和壓縮了客戶端標(biāo)記頁代碼。這種抽象和壓縮標(biāo)記語言并在網(wǎng)絡(luò)服務(wù)器202上操作的的控制包括或相當(dāng)于“服務(wù)器插件”或“服務(wù)器端插件”等幾例。
已知,已有技術(shù)的服務(wù)器端插件可以為視覺反映和與客戶機(jī)裝置30的相互作用產(chǎn)生客戶端標(biāo)記。本說明書提供了3個(gè)不同種方法,用于擴(kuò)展服務(wù)器端插件209以包括識(shí)別和聽覺提示擴(kuò)展,如上面討論的示例客戶端擴(kuò)展,它們也分為本發(fā)明的幾個(gè)方面。圖7示意性說明了第一種方法,當(dāng)前的視覺服務(wù)器端控制(包括用于視覺顯示的參數(shù),諸如反映的位置、字體、前景顏色、背景顏色等)被擴(kuò)展為包括用于識(shí)別的參數(shù)和屬性以及用于相關(guān)識(shí)別的聽覺提示。用實(shí)例方式的話音識(shí)別和相關(guān)聽覺提示,屬性通常與聽覺提示參數(shù)有關(guān),如提示是否包含用于文本-話音轉(zhuǎn)換的內(nèi)聯(lián)文本、預(yù)記錄聽覺文件(例如wave文件)的播放、用于聽覺反映的數(shù)據(jù)(用于文本-話音轉(zhuǎn)換或預(yù)記錄聽覺文件的文本)的位置等。對(duì)于識(shí)別,參數(shù)或?qū)傩钥梢园ㄗR(shí)別期間要用的語法位置、信用度閾值等。由于服務(wù)器端插件209產(chǎn)生客戶端標(biāo)記,所以,用于對(duì)服務(wù)器端插件209的控制的參數(shù)和屬性與用于識(shí)別和/或聽覺提示的客戶端標(biāo)記中提供的擴(kuò)展有關(guān)。
圖7中300A所指示的控制是在網(wǎng)站應(yīng)用開發(fā)或編寫工具中周知的控制,編寫工具諸如ASP、ASP+、ASP.Net、JSP、Javabeans等。這種控制一般形成在庫中并被控制302用來執(zhí)行特殊視覺任務(wù)。庫300A包括用于產(chǎn)生預(yù)期客戶機(jī)標(biāo)記、事件處理程序等的方法。視覺控制302的實(shí)例包括“標(biāo)簽”控制,它在視覺顯示器上提供所選擇的文本標(biāo)簽,諸如圖5中的標(biāo)簽“信用卡提交”304。較高級(jí)視覺控制302的實(shí)例是“文本框”,它允許在諸如圖5中250所示的數(shù)據(jù)區(qū)域中輸入數(shù)據(jù)?,F(xiàn)有視覺控制302也是周知的。在對(duì)將服務(wù)器端插件模塊控制擴(kuò)展成包括識(shí)別和/或聽覺提示的第一種方法中,除了一組與視覺反映有關(guān)的屬性外,每個(gè)視覺控制302應(yīng)再包括與識(shí)別或聽覺提示有關(guān)的參數(shù)或?qū)傩浴T凇皹?biāo)簽”控制的情況下(否則就在視覺顯示器上提供被選擇的文本),其它屬性可以包括要反映聽覺數(shù)據(jù)或是利用文本-話音轉(zhuǎn)換和該數(shù)據(jù)文件的位置。庫300B與庫300A類似,還包括用于執(zhí)行識(shí)別和/或聽覺提示的標(biāo)記信息。每個(gè)視覺控制302被編碼成將該信息適當(dāng)提供給控制300B以執(zhí)行關(guān)于識(shí)別或聽覺提示的特殊任務(wù)。
作為另一實(shí)施例,在視覺顯示器上產(chǎn)生且允許客戶機(jī)裝置30的用戶輸入信息的“文本框”控制也應(yīng)包括適當(dāng)?shù)淖R(shí)別或聽覺提示參數(shù)或?qū)傩裕T如識(shí)別要用的語法。應(yīng)當(dāng)注意,識(shí)別或聽覺提示是可選的,如果不希望識(shí)別或聽覺提示就無須使用。
通常,如果在級(jí)302的控制包括關(guān)于視覺方面的參數(shù),該控制就訪問和使用庫300。類似地,如果該控制包括關(guān)于識(shí)別和/或聽覺提示的參數(shù),該控制就訪問和使用庫300B。應(yīng)當(dāng)注意,已經(jīng)分別說明了庫300A和300B以便強(qiáng)調(diào)庫300B中的附加信息,以及可以實(shí)現(xiàn)具有庫300A和300B的信息的單個(gè)庫。
這種方法中,每個(gè)當(dāng)前或已有技術(shù)視覺控制302被擴(kuò)展成包括適當(dāng)識(shí)別/聽覺提示屬性。可以在庫中形成控制302。服務(wù)器端插件209訪問訪問庫找標(biāo)記信息。執(zhí)行控制用所提供的參數(shù)產(chǎn)生了客戶端標(biāo)記頁或其部分。
圖8所示的第二種方法中,提供了新的視覺識(shí)別/聽覺提示控制304以便控制304成為與視覺控制302有關(guān)的子類,其中,在控制304提供識(shí)別/聽覺提示功能或標(biāo)記信息。換句話說,為識(shí)別/聽覺提示提供新的一組控制304,它包括適當(dāng)?shù)膮?shù)和屬性以在客戶機(jī)裝置30上執(zhí)行預(yù)期識(shí)別或與識(shí)別任務(wù)有關(guān)的聽覺提示??刂?04將現(xiàn)有視覺控制302用于經(jīng)顯示器反映或獲得視覺信息的范圍。例如,級(jí)304的控制“話音標(biāo)簽”在級(jí)302使用“標(biāo)簽”控制以提供聽覺反映和/或視覺文本反映。類似地,,“話音文本框”控制應(yīng)使語法和相關(guān)控制資源和處理與輸入?yún)^(qū)域關(guān)聯(lián)。象第一種方法那樣,用于控制304的屬性包括用于識(shí)別的語法位于何處,用于文本-話音轉(zhuǎn)換的內(nèi)聯(lián)文本,或者直接反映或要經(jīng)文本-話音轉(zhuǎn)換的文本文件來反映的預(yù)記錄音頻數(shù)據(jù)文件的位置。第二種方法的優(yōu)勢(shì)在于具有視覺控制302的識(shí)別控制304通過參數(shù)或?qū)傩詠硐嗷プ饔?,這樣,只要控制304和302之間的參數(shù)或?qū)傩越涌诩夹g(shù)仍然適當(dāng),改變視覺控制302就可以不要求在識(shí)別控制304中有任何改變。然而,隨著又一視覺控制302的產(chǎn)生,級(jí)304的相應(yīng)識(shí)別/聽覺提示控制也可能要被寫入。
圖9說明第三種方法。通常,第三種方法的控制306與視覺控制302是分開的,但是,如下所述其中有選擇性關(guān)聯(lián)。以這種方式,控制306不直接建立在視覺控制302之上,但是還提供識(shí)別/聽覺提示啟動(dòng)而不必重寫視覺控制302??刂?06象控制302那樣,使用庫300。本實(shí)施例中,庫300包括視覺和識(shí)別/聽覺提示標(biāo)記信息,它同樣是圖7的庫300A和庫300B的組合。
第三種方法有顯著的優(yōu)勢(shì)。第一,視覺控制302不必在內(nèi)容上有所改變。第二,控制306可以形成一致的單個(gè)模塊且不需根據(jù)話音啟動(dòng)控制302的本質(zhì)而改變。第三,話音啟動(dòng)的過程,即,在設(shè)計(jì)時(shí)控制306與視覺控制302的明顯關(guān)聯(lián)完全在開發(fā)者的控制之下,由于它是明顯的選擇性的關(guān)聯(lián)。這也就使視覺控制的標(biāo)記語言有可能經(jīng)諸如控制306產(chǎn)生的標(biāo)記語言提供的識(shí)別、或者經(jīng)諸如鍵盤的常規(guī)輸入裝置從多個(gè)源接收輸入值。簡言之,控制306可以被添加到服務(wù)器端插件209的視覺編寫頁的現(xiàn)有應(yīng)用編寫頁上??刂?06為客戶機(jī)裝置30的用戶提供新形式的相互作用(即,識(shí)別和/或聽覺提示),同時(shí)重利用視覺控制的應(yīng)用邏輯和視覺輸入/輸出能力。從控制302可以與可以編碼應(yīng)用邏輯的視覺控制302相關(guān)聯(lián)來看,控制306在下文中可稱為“伴隨控制306”,視覺控制302被稱為“基本控制302”。應(yīng)當(dāng)注意,為了區(qū)分控制302和306而提供了這些參考名稱而不是要限制它們。例如,伴隨控制306可以被用于開發(fā)或編寫網(wǎng)站,該網(wǎng)站不包括諸如純語音網(wǎng)站的視覺反映。在這種情況下,可以在伴隨控制邏輯中體現(xiàn)某種應(yīng)用邏輯。
圖10進(jìn)一步說明了示例組的伴隨控制306。這組伴隨控制306可以被分組為輸出控制308和輸入控制310。輸出控制308提供“提示”客戶端標(biāo)記,它通常包括預(yù)記錄音頻文件的播放、或用于文本-話音轉(zhuǎn)換的文本、包括在標(biāo)記中直接或經(jīng)URL參考的數(shù)據(jù)。雖然可以用參數(shù)定義單個(gè)輸出控制以管理所有的聽覺提示,這樣就要考慮本發(fā)明的另一方面,在示例性實(shí)例中,人物對(duì)話中的聽覺提示形式或類型被形成為分別的控制。尤其是,輸出控制308可以包括“問題”控制308A、“確認(rèn)”控制308B和“陳述”控制308C,這些將在下文詳細(xì)討論。類似地,輸入控制310也可以形成或遵循人物對(duì)話并包括“回答”控制310A和“命令”控制310B。下面討論輸入控制310,但是,通常輸入控制310將命令和來自客戶機(jī)裝置30的用戶的預(yù)期和可能輸入關(guān)聯(lián)起來。
雖然關(guān)于用作伴隨控制306詳細(xì)討論了詢問控制308A、確認(rèn)控制308B、陳述控制308C、回答控制310A、命令控制310B、也有這些控制的普通結(jié)構(gòu)的其它控制、參數(shù)和事件處理程序,但是要知道這些控制、普通結(jié)構(gòu)、參數(shù)和事件處理程序可以適于在上述關(guān)于圖7和8討論的其它兩個(gè)種方法中提供識(shí)別和/或聽覺提示。例如,參數(shù)“ClientToSpeechEnable”包括一個(gè)示例機(jī)制以形成伴隨控制和視覺控制之間的關(guān)聯(lián),當(dāng)在圖7和8的種方法中體現(xiàn)時(shí)可以不需要該參數(shù)。
多模態(tài)應(yīng)用中,輸出控制308中的至少一個(gè)或輸入控制310中的一個(gè)與基本或視覺控制302關(guān)聯(lián)。在所說明的實(shí)施例中,在“問題/回答”(下文也稱為“QA”)控制320的控制下配置和組織輸出控制308和輸入控制310。在網(wǎng)絡(luò)服務(wù)器202上執(zhí)行QA控制320,這意味著用服務(wù)器端標(biāo)記體系在網(wǎng)絡(luò)服務(wù)器上的應(yīng)用開發(fā)網(wǎng)頁上定義它,但不把它作為不同形式的標(biāo)記輸出到客戶機(jī)裝置30。雖然在QA控制表現(xiàn)為由所有輸出控制308和輸入控制310形成的圖10說明了這一點(diǎn),但是,要知道,這些僅僅是包括在可用于QA控制的選擇中的一種或多種選擇。
這時(shí),按應(yīng)用場景解釋控制308和310的使用會(huì)有幫助。參考圖11,在純語音應(yīng)用中,QA控制320可以包含單個(gè)詢問控制308A和回答控制310A。詢問控制308A包含一個(gè)或多個(gè)提示對(duì)象或控制322,同時(shí),回答控制310A可以通過用于輸入數(shù)據(jù)的識(shí)別和該輸入的相關(guān)處理的語法對(duì)象或控制324來定義語法。線326表示QA控制320與相應(yīng)基本控制302的關(guān)聯(lián),如果會(huì)用到的話。在客戶機(jī)裝置30的用戶可以觸摸視覺文本框(例如TapEvent)的多模態(tài)場景中,例如,對(duì)于包含文本框的基本控制(文本框具有形成了指示的視覺文本,指示客戶機(jī)裝置的用戶應(yīng)向相應(yīng)區(qū)域輸入些什么),相應(yīng)QA控制320可以或不可以有諸如音頻重放或文本-話音轉(zhuǎn)換的相應(yīng)提示,但是,應(yīng)當(dāng)有相應(yīng)于用于識(shí)別的預(yù)期值的語法、和處理輸入的事件處理程序328,或者處理諸如未檢測到話音、未識(shí)別話音或超時(shí)取消事件的其它識(shí)別器事件(如下述“事件”)。
通常,通過輸出控制308和輸入控制310和附加邏輯QA控制可以執(zhí)行下述過程中的一個(gè)或多個(gè)提供輸出聽覺提示,收集輸入數(shù)據(jù),執(zhí)行輸入結(jié)果的信用證實(shí),允許附加類型的輸入諸如“幫助”命令、或允許客戶機(jī)裝置的用戶導(dǎo)航網(wǎng)站的其它選擇區(qū)域的命令,允許確認(rèn)輸入數(shù)據(jù)和控制網(wǎng)站的對(duì)話流,這里僅舉幾例。簡言之,QA控制320包含所有與指定題目有關(guān)的控制。以這種方式,通過用對(duì)于題目的控制產(chǎn)生對(duì)話,以便通知獲得信息、確認(rèn)有效性或修復(fù)對(duì)話或改變交流題目。
在包含本發(fā)明另一方面的開發(fā)方法中,應(yīng)用開發(fā)者可以用視覺控制302定義應(yīng)用的視覺布局。然后,應(yīng)用開發(fā)者可以用伴隨控制306(體現(xiàn)為QA控制320或輸出控制308和輸入控制310)來定義應(yīng)用的講話接口。如圖10和11所示,然后每個(gè)伴隨控制306被鏈接或與相應(yīng)基本或視覺控制302關(guān)聯(lián)以提供識(shí)別和聽覺提示。當(dāng)然,如果需要的話,應(yīng)用開發(fā)者可以通過在視覺控制302和伴隨控制306之間轉(zhuǎn)換來定義或編碼應(yīng)用,直到完全定義或編碼應(yīng)用,在視覺控制302和伴隨控制306之間形成鏈接。
這時(shí),提供對(duì)每個(gè)輸出控制308和輸入控制310的簡短說明會(huì)有幫助。在附錄B中提供的詳細(xì)描述。
詢問,回答和命令通常,如上所述,QA控制320中的詢問控制308A保持與基本控制302有關(guān)的提示和語法資源,并使聯(lián)編(使識(shí)別結(jié)果和客戶端標(biāo)記頁的輸入?yún)^(qū)域關(guān)聯(lián))和處理邏輯相關(guān)。詢問控制308A和回答控制310A的存在與否確定了是否在激活時(shí)啟動(dòng)了話音輸出或識(shí)別輸出。命令控制310B和用戶初始回答被回答控制310A和命令控制310B的范圍性質(zhì)的指定所激活。
在簡單的純語音應(yīng)用中,QA控制320通常保持一個(gè)詢問控制或?qū)ο?08A和一個(gè)回答控制或?qū)ο?10A。雖然在下面的實(shí)例中沒顯示,但是,命令控制310B也可以被指定,例如幫助、重復(fù)、取消等,以使用戶能輸入不與特殊詢問的回答直接相關(guān)的輸入。
用于純語音對(duì)話的通常的“常規(guī)”QA控制如下<pre listing-type="program-listing"> <SpeechQA id=″QA_WhichOne″ ControlsToSpeechEnable=″textBox1″ runat=″server″> <Question><dp n="d16"/><prompt>W(wǎng)hich one do you want?</prompt> </Question> <Answer><grammar src=″whichOne.gram″/> </Answer> </SpeechQA></pre>(本文中提供的實(shí)例被寫為ASP.Net框架,這只是例子而不是限制本發(fā)明)該實(shí)例中,QA控制可以用它的“id”來識(shí)別,同時(shí),通過參數(shù)“ControlsToSpeechEnable”獲得QA控制與預(yù)期基本或視覺控制的關(guān)聯(lián),它用各自的標(biāo)識(shí)符識(shí)別一個(gè)或多個(gè)基本控制。如果需要的話,可以使用其它周知的控制來形成關(guān)聯(lián)。例如,通過上述第一和第二種方法可以得到直接、隱含的關(guān)聯(lián),或者,可以產(chǎn)生分別的表格用于保持關(guān)聯(lián)。參數(shù)“runat”指示網(wǎng)絡(luò)服務(wù)器應(yīng)在網(wǎng)絡(luò)服務(wù)器202執(zhí)行該代碼以產(chǎn)生正確的標(biāo)記。
QA控制也可以只保持陳述控制308C,這種情況下,它只是提示控制而無活動(dòng)語法(active grammar)(例如用于歡迎提示)。類似地,QA控制可以保持多模態(tài)控制,作為來自GUI的事件的結(jié)果,其回答控制310A直接激活它的語法或用于用戶初始的范圍機(jī)制(在下面討論)。
也應(yīng)當(dāng)注意,QA控制320也可以保持多個(gè)輸出控制308和輸入控制310,諸如多個(gè)詢問控制308A和多個(gè)回答控制310A。這允許編寫者描述關(guān)于相同QA控制中的相同輸入的相互作用流。它對(duì)于更復(fù)雜的純語音對(duì)話尤其有用。所以,可以在與表示對(duì)話輸入的視覺控制有關(guān)的QA控制包裹(wrapper)中指定可能包括多種詢問和回答(例如,提問、確認(rèn)、給予幫助等)的小對(duì)話。圖11說明了一個(gè)復(fù)雜的QA控制。
上文表示了QA控制的主要特點(diǎn)。從下面的功能觀點(diǎn)描述每個(gè)特點(diǎn)。
回答控制回答控制310A將語法概念、聯(lián)編和其它識(shí)別處理抽取到一個(gè)對(duì)象或控制中。回答控制310A可以被用于指定一組與問題有關(guān)的可能語法以及聯(lián)編聲明和相關(guān)腳本。對(duì)多模態(tài)應(yīng)用的回答控制,如“Tap-and-Talk”被GUI瀏覽事件激活或失效。下面的實(shí)例說明了回答控制310A被用在多模態(tài)應(yīng)用中以便在文本框“txtDepCity”的“mouseDown”事件中選擇離開城市,并將其值寫入基本文本框控制
<pre listing-type="program-listing"> <SpeechQA controlsToSpeechEnable=″txtDepCity″ runat=″server″> <Answer id=″AnsDepCity″StartEvent=″onMouseDown″StopEvent=″onMouseUp″/> <grammar src=″/grammars/depCities.gram″/> <bind value=″//sml/DepCity″ targetElement=″txtCity″/> </Answer> </SpeechQA></pre>純語音應(yīng)用中的標(biāo)準(zhǔn)回答控制310A被下述詢問控制308A直接激活。
回答控制還包括一種機(jī)制用來使收到的結(jié)果與基本控制相關(guān)聯(lián)。本文中,聯(lián)編將多個(gè)值放在基本控制中;然而,在另一實(shí)施例中,關(guān)聯(lián)機(jī)制可以允許基本控制看到或訪問被識(shí)別的結(jié)果。
詢問控制詢問控制308A將提示標(biāo)簽(附錄A)的概念抽取到包含可能提供選擇的對(duì)象和要響應(yīng)問題的回答控制310A中。每個(gè)詢問控制308A都能指定在其執(zhí)行中激活了哪個(gè)回答控制310A。它許可適當(dāng)?shù)捻憫?yīng)語法被塞進(jìn)回答控制310A中,它反映了相關(guān)詢問控制308A。
下面的詢問控制308A可以被用在純語音應(yīng)用中以請(qǐng)求離開城市<pre listing-type="program-listing"> <SpeechQA id=″QADepCity″controlsToSpeechEnable=″txtDepCity″runat=″server″><Question id=″Q1″Answers=″AnsDepCity″> <prompt>Please give me the departure city. </prompt></Question><Answer id=″AnsDepCity″.../> </SpeechQA></pre>在下面的實(shí)例中,可以根據(jù)詢問控制308A的內(nèi)部條件調(diào)入不同的提示。在詢問控制308A內(nèi)的提示上指定條件測試的能力意味著在詢問控制308A的相同功能單元中可以容許用詞改變。
<pre listing-type="program-listing"><SpeechQA id=″QADepCity″ controlsToSpeechEnable=″txtDepCity″ runat=″server″> <Question id=″Q1″Answers=″AnsDepCity″> <prompt count=″1″> Now I need to get the departure city. Where would you like to fly from? </prompt> <prompt count=″2″> Which departure city? </prompt> </Question> <Answer id=″AnsDepCity″.../></SpeechQA></pre>條件QA控制下面的實(shí)例說明了如何根據(jù)應(yīng)用已知的信息來確定是否要激活QA控制。實(shí)例是調(diào)查應(yīng)用的一部分。調(diào)查就是從員工們收集他們用來工作的傳送模式。
調(diào)查部分首先要問用戶是否搭公共汽車來上班。如果回答是——是,下面的問題就問用戶上周搭了幾天公共汽車。
——否,就繞過“搭公共汽車天數(shù)”的問題。
<pre listing-type="program-listing"><aspLabel id=″lblDisplay1″ text=″Do you ride the bus to work?″ runat=″server″/> <aspDropDownList id=″lstRodeBusYN″runat=″server″> <aspListItemselected=″true″>No</aspListItem> <aspListItem>Yes</aspListItem></aspDropDownList><SpeechQA id=″QA_RideBus ControlsToSpeechEnable=″lstRodeBusYN″ runat=″server″><SDNQuestion id=″Q_RideBus″> <prompt bargeIn=″False″> Do you ride the bus to work? </prompt></SDNQuestion><SDNAnswer id=″A_RideBus″ autobind=″False″ StartEvent=″onMouseDown″ StopEvent=″onMouseUp″ runat=″server″<dp n="d19"/> onClientReco=″ProcessRideBusAnswer″ <grammar src=″...″/><--!″yes/no″grammar--> </SDNAnswer></SpeechQA><aspLabel id=″lblDisplay2″ enabled=″False″ text=″How many days last week did you ride the bus to work?″ runat=″server″/><aspDropDownList id=″lstDaysRodeBus″e(cuò)nabled=″False″runat=″server″><aspListItem selected=″true″>0</aspListItem><aspListItem>1</aspListItem><aspListItem>2</aspListItem><aspListItem>3</aspListItem><aspListItem>4</aspListItem><aspListItem>5</aspListItem><aspListItem>6</aspListItem><aspListItem>7</aspListItem> </aspDropDownList><SpeechQA id= QA_DaysRodeBus″ControlsToSpeechEnable=″lstDaysRodeBus″ClientTest=″RideBusCheck″runat=″server″> <Question id=″Q_DaysRodeBus″> <prompt bargeIn=″False″> How many days last week did you ride the busto work? </prompt> </SDNQuestion> <SDNAnswer id=″A_DaysRodeBus″ autobind=″False″ StartEvent=″onMouseDown″ StopEvent=″onMouseUp″ runat=″server″ onClientReco=″ProcessDaysRodeBusAnswer″ <grammar src=″...″/><--!″numbers″grammar--> </SDNAnswer></SpeechQA><dp n="d20"/> <script language=″jscript″>function ProcessRideBusAnswer(){<--!using SML attribute of the Event object, determine yes or no answer--><--!then select the appropriate item in the dropdown listbox<--!and enable the next label and dropdown listbox if answer is″yes″-->if<--!Answer is″yes″-->{ lstRodeBusYN.selectedIndex=2 lblDisplay2.enabled=″true″ lstDaysRodeBus.enabled=″true″} } function RideBusCheck(){ if lstRodeBusYN.selectedIndex=″1″<--!thisis no--> then return″False″ endif } function ProcessDaysRodeBusAnswer(){ <--!case statement to select properdropdown item --> }</script></pre>在上面的實(shí)例中,根據(jù)布爾參數(shù)“ClientTest”執(zhí)行QA控制“QA DaysRodeBus”,在本實(shí)施例中,根據(jù)函數(shù)RideBusChech()設(shè)定該參數(shù)。如果函數(shù)返回偽條件(false condition),就不激活QA控制,而如果返回真條件,就激活QA控制。使用激活機(jī)制允許在所產(chǎn)生的客戶端標(biāo)記頁中增大靈活性、改善對(duì)話流。如附錄B中所述,許多控制和對(duì)象包括激活機(jī)制。
命令控制命令控制310B是純語音對(duì)話中常見的用戶說法,純語音對(duì)話通常幾乎沒有關(guān)于所問的問題的語義輸入,而有搜索助理或效果導(dǎo)航,例如幫助、取消、重復(fù)等。QA控制306中的命令控制310B不僅可被用于指定關(guān)于識(shí)別的語法和相關(guān)處理(不象回答控制310A那樣沒有結(jié)果到輸入?yún)^(qū)域的聯(lián)編),而且指定上下文的“范圍”和類型。這允許在客戶端標(biāo)記上編寫整體和上下文敏感行為。
從上文描述,本領(lǐng)域的技術(shù)人員可以了解,可以用類似于視覺控制302中的樹狀結(jié)構(gòu)來組織控制306。由于每個(gè)控制306也與所選擇的視覺控制302關(guān)聯(lián),所以控制306的組織可以與控制302的結(jié)構(gòu)關(guān)聯(lián)。
QA控制302可以被用于話音啟動(dòng)自動(dòng)控制(文本框、標(biāo)簽等)和容器控制(形式、面板等)。這提供了一種規(guī)定行為范圍和獲得子對(duì)話控制的模塊化的方法。例如,該范圍允許客戶機(jī)裝置的用戶導(dǎo)航其它客戶端標(biāo)記沒有完成對(duì)話的其它部分。
在一個(gè)實(shí)施例中,“范圍”被確定為基本控制樹的節(jié)點(diǎn)。下面是“幫助”命令的實(shí)例,它是在“Pnl1”容器控制的水平上,包含兩個(gè)文本框<pre listing-type="program-listing"> <asppanel id=″Pnl1″...> <asptextbox id=″tb1″.../> <asptextbox id=″tb2″.../> </asppanel> 原 <SpeechQA...> <Commandid=″HelpCmd1″scope=″Pnl1″type=″help″onClientReco=″GlobalGiveHelp()″><Grammar src=″grammars/help.gram″/> </Command> </SpeechQA> <script>function GlobalGiveHelp(){...} </script></pre>如所說明的那樣,在關(guān)于“Pnl1”的每個(gè)QA控制及其內(nèi)容中“幫助”語法是激活的。每次識(shí)別到“幫助”時(shí)就執(zhí)行GlobalGiveHelp子例程。為了克服它并實(shí)現(xiàn)上下文敏感行為,可以將相同類型的命令放到所要求級(jí)別的上下文范圍中<pre listing-type="program-listing"><SpeechQA...> <Command id=″HelpCmd2″ scope=″Tb2″ type=″help″<dp n="d22"/> onClientReco=″SpecialGiveHelp()″ > <Grammar src=″grammars/help.gram″/></Command></SpeechQA><script> function SpecialGiveHelp() ... }</script></pre>確認(rèn)控制QA控制320也可以包括用于簡化公共確認(rèn)子對(duì)話的編寫的方法。下面的QA控制以先提問再確認(rèn)值的常規(guī)子對(duì)話為例<pre listing-type="program-listing"> <SpeechQA id=″qaDepCity″ controlsToSpeechEnable=″txtDepCity″ runat=″server″> <!--asking for a value--> <Question id=″AskDepCity″type=″ask″Answers=″AnsDepCity″> <prompt> Which city?</prompt> </Question> <Answer id=″AnsDepCity″ confirmThreshold=″60″> <grammar src=″grammars/depCity.gram″/> </Answer> <!--confirming the value--> <Confirm id=″ConfirmDepCity″Answers=″AnsConfDepCity″> <prompt>Did you say<value targetElement=″txtDepCity/Text″>? </prompt> </Confirm> <Answer id=″AnsConfDepCity″><grammar src=″grammars/YesNoDepCity.gram″/> </Answer> </SpeechQA></pre>
該實(shí)例中,用戶響應(yīng)“哪個(gè)城市?”與AnsDepCity語法匹配但其信用度不超出confirmationThreshold值,該用戶響應(yīng)引發(fā)確認(rèn)控制308。編寫者可以使用的更靈活的確認(rèn)方法包括利用多個(gè)詢問控制和多個(gè)回答控制的機(jī)制。
在另一實(shí)施例中,關(guān)于確認(rèn)控制的附加輸入控制包括認(rèn)可控制、否定控制和校正控制。這些控制都可以別相應(yīng)確認(rèn)控制激活(以類似于其它控制的方式)并分別包括認(rèn)可、否認(rèn)或校正結(jié)果的語法。例如,用戶可能會(huì)說“不”來否認(rèn)、說“是”或“是+當(dāng)前值”來認(rèn)可(例如“你想去西雅圖嗎?”“是,去西雅圖”)、說“不”+新的值來校正(例如,“你想去西雅圖嗎?”“不,去匹茲堡”)。
陳述控制陳述控制允許當(dāng)不要求來自客戶機(jī)裝置30的用戶的響應(yīng)時(shí),應(yīng)用開發(fā)者提供關(guān)于客戶端標(biāo)記執(zhí)行的輸出??梢允抢缭陂_始執(zhí)行客戶端標(biāo)記頁時(shí)播放“歡迎”提示。
可以在陳述控制中提供屬性以便區(qū)分要提供給客戶機(jī)裝置的用戶的不同類型信息。例如,可以提供屬性以便指示警告消息或幫助消息。這些類型信息有不同的內(nèi)在性質(zhì),如不同的語音。如果需要的話,可以提供不同形式的陳述控制,即,幫助控制、警告控制等。無論是作為分別控制還是陳述控制的屬性來提供,不同類型的陳述在所產(chǎn)生的對(duì)話中起不同的作用,但是,它們共享向客戶機(jī)裝置的用戶提供信息而不期望回答的基本作用。
事件圖11所示的事件管理程序設(shè)在QA控制320、輸出控制308和輸入控制310中,它們用于客戶機(jī)裝置30用戶的有效/無效、用于識(shí)別服務(wù)器204的操作等,附錄B中指明了其它事件。例如,QA控制320詳細(xì)說明了話音檢測器檢測到用戶在含糊說、但不能識(shí)別詞和沒檢測到話音的靜音的情況。這些事件參考編寫者定義的客戶端腳本函數(shù)。在上文說明的多模態(tài)應(yīng)用中,可以將在文本框中放入錯(cuò)誤消息的一個(gè)簡單的含糊處理程序?qū)憺橄旅孢@樣<pre listing-type="program-listing"> <SpeechQA controlsToSpeechEnable=″txtDepCity″onClientNoReco=″OnMumble()″runat=″server″> <Answer id=″AnsDepCity″ StartEvent=″onMouseDown″ StopEvent=″onMouseUp″ ><dp n="d24"/> <grammar src=″/grammars/depCities.gram″/> <bind value=″//sml/DepCity″targetElement=″txtCity″/> </Answer></SpeechQA><script> function OnMumble(){ txtDepCity.value=″...recognition error...″; }</script></pre>控制執(zhí)行算法在一個(gè)實(shí)施例中,向客戶機(jī)裝置提供客戶端腳本或模塊(本文中稱為“RunSpeech”)。該腳本的目的是經(jīng)邏輯執(zhí)行對(duì)話流,在客戶機(jī)裝置30上執(zhí)行時(shí)、即激活關(guān)于控制的腳本以便按其中包含的值來執(zhí)行時(shí)的腳本中詳細(xì)說明了該邏輯。該腳本允許在頁面請(qǐng)求之間的多次對(duì)話往來,因而,對(duì)于諸如經(jīng)電話瀏覽器216的純語音對(duì)話控制尤其有用。在客戶機(jī)裝置30上以環(huán)路方式執(zhí)行客戶端腳本RunSpeech,直到發(fā)送完成的形式或從客戶機(jī)裝置30請(qǐng)求新的頁。
應(yīng)當(dāng)注意,在一個(gè)實(shí)施例中,多個(gè)控制可以按在客戶機(jī)上執(zhí)行時(shí)的值相互激活(例如,詢問控制激活所選擇回答控制)。然而,在另一實(shí)施例中,多個(gè)控制可以相互“激活”以便產(chǎn)生適當(dāng)?shù)臉?biāo)記,這種情況下可以實(shí)現(xiàn)服務(wù)器端處理。
通常,在一個(gè)實(shí)施例中,算法通過輸入話音和識(shí)別用戶輸入產(chǎn)生對(duì)話往來。算法的整個(gè)邏輯如下用于純語音場景1.發(fā)現(xiàn)下一激活輸出伴隨控制;2.如果是陳述,就播放陳述并回到1;如果是問題或確認(rèn)就到3;3.收集預(yù)期的回答;4.收集命令;5.播放輸出控制并聽到它以便輸入;6.激活識(shí)別回答或命令對(duì)象,或者,如果沒有識(shí)別到什么,就發(fā)布事件;7.回到1。
在多模態(tài)情況下,邏輯被簡化為下面的算法1.等候引發(fā)事件——即,用戶在控制上輕敲;2.收集預(yù)期回答;3.聽到它以便輸入;4.激活所識(shí)別的回答對(duì)象,或者,如果沒識(shí)別到什么,就丟棄(throw)事件。
5.回到1。
算法相對(duì)簡單是因?yàn)槿缟纤?,控制包含關(guān)于何時(shí)可以激活它們的內(nèi)置信息。算法也利用對(duì)話中控制的作用。例如,立即播放陳述,同時(shí)一旦已經(jīng)收集到了預(yù)期回答就播放詢問和確認(rèn)。
在另一實(shí)施例中,可以提供隱含確認(rèn)從而系統(tǒng)確認(rèn)一條信息并同時(shí)提問。例如,系統(tǒng)可以確認(rèn)飛機(jī)到達(dá)城市并以一種說法來要求旅行日期“你想什么時(shí)候去西雅圖?”(即,問“什么時(shí)候”和隱含確認(rèn)“目的地西雅圖”)。如果用戶給出了日期,那么,由于如果城市是錯(cuò)的,用戶就會(huì)立即有疑問,所以認(rèn)為是暗示認(rèn)可了該城市。該場景下,顯然用戶要獲得的知識(shí)是極其重要的他們要問問題、或者他們要校正值、或者他們要求幫助嗎?通過利用在對(duì)話中用戶輸入的作用,系統(tǒng)可以直到何時(shí)暗示認(rèn)可值。
總之,因?qū)υ捴锌刂频淖饔煤团c其它控制的關(guān)系產(chǎn)生對(duì)話,其中,算法執(zhí)行控制并因而管理對(duì)話。每個(gè)控制包含基于其類型的信息,執(zhí)行算法用該類型根據(jù)它在客戶機(jī)對(duì)話中是否起有用的用途來選擇(即,使執(zhí)行有效)給定控制。例如,只有在有值來進(jìn)行確認(rèn)和系統(tǒng)沒有使值繼續(xù)進(jìn)行的足夠信用度時(shí)確認(rèn)控制才有效。在另一實(shí)現(xiàn)中,這些內(nèi)置信息中的大多數(shù)可以被忽略或被應(yīng)用開發(fā)者改編。
下面的表格總結(jié)了多個(gè)控制、它們?cè)趯?duì)話中相應(yīng)作用和與其它控制的關(guān)系。
通過說明簡單的人/機(jī)對(duì)話來解釋這些控制的使用。下面的對(duì)話中,每個(gè)對(duì)話打開一部分系統(tǒng)或根據(jù)反映其在對(duì)話中目的的控制(用括號(hào)來表示)賦予用戶特征。
1.系統(tǒng)(陳述)“歡迎來到旅行訂購服務(wù)”。
2.系統(tǒng)(詢問)“您想去哪?”3.用戶(回答)“舊金山”。
4.系統(tǒng)(確認(rèn))“您是想說西雅圖嗎?”5.用戶(否認(rèn))“不”。
6.系統(tǒng)(問題)“您想去哪?”7.用戶(回答)“舊金山”。
8.系統(tǒng)(確認(rèn))“您想去西雅圖嗎?”9.用戶(校正)“我說的是舊金山”。
10.系統(tǒng)(確認(rèn))“您說的是舊金山嗎?”11.用戶(校正)“是”。
12.系統(tǒng)(問題)“您想什么時(shí)候出發(fā)?”13.用戶(命令)“幫助”。
順序1是系統(tǒng)部分上的陳述。由于陳述控制在響應(yīng)中不激活回答控制,系統(tǒng)就不期望輸入。系統(tǒng)在順序2繼續(xù)激活詢問控制。它再激活一組可能的回答控制,包括持有通過服務(wù)可以使用的城市的語法的控制,包括許可用戶在順序3中提供的城市“舊金山”、“西雅圖”等。
用戶的順序3被系統(tǒng)所誤認(rèn)。雖然系統(tǒng)認(rèn)為它有了一個(gè)來自用于城市的回答控制的值,但是該值的信用度低(當(dāng)然如此,由于它已經(jīng)誤認(rèn)了)。剛收到的回答控制中的該低信用度值對(duì)于RunSpeech是足以出發(fā)系統(tǒng)部分上的確認(rèn)控制的信息,象在順序4中產(chǎn)生的那樣。確認(rèn)控制再激活否認(rèn)控制、校正控制和認(rèn)可控制,并使它們各自的語法可被用來識(shí)別用戶的下一輪。用戶順序5、9和11說明了對(duì)這些控制的實(shí)例響應(yīng)。用戶的輪5簡單地否認(rèn)“否”。這會(huì)從系統(tǒng)除去該值,所以RunSpeech的下一作用是再問問題以重新獲得該值(順序6)。
順序7和8象用3和4那樣返給我們確認(rèn)控制。
用戶順序9是校正控制,它被再次激活作為對(duì)確認(rèn)控制的可能響應(yīng)。校正控制不僅否認(rèn)正進(jìn)行確認(rèn)的值,而且提供新的值。所以用戶順序9被系統(tǒng)識(shí)別為具有新值的正確控制,該值這次被正確地識(shí)別為“舊金山”。
新值中的系統(tǒng)信用度低,然而,在順序10產(chǎn)生又一確認(rèn)控制。這再在響應(yīng)中激活認(rèn)可、否認(rèn)和校正控制,用戶順序11(“是”)與認(rèn)可控制語法匹配。認(rèn)可控制的識(shí)別的效果是在它試圖獲得的值用打下系統(tǒng)信任的“基礎(chǔ)”,所以現(xiàn)在RunSpeech能選擇其它空值來獲得它。在順序12中,輸出新的詢問控制,它要求日期值。這時(shí)的用戶響應(yīng)(順序13)是命令“幫助”。通常以整體風(fēng)格激活命令控制,即,在系統(tǒng)部分上的獨(dú)立的不同的詢問控制和確認(rèn)控制。以這種方式,用戶能隨時(shí)要求幫助,象他在順序13中所做的那樣。命令控制也可以被根據(jù)談?wù)撃牟糠只究刂平Y(jié)構(gòu)來規(guī)定它們的激活范圍的機(jī)制更靈敏地啟動(dòng)。
再看算法,,在一個(gè)示例性實(shí)施例實(shí)施例中,客戶端腳本RunSpeech檢查每個(gè)基本控制中的值和QA控制的屬性、以及當(dāng)前頁上的QA控制的任何選擇測試,并選擇用于執(zhí)行的一個(gè)QA控制。例如,在所選擇的QA控制中,選擇一個(gè)問題和它的相應(yīng)提示用于輸出,然后關(guān)于對(duì)相應(yīng)問題的常規(guī)回答活動(dòng)語法。也可以并行激活附加語法,允許被表示為可允許的其它命令(或其它回答)。假設(shè)已經(jīng)進(jìn)行了識(shí)別且完成了對(duì)輸入數(shù)據(jù)的任何進(jìn)一步處理,客戶端腳本RunSpeech再次開始以便確定下面應(yīng)執(zhí)行那個(gè)QA控制。附錄B中提供了示例性實(shí)現(xiàn)和RunSpeech算法。
應(yīng)當(dāng)注意,控制和RunSpeech算法或模塊的使用不限于上述客戶機(jī)/服務(wù)器應(yīng)用,還可適于用其它應(yīng)用抽象來使用。例如,可以想像只在客戶機(jī)裝置30上運(yùn)行的諸如VoiceXML的應(yīng)用包括其它元素和控制,諸如作為上述VonceXML的一部分提供且以相同方式操作的問題和回答。這種情況下,上述RunSpeech算法機(jī)制可以被瀏覽器缺省執(zhí)行而不需額外腳本。類似地,諸如有限狀態(tài)機(jī)的其它平臺(tái)可以適于包括本文中描述的多個(gè)控制和RunSpeech算法或模塊。
同步如上所述,伴隨控制306與基本控制302(頁上現(xiàn)有的控制)相關(guān)聯(lián)。因而伴隨控制306可以重利用基本控制302的商業(yè)邏輯和呈現(xiàn)能力。這用兩種方式來進(jìn)行在基本控制302中存儲(chǔ)多個(gè)值和通知基本控制改變302。
伴隨控制306經(jīng)所謂的聯(lián)編機(jī)制使它們的值與基本控制302同步或關(guān)聯(lián)。聯(lián)編將從識(shí)別器收到的多個(gè)值放入基本控制302,例如將文本放入文本框,本文中以回答控制為例。由于基本控制302響應(yīng)視覺呈現(xiàn),它將視覺反饋提供給多模態(tài)場景中的用戶。
多個(gè)伴隨控制306也提供通知基本控制302它們已經(jīng)過識(shí)別器收到輸入的機(jī)制。這允許基本控制302采取措施,如調(diào)用商業(yè)邏輯。(由于通知伴隨控制306的委托的量達(dá)到它們寫入基本控制302的值,所以實(shí)現(xiàn)提供了一種以精細(xì)控制來控制通知的機(jī)制。該控制是由RejectThreshold和ConfirmThreshold性質(zhì)在回答控制上提供的,回答控制指定了數(shù)字聲音信用值,在該值以下系統(tǒng)會(huì)分別拒絕或試著確認(rèn)一個(gè)值)。
雖然已經(jīng)參考最佳實(shí)施例描述了本發(fā)明,但是,在不背離本發(fā)明的精神和范圍的情況下,本領(lǐng)域的技術(shù)人員會(huì)知道可以進(jìn)行形式或細(xì)節(jié)上的改變。
附錄A1.介紹下面的標(biāo)簽是一組允許文檔使用話音作為輸入或輸出媒體的標(biāo)記元素。標(biāo)簽被設(shè)計(jì)成自主式XML,它可以被嵌入到任何SGML派生標(biāo)記語言中,如HTML、XHTML、cHTML、SMIL、WML等。本文中使用的標(biāo)簽類似于SAPI5.0,已知它們是可以從Redmond,Washington的微軟公司得到的方法。標(biāo)簽、元素、事件、屬性、性質(zhì)、返回值等只是示例性的,用于話音和DTMF識(shí)別,類似的標(biāo)簽可以被提供用于其它形式的識(shí)別。
本文中討論的主要元素是<prompt...>用于話音合成構(gòu)成和提示播放<reco...>用于識(shí)別器構(gòu)成和識(shí)別執(zhí)行和后處理<grammar...>用于指定輸入語法資源<dtmf...>用于DTMF的構(gòu)成和控制2.識(shí)別識(shí)別元素用于指定可能的用戶輸入和用于處理輸入結(jié)果的方法。因而,它的主要元素是<gramar>和<bind>,它包含用于構(gòu)成識(shí)別器性質(zhì)的資源。
識(shí)別元素被經(jīng)起動(dòng)和停止方法在上級(jí)瀏覽器中、或用SMIL命令在SMIL-啟動(dòng)瀏覽器中可編程地激活。由于它們呈現(xiàn)在頁上,被認(rèn)為在下級(jí)瀏覽器(即,非腳本支持瀏覽器)中是聲明性地有效。為了許可并行激活多個(gè)語法,可以同時(shí)認(rèn)為多個(gè)識(shí)別元素有效。
識(shí)別也可以采取特殊模式——“自動(dòng)”、“單個(gè)”或“多個(gè)”——來區(qū)分它們啟動(dòng)的識(shí)別場景的種類和識(shí)別平臺(tái)的行為。
2.1識(shí)別內(nèi)容識(shí)別元素包含一種或幾種語法和任選的一組聯(lián)編元素,這些聯(lián)編元素審查識(shí)別結(jié)果和將相關(guān)部分復(fù)制到包含頁中的值。
在上級(jí)瀏覽器中,識(shí)別支持各個(gè)語法規(guī)則中的綱領(lǐng)性激活和失效。也要注意,語法中的所有頂級(jí)規(guī)則對(duì)于識(shí)別上下文都是缺省激活的。
2.1.1<grammar>元素語法元素被用于通過內(nèi)聯(lián)或利用src屬性參考來指定語法。通常指定至少一種語法(內(nèi)聯(lián)或參考)。內(nèi)聯(lián)語法可以是基于文本的語法格式,同時(shí)參考語法可以是基于文本的或二進(jìn)制類型的??梢灾付ǘ鄠€(gè)語法元素。如果指定了一種以上的語法元素,將加入語法中的規(guī)則作為相同語法中的額外規(guī)則。可以重寫具有相同名稱的任何規(guī)則。
屬性·src如果指定內(nèi)聯(lián)語法時(shí)可選。要包括語法的URI。注意,語法中的所有頂級(jí)規(guī)則對(duì)于識(shí)別上下文來說都是缺省激活的。
·lang function checkKWBargein(){ news.change(1.0,0.5);//turn down thevolume while verifyingif(keyword.text== ″″){//result is below threshold news.change(1.0,2.0);//restore the volume keyword.Start();//restart the recognition }else{news.Stop();//keyword detected!Stop the prompt//Do whatever that is necessary } } // </script><script for=″window″e(cuò)vent=″onload″> <!--news.Start();keyword.Start();//</script> </head>θbody> <prompt id=″news″bargein=″0″><dp n="d44"/> Stocks turned in another lackluster performanceWednesday as investors received little incentive tomake any big moves ahead of next week′s FederalReserve meeting.The tech-heavy Nasdaq Composite Indexdropped 42.51 points to close at 2156.26.The DowJones Industrial Average fell 17.05 points to 10866.46after an early-afternoon rally failed. -<!-- </prompt><reco id=″keyword″reject=″70″onReco=″checkKWBargein()″><grammar src=http//denali/news bargein grammar.xml /> </reco></body> </html></pre>3.4提示事件提示DOM對(duì)象支持下面的事件,可以將這些事件的處理程序指定為提示元素的屬性。
3.4.1 onBookmark在遇到合成書簽時(shí)激發(fā)。該事件不中止重放。
語法
事件對(duì)象信息
事件屬性雖然事件處理程序不直接接收屬性,但是,該處理程序可以詢問用于數(shù)據(jù)的事件對(duì)象。
3.4.2 onBargein
當(dāng)檢測到用戶的闖入事件時(shí)激發(fā)。(注意確定是什么構(gòu)成了闖入事件,例如能量檢測湖哦關(guān)鍵字識(shí)別,直到平臺(tái))該事件處理程序的指定不自動(dòng)打開闖入。
語法
事件對(duì)象信息
事件性質(zhì)雖然事件處理程序不直接接收性質(zhì),但是,該處理程序可以詢問用于數(shù)據(jù)的事件對(duì)象。
3.4.3 onComplete當(dāng)提示重放到達(dá)終點(diǎn)或遇到排除時(shí)(如上定義的那樣)激發(fā)。
語法
事件對(duì)象信息
事件性質(zhì)雖然,事件處理程序不直接接收性質(zhì),但是,該處理程序可以詢問用于數(shù)據(jù)的事件對(duì)象。
3.4.4使用書簽和事件下面的實(shí)例顯示了按照提示輸出期間發(fā)生的闖入,書簽事件可以被如何用來確定用戶響應(yīng)的語義——校正離開城市或提供目的城市。該onBargein處理程序調(diào)入一個(gè)腳本,該腳本設(shè)定了可對(duì)于在提示中遇到的最末書簽變化的整體“標(biāo)志”,并且該“標(biāo)志”的值被用在識(shí)別后處理函數(shù)(‘heard’)以設(shè)定正確的值。
<pre listing-type="program-listing"> <script><![CDATA[ var mark; function interrupt(){mark=event.srcElement.bookmark; } function ProcessCityConfirm(){confirm.stop();//flush the audiobufferif(mark==″mark_origin_city″)txtBoxOrigin.value=event.srcElement.text; elsetxtBoxDest.value=event.srcElement.text; } ]]></script> <body> <input name=″txtBoxOrigin″value=″Seattle″type=″text″/> <input name=″txtBoxDest″type=″text″/> ... <prompt id=″confirm″onBargein=″interrupt()″bargein=″0″>From<bookmark mark=″mark_origin_city″/><value targetElement=″orgin″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產(chǎn)生DTMF識(shí)別對(duì)象。該對(duì)象可以用內(nèi)聯(lián)標(biāo)記語言語法或在腳本中舉例說明。當(dāng)被激活時(shí),DTMF可以使提示對(duì)象激發(fā)闖入事件。應(yīng)當(dāng)注意,下面相對(duì)于DTMF識(shí)別討論的標(biāo)簽和事件以及在部分5中討論的調(diào)入控制與語音瀏覽器216和媒體服務(wù)器214之間的相互作用有關(guān)。
4.1內(nèi)容·dtmfgrammar用于內(nèi)聯(lián)語法。
·bind象適當(dāng)?shù)膮^(qū)域分配DTMF轉(zhuǎn)換結(jié)果。
屬性·targerElement要求。要被分配部分識(shí)別結(jié)果的元素(u W3C SMIL 2.0中相同)。
·targetAttribute要被分配識(shí)別結(jié)果的目標(biāo)元素的屬性(與SMIL 2.0中相同)。缺省為“值”。
·test用于分配的條件。缺省為真。
實(shí)例1將鍵映射到文本。
<pre listing-type="program-listing"> <input type=″text″name=″city″/> <DTMF id=″city_choice″timeout=″2000″numDigits=″1″> <dtmfgrammar> <key value=″1″>Seattle</key> <key value=″2″>Boston</key> </dtmfgrammar> <bind targetElement=″city″targetAttribute=″value″/> </DTMF></pre>當(dāng)激活“city choice”時(shí),如果用戶按下了1,就將“西雅圖”分配到輸入?yún)^(qū)域,如果按下2,就分配“波士頓”,否則什么也不分配。
實(shí)例2可以如何用多個(gè)區(qū)域來使用DTMF。
<pre listing-type="program-listing"><input type=″text″name=″area_code″/><input type=″text″name=″phone_number″/><DTMF id=″areacode″numDigits=″3″onReco=″e(cuò)xtension.Activate()″><bind targetElement=″area_code″/></DTMF><DTMF id=″e(cuò)xtension″numDigits=″7″> <bind targetElement=″phone_number″/></DTMF></pre>實(shí)例說明了如何允許用戶輸入多個(gè)區(qū)域。
實(shí)例3當(dāng)用戶起動(dòng)DTMF時(shí)如何同時(shí)允許話音和DTMF輸入以及停用話音。
<pre listing-type="program-listing"> <input type=″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″e(cuò)scape=″#″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屬性和性質(zhì)4.2.1屬性·dtmfgrammar要求。DTMF語法的URI。
4.2.2性質(zhì)·DTMFgrammar讀寫一種將DTMF呈現(xiàn)給字符串轉(zhuǎn)換矩陣的SML DOM節(jié)點(diǎn)對(duì)象(也稱為DTMF語法)。缺省語法為<dtmfgrammar>
<key value=“0”>0</key>
<key value=“1”>1></key>
...
<key value=“0”>0</key>
<key value=“9”>9</key>
<key value=“*”>*</key>
<key value=“#”>#</key>
</dtmfgrammar>
·flush寫-讀,指示是否在激活之前在下層電話接口卡上自動(dòng)刷新DTMF緩沖的布爾標(biāo)志。缺省為偽以便啟動(dòng)提前鍵入。
·escape
讀-寫。結(jié)束DTMF讀取會(huì)話的換碼鍵。換碼鍵是一個(gè)鍵。
·numDigits讀寫。結(jié)束DTMF讀取會(huì)話的擊鍵數(shù)。如果同時(shí)指定換碼和長度,DTMF會(huì)話就在滿足條件時(shí)結(jié)束。
·dtmfResult只讀字符串,存儲(chǔ)用戶已經(jīng)輸入的DTMF鍵。如果鍵入換碼,它就包括在結(jié)果中。
·text只讀字符串,存儲(chǔ)空白分隔符號(hào)串,根據(jù)DTMF語法轉(zhuǎn)換每個(gè)符號(hào)。
·initialTimeout讀-寫。用于接收第一DTMF擊鍵的幾毫秒超時(shí)期。如果未指定,缺省為電話平臺(tái)的內(nèi)部設(shè)定。
·interdigitTimeout讀-寫。用于相鄰DTMF擊鍵的幾毫秒超時(shí)期。如果未指定,缺省為電話平臺(tái)的內(nèi)部設(shè)定。
4.3對(duì)象方法4.3.1起動(dòng)啟動(dòng)DTMF中斷和起動(dòng)DTMF讀取會(huì)話。
語法Object.Start()返回值無。
排除無。
4.3.2停止使DTMF失效。然而,用戶輸入的擊鍵仍留在緩存中。
語法Object.Stop()返回值無。
排除無。
4.3.3刷新刷新DTMF緩存。不能在DTMF會(huì)話期間調(diào)入刷新。
語法Object.Flush()返回值無。
排除無。
4.4事件4.4.1 onkeypress當(dāng)按下DTMF鍵時(shí)激發(fā)。這重寫了從HTML控制繼承的缺省事件。當(dāng)用戶點(diǎn)擊換碼鍵時(shí),onRec事件激發(fā),而不是onKeypress。
語法
事件對(duì)象信息
事件性質(zhì)雖然事件處理程序不直接接收性質(zhì),但是,該處理程序可以詢問用于數(shù)據(jù)的事件。
4.4.2 onReco當(dāng)結(jié)束DTMF會(huì)話時(shí)激發(fā)。該事件使當(dāng)前DTMF對(duì)象自動(dòng)失效。
語法
事件對(duì)象信息
事件性質(zhì)雖然事件處理程序不直接接收性質(zhì),但是,處理程序可以詢問用于數(shù)據(jù)的事件對(duì)象。
4.4.3 onTimeout當(dāng)在超時(shí)前沒接收到階段完成事件(phrase finish event)時(shí)激發(fā)。該事件自動(dòng)停止識(shí)別過程。
語法
事件對(duì)象信息
事件性質(zhì)雖然事件處理程序不直接接收性質(zhì),但是,該處理程序可以詢問用于數(shù)據(jù)的事件對(duì)象。
5.調(diào)入控制對(duì)象表示電話語音瀏覽器的電話接口(調(diào)入、終端和連接)。該對(duì)象在GUI瀏覽器中象窗口對(duì)象一樣的性質(zhì)。同樣,電話對(duì)象的壽命與瀏覽器實(shí)例自身相同。用于電話的語音瀏覽器舉電話對(duì)象為例,用于每個(gè)調(diào)入。用戶不以對(duì)象為例或處置它。
此時(shí),通過該對(duì)象僅暴露與第一方呼叫控制有關(guān)的特征。
5.1性質(zhì)·address只讀。XML DOM節(jié)點(diǎn)對(duì)象。具體實(shí)現(xiàn)。它是調(diào)入者的地址。對(duì)于PSTN,可以是ANI和ALI的組合。對(duì)于VoIP,它是調(diào)入者的IP地址。
·ringsBeforeAnswer回答來電前的響鈴數(shù)。缺省為無限,意味著開發(fā)者必須專門使用下面的Answer()方法來回答電話調(diào)入。當(dāng)調(diào)入中心用ACD等候來電調(diào)入時(shí),該數(shù)字可以被設(shè)為0。
5.2方法注這里所有的方法都是同步的。
5.2.1轉(zhuǎn)移轉(zhuǎn)移該調(diào)入。對(duì)于盲目轉(zhuǎn)移,系統(tǒng)可以終止原始調(diào)入,并且一旦轉(zhuǎn)移完成就釋放系統(tǒng)資源。
語法telephone.Transfer(strText);參數(shù)○strText要求。計(jì)劃接收器的地址。
返回值無。
排除當(dāng)調(diào)入轉(zhuǎn)移失敗時(shí)丟棄排除。當(dāng)對(duì)方忙時(shí),就沒有數(shù)字、傳真或回答機(jī)器回答。
5.2.2 Bridge第三方轉(zhuǎn)移。在調(diào)入被轉(zhuǎn)移后,瀏覽器可以釋放為該調(diào)入分配的資源。直到應(yīng)用恢復(fù)用strUID返回所轉(zhuǎn)移的調(diào)入時(shí)的會(huì)話狀態(tài)。下層電話平臺(tái)可以將返回調(diào)入指路到不同的瀏覽器。調(diào)入可以只在接收者終止調(diào)入時(shí)返回。
語法
telephone.Bridge(strText,strUID[imaxtime]);參數(shù)○strText要求。計(jì)劃接收器的地址。
○strU //read address,prepare customized stuff if anycallControl.Answer();// </SCRIPT><SCRIPT for=″callControl″e(cuò)vent=″onOffhook″> <!--p_main.Start();g_login.Start();dtmf.Start(); focus=″user″; // </SCRIPT><SCRIPT for=″window″e(cuò)vent=″onload″> <!--if(logon.user.value?。健濉?{ p_retry.Start(); logon.user.value=″″; logon.pass.value=″″; checkFields();} //</SCRIPT><BODY> <reco id=″g_login″onReco=″login_reco();runSpeech()″ timeout=″5000″ onTimeout=″p_miss.Start();RunSpeech()″><grammar src=http//kokaneel/etradedemo/speechonly/login.xml/></reco> <dtmf id=″dtmf″e(cuò)scape=″#″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 I D and pin number</prompt><prompt id=″p_uid″>Please just say your user I D</prompt><dp n="d57"/> <prompt id=″p_pin″>Please just say your pin number</prompt> <prompt id=″p_miss″>Sorry,I missed that</prompt> <prompt id=″p_thank″>Thank you.Please wait while I verify your identity</prompt> <prompt id=″p_retry″>Sorry,your user I D and pin number do not match</prompt> <H2>Login</H2>form id=″logon″>U comspeech″> <head> <style>.time{behaviorurl(#default#time2);} </style> </head> <body> <input name=″txtBoxOrigin″type=″text″/> <input name=″txtBoxDest″type=″text″/><spprompt class=″time tbegin=″0″> please say the origin and destination cities</spprompt><tpar tbegin=″time.end″trepeatCount=″indefinitely″ <spreco class=″time″> <grammar src=″./city.xml″/> <bind targetElement=″txtBoxOrigin″ value=″//origin_city″/><bind targetElement= ″txtBoxDest″ test=″/sml/dest_city[@confidence $gt$ 40]″ value=″//dest_city″/> </spreco></tpar></body></html></pre>
附錄B1.QA話音控制QA控制將話音功能添加到它所附加的基本控制。其對(duì)象模型是附錄A中示例標(biāo)簽的內(nèi)容模型的抽象。
1.1 QA控制<pre listing-type="program-listing"><SpeechQA id=″...″ controlsToSpeechEnable=″...″ speechIndex=″...″ ClientTest=″...″ runat=″server″> <Question...> <Statement...> ... <Answer...> <Confirm...> ... <Command...> ...</SpeechQA></pre>1.1.1核芯特性字符串ControlToSpeechEnalbeControlToSpeechEnalbe指定對(duì)話音使能的主要控制的ID表。ID的公共定義的。
1.1.2激活機(jī)制SpeechIndex指定QA控制的訂購信息——用RunSpeech來使用它。注如果一個(gè)以上的QA控制有相同的SpeechIndex,RunSpeech會(huì)以源命令(source order)執(zhí)行它們。在一些QA控制具有指定的SpeechIndex和一些QA控制沒有指定的SpeechIndex的情況下,RunSpeech用SpeechIndex先命令QA控制,然后用源命令來命令QA控制。
字符串ClientTestClientTest指定了客戶端腳本函數(shù),它返回布爾值以確定QA控制何時(shí)可以被RunSpeech選擇。因而該系統(tǒng)策略可以通過用它作為條件來進(jìn)行改變,以比SpeechIndex更靈敏地激活QA控制或使其失效。如果未指定,QA控制可被認(rèn)為是激活的。
1.1.3詢問、陳述、回答、確認(rèn)和命令Question[]QuestionQA控制包含問題對(duì)象或控制陣列,它們由對(duì)話編寫者來定義。每個(gè)詢問控制通常涉及系統(tǒng)的一個(gè)函數(shù),例如要求一個(gè)值等。每個(gè)詢問控制可以用ClientTest屬性指定一個(gè)激活函數(shù),所以激活QA控制可以在不同的環(huán)境中問關(guān)于其基本控制的多種問題。例如,用于主要問題A_Main的激活條件可以是相應(yīng)基本控制沒有值,用于Q_GiveHelp的激活條件可以是用戶剛請(qǐng)求幫助。每個(gè)問題可以從QA控制中指定回答控制,這些回答控制在輸出詢問控制時(shí)被激活。
Statement[]StatementQA控制包含一個(gè)陳述對(duì)象或控制的陣列。陳述被用于向聽者提供信息,如歡迎提示。
Answer[]AnswerQA控制包含一個(gè)回答對(duì)象或控制的陣列。回答控制被QA控制中的詢問控制直接激活。使用多個(gè)回答時(shí),它們通常將回答反映給系統(tǒng)函數(shù),例如,A_Main可以響應(yīng)A_Main提供一個(gè)值,A_Confirm可以向確認(rèn)提供是/否+校正。
Confirm[]ConfirmQA控制可以包含確認(rèn)對(duì)象或控制。該對(duì)象是提供給對(duì)話編寫者的機(jī)制,它簡化了普通確認(rèn)子對(duì)話的編寫。
Command[]Command命令陣列保持一組命令控制。命令控制可以被認(rèn)為是沒有詢問控制的回答控制,它的識(shí)別行為可以被規(guī)定在控制樹的下部范圍。
1.2詢問控制詢問控制被用于關(guān)于給定的基本控制的話音輸出。它包含一組用于呈現(xiàn)信息或問問題的提示、和回答控制的id列表,該列表可以回答問題。如果指定了多個(gè)回答控制,就在激活問題時(shí)并行載入這些語法。如果在詢問控制中不指定回答控制就丟棄排除。
<pre listing-type="program-listing"><Question id=″...″ ClientTest=″...″ Answers=″...″ Count=″...″ initialTimeout=″...″ babbleTimeout=″...″ maxTimeout=″...″ Modal=″...″ PromptFunction=″...″ OnClientNoReco=″...″><prompt.../>... </Question></pre>字符串ClientTestClientTest指定返回布爾值的客戶端腳本函數(shù),布爾值確定在什么環(huán)境下認(rèn)為QA控制中詢問控制激活(QA控制對(duì)于要被評(píng)價(jià)的問題必須是激活的)。對(duì)于給定QA控制,選擇具有真條件的第一詢問控制用于輸出。例如,該函數(shù)可以被用于確定是否要輸出確定要求值(“您想去哪個(gè)城市?”)或試圖確認(rèn)它(“您是說倫敦嗎?”)的問題。如果未指定,就認(rèn)為問題條件為真。
Prompt[]Prompt提示陣列指定了下面要討論的提示對(duì)象的列表。提示也能指定選擇條件(經(jīng)客戶函數(shù)),且在RunSpeech執(zhí)行期間,只選擇具有真條件的第一提示用于播放。
String Answer回答是用ID的參考陣列以便控制對(duì)問題的可能回答。該行為是要響應(yīng)詢問控制所問的提示激活來自每個(gè)有效回答控制的語法。
Integer initialTimeout在識(shí)別起動(dòng)和檢測話音之間的幾毫秒時(shí)間。如果超時(shí),該值就被送到識(shí)別平臺(tái),從識(shí)別平臺(tái)丟棄onSilenct事件。如果未指定,話音平臺(tái)就使用缺省值。
Integer babbleTimeout識(shí)別服務(wù)器或其它識(shí)別器必須在檢測話音后返回結(jié)果的幾毫秒時(shí)間段。對(duì)于“tap-and-talk”場景中的識(shí)別,它應(yīng)用于話音檢測和可以使用的識(shí)別結(jié)果之間的時(shí)期。對(duì)于指令場景中的識(shí)別,該超時(shí)應(yīng)用于話音檢測和每個(gè)識(shí)別返回之間的時(shí)期——即,每次返回結(jié)果或其它事件后重新開始的時(shí)期。如果超時(shí),onClientNoReco事件被丟棄但可以有不同的狀態(tài)代碼。如果已經(jīng)可以檢測到任何一種識(shí)別平臺(tái)錯(cuò)誤且經(jīng)過了babbleTimeout時(shí)期,那么,onClientNoReco就被丟棄但狀態(tài)代碼為-3?;蛘撸绻R(shí)別器仍處理音頻——例如在超長說法的情況下或者如果用戶已經(jīng)在超時(shí)中繼續(xù)下筆——丟棄onClientNoReco,狀態(tài)代碼為-15。如果未指定babbleTimeout,話音平臺(tái)就缺省為內(nèi)值。
Integer maxTimeout識(shí)別起動(dòng)和將結(jié)果返回被客戶裝置瀏覽器之間的幾毫秒時(shí)期。如果超時(shí),瀏覽器就丟棄onMaxTimeout事件——它適于內(nèi)部環(huán)境中的網(wǎng)絡(luò)或識(shí)別器故障。對(duì)于指令場景中的識(shí)別,象babbleTimeout那樣,在返回每個(gè)識(shí)別或其它事件后重新開始該時(shí)期。注意,maxTimeout屬性應(yīng)大于或等于intialTimeout和babbleTimeout之和。如果未指定,該值就是瀏覽器缺省值。
bool modal當(dāng)將模態(tài)設(shè)為真時(shí),不激活除了對(duì)問題的一組立即回答之外的回答(即,不考慮沒規(guī)定范圍的回答)。缺省為偽。例如,該屬性允許應(yīng)用開發(fā)者使客戶裝置的用戶回答特殊問題。
字符串PromptFunction(prompt)PromptFunction指定一旦已經(jīng)選擇了問題但播放提示之前調(diào)入的客戶端函數(shù)。它為開發(fā)者執(zhí)行對(duì)可能要求的提示的最后修改提供了機(jī)會(huì)。PromptFunction用目標(biāo)提示的ID作為所要求的參數(shù)。
字符串onClientNoRecoonClientNoReco指定客戶端函數(shù)的名稱在收到NoReco(mumble)時(shí)調(diào)入。
1.2.1提示對(duì)象提示對(duì)象包含關(guān)于如何播放提示的信息。所定義的所有性質(zhì)是寫/讀性質(zhì)。
<pre listing-type="program-listing"><promptid=“...”count=“...”ClientTest=“...”Source=“...”bargeIn=“...”<dp n="d64"/>onClientBargein=“...”onClientComplete=“...”onClientBookmark=“...”</prompt>int count</pre>Count指示用于提示選擇的整數(shù)。當(dāng)在提示上指定的計(jì)數(shù)值與其詢問控制的計(jì)數(shù)值匹配時(shí),就選擇提示用于重放。合法值是0-100。
<Question id=Q_Ask”>
<prompt count=“1”>Hello</prompt>
<prompt count=“2”>Hello again</prompt>
</Question>
該實(shí)例中,當(dāng)Q_Ask.count等于1,播放第一提示,如果等于2(即,以前已經(jīng)輸出問題),然后播放第二提示。
字符串ClientTestClientTest指定了返回布爾值的客戶端腳本函數(shù),該函數(shù)確定在什么環(huán)境下選擇激活詢問控制中的提示用于輸出。對(duì)于給定詢問控制,選擇具有真條件的第一提示。例如,該函數(shù)可以被用于實(shí)現(xiàn)提示漸細(xì),例如(如果是第一次用戶返回真的函數(shù)“您想離開哪個(gè)城市?”或用于老手的“哪個(gè)城市?”)如果未指定,就認(rèn)為提示的條件為真。
字符串InlinePrompt提示性質(zhì)包含要播放的提示的文本。它被定義為提示元素的內(nèi)容。它還可以包含標(biāo)記,象在TTS反映信息中那樣,或者<value>元素。如同頁的所有部分,它也可以被指定為<script>標(biāo)簽中的腳本代碼,用于提示輸出的動(dòng)態(tài)反映。
字符串SourceSource指定URL,從該URL檢索要播放的提示的文本。如果指定了內(nèi)聯(lián)提示,就忽略該性質(zhì)。
Bool BargeInBargeIn被用于指定是否在提示上允許闖入(其中,當(dāng)播放提示時(shí),客戶裝置的用戶開始講話)。缺省為真。
字符串onClientBargein
onClientBargein指定闖入事件所調(diào)用的客戶端腳本函數(shù)。
字符串onClientCompleteonClientComplete指定當(dāng)完成提示的播放時(shí)調(diào)用的客戶端腳本函數(shù)。
字符串onClientBookmarkonClientBookmark在遇到書簽時(shí)訪問要調(diào)入的客戶端函數(shù)的名稱。
1.2.2提示選擇在RunSpeech執(zhí)行時(shí),QA控制以下面的方式選擇其提示ClientTest和每個(gè)提示的計(jì)數(shù)屬性被依次評(píng)價(jià)。播放具有ClientTest和counttrue的第一提示。錯(cuò)過的計(jì)數(shù)被認(rèn)為是真。錯(cuò)過ClientTest被認(rèn)為是真。
1.3陳述控制當(dāng)不要求活動(dòng)語法時(shí),陳述控制被用于信息給出系統(tǒng)輸出。它在純語音對(duì)話中是公用的。如果playOnce屬性為真,陳述就在每頁只播放依次。
<Statementid=“...”playOnce=“...”ClientTest=“...”PromptFunction=“...”<prompt.../>
</Statement>
bool playOnceplayOnce屬性指定每頁是否可激活1次以上的陳述控制。playOnce是具有TRUE缺省(如果未指定)的布爾屬性,即,只執(zhí)行1次陳述控制。例如,playOnce屬性可以被用在其目的是輸出電子郵件消息到終端用戶的陳述控制。設(shè)定playOnce=“False”會(huì)給對(duì)話編寫者提供啟動(dòng)讀取電子郵件消息的頁上的“repeat”功能的能力。
字符串ClientTestClientTest指定返回布爾值的客戶端腳本函數(shù),它確定在哪種環(huán)境下選擇陳述控制用于輸出。RunSpeech會(huì)激活ClientTest等于真的第一陳述。如果未指定,ClientTest條件就被認(rèn)為是真。
字符串PromptFunction
PromptFunction指定一旦選擇了陳述控制但在播放提示前要調(diào)入的客戶端函數(shù)。它給了編寫者對(duì)所要求的提示最后修改的機(jī)會(huì)。
Prompt[]Prompt提示陣列指定了提示對(duì)象的列表。提示也能指定選擇條件(經(jīng)客戶函數(shù)),在RunSpeech執(zhí)行期間,只選擇具有真條件的第一提示用于重放。
<SpeechQAid=QA_Welcome”ControlsToSpeechEnable=“Labell”Runat=“server”<Statementid=“WelcomePrompt”>
<prompt bargeIn=“False”>Welcome</prompt>
</Statement>
</SpeechQA>
1.4確認(rèn)控制確認(rèn)控制是詢問控制的特殊類型。它們會(huì)保持所有其它詢問控制的性質(zhì)和對(duì)象,但是,它們的激活不同。RunSpeech算法會(huì)檢查在ControlsToSpeechEnable的回答控制的confirmThreshold中發(fā)現(xiàn)的信用分。如果信用分太低,就激活確認(rèn)控制。如果回答控制的信用分低于confirmThreshold,那么,就進(jìn)行聯(lián)編但是不調(diào)入onClientReco方法。對(duì)話編寫者可以為每個(gè)QA控制指定一個(gè)以上的確認(rèn)控制。RunSpeech會(huì)根據(jù)ClientTest指定的函數(shù)確定要激活哪個(gè)確認(rèn)控制。
<Answer ConfirmationThreshold=.../>
<Confirm>
...all attributes and objects of Question...
</Confirm>
1.5回答控制回答控制被用于指定話音輸入資源和特點(diǎn)。它包含一組關(guān)于基本控制的語法。注意,可以獨(dú)立于問題使用回答,例如在多模態(tài)應(yīng)用且沒有提示時(shí)、或者額外回答可以啟動(dòng)用戶主動(dòng)(initiative)的電話應(yīng)用中。回答控制可以被詢問控制、引發(fā)事件或明顯的范圍直接激活。如果在回答控制中不指定語法對(duì)象,就丟棄排除。
<pre listing-type="program-listing"><Answer id=″...″ scope=″...″ StartEvent=″...″ StopEvent=″...″ ClientTest=″...″ onClientReco=″...″ onClientDTMF=″...″ autobind=″...″ server=″...″ ConfirmThreshold=″...″ RejectThreshold=″...″> <grammar.../> <grammar.../> ... <dtmf.../> <dtmf.../> ... <bind.../> <bind.../> ...</Answer></pre>字符串ScopeScope在頁上保持任何被命名元素的id。Scope被用在回答控制中用于給用戶主動(dòng)可用性(混合的任務(wù)主動(dòng)即,服務(wù)跳躍離題(service jump digression))語法。如果在回答控制中指定了范圍,那么,就在激活相應(yīng)于上下文控制子樹中的基本控制的QA控制的任何時(shí)候激活Scope。
字符串StartEventStartEvent指定了來自要激活回答控制的基本控制的事件名稱(起動(dòng)Reco對(duì)象)。它通常被用在多模態(tài)應(yīng)用中,例如onMouseDown,用于tap-and-talk。
字符串StopEventStopEvent指定來自號(hào)使回答控制失效的基本控制的事件名稱(停止Reco對(duì)象)。它通常被用在多模態(tài)應(yīng)用中,例如onMouseUp,用于tap-and-talk。
字符串ClientTestClientTest指定返回布爾值的客戶端腳本函數(shù),它確定在哪種環(huán)境下另外會(huì)被范圍或詢問控制選擇的詢問控制是激活的。例如,該測試被用在詢問控制激活‘correction’回答控制時(shí)‘correction’回答控制使自己失效的確認(rèn)期間,但是,不希望是混合主動(dòng)(只有認(rèn)可/否認(rèn)回答控制是激活的)?;蛘咴S可服務(wù)跳躍的被規(guī)定范圍的回答控制可以通過指定一個(gè)測試來確定更靈活的激活方法,該測試的真或偽取決于對(duì)話的另一部分。如果未指定,回答控制的條件被認(rèn)為是真。
Grammar[]GrammarsGrammars訪問語法對(duì)象列表。
DTMF[]DTMFsDTMFs保持DTMF對(duì)象陣列。
Bind[]BindsBinds保持需要將回答控制語法結(jié)果(dtmf或講話)映射到控制值中的聯(lián)編對(duì)象列表。所有為回答指定的聯(lián)編都在識(shí)別相關(guān)輸出時(shí)執(zhí)行。如果沒有指定聯(lián)編,識(shí)別返回的SML輸出就被聯(lián)編到在QA控制的ControlsToSpeechEnable中指定的控制。
字符串onClientRecoonClientReco指定了在可以使用講話識(shí)別結(jié)果時(shí)要調(diào)入的客戶端函數(shù)名稱。
字符串onClientDTMFonClientDTMF保持在可以使用DTMF識(shí)別結(jié)果時(shí)要調(diào)入的客戶端函數(shù)名稱。
boolean autobindautobind的值確定是否為來自回答控制的識(shí)別返回實(shí)現(xiàn)系統(tǒng)缺省聯(lián)編。如果未指定,缺省為真。將autobind設(shè)定為偽是讓系統(tǒng)不執(zhí)行自動(dòng)聯(lián)編的指令。
字符串serverserver屬性是指定要執(zhí)行識(shí)別的服務(wù)器的URI的可選屬性。該屬性重寫了整體話音服務(wù)器屬性的URI。
integer ConfirmThreshold保持表示信用水平的值,在該水平以下在QA控制中識(shí)別回答后確認(rèn)控制問題會(huì)被自動(dòng)立即引發(fā)。合法值是0-100。
注意,同時(shí)指定聯(lián)編陳述和onClientReco腳本時(shí),得到的標(biāo)簽的語義是在onClientReco中指定腳本前實(shí)現(xiàn)的聯(lián)編。
integer RejectThresholdRejectThreshold指定了考慮返回所識(shí)別的說法的最低信用分。如果整個(gè)信用低于該水平,NoReco事件就被丟棄。合法值是0-100。
1.5.1語法語法對(duì)象包含關(guān)于選擇和語法內(nèi)容的信息以及用于處理結(jié)果的方法。所有被定義的性質(zhì)都是讀/寫性質(zhì)。
<GrammarClientTest=“...”Source=“...”>
...grammar rules...
</Grammar>
字符串ClientTestClientTest性質(zhì)參考客戶端布爾函數(shù),它確定在哪種條件下語法是激活的。如果在回答控制中指定了多個(gè)語法(例如,實(shí)現(xiàn)系統(tǒng)混合主動(dòng)策略,或減小進(jìn)行差的對(duì)話時(shí)可能回答的混亂),只選擇具有真ClientTest函數(shù)的第一語法用于RunSpeech執(zhí)行期間的激活。如果,未指定該性質(zhì),就假設(shè)為真。
字符串SourceSource訪問要加載的語法的URI,如果被指定的話。
字符串InlineGrammarInlineGrammar訪問語法的文本,如果內(nèi)聯(lián)指定的話。如果該性質(zhì)不空,Source屬性就被忽略。
1.5.2聯(lián)編用于聯(lián)編的對(duì)象模型緊密遵循其對(duì)端客戶端標(biāo)簽。聯(lián)編可以被同時(shí)指定給講話語法和在單個(gè)回答控制中返回的DTMF識(shí)別。
<bindValue=“...”TargetElement=“...”TargetAttribute=“...”Test=“...”/>
字符串Value
Value指定要被聯(lián)編到目標(biāo)元素的文本。它被指定為從識(shí)別輸出的SML上的XPath。
字符串TargetElementTargetElement指定要應(yīng)用聯(lián)編陳述的基本控制的id。如果未指定,就假設(shè)它是相關(guān)QA控制的ControsToSpeechEnable。
字符串TargetAttributeTargetAttribute指定TargetElement控制上的屬性,在TargetElement中聯(lián)編值。如果未指定,就假設(shè)目標(biāo)元素的文本性質(zhì)。
字符串TestTest屬性指定在聯(lián)編機(jī)制上必須評(píng)價(jià)為真的條件。它被指定為從識(shí)別輸出的SML受到XML模式。
1.5.2.1自動(dòng)聯(lián)編識(shí)別上返回到話音啟動(dòng)的基本控制的缺省行為是要將確定性質(zhì)聯(lián)編到該基本控制。這對(duì)于對(duì)話控制以便檢驗(yàn)來自各輪(甚至各頁)的基本控制的識(shí)別結(jié)果是有用的?;卮鹂刂茖⒏鶕?jù)接收識(shí)別結(jié)果執(zhí)行下面的作用1.將SML輸出樹聯(lián)編到基本控制的SML屬性中;2.將說法的文本聯(lián)編到基本控制的SpokenText屬性中;3.將識(shí)別器返回的信用分聯(lián)編到基本控制的Confidence屬性中。
除非在回答控制上指定autobind=“False”屬性,回答控制將在基本控制上執(zhí)行下面的作用1.將SML輸出樹聯(lián)編到SML屬性中;2.將說法的文本聯(lián)編到SpokenText屬性中;3.將識(shí)別器返回的信用分聯(lián)編到基本控制的Confidence屬性中。
屬性中已有的任何值將會(huì)被重寫。自動(dòng)聯(lián)編發(fā)生在所有編寫者指定聯(lián)編命令前,因此就是在所有onClientReco腳本前(它也可以聯(lián)編到這些屬性)。
1.5.3 DTMFDTMF可以被回答控制用在電話應(yīng)用中。DTMF對(duì)象主要應(yīng)用于相同回答的不同模態(tài)語法(鍵區(qū)輸入語法而非話音輸入語法)。DTMF內(nèi)容模型與客戶端輸出標(biāo)簽DTMF元素的內(nèi)容模型很匹配。用DTMF對(duì)象的targetAttribute屬性指定用于DTMF返回的聯(lián)編機(jī)制。
<pre listing-type="program-listing"><DTMFfirstTimeout=“...”interDigitTimeout=“...”numDigits=“...”flush=“...”escape=“...”targetAttribute=“...”ClientTest=“...”></DTMF>integer firstTimeout</pre>在激活和出現(xiàn)超時(shí)事件前的第一鍵入之間的幾毫秒數(shù)。
Integer interDigitTimeout等候出現(xiàn)超時(shí)事件之前的按鍵之間的幾毫秒數(shù)。
Int numDigitsDTMF識(shí)別期間許可的最大鍵輸入數(shù)。
bool flush陳述是否在識(shí)別開始前刷新電話服務(wù)器DTMF緩沖的標(biāo)志。設(shè)定刷新為偽許可DTMF鍵輸入被存儲(chǔ)在識(shí)別/頁調(diào)入之間,它許可用戶‘type-ahead’。
字符串escape保持將被用于結(jié)束DTMF識(shí)別的鍵的串值(例如‘#’)。
字符串targetAttributeTargetAttribute指定了要聯(lián)編值的基本控制上的性質(zhì)。如果未指定,就假設(shè)它是基本控制的Text性質(zhì)。
字符串ClientTestClientTest性質(zhì)參考客戶端布爾函數(shù),該函數(shù)確定在哪種條件下DTMF語法是激活的。如果在DTMF對(duì)象中指定了多個(gè)語法,就只選擇具有真ClientTest函數(shù)的第一語法用于在RunSpeech執(zhí)行期間激活。如果未指定該性質(zhì),就假設(shè)為真。
1.5.4 DTMF語法DTMF語法將鍵映射到與該鍵有關(guān)的輸出值。下面的例子顯示了如何將“1”和“2”鍵映射到文本輸出值。
<dtmfgrammar>
<key value=“1”>Seattle</key>
<key value=“2”>Boston<</key>
</dtmfgrammar>
1.6命令控制命令控制是可以在任何QA控制中定義的回答控制的特殊變量。命令控制由用戶輸入形成,這些命令控制不是對(duì)將來問題的回答(例如,幫助、重復(fù)、取消)且不需將識(shí)別結(jié)果聯(lián)編到基本控制中。如果QA控制指定了激活范圍,命令語法對(duì)于范圍中的每個(gè)QA控制就是激活的。因此,命令不需被問題或事件直接激活,它的語法被獨(dú)立于回答控制建立過程并行激活。在范圍較低的QA控制的相同類型命令控制可以用上下文敏感行為來重寫高級(jí)命令(甚至是不同/擴(kuò)展后的語法,如果需要的話)。
<Commandid=“...”scope=“...”type=“...”RejectThreshold=“...”onClientReco=“...”>
<Grammar...>
<dtmf...>
</Command>
字符串ScopeScope保持基本控制的id。Scope被用在命令控制中用于給命令語法的可用性規(guī)定范圍。如果為命令控制指定了范圍,就會(huì)在激活相應(yīng)于上下文控制的子樹中基本控制的QA控制的任何時(shí)候激活命令的語法。
字符串typeType指定了命令的類型(例如‘幫助’、‘取消’等)以便允許在范圍樹的低級(jí)重寫相同類型的命令。在該屬性中任何串值都是可能的,所以是由編寫者來保證類型的正確使用。
Integer RejectThresholdRejectThreshold指定了識(shí)別引發(fā)命令所需的最低識(shí)別信用水平(可能在要求高于普通信用的信用時(shí)用到,例如在執(zhí)行‘取消’命令的結(jié)果前)。合法值是0-100。
字符串onClientRecoonCommand指定了在命令控制的語法的識(shí)別上執(zhí)行的客戶端腳本函數(shù)。
Grammar Grammar將聽到命令的grammar對(duì)象。
DTMF []DTMF將激活命令的dtmf對(duì)象。
2.起始和對(duì)話流的類型用上述控制,可以開發(fā)多種形式的起始,下面提供了一些實(shí)例。
2.1混合主動(dòng)對(duì)話混合起始對(duì)話提供了以問一個(gè)問題來認(rèn)可對(duì)多個(gè)控制的輸入的能力。例如,對(duì)問題“您的旅行計(jì)劃是什么?”的回答可以提供用于初始城市對(duì)話框控制、目的城市對(duì)話框控制和日程控制的值(“在9月30日從普牙盧普飛到雅基馬”)。
編碼混合起始對(duì)話的固定方法是手寫混合起始語法和相關(guān)聯(lián)編陳述,并將它應(yīng)用于單個(gè)控制。
下面的實(shí)例顯示了用于關(guān)于旅行的簡單混合起始語音相互作用的單頁。第一QA控制指定了混合主動(dòng)語法和聯(lián)編以及要求兩項(xiàng)的相關(guān)提示。第二和第三QA控制不是混合主動(dòng),所以用缺省直接聯(lián)編到它們各自的基本控制(所以不要求聯(lián)編陳述)。RunSpeech算法將根據(jù)屬性“SpeechIndex”和它們的基本控制是否保持有效值來選擇QA控制。
<pre listing-type="program-listing"><%@Page language=“c#”AutoEventWireup=“false”inherits=“SDN.Page”%><dp n="d74"/><body><Form id=″WebForm1″ method=post runat=″server″><ASPLabel id=″Label1″runat=″server″>Departurecity</ASPLabel><ASPTextBox id=″TextBox1″runat=″server″/><br><ASPLabel id=″Label2″runat=″server″>Arrivalcity</ASPLabel><ASPTextBox id=″TextBox2″textchanged=″TextChanged″runat=″server″/><!-speech information--><SpeechQA id=″QAmixed″controlsToSpeechEnable=″TextBox1″speechIndex=″1″ runat=″server″> <Question id=″Q1″Answers=″A1″> <prompt>″Please say the cities you want to flyfrom and to″</prompt> </Question> <Answer id=″A1″> <grammar src=″...″/> <bind targetElement=″TextBox1″value =″/sml/path1″/> <bind targetElement=″TextBox2″value=″/sml/path2″/> </Answer></SpeechQA><SpeechQA id=″QA1″controlsToSpeechEnable=″TextBox1″speechIndex=″2″runat=″server″> <Question id=″Q1″Answers=″A1″> <prompt>″What′s the departure city?″</prompt> </Question> <Answer id=″A1″> <grammar src=″...″/> </Answer></SpeechQA><SpeechQA id=″QA2″controlsToSpeechEnable=″TextBox2″speechIndex=″3″runat=″server″><dp n="d75"/><Question id=“Q1”Answer=“A1”><prompt>“What’s the arrival city”</prompt></Question><Answer if=“A1”><grammar src=“...”/></Answer></SpeechQA></Form></body></html></pre>2.2復(fù)雜混合起始應(yīng)用開發(fā)者可以對(duì)具有不同主動(dòng)水平的相同詢問控制指定幾個(gè)回答。指定要在問問題時(shí)選擇一個(gè)問題的條件,這取決于它們要求的起始起始設(shè)定。下面提供了一個(gè)實(shí)例<pre listing-type="program-listing"><SpeechQA id=″QA_Panel2″ ControlsToSpeechEnable=″Panel2″ runat=″server″> <Question answers=″systemInitiative,mixedInitiative″ .../> <Answer id=″systemInitiative″ ClientTest=″systemInitiativeCond″ onClientReco=″SimpleUpdate″> <grammar src=″systemInitiative.gram″/> </Answer> <Answer id=″mixedInitiative″ ClientTest=″mixedInitiativeCond″ onClientReco=″MixedUpdate″> <grammar src=″mixedInitiative.gram″/> </Answer></SpeechQA></pre>應(yīng)用開發(fā)者可以在一個(gè)QA控制中指定幾個(gè)詢問控制。一些詢問控制可以允許混合起始起始風(fēng)格的回答,同時(shí)恰詢問控制更直接。通過在這些詢問控制上編寫條件應(yīng)用開發(fā)者可以按對(duì)話狀態(tài)在問題之間選擇。
在下面的實(shí)例中,混合起始問題同時(shí)提問兩個(gè)文本框的值(例如‘您的旅行計(jì)劃時(shí)什么?’)和調(diào)入混合起始回答(例如‘從倫敦到西雅圖’)。如果失敗了,那么就分別提問每個(gè)文本框的值(例如‘您從哪出發(fā)?’和‘您要去哪?’)但是,根據(jù)條件,仍然可以激活混合起始語法,這樣,允許用戶提供兩個(gè)值。
<pre listing-type="program-listing"><SpeechQA id=″QA_Panel2″ ControlsToSpeechEnable=″TextBox1,TextBox2″ runat=″server″><Question ClientTest=″AllEmpty()″ answers=″AnsAll″ .../><Question ClientTest=″TextBox1IsEmpty()″ answers=″AnsAll,AnsTextBox1″ .../><Question ClientTest=″TextBox2IsEmpty()″ answers=″AnsAll,AnsTextBox2″ .../> <Answer id=″AnsTextBox1″ onClientReco=″SimpleUpdate″> <grammar src=″AnsTextBox1.gram″ /> </Answer> <Answer id=″AnsTextBox2″ onClientReco=″SimpleUpdate″> <grammar src=″AnsTextBox2.gram″/> </Answer><Answerid=“AnsAll”ClientTest=“IsMixedInitAllwed()”onClientReco=“MixedUpdate”><grammar src=“AnsAll.gram”/></Answer></SpeechQA></pre>2.3用戶起始與命令控制類似,標(biāo)準(zhǔn)QA控制可以指定與其語法的激活。類似于命令控制,該QA控制將激活來自相關(guān)回答控制的語法,無論何時(shí)在該語法中激活另一QA控制。注意,它的詢問控制只會(huì)被問到QA控制是否自激活。
<pre listing-type="program-listing"><SpeechQAid=“QA_Panel2”ControlsToSpeechEnable=“Panel2”Runat=“server”><Question.../><Answer id=“AnswerPanel2”scope=“Panel2”onClientReco=“UpdatePanel2()”><grammar src=“src=“Panel2.gram”/></Answer></SpeechQA></pre>這對(duì)于對(duì)話是有用的,這些對(duì)話允許‘服務(wù)跳躍’——關(guān)于不與即將到來的詢問控制直接相關(guān)的對(duì)話的一些部分的用戶響應(yīng)。
2.4短超時(shí)確認(rèn)應(yīng)用開發(fā)者可以如常編寫確認(rèn),但是,設(shè)定一個(gè)短超時(shí)。在超時(shí)處理程序中,提供代碼認(rèn)可當(dāng)前值作為準(zhǔn)確值。
<pre listing-type="program-listing"><SpeechQAid=“QA_Panel2”ControlsTospeechEnablr=“”Panel2”Runat=“server”><Confirm timeout=“20”onClientTimeout=“AcceptConfirmtion”.../><Answer id=“CorrectPanel2”onClientReco=“UpdatePanel2()”><grammar src=“Panel2.gram”/></Answer></SpeechQA></pre>2.5動(dòng)態(tài)提示建立和編輯在選擇詢問控制之后但在選取和播放提示之前調(diào)入promptFunction腳本。它讓應(yīng)用開發(fā)者在最后一刻建立或修改提示。在下面的實(shí)例中,它被用于根據(jù)用戶經(jīng)驗(yàn)水平來改變提示。
<pre listing-type="program-listing"> <script language=j(luò)avascript> function GetPrompt(){if(experiencedUser==true) Prompt1.Text=″What service do you want?″;else Prompt1.Text=″Please choose between e- mail, calendar and news″;return; } </script> <SpeechQA id=″QA Panel2″ ControlsToSpeechEnable=″Panel2″ runat=″server″> <Question PromptFunction=″GetPrompt″...><Prompt id=″Prompt1″/> </Question><Answer.../></SpeechQA></pre>2.6利用語義關(guān)系識(shí)別和語義關(guān)系的使用可以通過研究onReco事件處理程序中識(shí)別器結(jié)果來進(jìn)行。
<script language=“javascript”>
function Reco(){/*應(yīng)用開發(fā)者可以訪問用識(shí)別器或識(shí)別服務(wù)器返回的SML。如果識(shí)別了語義關(guān)系(象體育新聞),各個(gè)元素的信用就可以增加或采取其它適當(dāng)作用。
<pre listing-type="program-listing">*/}</script><SpeechQAid=“QA-Panel2”<dp n="d79"/>ControlToSpeechEnable=“Panel2”Runat=“server”><Question.../><Answer onClientReco=“Reco”><grammar src=“Panel2.gram”/></Answer></SpeechQA></pre>3.RunSpeech的實(shí)現(xiàn)和應(yīng)用需要一個(gè)機(jī)制來為純語音客戶提供適當(dāng)反映話音啟動(dòng)頁所需的信息。這種機(jī)制必須提供對(duì)話邏輯的執(zhí)行和用戶提示的維持狀態(tài)以及應(yīng)用開發(fā)者指定的語法激活對(duì)于多模態(tài)客戶不需要這種機(jī)制。在多模態(tài)的情況下,客戶裝置的用戶可以看到包含話音啟動(dòng)控制的頁??蛻粞b置的用戶可以用多模態(tài)范例向任何預(yù)期命令中的視覺話音啟動(dòng)控制中提供話音輸入。
純語音客戶用來反映話音啟動(dòng)頁的機(jī)制是RunSpeech腳本或算法。RunSpeech腳本依賴于QA控制的SpeechIndex屬性和下面要討論的speechGroup控制。
3.1 SpeechControl在運(yùn)行期,系統(tǒng)分析控制腳本或具有服務(wù)器控制的網(wǎng)頁并產(chǎn)生服務(wù)器控制的樹狀結(jié)構(gòu)。通常,樹的根是Page控制。如果控制腳本使用該定制或用戶控制,該定制或用戶控制的子樹就被擴(kuò)展。樹的每個(gè)節(jié)點(diǎn)有一個(gè)ID且易于在擴(kuò)展時(shí)在樹中有名稱沖突。為了解決可能的名稱沖突,該系統(tǒng)包括NamingContainer概念。樹中的任何節(jié)點(diǎn)可以實(shí)現(xiàn)NamingContainer,其子位于該名稱空間中。
QA控制可以出現(xiàn)在服務(wù)器控制樹中。為了容易地解決SpeechIndex和管理客戶端反映,提供SpeechGroup控制。應(yīng)用開發(fā)者隱瞞了Speechgroup控制。
產(chǎn)生一個(gè)Speechgroup控制并邏輯地連接到在其子樹中包含QA控制的每個(gè)NamingContainer節(jié)。QA和SpeechGroup控制被認(rèn)為時(shí)其直接NamingContainer的SpeechGroup的成員。該頂級(jí)SpeechGroup控制被連接到頁對(duì)象。該成員關(guān)系邏輯地構(gòu)成了QA控制和SpeechGroup控制的一個(gè)樹——邏輯話音樹。
對(duì)于簡單的話音啟動(dòng)頁或腳本(即,不包含其它NamingContainer的頁),只產(chǎn)生根SpeechGroup控制并在將該頁發(fā)送到純語音客戶之前把它放在頁的服務(wù)器控制樹中。SpeechGroup控制維護(hù)關(guān)于在該頁上QA控制的數(shù)量和反映級(jí)(rendering order)的信息。
對(duì)于包含一個(gè)或多個(gè)QA控制和一個(gè)或多個(gè)NamingContainer的組合的頁,產(chǎn)生多個(gè)SpeechGroup控制用于頁的一個(gè)SpeechGroup控制(如上所述)或用于每個(gè)NamingContainer的SpeechGroup控制。對(duì)于包含多個(gè)NamingContainer的頁,頁水平(page level)的SpeechGroup控制維護(hù)如上所述的QA控制信息以及復(fù)合控制的數(shù)量和反映級(jí)。與每個(gè)NamingContainer有關(guān)的SpeechGroup控制保持每個(gè)組合中的QA數(shù)量和反映級(jí)。
SpeechGroup控制的主要工作是保持QA控制的列表和每頁上的SpeechGroup和包含復(fù)合控制的QA控制列。當(dāng)產(chǎn)生客戶端標(biāo)記腳本(例如HTML)時(shí),每個(gè)SpeechGroup在客戶端寫出QACollection對(duì)象。QACollection有QA控制和QACollection的列表。它相應(yīng)于邏輯服務(wù)器端話音樹。RunSpeech腳本將在純語音對(duì)話處理期間詢問用于下一QA控制的頁水平QACollection對(duì)象以便調(diào)用。
位于每頁上的頁水平的SpeechGroup控制也響應(yīng)·確定請(qǐng)求客戶是純語音客戶;和·產(chǎn)生公用腳本和支持用于每頁上的所有QA控制的結(jié)構(gòu)。
當(dāng)?shù)谝籗peechGroup控制反映時(shí),它詢問用于瀏覽器字符串的System.Web.UI.Page.Request.Browser性質(zhì)。然后,該性質(zhì)被送到用于頁上的每個(gè)QA控制的RenderSpeechHTML和RenderSpeechScript方法。然后QA控制反映適當(dāng)?shù)目蛻?多模態(tài)或純語音)。
3.2 SpeechGroup控制的產(chǎn)生在服務(wù)器端頁加載期間,onLoad事件被發(fā)送到頁上的每個(gè)控制。接收onLoad事件的第一QA控制產(chǎn)生頁水平的SpeechGroup控制。以下面的方式產(chǎn)生SpeechGroup控制(假設(shè)頁包含復(fù)合控制)每個(gè)QA控制從運(yùn)行時(shí)期代碼接收onLoad事件。onLoad用于QA■得到QA的NamingContainer N1■在N1的子中搜索SpeechGroup
○如果已經(jīng)存在,就用該SpeechGroup登記該QA控制。onLoad返回。
○如果沒發(fā)現(xiàn)■產(chǎn)生新的speechGroup G1,將它插入N1的子中■如果N1不是頁,就發(fā)現(xiàn)N1的NamingContainer N2■在N2的子中搜索SpeechGroup,如果存在,就說G2,將G1加到G2。如果不存在,就產(chǎn)生新的一個(gè)G2,將它插入N2的子中。
■依次遞推直到NamingContainer是頁(頂級(jí))為止。
在服務(wù)器端頁反映期間,反映事件被發(fā)送到話音啟動(dòng)頁。當(dāng)頁水平的SpeechGroup控制接收Render事件時(shí),它產(chǎn)生客戶端腳本以包括RunSpeech.js并將它插入頁中,該頁最后被發(fā)送到客戶裝置。它也調(diào)入所有它的直接子以便反映話音相關(guān)HTML和腳本。如果子是SpeechGroup,該子就再調(diào)入它的子。以這種方式,服務(wù)器反映隨著服務(wù)器端邏輯話音樹發(fā)生。
當(dāng)SpeechGroup反映時(shí),它讓自己的子(可以時(shí)QA或SpeechGroup)以它們的SpeechIndex的順序反映話音HTML和腳本。但是,SpeechGroup是被隱藏的且本質(zhì)上沒有SpeechIndex。實(shí)際上,SpeechContainer會(huì)用相同的SpeechIndex作為它的NamingContainer,即它所連接的NamingContainer。NamingContainer經(jīng)常是UserControl或其它視覺控制,編寫者可以對(duì)它設(shè)定SpeechIndex。
3.3 RunSpeechRunSpeech的目的是許可經(jīng)在腳本中指定的邏輯或客戶機(jī)上的邏輯的對(duì)話流。在一個(gè)實(shí)施例中,在外部腳本文件中指定Runspeech,用SpeechGroup控制的服務(wù)器端反映產(chǎn)生的單線加載RunSpeech,例如<script language=“javascript”src=“/scripts/RunSpeech.js”/>
RunSpeech.js腳本文件應(yīng)暴露一種用于在客戶機(jī)上驗(yàn)證(validating)的方法,這里腳本已經(jīng)正確加載和有正確的版本id等。由作為內(nèi)聯(lián)函數(shù)的頁等級(jí)(pageclass)激活驗(yàn)證腳本,在嘗試加載該文件后執(zhí)行內(nèi)聯(lián)函數(shù)。
鏈接到外部腳本在功能上相當(dāng)于指定它內(nèi)聯(lián),且它還更有效(由于瀏覽器能隱藏該文件)和清楚(由于頁不與類函數(shù)混淆)。
3.4事件3.4.1事件連接(event wiring)
tap-and-talk多模態(tài)可以通過使語法激活與onMouseDown事件協(xié)作來啟動(dòng)。頁根據(jù)多個(gè)控制之間的關(guān)系(如QA控制中的ControlsToSpeechEnable性質(zhì)中指定的那樣)產(chǎn)生這樣做的連接腳本。
例如,假設(shè)aspTextBox和其伴隨QA控制添加語法,<input>和<reco>元素被每個(gè)控制的反映方法輸出。要添加語法激活命令的連接機(jī)制被頁產(chǎn)生的客戶端腳本執(zhí)行,它在用于激活事件的任何現(xiàn)有處理程序之前改變要添加激活命令的基本控制<!--Control output-->
<input id=″TextBox1″type=″text″ .../>
<reco id=″Reco1″.../>
<grammar src=″...″/>
</reco>
<!-- Page output -->
<script>
TextBox1.onMouseDown=″Reco1.Start();″+TextBox1.onMouseDown;</script>
通過缺省,經(jīng)onmousedown和onmouseup事件接通中心系統(tǒng),但是,StartEvent和StopEvent都可以由網(wǎng)頁編寫者來設(shè)定。
文本框輸出保持獨(dú)立于該修改,如果存在其它處理程序就如常處理該事件。
3.4.2頁等級(jí)性質(zhì)頁也包含可以在運(yùn)行時(shí)期用于腳本的下列性質(zhì)。
SML——用于控制的ID的名/值對(duì),它與識(shí)別返回的SML關(guān)聯(lián)。
SpokenText——用于控制的ID的名/值對(duì),它與識(shí)別器返回的信用關(guān)聯(lián)。
4.RunSpeech算法RunSpeech算法被用于驅(qū)動(dòng)驅(qū)動(dòng)客戶裝置上的對(duì)話流。它可以包括系統(tǒng)提示和對(duì)話管理(通常用于純語音對(duì)話),和/或話音輸入的處理(純語音和多模態(tài)對(duì)話)。它被指定為來自每個(gè)相關(guān)話音啟動(dòng)頁的URI參考的腳本文件(相當(dāng)于內(nèi)聯(lián)嵌入腳本)。
以下面的方式進(jìn)行用于純語音瀏覽器的頁的瀏覽RunSpeech模塊或函數(shù)工作如下(響應(yīng)變?yōu)椤癱omplete”的document.onreadystate調(diào)入RunSpeech)。
(1)以話音索引排序發(fā)現(xiàn)第一激活QA控制(確定QA控制是否如下是激活的)。
(2)如果沒有激活的QA控制,就發(fā)送該頁。
(3)否則,運(yùn)行QA控制。
QA控制被認(rèn)為是激活的條件是如果且僅如果且僅如果(1)QA控制的ClientTest不存在或返回真,和(2)QA控制包含激活詢問控制或陳述控制(以源次序測試),和(3)a.QA控制只包含陳述控制,或b.QA控制的ControlToSpeechEnable所參考的控制中的至少一個(gè)有空或缺省值。
詢問控制被認(rèn)為是激活的條件如果且僅如果(1)詢問控制的ClientTest不存在或返回真,和(2)詢問控制包含激活提示對(duì)象。
提示對(duì)象被認(rèn)為是激活的條件是如果且僅如果(1)提示對(duì)象的ClientTest不存在或返回真,和(2)提示對(duì)象的計(jì)數(shù)不存在或小于或等于本源詢問控制的計(jì)數(shù)。
QA控制運(yùn)行如下(1)確定哪個(gè)詢問控制或陳述控制是激活的并累積其計(jì)數(shù)。
(2)如果陳述控制是激活的,就播放提示并退出。
(3)如果詢問控制是激活的,就播放提示并起動(dòng)用于每個(gè)激活的回答控制和命令控制的多個(gè)Reco。
回答控制被認(rèn)為是激活的條件是如果且僅如果(1)回答控制的ClientTest不存在或返回真,和(2)a.在激活的詢問控制的回答字符串中參考回答控制,或b.回答控制在Scope中。
命令控制被認(rèn)為是激活的條件是如果且僅如果(1)它在Scope中,和(2)在范圍樹中沒有更低的同類型命令控制。
RunSpeech依賴于事件以繼續(xù)驅(qū)動(dòng)對(duì)話——如上所述,它會(huì)在運(yùn)行單個(gè)QA控制后停止。事件處理程序因Prompt.onComplete、Reco.onReco、Reco.onSilence、Reco.onMaxTimeout和Reco.onNoReco而被包括在內(nèi)。依次描述Prompt.onComplete、Reco.onReco、Reco.onSilence、Reco.onMaxTimeout和Reco.onNoReco中的每一個(gè)。
RunSpeechOnComplete工作如下(1)如果激活的Prompt對(duì)象有指定的onClientComplete函數(shù),就調(diào)入它。
(2)如果激活的Prompt對(duì)象被包含在陳述控制中、或在沒有激活的回答控制的詢問控制中,就調(diào)入RunSpeech。
RunSpeechOnReco工作如下(1)一些缺省聯(lián)編發(fā)生—SML樹被聯(lián)編到SML屬性且文本被聯(lián)編到ControlsToSpeechEnable中的每個(gè)控制的SpokenTest屬性。
(2)如果識(shí)別結(jié)果的信用值低于激活的回答控制的ConfidenceThreshold,就運(yùn)行Confirmation邏輯。
(3)否則,如果激活的回答控制有指定的onClientReco函數(shù),就調(diào)入它,然后調(diào)入RunSpeech。
RunSpeechOnReco負(fù)責(zé)產(chǎn)生和設(shè)定ControlsTospeechEnable的SML、spokenText和Confidence性質(zhì)。然后SML、SpokenText和Confidence性質(zhì)可在運(yùn)行時(shí)期用于腳本。
RunSpeechOnSilence、RunSpeechOnMaxTimeout和RunSpeechOnNoReco都以相同方式工作(1)調(diào)入適當(dāng)?shù)腛nClientXXX函數(shù),如果指定的話。
(2)調(diào)入RunSpeech。
最后,Confirmation邏輯工作如下(1)如果激活的回答控制的本源QA控制包含任何確認(rèn)控制,就發(fā)現(xiàn)第一激活確認(rèn)控制(確認(rèn)控制的激活以與詢問控制的激活完全相同的方式來確定)。
(2)如果沒發(fā)現(xiàn)激活的確認(rèn)控制,就調(diào)入RunSpeech(3)另外,運(yùn)行QA控制,用所選擇的確認(rèn)控制作為激活的詢問控制。
對(duì)于多重模態(tài)瀏覽器,只執(zhí)行語法加載和事件調(diào)度步驟。
權(quán)利要求
1.一種具有指令的計(jì)算機(jī)可讀媒體,當(dāng)在計(jì)算機(jī)上執(zhí)行它時(shí)產(chǎn)生用于客戶機(jī)/服務(wù)器系統(tǒng)中的客戶機(jī)的客戶端標(biāo)記,這些指令包括一組控制,用于定義對(duì)話,這些控制包括至少一個(gè)詢問控制,它用于產(chǎn)生關(guān)于問題的音頻提示的標(biāo)記;和回答控制,用于產(chǎn)生關(guān)于用于識(shí)別的語法的標(biāo)記,每個(gè)控制具有指示相關(guān)控制是否可用于激活的屬性;和模塊,當(dāng)在客戶機(jī)上執(zhí)行它時(shí),產(chǎn)生對(duì)話作為函數(shù),它的控制被激活。
2.根據(jù)權(quán)利要求1的計(jì)算機(jī)可讀媒體,其中,詢問控制激活回答控制。
3.根據(jù)權(quán)利要求2的計(jì)算機(jī)可讀媒體,其中,這些控制包括命令控制,用于產(chǎn)生關(guān)于語法的標(biāo)記,用于在標(biāo)記中閱覽,幫助任務(wù),并重復(fù)音頻提示。
4.根據(jù)權(quán)利要求3的計(jì)算機(jī)可讀媒體,其中,這些控制包括確認(rèn)控制,用于產(chǎn)生關(guān)于確認(rèn)所識(shí)別的結(jié)果正確的標(biāo)記。
5.根據(jù)權(quán)利要求4的計(jì)算機(jī)可讀媒體,其中,確認(rèn)控制被激活作為信用水平或收到的結(jié)果的函數(shù)。
6.根據(jù)權(quán)利要求5的計(jì)算機(jī)可讀媒體,其中,回答控制包括關(guān)于信用水平的屬性。
7.根據(jù)權(quán)利要求5的計(jì)算機(jī)可讀媒體,其中,確認(rèn)控制激活認(rèn)可控制以認(rèn)可所識(shí)別的結(jié)果。
8.根據(jù)權(quán)利要求5的計(jì)算機(jī)可讀媒體,其中,確認(rèn)控制激活否認(rèn)控制以否認(rèn)所識(shí)別的結(jié)果。
9.根據(jù)權(quán)利要求5的計(jì)算機(jī)可讀媒體,其中,確認(rèn)控制激活校正控制以校正所識(shí)別的結(jié)果。
10.根據(jù)權(quán)利要求1的計(jì)算機(jī)可讀媒體,其中,詢問控制激活回答控制。
11.根據(jù)權(quán)利要求10的計(jì)算機(jī)可讀媒體,其中,回答控制包括一個(gè)使收到的結(jié)果與第一組控制中的一個(gè)關(guān)聯(lián)的機(jī)制。
12.根據(jù)權(quán)利要求1的計(jì)算機(jī)可讀媒體,還包括第二組控制,用于產(chǎn)生關(guān)于在客戶機(jī)上的視覺反映的標(biāo)記,其中,上述第一組控制中的每一個(gè)都與第二組控制中的至少一個(gè)關(guān)聯(lián)。
13.一種具有指令的計(jì)算機(jī)可讀媒體,在計(jì)算機(jī)上執(zhí)行它時(shí)定義對(duì)話,這些指令包括一組控制,用于定義對(duì)話,這些控制包括至少一個(gè)詢問控制,用于產(chǎn)生問題的音頻提示;和回答控制,使用用于識(shí)別的語法,每個(gè)控制都有指示有關(guān)控制是否可用于激活的屬性;和模塊,在計(jì)算機(jī)上執(zhí)行它時(shí)產(chǎn)生對(duì)話作為函數(shù),激活該函數(shù)的控制。
14.根據(jù)權(quán)利要求13的計(jì)算機(jī)可讀媒體,其中,詢問控制激活回答控制。
15.根據(jù)權(quán)利要求14的計(jì)算機(jī)可讀媒體,其中,回答控制包括一個(gè)機(jī)制,它使收到的結(jié)果與第一組控制中的一個(gè)關(guān)聯(lián)。
16.根據(jù)權(quán)利要求15的計(jì)算機(jī)可讀媒體,其中,機(jī)制包括聯(lián)編識(shí)別值。
17.根據(jù)權(quán)利要求16的計(jì)算機(jī)可讀媒體,其中,機(jī)制包括發(fā)布與聯(lián)編操作有關(guān)的事件。
18.一種計(jì)算機(jī)可實(shí)現(xiàn)的方法,用于在計(jì)算機(jī)上執(zhí)行識(shí)別和/或音頻提示,該方法包括用一組控制定義對(duì)話,該組控制包括至少一個(gè)詢問控制,用于產(chǎn)生問題的音頻提示;和回答控制,使用用于識(shí)別的語法,每個(gè)控制有指示相關(guān)控制是否可用于激活的屬性;和產(chǎn)生一個(gè)對(duì)話,作為執(zhí)行被激活的相關(guān)控制的代碼的函數(shù)。
19.根據(jù)權(quán)利要求18的計(jì)算機(jī)可實(shí)現(xiàn)方法,其中,產(chǎn)生對(duì)話包括經(jīng)詢問控制激活回答控制。
20.根據(jù)權(quán)利要求19的計(jì)算機(jī)可實(shí)現(xiàn)方法,其中,該組控制包括命令控制,用于產(chǎn)生關(guān)于語法的代碼,用于在標(biāo)記中閱覽,幫助任務(wù),并重復(fù)音頻提示。
21.根據(jù)權(quán)利要求20的計(jì)算機(jī)可實(shí)現(xiàn)方法,其中,該組控制包括確認(rèn)控制,用于產(chǎn)生關(guān)于確認(rèn)所識(shí)別的結(jié)果正確的代碼。
22.根據(jù)權(quán)利要求21的計(jì)算機(jī)可實(shí)現(xiàn)方法,其中,產(chǎn)生對(duì)話包括激活確認(rèn)控制作為信用水平或收到的結(jié)果的函數(shù)。
全文摘要
提供多個(gè)控制,用于網(wǎng)絡(luò)服務(wù)器產(chǎn)生客戶端標(biāo)記,這些包括包括識(shí)別和/或音頻提示。這些控制包括多個(gè)對(duì)話元素,如詢問、回答、確認(rèn)、命令或陳述。一個(gè)模塊通過利用在控制中攜帶的信息形成對(duì)話。
文檔編號(hào)G06F3/01GK1417679SQ0215294
公開日2003年5月14日 申請(qǐng)日期2002年10月21日 優(yōu)先權(quán)日2001年10月21日
發(fā)明者F·M·加蘭尼斯, H·W·洪, J·D·雅各比, R·T·勒庫切, S·F·泊特 申請(qǐng)人:微軟公司