附??錄 | [第一章][前一章][后一章] |
? | |
附錄 A Glossary of Terms |
![]() |
? | 附錄 G ??附錄 H??附錄 I??附錄 J??附錄 K |
? | 附錄 L ??附錄 M??附錄 N??附錄 O??附錄 P |
? | |
active grammar | |
????當前激活的語音或DTMF語法。它是相對于當前正在執行的元素和當前定義語法的元素的作用域的。 | |
? | |
application | |
????一些VoiceXML文檔的集合,這些文檔的application屬性值相同。 | |
? | |
ASR | |
????自動語音識別。 | |
? | |
author | |
????VoiceXML文檔的作者。 | |
? | |
catch element | |
????<catch>元素或它的一些縮寫形式包含的代碼塊。一些默認的catch element由VoiceXML解釋器定義。 | |
? | |
control item | |
????即form item,其目的要么是包含一個程序邏輯塊(如<block>元素),要么是允許混合主動式dialog播放提示語(如<initial>元素)。 | |
? | |
CSS W3C Cascading Style Sheet specification. | |
????見CSS2。 | |
? | |
dialog | |
????在VoiceXML文檔中指定的和用戶的一個交互。Dialog包括form和menu兩種。 | |
? | |
DTMF(Dual Tone Multi-Frequency) | |
????按鍵式或以按鈕操作的撥號。在電話鍵盤上按一個按鍵產生一個聲音,該聲音由兩種音調組成,一種是高頻的,另一種是低頻的。 | |
? | |
ECMAScript | |
????Javascript的一個標準版本,由歐洲計算機廠商協會(European Computer Manufacturer's Association)提出。見ECMASCRIPT。 | |
? | |
event | |
????由執行平臺、VoiceXML解釋器環境、VoiceXML解釋器或VoiceXML代碼拋出的一個標志信息。事件包括異常(語義錯誤)、正常錯誤(用戶沒有說出可以識別的內容)、正常事件(用戶退出)和用戶定義的事件。 | |
? | |
executable content | |
????出現在<block>,<filled>元素和事件處理中的程序邏輯。 | |
? | |
form | |
????計算機用一種非常靈活的方式和用戶交互的dialog。用戶和計算機都有主動性。 | |
? | |
FIA (Form Interpretation Algorithm) | |
????在VoiceXML解釋器中執行的算法。VoiceXML解釋器用于驅動用戶和VoiceXML的form或menu之間的交互。見2.1.6節和附錄C。 | |
? | |
form item | |
????<form>元素的子元素,在執行該form期間,它們可以被訪問,包括的元素有:<initial>,<block>,<field>,<record>,<object>,<subdialog>和<transfer>元素。 | |
? | |
form item variable | |
????在一個form中和每個form item相關的一個變量,該被顯式或隱式的定義。如果該form item變量為undefined,則解釋算法將訪問該form item,并讓它跟用戶交互。 | |
? | |
implementation platform | |
????有必要的軟件和/或硬件來支持VoiceXML定義的交互類型的一臺計算機。 | |
? | |
input item | |
????即一個form item,用于輸入一個input item變量。Input item包括<field>,<record>,<object>,<subdialog>和<transfer>元素。 | |
? | |
language identifier | |
????語言標識符用于標注一種特定的人類語言。根據XML技術規范中的語言標識,合法的語言標識符應該為RFC3066的一個代碼。語言代碼在RFC3066中是必須的,而國家代碼或其他的子標簽代碼在FRC3066中則是可選的。 | |
? | |
link | |
????一組語法,當匹配用戶輸入時,要么跳轉到一個新的dialog或文檔,要么在當前的form item中拋出一個事件。 | |
? | |
menu | |
????一個dialog,它給用戶提供了一組選項,并執行被選中的選項的操作。 | |
? | |
mixed initiative | |
????一種人機交互,計算機和人都具有主動性,都可以決定下一步要做的。 | |
? | |
JSGF | |
????Java API Speech Grammar Format,一種被提議的語音語法標準。見JSGF。 | |
? | |
object | |
????依賴于平臺的一種功能,它有一個接口讓VoiceXML調用。 | |
? | |
request | |
????數據的收集,包括:指定文檔服務器的URI,要處理的一組名稱――值的數據對(可選的),和處理的方法(可選的)。 | |
? | |
script | |
????用客戶端腳本語言(特別是ECMAScript)編寫的一個邏輯段,該語言必須是任何VoiceXML解釋器所支持的語言。 | |
? | |
session | |
????用戶和執行平臺之間的一個連接,例如用電話呼入一個語音應答系統。一個session可以包含多個VoiceXML文檔的解釋。 | |
? | |
SRGS(Speech Recognition Grammar Specification) | |
????一個跟環境無關的語音識別語法的標準版本,是由W3C語音瀏覽器項目組開發的。在SRGS中有ABNF和XML格式。 | |
? | |
SSML(Speech Synthesis Markup Language) | |
????語音合成的標準版本,W3C語音瀏覽器項目組正在開發的。 | |
? | |
subdialog | |
????當前dialog調用的一個VoiceXML diaolog(或文檔),類似于函數調用。 | |
? | |
tapered prompts | |
????用于提供不同的信息給用戶的一組提示語。提示語可以越來越簡潔(如<field>元素中的提示語),也可以越來越詳細(如幫助的提示語)。 | |
? | |
throw | |
????用于拋出事件的元素。 | |
? | |
TTS | |
????文本語音轉換,即語音合成。 | |
? | |
user | |
????和執行平臺交互的人,它受VoiceXML解釋器的控制。 | |
? | |
URI | |
????統一資源指示器。 | |
? | |
URL | |
????統一資源定位器。 | |
? | |
VoiceXML document | |
????遵循VoiceXML技術規范的XML文檔。 | |
? | |
VoiceXML interpreter | |
????一個計算機程序,用于解釋VoiceXML文檔,以控制執行平臺引導與用戶之間的交互。 | |
? | |
VoiceXML interpreter context | |
????一個計算機程序,它使用VoiceXML解釋器來解釋VoiceXML文檔,它也可以獨立于VoiceXML解釋器和執行平臺進行交互。 | |
? | |
W3C | |
????國際互聯網聯盟http://www.w3c.org/。 |
附錄 B VoiceXML Document Type Definition |
![]() |
? | 附錄 G ??附錄 H??附錄 I??附錄 J??附錄 K |
? | 附錄 L ??附錄 M??附錄 N??附錄 O??附錄 P |
? | |
????VoiceXML的DTD位于http://www.w3.org/TR/voicexml20/vxml.dtd。 | |
????<metadata>元素能夠包含其他的XML命名空間的元素,但是由于DTD的限制,VoiceXML的DTD不能正確的表達這一點。 | |
????注意, SRGS和SSML的DTD中有更改的元素都包含在VoiceXML的DTD中了。 | |
? |
附錄 C Form Interpretation Algorithm |
![]() |
? | 附錄 G ??附錄 H??附錄 I??附錄 J??附錄 K |
? | 附錄 L ??附錄 M??附錄 N??附錄 O??附錄 P |
? | |
????Form解釋算法(FIA)用于驅動用戶和VoiceXML的form或menu之間的交互。Menu可看作是一個form,該form包含了一個簡單的field,它的語法和<filled>操作由<menu>元素中的<choice>元素組成。 | |
????FIA必須要處理的有: | |
??????·form的初始化; | |
??????·播放提示語,包括分級提示的提示語計數器的管理; | |
??????·在form和form item級別的語法的激活和失效; | |
??????·和一個utterance一起進入一個form,該utterance在用戶訪問另一個form或menu時,匹配了該form中作用域為document的一個語法; | |
??????·因用戶匹配了另一個form或menu或link中的作用域為document的語法而離開一個form; | |
??????·處理一個utterance填充多個field的情況,包括執行相應的<filled>操作; | |
??????·選定下一個要訪問的form item,并處理該form item; | |
??????·選擇正確的<catch>元素處理當前的form item拋出的事件。 | |
????首先,我們要定義在FIA中使用的一些術語和數據結構: | |
? | |
active grammar set | |
????在VoiceXML解釋器環境的輸入收集操作期間激活的一組語法。 | |
? | |
utterance | |
????用戶所說的或所鍵入的內容的總和,包括被匹配的特定的語法,和由一個解釋結構組成的語義結果,如果沒有語義解釋,則使用輸入的原始文本(見3.1.6節)。例如,當語法123被匹配時,相應的語義解釋可能為{drink: "coke" pizza: {number: "3" size: "large"}}。 | |
? | |
execute | |
????執行可執行的內容,可以是<block>元素,一個<filled>操作,或一組<filled>操作。如果在執行期間拋出了一個事件,則退出正在執行的可執行內容。然后執行正確的事件處理,它可以讓控制在FIA主循環的下一次循環時回到原來的form item中,也可以讓控制跳轉到該form以外的地方。如果執行了<goto>元素,則立即進行跳轉,剩下的可執行內容將不再被執行。 | |
? | |
????下面是一個FIA的概念模型。FIA可以不帶任何初始的utterance開始,也可以帶著由另一個dialog傳進來的utterance開始: | |
// // Initialization Phase // foreach ( <var>, <script> and form item, in document order ) if ( the element is a <var> ) Declare the variable, initializing it to the value of the "expr" attribute, if any, or else to undefined. else if ( the element is a <script> ) Evaluate the contents of the script if inlined or else from the location specified by the "src" attribute. else if ( the element is a form item ) Create a variable from the "name" attribute, if any, or else generate an internal name. Assign to this variable the value of the "expr" attribute, if any, or else undefined. foreach ( input item and <initial> element ) Declare a prompt counter and set it to 1. if ( user entered this form by speaking to its grammar while in a different form) { Enter the main loop below, but start in the process phase, not the select phase: we already have a collection to process. } // // // while ( true ) { // // // if ( the last main loop iteration ended with a <goto nextitem> ) Select that next form item. else if (there is a form item with an unsatisfied guard condition ) Select the first such form item in document order. else Do an <exit/> -- the form is full and specified no transition. // // // // Queue up prompts for the form item. unless ( the last loop iteration ended with a catch that had no <reprompt>, and the active dialog was not changed ) { Select the appropriate prompts for an input item or <initial>. Queue the selected prompts for play prior to the next collect operation. Increment an input item’s or <initial>'s prompt counter. } // Activate grammars for the form item. if ( the form item is modal ) Set the active grammar set to the form item grammars, if any. (Note that some form items, e.g. <block>, cannot have any grammars). else Set the active grammar set to the form item grammars and any grammars scoped to the form, the current document, and the application root document. // Execute the form item. if ( a <field> was selected ) Collect an utterance or an event from the user. else if ( a <record> was chosen ) Collect an utterance (with a name/value pair for the recorded bytes) or event from the user. else if ( an <object> was chosen ) Execute the object, setting the <object>' s form item variable to the returned ECMAScript value. else if ( a <subdialog> was chosen ) Execute the subdialog, setting the <subdialog>' s form item variable to the returned ECMAScript value. else if ( a <transfer> was chosen ) Do the transfer, and (if wait is true) set the <transfer> form item variable to the returned result status indicator. else if ( an <initial> was chosen ) Collect an utterance or an event from the user. else if ( a <block> was chosen ) { Set the block' s form item variable to a defined value. Execute the block' s executable context. } // // Process Phase: process the resulting utterance or event. // Assign the utterance and other information about the last recognition to application.lastresult$. // Must have an utterance if ( the utterance matched a grammar belonging to a <link> ) If the link specifies an "next" or "expr" attribute, transition to that location. Else if the link specifies an "event" or "eventexpr" attribute, generate that event. else if ( the utterance matched a grammar belonging to a <choice> ) If the choice specifies an "next" or "expr" attribute, transition to that location. Else if the choice specifies an "event" or "eventexpr" attribute, generate that event. else if ( the utterance matched a grammar from outside the current <form> or <menu> ) { Transition to that <form> or <menu> , carrying the utterance to the new FIA. } // Process an utterance spoken to a grammar from this form. // First copy utterance result property values into corresponding // form item variables. Clear all "just_filled" flags. if ( the grammar is scoped to the field-level ) { // This grammar must be enclosed in an input item. The input item // has an associated ECMAScript variable (referred to here as the input // item variable) and slot name. if ( the result is not a structure ) Copy the result into the input item variable. elseif ( a top-level property in the result matches the slot name or the slot name is a dot-separated path matching a subproperty in the result ) Copy the value of that property into the input item variable. else Copy the entire result into the input item variable. Set this input item's "just_filled" flag. } else { foreach ( property in the user' s utterance ) { if ( the property matches an input item' s slot name ) { Copy the value of that property into the input item' s form item variable. Set the input item' s "just_filled" flag. } } } // Set all <initial> form item variables if any input items are filled. if ( any input item variable is set as a result of the user utterance ) Set all <initial> form item variables to true. // Next execute any <filled> actions triggered by this utterance. foreach ( <filled> action in document order ) { // Determine the input item variables the <filled> applies to. N = the <filled>' s "namelist" attribute. if ( N equals "" ) { if ( the <filled> is a child of an input item ) N = the input item’s form item variable name. else if ( the <filled> is a child of a form ) N = the form item variable names of all the input items in that form. } // Is the <filled> triggered? if ( any input item variable in the set N was "just_filled" AND ( the <filled> mode is "all" AND all variables in N are filled OR the <filled> mode is "any" AND any variables in N are filled) ) Execute the <filled> action. If an event is thrown during the execution of a <filled>, event handler selection starts in the scope of the <filled>, which could be an input item or the form itself. } // If no input item is filled, just continue. } |
|
????在FIA的執行期間,幾個地方都可以產生事件,根據激活的不同階段,這些事件被分別處理。 | |
????在選定一個form item之前(也就是在初始化和選定階段),事件是在dialog級別產生的。FIA定位相應的事件處理并執行它。如果<catch>元素最終沒有跳轉到一個dialog,則FIA的執行結束。 | |
????類似的,在選定一個form item之后(也就是在收集和處理階段),事件通常是在form item級別產生的。這里有一個例外:由dialog級別的<filled>元素觸發的事件是在dialog級別產生的。FIA定位相應的事件處理,并執行它。如果<catch>元素最終沒有跳轉到一個dialog,則當前FIA的循環結束,并重新進入選定階段。 |
附錄 D Timing Properties |
![]() |
? | 附錄 G ??附錄 H??附錄 I??附錄 J??附錄 K |
? | 附錄 L ??附錄 M??附錄 N??附錄 O??附錄 P |
? | |
????VoiceXML定義了幾個時間的property,這幾個peoperty一起用于控制和用戶之間的交互。下面的圖表描述了這些時間參數工作的方式。在這些圖表中,等待DTMF輸入或語音輸入的起始點都是在最后一個提示語播放結束的時候。 | |
? | |
一、DTMF Grammars | |
????DTMF語法使用的property,如timeout, interdigittimeout, termtimeout和termchar在6.3.3節有詳細的描述。下面的圖表顯示了這些property的作用。 | |
????timeout, No Input Provided | |
????當用戶沒有輸入DTMF按鍵時,timeout用于確定何時拋出<noinput>事件。一旦輸入了第一個DTMF按鍵,該參數就不再起作用了。 | |
![]() |
|
圖12:Timing diagram for timeout when no input provided. | |
????interdigittimeout, Grammar is Not Ready to Terminate | |
????在圖表13中,當沒有一個DTMF語法被識別,且用戶不再輸入DTMF按鍵時,interdigittimeout用于確定何時拋出<nomatch>事件。 | |
![]() |
|
圖13:Timing diagram for interdigittimeout, grammar is not ready to terminate. | |
????interdigittimeout, Grammar is Ready to Terminate | |
????下面的例子顯示了當用戶不在輸入DTMF按鍵時,DTMF語法何時可以結束,或繼續接受DTMF輸入。 | |
![]() |
|
圖14:Timing diagram for interdigittimeout, grammar is ready to terminate. | |
????termchar and interdigittimeout, Grammar Can Terminate | |
????在下面的例子中,termchar為非空,且用戶在沒有到達interdigittimeout的時長前輸入了termchar的字符,用于表示DTMF輸入已經結束。輸入的termchar的字符不包括在被識別的值中。 | |
![]() |
|
圖15:Timing diagram for termchar and interdigittimeout, grammar can terminate. | |
????termchar Empty When Grammar Must Terminate | |
????在下面的例子中,最后一個DTMF按鍵的輸入使語法結束,此時語法不再接受用戶的任何DTMF輸入。由于termchar為空,不允許輸入任何結束符,因此,識別結束,且返回識別結果。 | |
![]() |
|
圖16:Timing diagram for termchar empty when grammar must terminate. | |
????termchar Non-Empty and termtimeout When Grammar Must Terminate | |
????在上面的例子中,最后一個DTMF按鍵的輸入使語法結束,此時語法不再接受用戶的任何DTMF輸入。如果termchar為非空,則用戶可以繼續輸入DTMF按鍵。如果用戶在termtimeout的時長內沒有繼續輸入DTMF按鍵,則識別結束,并返回識別結果。如果termtimeout值為0s(默認值),則在用戶輸入語法允許的最后一個DTMF按鍵后立即返回識別結果,而不再等待輸入termchar。注意,只有當語法不允許有額外的輸入時才使用termtimeout,否則使用interdigittimeout。 | |
![]() |
|
圖17:Timing diagram for termchar non-empty and termtimeout when grammar must terminate. | |
????termchar Non-Empty and termtimeout When Grammar Must Terminate | |
????在下面的例子中,最后一個DTMF按鍵的輸入使語法結束,此時語法不再接受用戶的任何DTMF輸入。由于termchar非空,用戶在termtimeout的時長內輸入了termchar的字符后,返回了識別結果(termchar的字符不包括在內)。 | |
![]() |
|
圖18:Timing diagram for termchar non-empty when grammar must terminate. | |
????Invalid DTMF Input | |
????當等待第一或另外的DTMF,當用戶輸入完成后,三種不同的timeout可以判斷用戶的輸入是否已經完成。如果沒有任何的DTMF輸入,則使用timeout property;如果輸入了一些DTMF按鍵,但是可以輸入額外的DTMF時,則使用interdigittimeout;如果不允許輸入額外的DTMF時,則使用termtimeout。在每種情況下,用戶都可以輸入當前激活的語法不允許的DTMF,但是會導致所收集到的DTMF的字符串不合法。額外的DTMF按鍵將被收集,除非用戶輸入termchar的字符,或超過interdigittimeout的時長,此時會產生一個nomatch事件。 | |
? | |
二、Speech Grammars | |
????語音語法使用的property,如timeout,completetimeout,和incompletetimeout在6.3.2節和 6.3.4節有詳細的描述。下面的圖表展示了這些peoperty的作用。 | |
????timeout When No Speech Provided | |
????在下面的例子中,當用戶沒有輸入語音時,timeout用于確定何時拋出一個noinput事件。 | |
![]() |
|
圖19:Timing diagram for timeout when no speech provided. | |
????completetimeout With Speech Grammar Recognized | |
????在下面的例子中,用戶輸入了語音,且被語音語法識別。當靜音的時間超過了completetimeout的時長后,返回了識別結果。 | |
![]() |
|
圖20:Timing diagram for completetimeout with speech grammar recognized. | |
????incompletetimeout with Speech Grammar Unrecognized | |
????在下面的例子中,用戶輸入了語音,且沒有被語音語法識別,但是用戶輸入的是一個合法的utterance的前綴。在靜音的時間超過incompletetimeout的時長后,拋出了一個nomatch事件。 | |
![]() |
|
圖21:Timing diagram for incompletetimeout with speech grammar unrecognized. |
附錄 E Audio File Formats |
![]() |
||||||||||
? | 附錄 G ??附錄 H??附錄 I??附錄 J??附錄 K | ||||||||||
? | 附錄 L ??附錄 M??附錄 N??附錄 O??附錄 P | ||||||||||
? | |||||||||||
????VoiceXML要求平臺支持的播放和錄音的音頻格式如下: | |||||||||||
|
|||||||||||
表63:Audio Formats Which Platforms Must Support | |||||||||||
????‘audio/basic’ mime type通常使用‘au’頭格式和無頭的8-bit 8Khz mu-law的格式。如果該mime type用于錄音,則必須使用mu-law格式。為了能夠播放‘audio/basic’ mime type,平臺必須支持mu-law格式,也可以支持‘au’格式。 | |||||||||||
? |
附錄 F Conformance |
![]() |
? | 附錄 G ??附錄 H??附錄 I??附錄 J??附錄 K |
? | 附錄 L ??附錄 M??附錄 N??附錄 O??附錄 P |
? | |
????這一節是標準化的。 | |
? | |
一、Conforming VoiceXML Document | |
????一個合格的VoiceXML文檔(Conforming VoiceXML document)是一個格式規范的XML文檔。這樣的文檔必須遵循下面所列出的標準: | |
??????1、該文檔必須符合VoiceXML Schema(附錄O)中所規定的約束。 | |
??????2、該文檔的根元素必須是<vxml>元素。 | |
??????3、<vxml>元素必須包含“version”屬性,且屬性值為“2.0”。 | |
??????4、<vxml>元素必須使用“xmlns”屬性指定VoiceXML的命名空間,值為http://www.w3.org/2001/vxml。 | |
??????5、我們推薦,<vxml>元素也要包含“xmlns:xsi”和 “xsi:schemaLocation”屬性,表明VoiceXML命名空間的schema的位置。如果指定了“xsi:schemaLocation”屬性,則必須包含VoiceXML Schema的一個引用: | |
xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd" |
|
??????6、在根元素之前可以有一個DOCTYPE的聲明。如果有DOCTYPE的聲明的話,聲明中包含的public標識符必須使用正是的公共標識符(Formal Public Identifier)引用VoiceXML的DTD(見附錄B)。 | |
<!DOCTYPE vxml PUBLIC "-//W3C//DTD VOICEXML 2.0//EN" "http://www.w3.org/TR/voicexml20/vxml.dtd"> |
|
????系統的標識符可以適當的更改。 | |
????DTD的子集一定不能用于覆蓋VoiceXML DTD中的任何參數實體。 | |
????下面的例子是一個合格的VoiceXML文檔: | |
<?xml version="1.0" encoding="UTF-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd"> <form> <block>hello</block> </form> </vxml> |
|
????注意,在這個例子中,文檔中包含了“xmlns:xsi”和“xsi:schemaLocation”屬性,就像是一個XML聲明一樣。像上面這樣的XML聲明并不是在所有的XML文檔中都是必須的。但是我們強烈鼓勵VoiceXML文檔的作者在他們的文檔中使用XML聲明。如果文檔的字符編碼方式不是默認的UTF-8或UTF-16,且更高級的協議也沒有指定一種編碼方式,則必須有上述的聲明。 | |
????VoiceXML語言或這些合格文檔的標準在VoiceXML文檔的任何方面都沒有指定數量上的限制。元素和字符數據的數量沒有最大值,屬性值中的字符的長度也沒有最大值。 | |
? | |
二、Using VoiceXML with other namespaces | |
????VoiceXML的命名空間可以和其他的XML命名空間一起使用,雖然這樣的文檔不是如上面定義的那種嚴格的合格VoiceXML文檔。在將來,W3C將會提供解決包含多個命名空間的文檔的一致性的方法。 | |
? | |
三、Conforming VoiceXML Processors | |
????VoiceXML處理器用于解析和處理合格的VoiceXML文檔。 | |
????在合格的VoiceXML處理器中,XML解析器必須能夠解析和處理在XML和XMLNAMES中定義的格式規范的XML結構。我們不要求合格的VoiceXML處理器使用確認解析器(validating parser)。 | |
????除了該文檔描述的一些差別以外,合格的VoiceXML處理器必須是一個合格的SSML處理器和XML語法處理器。如果在處理一個語法文檔時檢測到一個句法錯誤,則必須拋出一個“error.badfetch”事件。 | |
????一個合格的VoiceXML處理器必須支持該文檔所描述的、所有的VoiceXML元素的句法和語義。因此,當處理一個合格的VoiceXML文檔時,對于任何一個VoiceXML支持的元素,它一定不能拋出一個‘error.unsupported.<element>’事件。 | |
????如果一個合格的VoiceXML文檔中有非VoiceXML元素,或有一些只在VoiceXML的早期版本中定義的屬性,或有在非VoiceXML的命名空間上定義的屬性,或有一些不能處理的屬性,則當一個合格的VoiceXML處理器碰到這些情況時,必須拋出一個“error.badfetch”事件。 | |
????當合格的VoiceXML處理器碰到一個文檔,該文檔的根元素指定的命名空間不是VoiceXML而是其他的命名空間,此時VoiceXML處理器要怎樣處理還沒有明確。 | |
????然而,對于VoiceXML處理器相關的性能特征卻沒有什么合格不合格的要求。 |
附錄 G Internationalization |
![]() |
? | 附錄 F ??附錄 H??附錄 I??附錄 J??附錄 K |
? | 附錄 L ??附錄 M??附錄 N??附錄 O??附錄 P |
? | |
????VoiceXML是XML的一個應用,因此它支持UNICODE。UNICODE定義了一套標準的通用的字符集。 | |
????另外,VoiceXML通過“xml:lang”屬性提供了對輸入和輸出語言的精確控制。它能方便的: | |
??????·指定輸入和輸出的語言以覆蓋VoiceXML處理器的默認語言; | |
??????·產生多種語言的輸出; | |
??????·用相應的語言解釋用戶的輸入,即使輸入和輸出不是同一種語言。 |
附錄 H Accessibility |
![]() |
? | 附錄 F ??附錄 G??附錄 I??附錄 J??附錄 K |
? | 附錄 L ??附錄 M??附錄 N??附錄 O??附錄 P |
? | |
????語音是VoiceXML應用中的主要組成部分,但VoiceXML應用中不是只有語音。然而,在大多數的環境中和對于與VoiceXML應用交互的大多數用戶來說,聽和說講是最廣泛應用的技術,有些用戶可能由于暫時(或永久的)情況不能夠聽和/或說。不能聽或說的的用戶,特別是那些聽力或說話有缺陷的,他們可以通過其他的途徑和VoiceXML應用進行交互: | |
??????1、聽力有缺陷的用戶可以在顯示終端上看文本,或者(如果他們同時也不夠看的話)通過觸覺識別盲文。為了支持那些給語言和/或聽力有缺陷的用戶使用的特殊的設備,開發者應該在<audio>標記內提供和相應的音頻的內容相同的文本。例如: | |
<audio src="greetings.wav">Greetings</audio> |
|
????在這個例子中,正常情況下會播放greetings.wav這個音頻。然而,如果VoiceXML解釋器環境檢測到用戶正在通過顯示終端,或通過觸摸輸出的盲文和VoiceXMl應用進行交互,則相應的文本"Greetings"會顯示在顯示終端或輸出到盲文設備。 | |
??????2、語音有障礙的用戶可以通過輸入編碼的序列與VoiceXMl應用交互,該編碼序列在傳給VoiceXML平臺之前會被轉換成文本。這種轉換可能是由連接在電話上的一種特殊的硬件裝置完成,該硬件把用戶的按鍵(例如傳統的標準鍵盤)轉化成文本。也可能是由軟件來完成,該軟件把12鍵的電話鍵盤的DTMF序列轉換成文本。 | |
????對于打算使用W3C技術的用戶來說,提供多種途徑用于信息交互和用戶輸入是W3C的主要工作。在合適的時候,下面的這些由W3C 的WAI(Web Accessibility Initiative)可達性指導方針也會應用到VoiceXML中: | |
??????·WAI-WEBCONTENT(Web Content Accessibility Guidelines 1.0)詳細解釋了怎樣讓有各種缺陷的人可以容易的進入一個網站。 | |
??????·ATAGIO(Authoring Tool Accessibility Guidelines 1.0)。面向軟件開發者的,它說明了怎樣使各種創作工具(authoring tools)支持獲取web內容的產品,也說明了怎樣使軟件本身也是可獲取的。 | |
??????·UAAGIO(User Agent Accessibility Guidelines 1.0)。面向軟件開發者的,它說明了怎樣制作可獲取的瀏覽器,多媒體播放器和與它們接口的相關技術。 | |
??????·XAG(XML Accessibility Guidelines)。它是基于XML應用的,面向開發者的。它說明了怎樣確保基于XML的應用支持可獲取性。 | |
????讓有缺陷的人可以進入VoiceXML應用的其他原則如下: | |
??????·重新使用具有高度可用性的導航結構,例如ANSI/NISO Z39.86-2002 Digital Talking book Standard,http://www.loc.gov/nls/z3986/的導航技術。 | |
??????·在每個可能產生事件的元素中都指定<catch>元素,包括有故障弱化或恢復的功能。 | |
??????·讓用戶可以控制時間的長度(在timeout之前),合成語音的語速,或其他的一些可以增加(或減少)應答(或完成輸入)的時間的變量,特別是當VoiceXML解釋器環境已經檢測到用戶正在使用聽/說的輔助設備時。這對于那些有缺陷的用戶特別有用。 | |
??????·告訴用戶模式是可選的,這樣用戶就可以另一種方式獲得相同的服務,包括轉接到人工臺和文本電話服務等,或通過互聯網獲得同樣的信息。 |
附錄 I Privacy |
![]() |
? | 附錄 F ??附錄 G??附錄 H??附錄 J??附錄 K |
? | 附錄 L ??附錄 M??附錄 N??附錄 O??附錄 P |
? | |
????在VoiceXML的后繼版本可能會制定一些標準,通過這些標準,VoiceXML處理器可以保護用戶的私有數據。 | |
? |
附錄 J 與VoiceXML1.0的不同之處 |
![]() |
? | 附錄 F ??附錄 G??附錄 H??附錄 I??附錄 K |
? | 附錄 L ??附錄 M??附錄 N??附錄 O??附錄 P |
? | |
????以下是VoiceXML1.0和VoiceXML2.0之間的不同之處[VOICEXML-1.0(http://www.w3.org/TR/voicexml20/#re_VOICEXML-1.0)]。 | |
????VoiceXML1.0開發者也許要特別注意VoiceXML2.0與VoiceXML1.0之間的區別。這些區別在Obsolet Elements和Incompatibly Modified Elements章節中有詳細的說明。 | |
New Elements | |
????·<log>用來記錄debug信息(5.3.13)。 | |
????·<metadata>作為一種用schema來指定metedata信息的方法(6.2,6.2.2)。 | |
Obsolete Elements | |
????·<dtmf>被帶有“mode=dtmf”屬性的<grammar>元素所取代(3.1.2)。 | |
????·<emp>、<div>、<pros>和<sayas>JSML元素已經被語音合成標記語言[SSML]所取代(4.1.1)。 | |
Incompatibly Modified Elements | |
????·在<vxml>元素中,“lang”已變為“xml:lang”(1.5.1)。 | |
????·在<vxml>元素中,增加必須的xmlns屬性。 | |
????·在<vxml>元素中,用“xml:base”屬性取代“base”屬性(1.5.1)。 | |
????·如果平臺不支持一個指定的對象,拋出error.unsupported.objectname。對于不支持的對象類型,error.unsupported.format不拋出(2.1.2.1,2.3.5,5.2.6)。 | |
????·當說出域的值時,一個域的值不表示一個隱含的<say-as>類,一個清晰的<say-as>必須用到。(2.1.4,附錄P)。 | |
????·在<menu>和<choice>中增加“accept”屬性(2.2)。 | |
????·如果<menu>的dtmf屬性設為真,而且指定“*”、“#”、“0”之外的DTMF值,error.badfetch(以前是error.semantic)拋出。 | |
????·去除訪問內置資源如語法所需的支持,“builtin”當做訪問資源特定平臺的URI(2.3.1.2,附錄P)。 | |
????·在<option>元素中增加“accept”屬性,在生成語法時,修改“choice phrase”的描述(2.3.1.3,2.2)。 | |
????·從<subdialog>元素中去掉了“modal”屬性。 | |
????·從<object>元素中,去掉“fetchaudio”屬性。 | |
????·去掉了用<value>去播放一個錄音的能力,只有<audio>元素可以用來播放錄音(2.3.6,4.1.3,4.1.4)。 | |
????·在<transfer>元素的dest屬性中,用“tel”格式來取代“phone”URI格式。 | |
????·去掉了在field和form中<filled>元素的同一性(2.4)。 | |
????·用語音合成標記語言[SSML]中的定義來取代<choice>、<prompt>、<enumerate>和<audio>中的TTS內容。 | |
????·在<audio>,如果語音文件不能播放,而且元素的內容是空,將不播放語音,并且沒有錯誤事件拋出(4.1.3) | |
????·從<value>元素中去掉“class”、“mode”和“recsrc”屬性(4.1.4)。 | |
????·改變標準session變量“session.uui”成“session.telephone.uui”,增加新的通用的session變量“session.connection.protocol.name”和“session.connection.aai”,它們將提供這些或更多的信息(5.1.4)。 | |
????·用session.connection來取代session.telephone變量。Session.connection不是協議指定的,但更具擴展性。相應的錯誤名字也有所改變。(5.1.4)。 | |
????·在<submit>元素的namelist中的ECMAScript對象現在沒有定義,但保留作未來的定義。應用程序開發者也許會清晰地object的屬性,而不是object自身(5.3.8)。 | |
????·去除“caching”屬性(6.1)。 | |
????·增加“maxage”和“maxstale”屬性(6.1)。 | |
????·從fetchint屬性中去掉“stream”(6.1.1,6.3.5)。 | |
????·從fetching屬性中去除“caching”(6.3.5)。 | |
????·特定平臺的全局命令語法是可選的(6.3.6)。 | |
Modified Elements | |
????·平臺也許會在field和utterance level confidence之間有些微差別。Field$confidence和application.lastresult$.confidence也許有所不同(2.3.1,3.1.6.4,5.1.5,6.3.2)。 | |
????·<subdialog>元素增加了“srcexpr”屬性(2.3.4)。 | |
????·<record>元素增加了“maxtime”和“dest”影子變量(2.3.6)。 | |
????·<transfer>元素增加了“transferaudio”屬性;為bridge transfer增加“maxtimedisconnect”和“unknown”值,并增加了更多的error.connection事件(2.3.7)。 | |
????·<transfer>增加“aai”和“aaiexpr”屬性,這樣<transfer>元素可以傳遞數據(2.3.7)。 | |
????·<link>元素增加“dtmf”屬性(2.5)。 | |
????·W3C Speech Recognition Grammar Specification[SRGS]的XML Form必須在<grammar>中支持(3.1)。 | |
????·<prompt>元素中增加“xml:lang”屬性(4.1)。 | |
????·<prompt>元素中增加可以是“speech”和“hotword”值的“bargeintype”屬性(4.1)。 | |
????·<audio>元素增加“expr”屬性(4.1.3)。 | |
????·增加描述最后識別結果的應用程序變量“application.lastresult$”,包含n-best(5.1.5)。 | |
????·元素<throw>、<choice>、<link>和<return>增加“event”、“eventexpr”、“message”和“messageexpr”屬性(5.2.1)。 | |
????·<catch>增加“_event”變量(5.2.2)。 | |
????·<catch>元素不再允許用一個空串值去指定事件屬性(5.2.4)。 | |
????·增加“error.badfetch.http.nnn”作為預定義的錯誤類型(5.2.6)。 | |
????·增加“error.badfetch.protocol.<response code>”作為預定義的錯誤類型(5.2.6)。 | |
????·增加“maxspeechtimeout”事件(5.2.6)。 | |
????·增加“error.unsupported.language”預定義錯誤類型(5.3.6)。 | |
????·<submit>元素用“enctype”來提供“multipart/form-data”值(5.3.8)。 | |
????·<script>可以出現在<form>元素中(5.3.12)。 | |
????·不能從URI中提取fetchaudio不再產生badfetch事件;而是不再播放語音文件。(6.1.1)。 | |
????·HTTP是強制性的(6.1.4)。 | |
????·增加“maxspeechtimeout”屬性(6.3.2)。 | |
????·平臺對“completetimeout”屬性的支持是可選的。然而,不支持此屬性的平臺必須用completetimeout的最大值和incompletetimeout值來作為incompletetimeout的值,而且必須證明它(6.3.2)。 | |
????·增加“bargeintype”屬性(6.3.4)。 | |
????·對fetch增加“fetchaudiodelay”和“fetchaudiominimum”屬性(6.3.5)。 | |
????·增加“maxnbest”session屬性(6.3.6)。 | |
????·增加“universals”屬性(缺省值為“none”)(6.3.6)。 | |
????·為fetching屬性增加缺省值。對fetching的屬性是“maxage”和“maxstale”,這兩屬性同樣適用于<choice>、<subdialog>、<object>、<link>、<grammar>、<audio>、<goto>、<submit>和<script>。 | |
說明 | |
????·說明語法結果是怎樣映射到VoiceXML的,包括如下部分:接受輸入的“input items”的概念;為了匹配form_level語法,只有input items可以被填充;field_level的語法不能填充input items,但可以填充當前的field。<object>元素可填充并可以觸發filled動作;為語義映射和在lastresult$上的效應、影子變量和在FIA中的處理過程增加設計原則(1.2.4,2.1.4,2.1.5,2.1.6.2.3,2.2,2.3.1,2.3.1.3,2.3.5,2.3.6,2.3.7.2,2.4,2.5,3.1.1,3.1.6,3.1.6.1,3.1.6.2,3.1.6.3,3.1.6.4,附錄C)。 | |
????·如果沒有輸入輸出語音資源,必須拋出error.noresource事件(1.2.5,5.2.6)。 | |
????·根文檔葉文檔之間的定義和轉接(1.5.2)。 | |
????·引用應用程序根文檔和它的語法(1.5.2)。 | |
????·當一個子對話框以唯一fragment identifier調用時,根和葉文檔沒有改變,這些文檔用來初始化根和葉的關聯關系(1.5.2)。 | |
????·在根到根的轉換中,當前和目標應用程序有同樣的名字時,根關聯關系的初始化是由緩存策略決定的。(1.5.2)。 | |
????·URI的說明,特別是fragment identifiers,與RFC2396相關(1.5.2,2.3.4,5.3.7,5.3.8,6.1.1)。 | |
????·根文檔是怎樣在多文檔應用程序中處理的說明和用根文檔的好處(1.5.2)。 | |
????·用<goto>元素,<subdialog>把控制轉向別一個<subdialog>和另一個對話框(1.5.3)。 | |
????·當在解釋和用戶之間不再有聯接時,增加區域描寫最終處理狀態。在<catch>元素中取消最終處理描述(1.5.4,5.2.2)。 | |
????·在Form中指定的語法優先于<Form>元素中的缺省語法(2.1)。 | |
????·當運行不支持的<object>實例時的行為(2.1.2.1,2.3.5)。 | |
????·如果平臺不支持指定的<object>元素,error.unsupported.object.objectname拋出(2.1.2)。 | |
????·在field中的多重提示不必有count屬性。在field中的一個或多個語音提示根據4.1.6中的提示選擇算法依次播放(2.1.4)。 | |
????·在form item中的<goto nextitem>的效果(2.1.5)。 | |
????·當用<goto nextitem>元素時,變量、條件和計數沒有重設(2.1.5)。 | |
????·mixed initiative對話需要form級的語法,對mixed initiative對話有許多開發風格,包括在<field>元素中用<initial>和cond屬性(2.1.5)。 | |
????·在collect phase中,帶有語音播放的<transfer>、<subdialog>、<object>元素的行為(2.1.6)。 | |
????·在FIA處理過程和<filled>元素中的事件句柄選擇(2.1.6.2)。 | |
????·在FIA的select和collect phase,如果發生錯誤,會拋出一個事件,FIA將直接進入process phase(2.1.6.2,2.1.6.2.1,2.1.6.2.3)。 | |
????·當一個錯誤拋出,后續的執行元素并沒有執行。如果沒有清晰的轉接控制,隱含的<exit>將執行(2.1.6.2.1,5.3)。 | |
????·引起運行中斷的列舉的執行關聯元素(2.1.6.2.3)。 | |
????·<reprompt>元素不能中止FIA(2.1.6.2.3)。 | |
????·說明互斥孤立屬性和子內容的規定和行為(2.2,2.3.4,2.3.7,2.5,3.1.1.4,4.1.3,5.2.1,5.3.7,5.3.8,5.3.9,5.3.10,5.3.12,6.4)。 | |
????·在<menu>中,如果dtmf="true"但<choice>已經明顯地指定不是“0”、“*”、“#”的DTMF,這是一個語法錯誤。如果有多于9個choice而沒有指定dtmf,這樣就沒dtmf就不會自動地賦值(就沒有dtmf輸入可以匹配choice),但不會產生錯誤(2.2.3)。 | |
????·<enumerate>元素的使用(2.2.4,2.3.1)。 | |
????·<grammar>覆蓋在<choice>中自動產生的語法(2.2.2)。 | |
????·<choice>用expr求值URI,以便轉向相應的文檔(2.2.2)。 | |
????·<choice>事件句柄沒有控制轉向,引起menu重執行(2.2.2)。 | |
????·在<choice>、<option>、<link>DTMF屬性中指定的DTMF序列等同于簡單的DTMF語法,在此,DTMF屬性適用于序列的識別,然而不象語法,空格在DTMF序列里是可選的(2.3.1.3,2.5)。 | |
????·在<menu>、<choice>中,大致的語法生成規范(2.2.5)。 | |
????·如果form item沒有填充,而且其cond屬性沒有指定,或者其值為true,它被運行(2.3,2.3.1)。 | |
????·在form中,form item的名字必須是唯一的。在<script>元素中聲明的變量聲明在包含<script>元素的范圍中(2.3.1,5.3.12)。 | |
????·重組整個form item以便澄清特征適用于哪上form item。這也表明了<initial> form item也包含<property>和<catch>元素(2.3)。 | |
????·在轉換到boolean后,求出“cond”的表達式。這影響在form item<field>、<block>、<initial>、<subdialog>、<object>、<record>和<transfer>(2.3);<prompt>(4.1)和<catch>(5.2.2)中的“cond”屬性。 | |
????·影子變量是可寫的而且可以被應用程序修改。改變“application.lastresult$”以便其是可寫而且可被應用程序修改(2.3,5.15)。 | |
????·當DTMF屬性定義后,給field變量賦值(2.3.1)。 | |
????·form item變量必須遵循ECMAScript變量的命名規范(2.3.1,5.1)。 | |
????·如果一個指定的<field> builtin類型不被平臺支持,將拋出一個error.unsupported.builtin事件,如果一個平臺支持builtin類型,它必須在指定的語言中支持所有的builtin類型(2.3.1,5.2.6,附錄P)。 | |
????·用帶有“builtin:”URI scheme的DTMF和speech語法(2.3.1.2)。 | |
????·當在<option>中沒有指定“value”或CDATA時,輸入DTMF時,串返回(2.3.1.3)。 | |
????·<option>和<grammar>可以并發地在<field>中指定語法(2.3.1.3)。 | |
????·當訪問<initial>時,通常的語法范圍規則有效;在特殊情況下,沒有field語法被激活(2.3.3)。 | |
????·一個Form允許多重的<initial>元素,在運行中它是怎樣被選擇的(2.3.3,附錄 C)。 | |
????·在<subdialog>中的變量范圍(2.3.4)。 | |
????·<subdialog>的關聯是獨立于它的呼叫關聯的(變量實例是不能共享的),但是它的關聯是符合語法、事件、和變量的通常范圍規則(2.3.4)。 | |
????·如果沒有指定相應的<param>,在<subdialog>中,用“expr”屬性設置變量(2.3.4)。 | |
????·子對話框的執行關聯的描述(2.3.4)。 | |
????·說明<return>怎樣傳遞<subdialog>中的數據到調用它的對話框(2.3.4,5.3.10)。 | |
????·子對話框中的變量以名字和在文檔的次序上匹配參數,參數值在<param>元素的關聯關系上求值(2.3.4)。 | |
????·當一個無效的轉接發生在<subdialog>、<goto>、<submit>中,error.badfetch錯誤拋出,在轉接過程中錯誤在此處理的區域是依賴于平臺的(2.3.4,5.3.7,5.3.8)。 | |
????·沒有<return>的<subdialog>繼續運行,直到它遇到一個<exit>或直到沒有符合條件的form item讓FIA去選擇(等于一個<exit>)(2.3.4)。 | |
????·一個獨立查詢串不是一個有效的URI:沒有特別的處理,因此需要在<subdialog>和<goto>中指定的轉接URI(2.3.4)。 | |
????·<object>元素自己可以斷定它接受的參數名字或值是不有效。如果這樣,一個錯誤拋出(它也許是一個標準錯誤或者是一個特定對象錯誤)(2.3.5)。 | |
????·在錄音過程中用戶掛機正常中止錄音。先于掛機錄下來的數據可以返回到服務器(2.3.6)。 | |
????·在錄音過程中的語法解釋(2.3.6)。 | |
????·在<record>中的field變量是對錄下來的語音文件的引用,當傳遞錄下來的數據到服務器,<submit>元素的“enctype”應該設為“multipart/form-data”(2.3.6,5.3.8)。 | |
????·當<record>的dtmfterm屬性設為false,DTMF輸入接收,行為的說明(2.3.6)。 | |
????·在得到語音數據時,錄音開始時的說明和錄音中止時的行為(2.3.6)。 | |
????·<record>變量是怎樣執行的隨平臺而有所不同。(雖然所有的平臺必須支持在<audio>和<submit>中指定的行為)(2.3.6)。 | |
????·缺省時,<record>的finalsilence和maxtime屬性等于平臺指定的值(2.3.6)。 | |
????·語音和DTMF中止的<transfer>返回near_end_disconnect狀態(2.3.7)。 | |
????·在<transfer>元素中的“dest”屬性的值(2.3.7)。 | |
????·<transfer>元素form item變量對于blind transfer是沒有定義的(undefined)(2.3.7)。 | |
????·<transfer>的修改包括:當平臺不能處理“dest”或“destexpr”URI的錯誤事件。當 blind transfer發生時,平臺馬上掛斷的說明。如果平臺不能執行blind或bridge transfer事件拋出的規定。(雖然有些錯誤條件也許會報告)對blind transfer來講,聯接狀態不能得到的陳述。對blind transfer來講,transferaudio被忽略。在bridged transfer之中和之前的語音播放,包括這些情形,在聯接建立前transferaudio結束;在開始transfer前,隊列中的語音開始播放,等待輸入和播放語音時序的陳述。增加name$.inputmode和name$utterance影子變量。在轉接過程中,平臺支持等待輸入是可選的。(2.3.7,5.2.6)。 | |
????·在bridged <transfer>元素中,在外呼期間,bargetype是固定為“hotword”(2.3.7) | |
????·在呼叫轉移或者試圖呼叫轉移時,如果主叫掛機,<transfer>變量和影子變量沒有設置。如果一個呼叫先于應答被主叫用語音或DTMF中斷,duration影子變量置為零(2.3.7.2.2)。 | |
????·<transfer>的utterance影子變量設為DTMF結果,如果轉接被DTMF輸入中止(2.3.7.2.2)。 | |
????·在bridge transfer中,在聯結建立之前,主叫通過DTMF或語音命令強迫被叫掛機的地址狀態(2.3.7.2.2)。 | |
????·<link>有零和更多的語法(2.5)。 | |
????·<link>元素拋出的事件在激活的區域中是由最有資格的<catch>元素處理的(2.5)。 | |
????·<link>元素可以是<field>和<initial> form item的child(2.5)。 | |
????·包含<link>有“scope”屬性的元素,在<link>語法的范圍內沒有任何效果(2.5)。 | |
????·在<link>中,其內容(如:<grammar>)的任何URI被求值。在激活的對話區域和上下文中,其屬性中的URI和ECMAScript表達式被求值(2.5)。 | |
????·在<grammar>元素中的“xml:lang”屬性在平臺上不必有多語言的支持(3.1)。 | |
????·不支持的語法語言產生error.unsupported.language事件(3.1.1)。 | |
????·不支持的語言可以表明在<throw>元素message 變量中(3.1.1)。 | |
????·在數字表達式中一個串的數字結果(ECMAScript將自動地變換成數字);串不能有前導零(3.1.1)。 | |
????·除了XML的SRGS的XML格式,對于inline語法格式SRGS <grammar>元素在VoiceXML 2.0被擴展以允許PCDATA(3.1.1,3.1.1.4)。 | |
????·隱含的語法(如option)不支持weight(3.1.1.3)。 | |
????·在<grammar>中的type屬性優先于其它可能的media類型;如果指定了,與語法的類型沖突,一個錯誤將拋出(3.1.1.2,3.1.1.4)。 | |
????·<grammar>屬性的應用和解釋從SRGS中繼承(version、xml:lang、mode、root、tag-format、xml:base),在線XML SRGS語法遵從SRGS中的行為。對于在線ABNF SRGS語法以及外部的ABNF和XML SRGS語法,必須忽略這些屬性。對所有其它的語法類型,這些屬性的解釋和應用是依賴于平臺的(3.1.1.4)。 | |
????·在SRGS語法的root rule中,不必是public rule(3.1.1.4)。 | |
????·在form_level和field_level之間的差別(3.1.6,3.1.6.1,3.6.1.2)。 | |
????·<grammar>元素的“mode”屬性與grammar mode沖突(3.1.1.4)。 | |
????·“slot”可以在任意的嵌套級別上用圓點分隔選擇屬性,去掉寓意排列的索引表達式(如“pzza.toppings[3]”)文本是支持的(3.1.6.1)排列的DTMF和語音語法描述;DTMF語法可以返回一組屬性對和一個串值(3.1.2)。 | |
????·匹配的form_level語法在input item可以覆蓋存在的值,這些<filled>以Section 2.4和附錄 C(3.1.6.1)所描寫的方式處理(3.1.6.1)。 | |
????·排列的DTMF和語音語法描述;DTMF語法可以返回一組屬性對和一個串值(3.1.2)。 | |
????·如果一個文檔包含一個指定范圍的語法,在<link>或者在菜單<choice>中,此語法包含一field,error.badfetch拋出(3.1.3)。 | |
????·當<form>和<menu>等待輸入時,如果沒有語法激活,error.semantic事件拋出(3.1.4)。 | |
????·inputmodes屬性不影響語法的激活(3.1.4,6.3.6)。 | |
????·在<grammar>元素內正在運行的語義附件(3.1.5)。 | |
????·<prompt>的“bargein”和“bargeintype”屬性的缺省值是由“bargein”和“bargeintype”決定的(4.1)。 | |
????·時間是一個非負的數值,其后須有ms或s。下列屬性以時間作為它們的值:<prompt>-timeout;<transfer>-maxtime(NB:現在缺省是“0s”),connecttimeout;<record>-maxtime,finalsilence。下列屬性有時間值:fetchtimeout、completetimeout、incompletetimeout、maxspeechtimeout、interdigttimeout、termtimeout、timeout、fetchaudiodelay、fetchaudiominimum、fetchtimeout(4.1,2.3.6,2.3.7,6.1.1,6.3)。 | |
????·如果文本中包含語音合成標志,應將之放在<prompt></prompt>對之間(4.1.2)。 | |
????·在<prompt>中的“xml:lang”屬性不需要多語言的支持(4.1.1)。 | |
????·不支持的合成語言產生error.unsupported.language事件(4.1.1)。 | |
????·在<audio>元素中的可選內容(4.1.3)。 | |
????·當<audio>的“expr”的值是ECMAScript的undefined,元素的內容忽略。如果它等于一個無效的URI,或者格式不支持,等等,將激活回調策略(4.1.3)。 | |
????·在<audio>中,平臺優化stream audio(4.1.3)。 | |
????·在<prompt>元素之外的單獨的<value>元素是合法的(4.1.4)。 | |
????·在<audio>中的expr的簡單求值,以便它不被特別對待;可以用CDATA來處理一引起特別的XML字符。它不會當做SSML文檔或一個文檔片斷來對待(4.1.4)。 | |
????·當<prompt>元素的“bargein”是false,DTMF輸入緩沖區被刪除(4.1.5)。 | |
????·在一組語音提示中bargein出現時的行為(4.1.5)。 | |
????·當prompt的“bargein”屬性是false,當提示語音播放輸入沒有緩存(任何已經緩存的DTMF被拋棄)(4.1.5)。 | |
????·<prompt>的“bargeintype”屬性應用于DTMF輸入以及語音輸入(4.1.5.1)。 | |
????·在Form的<initial>元素中,支持語音提示的計數(4.1.6)。 | |
????·每個<prompt>有它自己的timeout值,當語音提示排隊,在缺省情況下,<prompt>的timeout屬性等于timeout property(4.1.7)。 | |
????·在語音隊列和input collection之間的關系(4.1.8)。 | |
????·與轉接執行無關的異步事件(如disconnect)是可緩存的,它一直緩存到拋出前的等待狀態(4.1.8)。 | |
????·說明解釋器和FIA之間的映射;語法的激活、并發等待伴有語音播放的輸入的出現(4.1.8)。 | |
????·當prompt的bargein屬性是false,輸入沒有收集,在轉接狀態下緩存的DTMF如4.1.5中所描述的一樣被刪除(4.1.8)。 | |
????·VoiceXML和ECMAScript變量是同樣的變量空間的一部分;在ECMAScript中申明的變量可以直接用在VoiceXML中(5.1)。 | |
????·VoiceXML變量名,包括域名,必須符合ECMAScript規則;在申明的變量名中不能包含一個點;在field名字中,“a.b”是非法的(5.1)。 | |
????·VoiceXML變量和變量區域必須符合ECMAScript區域鏈;作為結果,對一個沒有聲明的變量的引用產生error.semantic錯誤。(5.1.1,5.1.2)。 | |
????·變量的范圍(5.1.2)。 | |
????·在應用程序根文檔下的應用程序和文檔的變量范圍(5.1.2)。 | |
????·只有一些cond操作符需要轉義(5.1.3)。 | |
????·沒有指定根、帶有變量X的文檔,這個變量可以用application.x和document.x引用(5.1.3)。 | |
????·說明“application.lastresult$”是一個ECMAScript數組(5.1.5)。 | |
????·lastresult應用程序變量的持續性說明(5.1.5)。 | |
????·lastresult以confidence和語法的區域排序(5.1.5,2.3.1,3.1.4)。 | |
????·當DTMF語法匹配,application.lastresult$的解釋變量包含匹配的數字串(5.1.5)。 | |
????·對激活文檔的相對URL的求值(5.2)。 | |
????·catch 元素用最深層(事件在此激發,但catch不在此定義)的元素屬性。(5.2)。 | |
????·當事件拋出后,VoiceXML通常不指定(5.2.1)。 | |
????·VoiceXML事件的處理通常符合XML和DOM2事件處理的模式(5.2,5.2.2,5.2.4)。 | |
????·當有同樣的或有同樣前綴的名字事件出現時,與<catch>相關的事件計數是遞增的,這影響到5.2.4部分的有正確計數的catch句柄的選擇(5.2.2)。 | |
????·<catch>的“event”和“count”屬性的定義(5.2.2)。 | |
????·當用戶掛機時在<catch>中沒有內在的限制(5.2.2)。 | |
????·<catch>的事件必須是串“.”,它表示所有的事件將被捕獲(5.2.2)。 | |
????·沒有指定的事件屬性的<catch>等于帶有event="."的<catch>(5.2.2,5.2.4)。 | |
????·“as if by copy”catch inheritance(5.2,5.2.4)。 | |
????·catch元素選擇算法(5.2.4)。 | |
????·用前綴匹配作為符號匹配,而不是字符串匹配(5.2.4)。 | |
????·“error.badfetch”預定義的錯誤類型(5.2.6)。 | |
????·直到文檔準備運行,error.badfetch拋出。變量初始化是不是執行的一部分依賴于平臺(5.2.6)。 | |
????·“error.badfetch”事件拋出的情形說明,一個相似的瀏覽器也許拋出其名字是擴展的預定義事件(5.2.6)。 | |
????·應用程序和平臺指定的事件類型應該用反轉的Internet域名習慣以防名字的沖突(5.2.6)。 | |
????·HTTPS不象HTTP一樣是同樣的協議(5.2.6)。 | |
????·在SESSION的第一個文檔中出現的錯誤,在裝載文檔、進入FIA前,錯誤出現時以特定平臺的方法處理(5.2.6)。 | |
????·不將“divide by 0”作為一個run_time錯誤,但它拋出error.semantic錯誤(ECMAScript不報告一個錯誤)(5.2.6)。 | |
????·在大多數情況下,事件error.noauthorization被拋出的情況多于連接失敗(5.2.6)。 | |
????·error.unsuport.element事件只在VoiceXML 2.0元素中拋出(5.2.6)。 | |
????·如果試圖賦值給一個沒有聲明的變量,error.semantic事件拋出。ECMAScript對象,如:o.foo,可以直接賦值,如果試圖去聲明它們,將產生一個error.semantic事件(5.3.2)。 | |
????·<clear>的namelist也許指定變量而不是form item變量,它們可以被重設置(5.3.3)。 | |
????·在catch元素中的<reprompt>的效果(5.3.6)。 | |
????·<reprompt>元素在有<goto>元素的<catch>中的行為(5.3.6)。 | |
????·當它們以<submit>、<return>、<goto>結束,在執行<catch>元素后,FIA執行通常的語音隊列(5.3.6,附錄 C)。 | |
????·在<catch>外面,<reprompt>沒有任何效果(5.3.6)。 | |
????·在文檔變量中的<goto>的URI的效果(5.3.7)。 | |
????·在Form item轉換時,<goto>所出現的錯誤,這些錯誤事件在對話的范圍里被處理(5.3.7)。 | |
????·在<goto>中,如果nextitem和expritem引用一個不存在的form item,一個error.badfetch事件被拋出(5.3.7)。 | |
????·在VoiceXML或ECMAScript中聲明的變量可以被提交(5.3.8)。 | |
????·在一些情況下,<submit>可以被中間緩存滿足(5.3.8)。 | |
????·<exit>不能拋出一個“exit”事件(5.3.9)。 | |
????·<exit>的“expr”屬性的值是一個ECMAScript表達式(5.3.9)。 | |
????·沒有<script>的“type”屬性(5.3.12)。 | |
????·<script>與<var>元素和<form>元素中的form item變量一起求值(5.3.12)。 | |
????·在<script>元素中的“charset”的定義(5.3.12)。 | |
????·<log>的處理是依賴平臺的(5.3.13)。 | |
????·預取的修改(6.1)。 | |
????·“fetchint”屬性的效果(6.1.1)。 | |
????·緩存策略的選取(6.1.2)。 | |
????·緩存遵循HTTP 1.1的緩存糾正規則(6.1.2)。 | |
????·沒有標志機制去控制應用程序根文檔(6.1.2.1)。 | |
????·<meta>的第一個類型是由屬性名字和內容表達,第二個類型是由http-equiv和內容表達(6.2.1)。 | |
????·當<property>元素的不同的值在同一級別上被指定,在文檔次序上的最后一個有效。 | |
????·屬性可以在field input items但不是在control items上設置(6.3)。 | |
????·平臺指定的屬性的格式(6.3.1)。 | |
????·語音合成屬性“completetimeout”和“incompletetimeout”的定義(6.3.2)。 | |
????·傳向<subdialog>元素的參數值永遠是數據(6.4)。 | |
????·時間指定值的定義(6.5)。 | |
????·數字格式用在CSS2中,ASR屬性confidencelevel、sensitivity和speedvsacurracy的值也是這種格式(6.5,6.3.2)。 | |
????·在<var>中限制域名和名字屬性,在<goto>中限制nextitem屬性到NMTOKEN;擴展<assign>中的名字屬性如NMTOKEN,但也允許“$”(對于影子變量的同值);限制在<filled>中的namelist屬性到NMTOKENS;擴展<exit>、<submit>、<clear>和<return>的namelist屬性如NMTOKENS,但允許“$”(附錄 B,附錄 O)。 | |
????·限制<choice>的內容模式到PCDAT和<grammar>元素;<emumerate>不能出現在另一個<enumerate>元素里(附錄 B,附錄 O,2.2.4)。 | |
????·(不象schema)DTD不能正確地表達,<metadata>元素可以從其它XML名字空間包含元素(附錄 B)。 | |
????·FIA說明,application.lastresult$在每一次成功的識別后賦值(附錄 C)。 | |
????·FIA說明,在當前form和menu里的匹配<link>語法,在當前form和menu之外的匹配菜單<choice>語法(附錄 C)。 | |
????·FIA規定,活動語法的收集不包括<subdialog>鏈的語法(附錄 C)。 | |
????·FIA初始化期間,<script>和form item元素的初始化(附錄 C)。 | |
????·在FIA執行期間,事件也許在數點上產生,它們是怎樣處理的取決于FIA的激活部分(附錄 C)。 | |
????·在FIA的collect phase,只有從input item和<initial>的語音提示被選擇,它們的提示計數不增加。當form item執行時,在<block>中的語音提示排序開始(附錄 C)。 | |
????·對各種DTMF輸入的timeout的使用(附錄 D)。 | |
????·如果不能處理非標準VoiceXML元素和屬性,它必須拋出error.badfetch錯誤(附錄 F)。 | |
????·記錄在內置應用的解釋和希望的平臺的依賴性(附錄 P)。 | |
????·內置DTMF和語音語法的參數化(附錄 P)。 | |
????·相反的參數到內置數據的處理(附錄 P)。 | |
????·從內置類型“number”返回的結果值(附錄 P)。 | |
????·如果不說的話,貨幣碼不指定(附錄 P)。 | |
????·只有數字和boolean語法可以參數化(附錄 P)。 | |
????·用<say-as>表達內置值的描寫(附錄 P)。 | |
????·在<field>中帶有指定內置類型語音和DTMF<grammar>元素。 | |
Miscellaneous | |
????·用XML編碼屬性、推薦的schema屬性和轉義的非法XML字符(<、>、&等)更新例子。 | |
????·用試驗性的media type(如:“application/srgs+xml”)傳遞到IETF。 | |
????·增加描寫VoiceXML的初始化和它是怎樣與其它工作相關連的部分(1)。 | |
????·為<audio>、<record>指定一組需要的語音格式(1.2.4)。 | |
????·關于語音和DTMF語法、語音、TTS、錄音和Tansfer支持(1.2.5)。 | |
????·平臺應該用User_Agent HTTP header來鑒別它們自身(1.2.5)。 | |
????·內置類型和基礎語法是提供信息的而不是標準化的(2.3.1,2.3.1.1,2.3.1.2,附錄P)。 | |
????·匹配SRGS 1.0規范的更新部分(3)。 | |
????·語義解釋器怎樣映射到form變量的描述(3.1.6)。 | |
????·匹配SSML 1.0更新的部分(4)。 | |
????·保留變量名字空間“_$”作內部應用(5.1)。 | |
????·帶有“session”、“application”、“document”、“dialog”名字的變量和form items不鼓勵使用(5.1.2)。 | |
????·metadata信息在<metadata>中而不是在<meta>中表達,用<meta>取除推薦的metadata信息。用RDF schema和Dubin Core屬性增加推薦的metadata信息(6.2)。 | |
????·當解釋器遇到不能處理的屬性時,改變一致性行為。它不能拋出error.unsupport.property,必須忽略屬性(6.3.1)。 | |
????·DTD更多用于提供信息而不是標準化(附錄 B)。 | |
????·一組需要的語音格式(附錄 E)。 | |
????·例如用“audio/x-wav”不代替“audio/wav”,當正式地用IETF登記時,增加媒體類型將被采納的記錄 (附錄 E)。 | |
????·修改符合VoiceXML處理器的定義,包含需要支持在文檔中描寫的所有元素的語法和語義(附錄 F)。 | |
????·符合文檔部分引用格式而不是DTD限制(附錄 F)。 | |
????·符合DTD是提供信息的,而schema是標準化的。一個符合的文檔必須在根元素中指定VoiceXML名字空間。Version="2.0"屬性也必須寫明,應提供“xsi:schemaLocation”來指明VoiceXML schema的位置。DOCTYPE的聲明是任選的。當遇到沒有VoiceXML指定根元素時,文檔時處理器的行為是沒有定義的(附錄 F)。 | |
????·修改VoiceXML可以表達可訪問性的需要和論點描述(附錄 H)。 | |
????·可重用的附錄(附錄 K)。 | |
????·增加引用附錄(附錄 M)。 | |
????·增加描述VoiceXML媒體類型和帶有包含致電IETF備忘錄來登記VoiceXML媒體類型的文件附錄(附錄 N)。 | |
????·VoiceXML標準化定義,在語法和合成規范中,從部分schema中,用兩個其它的schema來改編定義(附錄 O)。 | |
????·用XML Spy4.4,XSV(June 2002 version)和Xerces 2(Java和C++版本)驗證schema(附錄 O)。 | |
????·為VoiceXML 2.0增加完整的Schema鏈接(附錄 O)。 |
附錄 K 重用性 |
![]() |
? | 附錄 F ??附錄 G??附錄 H??附錄 I??附錄 J |
? | 附錄 L ??附錄 M??附錄 N??附錄 O??附錄 P |
? | |
一、可重用的對話成分 | |
????定義:一個應用程序包的片斷可以被任何應用程序和其它可重用的對話框組件調用。一個可重用的對話框組件(RDC)封裝了與訪問者交互的代碼。 | |
????可重用的對話框組件提供了pre_packaged的“out-of-box”功能,此功能可以讓開發者去快速地用所提供的標準的缺省的設置和行為去建立應用程序。他們將開發人員從繁重而錯綜復雜的開發任務(如創建一個穩定的語音對話框、信任分數解釋器、錯誤恢復機制、提示等等)中解脫出來。如果有必要提供應用程序指定的提示、詞匯、重試設置等等,上述的行為可以由開發人員定制。 | |
????在此VoiceXML版本中,只有<subdialog>和<object>是可重用組件。這些組件與在應用程序中調用子過程相同的方式被調用。這些組件用一組定義得很好的參數配置,它們以一種相對有所限制的方式與調用者交互,在調用結束后,組件會返回一個定義得很好的結果,并控制返回到組件被調用點。這對模塊化的重用性有著重要的意義,而且特別容易使用。在<subdialog>和<object>這兩種組件中,只有<subdialog>是VoiceXML的固有功能。從另一個角度來講,<object>也許可以提供更高級、重用性更好的功能,而這些功能是標準中所沒有的。 | |
? | |
二、模板和例子 | |
????雖然可重用的對話框組件有上面描述的模塊化、重用性和易于使用等優點。這些組件的缺點是它們必須非常小心地設計。有時還會出現下面的情況,盡管你非常小心地去設計了,應用程序開發者仍會遇到組件不能很方便地配置以便處理應用設備的情況。另外,當組件與調用者之間的交互使得組件設計者可能去創建一個組件,這個組件可以工作在一個全異的環境中。它也可能使得用戶的與組件的交互看起來與應用程序的其它部分分離。 | |
????在這種情形下,應用程序開發者也許希望以例子和模板的方式重用VoiceXML源代碼。這些代碼可以非常容易地用來集成到一個特定的應用程序中。 | |
????這些模板和例子可以被分離的VoiceXML代碼創建,然后可以分發而應用到其它應用程序中。這種形式的可重用性允許用戶拷貝VoiceXML代碼在必要時去修改它。 | |
????VoiceXML通過保持在Form元素之間的分離促進了這種形式的可重用性。就這點來講,VoiceXML和[HTML]是相同的。一個HTML表可以從一個HTML頁面拷貝到另一個,因為表可以不管它的前后鏈接而顯示出來。 | |
????雖然參數化、模塊化和可維護性可以被這種方式犧牲,但是它有簡單、快速和不尋常的可定制性。 |
附錄 L Acknowledgements |
![]() |
? | 附錄 F ??附錄 G??附錄 H??附錄 I??附錄 J |
? | 附錄 K ??附錄 M??附錄 N??附錄 O??附錄 P |
? | |
????此W3C規范基于VoiceXML 1.0,VoiceXML 1.0是2000年5月由Voice Forum制定的。 VoiceXML Forum的作家有:IBM的Linda Boyer;Lucent Technologies的Peter Danielsen;Motorola的Jim Ferrans;AT&T的Gerald Karam;Motorola的David Ladd;IBM的Bruce Lucas;Lucent Technologies的Kenneth Rehor。 | |
????參與此版本寫作的有W3C Voice Browser Working Group的成員。下列人員對此規范作出了特別的貢獻。 | |
?????? ·Nuance Communications的Dan Burnett | |
?????? ·Unisys的Deborah Dahl | |
?????? ·Lucent的Peter Danielsen | |
?????? ·Cisco的Martin Dragomirecky | |
?????? ·Motorola的Jim Ferrans | |
?????? ·SpeechWorks International的Andrew Hunt | |
?????? ·AT&T的Gerald Karam | |
?????? ·Dynamicsoft的Dave Ladd | |
?????? ·Sun Microsystems的Paul Lamere | |
?????? ·IBM的Bruce Lucas | |
?????? ·PipeBeach的Scott McGlashan | |
?????? ·General Magic的Mitsuru Oshima | |
?????? ·Tellme的Brad Porter | |
?????? ·Nuance Communications的Ken Rehor | |
?????? ·Tellme的Steph Tryphonas | |
????VoiceXML工作組還將感謝Dave Raggett和Jim Larson在管理上所給予的無價的支持。 |
附錄 M 參考 |
![]() |
? | 附錄 F ??附錄 G??附錄 H??附錄 I??附錄 J |
? | 附錄 K ??附錄 L??附錄 N??附錄 O??附錄 P |
? | |
一、標準化參考 | |
[CSS2] | |
????"Cascading Style Sheets,level 2,CSS2 Specification",Bos et al.W3C Recommendation,May 1998. | |
????請參照:http://www.w3c.org/TR/REC-CSS2/ | |
[ECMASCRIPT] | |
????"Standard ECMA-262 ECMAScript Language Specification", Standard ECMA-262, December 1999. | |
????請參照:http://www.ecma.ch/ecma1/STAND/ECMA-262.asp | |
[RFC1521] | |
????"MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies", IETF RFC 1521, 1993. | |
????請參照:http://www.ietf.org/rfc/rfc1521.txt | |
[RFC2396] | |
????"Uniform Resource Identifiers (URI): Generic Syntax", IETF RFC 2396, 1998. | |
????請參照:http://www.ietf.org/rfc/rfc2396.txt | |
[RFC2616] | |
????"Hypertext Transfer Protocol -- HTTP/1.1", IETF RFC 2616, 1999. | |
????請參照:http://www.ietf.org/rfc/rfc2616.txt | |
[RFC2806] | |
????"URLs for Telephone Calls", IETF RFC 2806, 2000. | |
????請參照:http://www.ietf.org/rfc/rfc2806.txt | |
[RFC3066] | |
????"Tags for the Identification of Languages", IETF RFC 3066, 2001. | |
????Note that [XML] adopted RFC3066 through an errata as of 2001-02-22. RFC3066 obsoletes [RFC1766]. | |
????請參照:http://www.ietf.org/rfc/rfc3066.txt | |
[SSML] | |
????"Speech Synthesis Markup Language Version 1.0". Burnett, Walker and Hunt. W3C Working Draft, December 2002. | |
????請參照:http://www.w3.org/TR/2002/WD-speech-synthesis-20021202/ | |
[SRGS] | |
????"Speech Recognition Grammar Specification Version 1.0". Hunt and McGlashan. W3C Candidate Recommendation, June 2002. | |
????請參照:http://www.w3.org/TR/2002/CR-speech-grammar-20020626/ | |
[UNICODE] | |
????"The Unicode Standard". The Unicode Consortium. | |
????請參照:http://www.unicode.org/unicode/standard/standard.aspl | |
[XML] | |
????"Extensible Markup Language (XML) 1.0". Bray et al. W3C Recommendation. | |
????請參照:http://www.w3.org/TR/2000/REC-xml-20001006 | |
[XML-BASE] | |
????"XML Base", J. Marsh, editor, W3C Recommendation, June 2001. | |
????請參照:http://www.w3.org/TR/2001/REC-xmlbase-20010627/ | |
[XMLNAMES] | |
????"Namespaces in XML". Bray et al. W3C Recommendation, January 1999. | |
????請參照:http://www.w3.org/TR/1999/REC-xml-names-19990114/ | |
? | |
二、Informative References | |
[ATAGIO] | |
????"Authoring Tool Accessibility Guidelines 1.0", Treviranus et al. W3C Recommendation, Feburary 2000. | |
????請參照:http://www.w3.org/TR/2000/REC-ATAG10-20000203/ | |
[DC] | |
????"Dublin Core Metadata Initiative", a Simple Content Description Model for Electronic Resources. | |
????請參照:http://purl.org/DC/ | |
[HTML] | |
????"HTML 4.01 Specification", Dave Raggett et al. W3C Recommendation, December 1999. | |
????請參照:http://www.w3.org/TR/1999/REC-html401-19991224/ | |
[IANA] | |
????"IANA Character Sets", IANA. | |
????請參照:http://www.iana.org/assignments/character-sets | |
[ISO4217] | |
????"ISO 4217:2001 Codes for the representation of currencies and funds", ISO, 2001. | |
????請參照:http://www.iso.ch/ | |
[JSAPI] | |
????"Java Speech API", Sun Microsystems, Inc. | |
????請參照:http://www.javasoft.com/products/java-media/speech/index.aspl | |
[JSGF] | |
????"JSpeech Grammar Format", Andrew Hunt, W3C Note, June 2000. | |
????請參照:http://www.w3.org/TR/2000/NOTE-jsgf-20000605/ | |
[NLSML] | |
????"Natural Language Semantics Markup Language for the Speech Interface Framework", Deborah A. Dahl. W3C Working Draft, November 2000. | |
????請參照:http://www.w3.org/TR/2000/WD-nl-spec-20001120/ | |
[RDF-SYNTAX] | |
????"Resource Description Framework (RDF) Model and Syntax Specification", Ora Lassila and Ralph R. Swick. W3C Recommendation, February 1999. | |
????請參照:http://www.w3.org/TR/REC-rdf-syntax/ | |
[RDF-SCHEMA] | |
????"Resource Description Framework (RDF) Schema Specification 1.0", Dan Brickley and R.V. Guha. W3C Candidate Recommendation, March 2000. | |
????請參照:http://www.w3.org/TR/2000/CR-rdf-schema-20000327/ | |
[RFC1766] | |
????"Tags for the Identification of Languages", IETF RFC 1766, 1995. | |
????Note that [XML] adopted RFC3066 through an errata as of 2001-02-22. [RFC3066] obsoletes RFC1766. | |
????請參照:http://www.ietf.org/rfc/rfc1766.txt | |
[RFC2119] | |
????"Key words for use in RFCs to Indicate Requirement Levels", IETF RFC 2119, 1997. | |
????請參照:http://www.ietf.org/rfc/rfc2119.txt | |
[RFC2361] | |
????"WAVE and AVI Codec Registries", IETF RFC 2361, 1998. | |
????請參照:http://www.ietf.org/rfc/rfc2361.txt | |
[SISR] | |
????"Semantic Interpretation for Speech Recognition", Luc Van Tichelen. W3C Working Draft, November 2001. | |
????請參照:http://www.w3.org/TR/2001/WD-semantic-interpretation-20011116/ | |
[UAAGIO] | |
????"User Agent Accessibility Guidelines 1.0", Jacobs et al. W3C Proposed Recommendation, October 2002. | |
????請參照:http://www.w3.org/TR/2002/PR-UAAG10-20021016/ | |
[VOICEXML-1.0] | |
????"Voice eXtensible Markup Language 1.0", Boyer et al, W3C Note, May 2000. | |
????請參照:http://www.w3.org/TR/2000/NOTE-voicexml-20000505/ | |
[WAI-WEBCONTENT] | |
????"Web Content Accessibility Guidelines 1.0", Chisholm et al. W3C Recommendation, May 1999. | |
????請參照:http://www.w3.org/TR/WAI-WEBCONTENT/ | |
[XAG] | |
????"XML Accessibility Guidelines", Dardailler et al. W3C Working Draft, October 2002. | |
????請參照:http://www.w3.org/TR/xag.aspl |
附錄 N 媒體類型和文件后綴 |
![]() |
? | 附錄 F ??附錄 G??附錄 H??附錄 I??附錄 J |
? | 附錄 K ??附錄 L??附錄 M??附錄 O??附錄 P |
? | |
????W3C Voice Browser Working Group已經應用IETF為VoiceXML登記一個媒體類型(http://www.ietf.org/internet-drafts/draft-tryphonas-voicexml-media-reg-00.txt),要求的媒體類型為application/voicexml/+xml。 | |
????W3C Voice Browser Working Group已經采納用“.vxml”作為VoiceXML文檔的文件名后綴。 |
附錄 O Schema |
![]() |
? | 附錄 F ??附錄 G??附錄 H??附錄 I??附錄 J |
? | 附錄 K ??附錄 L??附錄 M??附錄 N??附錄 P |
? | |
????這部分是標準化的。 | |
????VoiceXML Schema位于http://www.w3.org/TR/voicexml20/vxml.xsd。 | |
????VoiceXML schema依賴于定義于VoiceXML名字空間的其它schema。 | |
??????·grammar-adapter.xsd:用于VoiceXML名字空間數據類型的定義。 | |
??????·synthesis-adapter.xsd:用于VoiceXML schema中的屬性和屬性組。 | |
??????·vxml-grammar-restriction.xsd:此schema參照Speech Recognition Grammar Specification 1.0[SRGS]和限制嵌入在VoiceXML名字空間的一些定義。 | |
??????·vxml-grammar-extension.xsd:此schema參照vxml-grammar-restriction.xsd以及為VoiceXML擴展一些定義。 | |
??????·vxml-synthesis-restriction.xsd:此schema參照Speech Synthesis Markup Language 1.0[SSML]非名字空間的schema,擴展和限制一些嵌入在VoiceXML名字空間的定義。 | |
??????·vxml-synthesis-extension.xsd:此schema參照vxml-synthesis-restriction.xsd和擴展一些VoiceXML的定義。 | |
????VoiceXML 2.0中的完整Speech Interface Framwork schema可以從下面網頁得到:http://www.w3.org/TR/voicexml20/vxml-schema.zip。 | |
? |
附錄 P 內置語法類型 |
![]() |
||||||||||||||
? | 附錄 F ??附錄 G??附錄 H??附錄 I??附錄 J | ||||||||||||||
? | 附錄 K ??附錄 L??附錄 M??附錄 N??附錄 O | ||||||||||||||
? | |||||||||||||||
????在章節2.3.1中的<field>屬性用來為某個基本類型指定內置語法的。平臺對基本內置語法的支持是可選的。如果一個平臺確實支持內置類型,它必須盡可能地遵照本附錄中的描述。此規范中的后一個版本也許會提供一個機制,映射基本內置語法到特定的應用程序語法。 | |||||||||||||||
????每個內置類型有一個對返回值格式的約定,它是獨立于語言和執行的。內置域的返回類型是除Boolean域類型之外的串。要訪問實際的識別結果,作者可以訪問影子變量name$.utterance。做為選擇,開發者可以訪問application.lastresult$,在此,application.lastresult$.interpretation與application.lastresult$.uttrance同樣的串值。 | |||||||||||||||
????內置類型以VoiceXML應用程序開發人員可以假定一些用戶輸入的持續性來定義。這允許幫助信息和其它提示獨立于平臺。例如,boolean類型的語法應該在最低限度上允許用英語來回答“yes”和"“no”。但是可以增加其它選擇,如“yeah”和“nope”。 | |||||||||||||||
????當一個應用程序需要超過內置類型的行為時,就應該用清晰的域語法。下面是這樣一些情況,應用程序必須提供一個清晰的域語法,以便保證有著持續用戶界面的應用程序的強移植性。 | |||||||||||||||
??????·一個平臺是不需要去執行一種語法,它可以接受所有可能的、能被內置語法返回的值。例如,貨幣內置語法定義了一種返回值,其格式可以容納很大范圍的貨幣值[ISO4217]。平臺不必支持包括任何世界貨幣的語音輸入,因為它會消極地影響識別的精確度。相似的,數值內置語法可以返回正的或負的浮點數,但是語法不必支持所有可能說出來的浮點數。 | |||||||||||||||
??????·內置語法也限制了處理沒有指定的語音輸入的能力。例如,“20 peso”不能解決指定的[ISO4217]貨幣碼,因為“peso”是許多國家的貨幣名字。在這種情況下,平臺根據語言也許會返回一個指定的貨幣碼,或消去貨幣碼。 | |||||||||||||||
????所有的內置類型必須支持語音和DTMF輸入。 | |||||||||||||||
????對于每一種內置類型,一組可以接受的語音輸入是依賴于平臺的,而且隨語言而變化。內置類型返回的值可以用<say-as>元素讀出。VoiceXML通過增加對應于每個內置類型的“type”值,在[SSML]中擴展<say-as>。這些值取“vxml:<type>”的形式,其中type是內置類型。內置類型的精確表現是隨平臺和語言而變化的。 | |||||||||||||||
????內置類型是: | |||||||||||||||
|
|||||||||||||||
表64:內置類型 | |||||||||||||||
????一個帶有內置語法類型的<field>元素的例子: | |||||||||||||||
<field name="lo_fat_meal" type="boolean"> <prompt> Do you want a low fat meal on this flight? </prompt> <help> Low fat means less than 10 grams of fat, and under 250 calories. </help> <filled> <prompt> I heard <emphasis><say-as interpret-as="vxml:boolean"> <value expr="lo_fat_meal"/></say-as></emphasis>. </prompt> </filled> </field> |
|||||||||||||||
????在這個例子中,boolean類型表示輸入是各種true和false形式。給field實際賦值可能是true或false。它將用合適的肯定和否定方式讀出。 | |||||||||||||||
????在下一個例子中,數字表示輸入可能是語音輸入或是鍵盤數字。結果保存為串,用“vxml:digits”的<say-as>類型表達為數字。也就是念作“one-two-three”而不是“one hundred twenty-three”。<filled>元素檢查field是否有12個數字。如果沒有,用戶便會聽到錯誤信息。 | |||||||||||||||
<field name="ticket_num" type="digits"> <prompt> Read the 12 digit number from your ticket. </prompt> <help>The 12 digit number is to the lower left.</help> <filled> <if cond="ticket_num.length != 12"> <prompt> Sorry, I didn't hear exactly 12 digits. </prompt> <assign name="ticket_num" expr="undefined"/> <else/> <prompt> I heard <say-as interpret-as="vxml:digits"> value expr="ticket_num"/></say-as> </prompt> </if> </filled> </field> |
|||||||||||||||
????內置boolean和內置數字語法可以參數化。這可以清晰地用“builtin:”URI格式引用內置語法。用一個URI-style的查詢語法,在<grammar>元素中具有type?param=value格式的src屬性,或在field中的type屬性。 | |||||||||||||||
<grammar src="builtin:dtmf/boolean?y=7;n=9"/> <field type="boolean?y=7;n=9"> <prompt> If this is correct say yes or press seven, if not, say no or press nine. </prompt> </field> <field type="digits?minlength=3;maxlength=5"> <prompt>Please enter your passcode</prompt> </field> </field> |
|||||||||||||||
????在此,<grammar>元素參數化內置DTMF語法。第一個<field>參數化內置DTMF語法(語音語法將象通常一樣激活),第二個<field>參數化內置的DTMF和語音語法。沒有給指定語法類型定義的參數將被忽略。如:“builtin:grammar/Boolean?y=7”。 | |||||||||||||||
????digits和boolean語法可以參數化如下: | |||||||||||||||
|
|||||||||||||||
表65:digits和boolean語法的參數化 | |||||||||||||||
????記住,可以指定多于一個語法,它們之間用“;”分隔,上面有這樣的例子。在<grammar>元素中,src屬性URI象上面所指示的一樣,必須以builtin:grammar或builtin:dtmf開頭,象上面所表示的一樣。當<grammar>元素的mode屬性設為“DTMF”,而且用在<field>中,它將覆蓋缺省的DTMF語法。 |