• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            鐵觀(guān)音

            C++編程寶典

               ::  ::  ::  ::  :: 管理 ::
              1 隨筆 :: 19 文章 :: 0 評(píng)論 :: 0 Trackbacks
            第四章??System Output(Prompt)
            ?
            ????<prompt>元素用于控制合成語(yǔ)音和預(yù)錄制音頻的輸出。從概念上講,提示語(yǔ)是即時(shí)排隊(duì)播放的,因此解釋器會(huì)一直播放提示語(yǔ),除非需要用戶(hù)提供輸入。從這一點(diǎn)看,提示語(yǔ)被播放,同時(shí)系統(tǒng)也在等待用戶(hù)輸入。一旦收到來(lái)自語(yǔ)音識(shí)別(或DTMF識(shí)別)子系統(tǒng)的輸入,解釋器就會(huì)繼續(xù)執(zhí)行。
            ????<prompt>元素的屬性有:
            bargein 控制用戶(hù)是否可以打斷該提示語(yǔ),值為true或false。當(dāng)為true時(shí),用戶(hù)可打斷系統(tǒng)提示。默認(rèn)為bargein property的值。見(jiàn)6.3.4節(jié) 。
            bargeintype 設(shè)置bargein的類(lèi)型,值為‘speech’或者‘hotword’,默認(rèn)為bargeintype property屬性值。見(jiàn)6.3.4節(jié)。
            cond ECMAScript 表達(dá)式。只有當(dāng)其結(jié)果值為boolean true,該<prompt>元素才被執(zhí)行,否則不被執(zhí)行。缺省時(shí)為true。
            count 它是一個(gè)數(shù)字,用于標(biāo)識(shí)不同的<prompt>,默認(rèn)值為“1”。
            timeout 等待隨后用戶(hù)輸入的時(shí)間,該屬性值是一個(gè)Time Designation(見(jiàn)6.5節(jié))。默認(rèn)的noinput timeout值是依賴(lài)于平臺(tái)的。
            xml:lang 該<prompt>的語(yǔ)言標(biāo)識(shí)符。它默認(rèn)為該文檔的"xml:lang"屬性的值。
            xml:base 聲明一個(gè)基本URI,用于解析該<prompt>元素中的相對(duì)URI。<prompt>元素中的該屬性的優(yōu)先權(quán)高于<vxml>元素。如果缺省,它的值從文檔層次繼承得到。
            表33:<prompt>元素的屬性
            ?
            第一節(jié) Speech Markup ?
            ? ????????
            ?
            ????<prompt>元素的內(nèi)容是以W3C SSML1.0(Speech Synthesis Markup Language)為模型的。
            ????下面是SSML1.0中定義的語(yǔ)音標(biāo)記,它們?cè)赩oiceXML2.0中是可用的。這些元素的例子和定義請(qǐng)參考SSML1.0。
            元素 作用 章節(jié)鏈接
            <audio> 指定要播放的音頻文件和文本。 2.3.1
            <break> 在語(yǔ)音輸出中插入一個(gè)停頓。 2.2.3
            <desc> 為<audio>元素中的非語(yǔ)音音頻提供一段描述。 2.3.3
            <emphasis> 在所包含的文本中加強(qiáng)重音。 2.2.2
            <lexicon> 為相應(yīng)的提示語(yǔ)指定發(fā)音詞典。 3.3
            <mark> VoiceXML平臺(tái)忽略該元素。 2.3.2
            <metadata> 指定該提示語(yǔ)的XML元數(shù)據(jù)內(nèi)容。 3.4
            <paragraph>(或<p>) 標(biāo)識(shí)一個(gè)段落,可包括0個(gè)或多個(gè)句子。 2.1.3
            <phoneme> 為包含的文本指定發(fā)音。 2.1.5
            <prosody> 包含在一個(gè)規(guī)則定義中的元素,該元素提供了一個(gè)匹配該規(guī)則的輸入的例子。 2.2.4
            <say-as> 為包含的文本指定結(jié)構(gòu)的類(lèi)型。 2.1.4
            <sentence>(或<s>) 把所包含的文本標(biāo)識(shí)為一個(gè)句子。 2.1.3
            <sub> 用指定的文本的發(fā)音代替所包含的文本的發(fā)音。 2.1.6
            <voice> 指定文本的聲音特性。 2.2.1
            表34:VoiceXML可用的SSML元素
            ????當(dāng)在VoiceXML中使用時(shí),<audio>元素(見(jiàn)4.1.3節(jié))和<say-as>元素(見(jiàn)附錄P)定義了一些新的屬性。VoiceXML也允許<enumerate>元素和<value>元素出現(xiàn)在<prompt>元素中。
            ????VoiceXML平臺(tái)必須是SSML中定義的Conforming Speech Synthesis Markup Language Processor。雖然平臺(tái)要處理文檔中定義的一個(gè)或多個(gè)“xml:lang”屬性,但是并不要求平臺(tái)必須是支持多語(yǔ)言的。當(dāng)遇到一種不支持的語(yǔ)言時(shí),平臺(tái)要拋出error.unsupported.language事件,該事件在它的“_message”變量中指定了這種不支持的語(yǔ)言。
            ?
            第二節(jié) Basic Prompts ??
            ? ????????
            ?
            ????在前面的例子中你已經(jīng)見(jiàn)過(guò)<prompt>元素了:
                  <prompt>Please say your city.</prompt>
            ????你可以使用<prompt> ... </prompt>這種形式,如果:
            ??????·不需要指定該<prompt>元素的屬性;
            ??????·該<prompt>元素的內(nèi)容完全由PCDATA組成,或是由<audio>元素和<value>元素組成。
            ????例如,<prompt>元素可以包含如下內(nèi)容:
                  Please say your city.
            										
                  <audio src="say_your_city.wav"/>
            ????但是,在下面的例子中,<prompt>元素的內(nèi)容需要嵌入語(yǔ)音標(biāo)記:
                  <prompt>Please <emphasis>say</emphasis> your city.</prompt>
            ?

            第三節(jié) Audio Prompting ?
            ? ????????
            ?
            ????提示語(yǔ)可以是預(yù)先錄音的文件,音頻流和合成語(yǔ)音這三種方式的任意組合:
                  <prompt>
                    Welcome to the Bird Seed Emporium.
                    <audio src="rtsp://www.birdsounds.example.com/thrush.wav"/>
                    We have 250 kilogram drums of thistle seed for
                    <say-as interpret-as="currency">$299.95</say-as>
            										
                     plus shipping and handling this month.
                    <audio src="http://www.birdsounds.example.com/mourningdove.wav"/>
                  </prompt>
            ????在任何提示中都可以播放音頻。音頻的內(nèi)容可以通過(guò)URI指定;在VoiceXML中,它也可以是先前錄音的一個(gè)音頻變量(audio variable):
                  <prompt>
                    Your recorded greeting is
                    <audio expr="greeting"/>
                    To rerecord, press 1.
                    To keep it, press pound.
                    To return to the main menu press star M.
                    To exit press star, star X.
                  </prompt>
            ????當(dāng)聲音文件或音頻流不可用時(shí),<audio>元素可以有備用的內(nèi)容:
                  <prompt>
                    <audio src="welcome.wav">
                    <emphasis>Welcome</emphasis> to the Voice Portal.
                    </audio>
                  </prompt>
            ????如果聲音文件不能播放(例如,“src”指向的或“expr”求得的值為一個(gè)無(wú)效的URI,或者聲音文件的格式是平臺(tái)不支持的格式等),該<audio>的內(nèi)容就會(huì)被播放。這些內(nèi)容可以是文本、語(yǔ)音標(biāo)記或者另外的<audio>元素。如果聲音文件不能播放,且該<audio>元素的內(nèi)容為空,則不會(huì)有任何聲音,也不會(huì)拋出error事件。
            ????如果<audio>元素包含有“expr”屬性,該屬性求得的值為ECMAScript的undefined,則該元素,包括它的備用內(nèi)容,被忽略。這樣,開(kāi)發(fā)者就可以動(dòng)態(tài)的指定<audio>元素的內(nèi)容,如果不需要播放該元素,就可以給它的“expr”屬性賦一個(gè)null值來(lái)忽略它。下面的例子展示了該技巧怎樣用在回放由幾個(gè)音頻片斷組成的一組卡的信息:
                  <?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>
                       <!-- script contains the function sayCard(type,position)
                            which takes as input the type of card description (audio or text) and
                             its position in an array, and returns the selected card description in
                             the specified array position; if there is no description in the 
                             requested array position, then returns EMCAScript undefined -->
            										
                      <script src="cardgame.js"/>
            										
                      <field name="takecard">
                         <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/>
                         <prompt>
                            <audio src="you_have.wav">You have the following cards: </audio>
                            <!-- maximum of hand of 5 cards is described -->
                            <audio expr="sayCard(audio,1)"><value expr="sayCard(text,1)"/></audio>
                            <audio expr="sayCard(audio,2)"><value expr="sayCard(text,2)"/></audio>
                            <audio expr="sayCard(audio,3)"><value expr="sayCard(text,3)"/></audio>
                            <audio expr="sayCard(audio,4)"><value expr="sayCard(text,4)"/></audio>
                            <audio expr="sayCard(audio,5)"><value expr="sayCard(text,5)"/></audio>
                            <audio src="another.wav">Would you like another card?</audio>
                         </prompt>
                         <filled>
                           <if cond="takecard">
                             <script>takeAnotherCard()</script>
                             <clear/>
                           <else/>
                             <goto next="./make_bid.aspl"/>
                           </if>
                         </filled>
                       </field>
                    </form>
                  </vxml>
            ????SSML中定義的<audio>的屬性有:
            src 要引用的音頻的URI。必須支持的聲音文件格式見(jiàn)附錄E;其他格式的聲音文件,如果平臺(tái)支持的話(huà),在這里也可以用。
            表35:<audio> 從SSML繼承的屬性
            ????VoiceXML中定義的<audio>元素的屬性:
            fetchtimeout 見(jiàn)6.1節(jié)。默認(rèn)為fetchtimeout property指定的值。
            fetchhint 見(jiàn)6.1節(jié)。默認(rèn)為audiofetchhint property指定的值。
            maxage 見(jiàn)6.1節(jié)。默認(rèn)為audiomaxage property指定的值。
            maxstale 見(jiàn)6.1節(jié)。默認(rèn)為audiomaxstale property指定的值。
            expr ECMAScript表達(dá)式,它求得的值為要播放的音頻源。該表達(dá)式可以引用先前<record>元素錄下的音頻,也可以是要獲取的音頻源的URI的值。
            表36:<audio> VoiceXML中加入的屬性
            ????必須指定屬性“src”和“expr”其中的一個(gè),否則會(huì)拋出error.badfetch事件。
            ????注意:音頻流是平臺(tái)播放的最佳選擇:即當(dāng)獲得一部分音頻的內(nèi)容時(shí),平臺(tái)就可以開(kāi)始播放,而不用等到完全獲得音頻。如果fetchhint的值為"prefetch",則必須預(yù)先獲得完整的音頻才可以進(jìn)行回放。

            第四節(jié) <value> Element?
            ?????????
            ?
            ????<value>元素用于把表達(dá)式的值插入到提示語(yǔ)中。它的屬性有:
            exprECMAScript表達(dá)式。
            表37:<value>元素的屬性
            ????例如,如果n為12,該<prompt>元素
                  <prompt>
                    <value expr="n*n"/> is the square of <value expr="n"/>.
                  </prompt>
            把字符串“144 is the square of 12”傳給語(yǔ)音合成引擎。
            ????播放<value>元素值的方式由它兩端的語(yǔ)音合成標(biāo)記控制。例如,下面的例子把<value>元素的值讀成日期形式:
                  <var name="date" expr="'2000/1/20'"/>
                    <prompt>
                      <say-as interpret-as="date"> <value expr="date"/> </say-as>.
                    </prompt>
            ????被<value>元素插入的文本不會(huì)受到任何特別的解釋。特別的,它不會(huì)作為一個(gè)SSML文檔或文檔段被解釋。XML特定的字符(&,<和>)不會(huì)被特別對(duì)待,也不需要避開(kāi)。<value>元素在CDATA部分求得的值插入一段文本也是一樣的結(jié)果。例如,下面賦值的變量
                  <script>
                    <![CDATA[
                         e1 = 'AT&T';
                     ]]>
                  </script>
            在一個(gè)<prompt>元素中被引用時(shí)
                  <prompt>The price of<value expr="e1"/> is $1.</prompt>
            輸出如下結(jié)果:
                  The price of AT&T is $1.
            ?

            第五節(jié) Bargein?
            ????????
            ?
            ????如果執(zhí)行平臺(tái)支持bargein,則開(kāi)發(fā)者就能夠指定用戶(hù)是否可以使用DTMF或語(yǔ)音打斷正在播放的提示語(yǔ)。這樣可以加快交互的速度,但并不是所有的情況我們都希望用戶(hù)可以打斷提示語(yǔ)。如果要求用戶(hù)必須聽(tīng)完所有的警告,合法的通知或廣告,則應(yīng)該讓bargein失效,可通過(guò)設(shè)置bargein屬性達(dá)到。如下:
                  <prompt bargein="false"><audio src="legalese.wav"/></prompt>
            ????如果一個(gè)<prompt>元素的bargein屬性值為true,則用戶(hù)可以打斷該提示語(yǔ);反之,如果bargein屬性值為false,則用戶(hù)必須聽(tīng)完該<prompt>元素的提示語(yǔ)。如果有幾個(gè)<prompt>元素排隊(duì),則遵循正在播放的那個(gè)<prompt>元素的bargein屬性值。如果在該序列中的某個(gè)<prompt>元素出現(xiàn)bargein,則其后的<prompt>元素都不會(huì)被播放(即使其中有的<prompt>元素的bargein屬性值為false)。如果沒(méi)有指定bargein屬性,則使用bargein propery的值。
            ????當(dāng)bargein屬性值為false,則在播放<prompt>元素提示語(yǔ)時(shí),輸入是不會(huì)被緩沖的,且在跳轉(zhuǎn)狀態(tài)中,所有的DTMF輸入緩沖均被刪除(4.1.8描述了在跳轉(zhuǎn)狀態(tài)時(shí)輸入的收集)。
            ????注意,不是所有的語(yǔ)音識(shí)別引擎或執(zhí)行平臺(tái)都支持bargein。一個(gè)支持bargein的平臺(tái)必須支持下一節(jié)中描述的bargeintype中的一種。
            ????Bargein type
            ????當(dāng)bargein為激活時(shí),bargeintype用于表示平臺(tái)要響應(yīng)的語(yǔ)音或DTMF輸入的bargein的類(lèi)型。該屬性允許的值為:
            speech當(dāng)檢測(cè)到有DTMF或語(yǔ)音輸入時(shí),提示語(yǔ)馬上停止播放,不管輸入是否匹配激活的語(yǔ)法。
            hotword直到檢測(cè)到輸入完全匹配一個(gè)激活的語(yǔ)法時(shí),才馬上停止播放提示語(yǔ)。不匹配語(yǔ)法的輸入被忽略,且不會(huì)產(chǎn)生nomatch的事件。
            表38:bargeintype 的值
            ????如果沒(méi)有指定bargeintype屬性,則使用bargeintype property的值。支持bargein的執(zhí)行平臺(tái)必須至少支持上述兩種bargein類(lèi)型中的一種。在一個(gè)<prompt>元素序中,混合使用這兩種類(lèi)型可能導(dǎo)致不可預(yù)知的行為,我們不鼓勵(lì)這種做法。
            ????當(dāng)bargeintype為speech時(shí),由于語(yǔ)音識(shí)別技術(shù)的復(fù)雜性,語(yǔ)音輸入的精確定義是依賴(lài)于執(zhí)行平臺(tái)的。我們期望一旦平臺(tái)能夠可靠的確定輸入為語(yǔ)音時(shí),就要立刻停止播放提示語(yǔ)。盡快停止播放提示語(yǔ)可避免"stutter"效應(yīng),免得用戶(hù)以為系統(tǒng)沒(méi)有聽(tīng)到語(yǔ)音而停止說(shuō)了一半的話(huà),并且從頭開(kāi)始說(shuō)。
            第六節(jié) Prompt Selection ?
            ? ???????
            ?
            ????分級(jí)提示即每次播放的提示語(yǔ)都可以不一樣。當(dāng)用戶(hù)對(duì)服務(wù)更熟悉時(shí),提示語(yǔ)可變得更簡(jiǎn)短;而用戶(hù)需要更多的幫助時(shí),提示語(yǔ)可變得更詳細(xì);或者提示語(yǔ)不停的改變只是為了使交互更有趣。
            ????每個(gè)input item、<initial>元素和<menu>元素都有一個(gè)內(nèi)部的提示語(yǔ)計(jì)數(shù)器,當(dāng)進(jìn)入該<form>元素或<menu>元素時(shí),這些計(jì)數(shù)器被置為1。無(wú)論系統(tǒng)何時(shí)播放一個(gè)提示語(yǔ),它相應(yīng)的計(jì)數(shù)器都會(huì)增加1。這就是支持分級(jí)提示的機(jī)制。
            ????例如,下面的例子的form中有一個(gè)form級(jí)的<prompt>元素和幾個(gè)filled級(jí)的<prompt>元素:
                  <?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 id="tapered">
                      <block>
                        <prompt bargein="false">
                           Welcome to the ice cream survey.
                        </prompt>
                      </block>
                      <field name="flavor">
                         <grammar mode="voice" version="1.0" root="root">
                           <rule id="root" scope="public">
                            <one-of>
                              <item>vanilla </item>
                              <item>chocolate </item>
                              <item>strawberry </item>
                            </one-of>
                          </rule>
                        </grammar>
                        <prompt count="1">What is your favorite flavor?</prompt>
                        <prompt count="3">Say chocolate, vanilla, or strawberry.</prompt>
                        <help>Sorry, no help is available.</help>
                      </field>
                    </form>
                  </vxml>
            ????一個(gè)可能的對(duì)話(huà)流程:
                  C: Welcome to the ice cream survey.
                  C: What is your favorite flavor? (the "flavor" field's prompt counter is 1) 
                  H: Pecan praline.
                  C: I do not understand.
                  C: What is your favorite flavor? (the prompt counter is now 2) 
                  H: Pecan praline.
                  C: I do not understand.
                  C: Say chocolate, vanilla, or strawberry. (prompt counter is 3)
                  H: What if I hate those?
                  C: I do not understand.
                  C: Say chocolate, vanilla, or strawberry. (prompt counter is 4) 
                  H: ...
            ????當(dāng)FIA選定提示語(yǔ)時(shí),會(huì)檢查它的計(jì)數(shù)器。小于或等于當(dāng)前計(jì)數(shù)器值的<prompt>元素中,count屬性值最高的被FIA選定并播放。如果沒(méi)有指定count屬性,則該屬性的默認(rèn)值為1。
            ????條件提示是指當(dāng)條件滿(mǎn)足時(shí)才播放該提示語(yǔ)。如下:
                  <?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 id="another_joke">
                      <var name="r" expr="Math.random()"/>
                        <field name="another">
                         <grammar type="application/srgs+xml" src="/grammars/boolean.grxml"/>
                        <prompt cond="r < .50">
                           Would you like to hear another elephant joke?
                         </prompt>
                         <prompt cond="r >= .50">
                            For another joke say yes.  To exit say no.
                          </prompt>
                          <filled>
                            <if cond="another">
                              <goto next="#pick_joke"/>
                           </if>
                        </filled>
                      </field>
                    </form>
                  </vxml>
            ????當(dāng)必須選擇一個(gè)<prompt>元素時(shí),根據(jù)下面的算法選擇一組<prompt>元素進(jìn)行排隊(duì)。
            ??????1、將該元素包含的所有<prompt>元素按照文檔順序形成一個(gè)有序的列表;
            ??????2、將該列表中cond屬性值為false的<prompt>元素刪除;
            ??????3、找出“正確的計(jì)數(shù)”:該列表中小于或等于當(dāng)前計(jì)數(shù)器值,且count屬性值最高的<prompt>元素;
            ??????4、將該列表中所有不符合“正確的計(jì)數(shù)”的<prompt>元素刪除,該列表中剩下的<prompt>元素排隊(duì)進(jìn)行播放。
            ?
            第七節(jié) Timeout ?
            ? ????????
            ?
            ????timeout屬性指定了當(dāng)最后一個(gè)<prompt>元素播放結(jié)束后,等待用戶(hù)輸入時(shí),允許的靜音時(shí)間。如果靜音事件超過(guò)了timeout屬性值,則拋出noinput事件。在<prompt>元素排隊(duì)時(shí),該屬性默認(rèn)為timeout property指定的值(見(jiàn)6.3.4節(jié))。換句話(huà)說(shuō),每個(gè)<prompt>元素都有它自己的timeout值。
            ????允許指定<prompt>元素的timeout屬性值是為了能夠支持分級(jí)timeout。例如,用戶(hù)在第一次輸入時(shí)有5秒的事件,而第二次則有10秒。
            ????<prompt>元素的timeout屬性決定了接下來(lái)用戶(hù)輸入的noinput timeout:
                  <prompt count="1">
                      Pick a color for your new Model T.
                  </prompt>
            										
                  <prompt count="2" timeout="120s">
                      Please choose color of your new nineteen twenty four
                      Ford Model T. Possible colors are black, black, or
                      black.  Please take your time.
                 </prompt>
            ????如果在用戶(hù)輸入之前有幾個(gè)<prompt>元素進(jìn)行排隊(duì),則使用最后一個(gè)<prompt>元素的timeout屬性值。

            第八節(jié) Prompt Queueing and Input Collection ?
            ? ????????
            ?
            ????VoiceXML解釋器一直都處于下面的兩種狀態(tài)之一:
            ??????·在input itm 中等待輸入(例如<field>,<record>或<transfer>元素) ;
            ??????·在input item中跳轉(zhuǎn)以響應(yīng)在等待狀態(tài)中收集到的輸入(包括語(yǔ)音輸入、DTMF按鍵輸入和與輸入有關(guān)的的事件,如noinput和nomatch事件)。當(dāng)在跳轉(zhuǎn)狀態(tài)時(shí),任何語(yǔ)音輸入都不會(huì)被收集、接受或解釋。從而,root和文檔級(jí)的語(yǔ)音語(yǔ)法在整個(gè)應(yīng)用中可能都沒(méi)有被激活的機(jī)會(huì)。然而,在跳轉(zhuǎn)狀態(tài)時(shí),DTMF輸入應(yīng)該被收集并緩沖。同樣的,和跳轉(zhuǎn)的執(zhí)行沒(méi)有直接關(guān)系的異步產(chǎn)生的事件(如connection.disconnect.hangup事件)也應(yīng)該被緩沖,直到等待狀態(tài)才被刪除。
            ????等待和跳轉(zhuǎn)狀態(tài)與FIA的幾個(gè)階段的關(guān)系如下:
            ??????·在一個(gè)input item的收集階段開(kāi)始時(shí)才進(jìn)入等待狀態(tài)(在解釋器等待輸入的那一刻)。
            ??????·跳轉(zhuǎn)狀態(tài)貫穿了處理階段和選定階段,包括control item(例如<block>元素)的選定階段和input item的選定階段,直到解釋器等待輸入的那一刻。
            ????分成兩個(gè)狀態(tài)是為了更好的簡(jiǎn)化編程的模型。特別的,這個(gè)模型讓VoiceXML應(yīng)用的開(kāi)發(fā)者能夠依靠所有的可執(zhí)行內(nèi)容(例如<filled>元素和<block>元素的內(nèi)容)一直運(yùn)行到完成要執(zhí)行的操作。因?yàn)樵谔D(zhuǎn)狀態(tài),正在執(zhí)行的操作不會(huì)被用戶(hù)的輸入打斷。
            ????在跳轉(zhuǎn)狀態(tài)有多種<prompt>元素進(jìn)行排隊(duì),或者是可執(zhí)行內(nèi)容中的<prompt>元素,或者是form item中的<prompt>元素。另外,由于指定了fetchaudio屬性,音頻也可以參加排隊(duì)。當(dāng)出現(xiàn)下面的情況之一時(shí),播放排隊(duì)的<prompt>元素和音頻:
            ??????·當(dāng)解釋器達(dá)到等待狀態(tài)時(shí),此時(shí)系統(tǒng)播放提示語(yǔ),且解釋器監(jiān)聽(tīng)是否有匹配激活的語(yǔ)法的輸入;
            ??????·當(dāng)解釋器開(kāi)始獲取資源(例如一個(gè)文檔),且該元素指定了fetchaudio屬性。在這種情況下,fetchaudio之前的提示語(yǔ)都會(huì)被播放,之后,如果確實(shí)需要獲取資源(即該資源在緩存中不是非過(guò)期的),就播放該fetchaudio直到獲取完成。在獲取資源時(shí),解釋器處于跳轉(zhuǎn)狀態(tài),且不接收任何輸入。
            ????注意,如果一個(gè)<prompt>元素的bargein屬性值為false,則輸入不會(huì)被收集,且在跳轉(zhuǎn)狀態(tài)時(shí),緩沖中的DTMF輸入被刪除(見(jiàn)4.1.5)。
            ????在解釋器退出前,會(huì)播放完所有已排隊(duì)的<prompt>元素。當(dāng)解釋器正在退出時(shí),解釋器保持在跳轉(zhuǎn)狀態(tài),且不接受任何輸入。
            ????一個(gè)允許的優(yōu)化是:在達(dá)到等待狀態(tài)之前的跳轉(zhuǎn)狀態(tài)期間就播放已排隊(duì)的<prompt>元素。如果這樣做的話(huà),對(duì)于在播放<prompt>元素時(shí)接收到的輸入音頻的處理是能夠保持正確的語(yǔ)義的。例如,對(duì)于bargein和語(yǔ)法的處理。
            ????下面的例子表明了,在某些情形下這些規(guī)則的操作。
            ????情形1
            ????典型的non-fetching情形:第一個(gè)<field>元素后面有可執(zhí)行的內(nèi)容(如<block>元素和<filled>元素),再后面是另外一個(gè)<field>元素。
                  in document d0
            										
                  <field name="f0"/>
            										
                  <block>
                      executable content e1
                      queues prompts {p1}
                  </block>
            										
                  <field name="f2">
                    queues prompts {p2}
                    enables grammars {g2}
                 </field>
            ????在<field>元素f0的等待狀態(tài)中接收到輸入,導(dǎo)致了下面操作的發(fā)生:
            ??????· 在跳轉(zhuǎn)狀態(tài)
            ????????o 執(zhí)行e1(沒(méi)有<goto>元素)
            ????????o 對(duì)<prompt>元素{p1}排隊(duì)
            ????????o 對(duì)<prompt>元素{p2}排隊(duì)
            ??????·在等待狀態(tài)中同時(shí)進(jìn)行如下操作
            ????????o 播放<prompt>元素{p1,p2}
            ????????o 激活語(yǔ)法{g2},并等待輸入
            ????情形2
            ????典型的獲取資源的情形:第一個(gè)<field>元素后面是以<goto>元素為結(jié)尾的可執(zhí)行內(nèi)容,該<goto>元素指定了fetchaudio屬性,并跳轉(zhuǎn)到另一個(gè)文檔中的<field>元素,該文檔是從服務(wù)器獲取的。
                  in document d0
            										
                  <field name="f0"/>
            										
                  <block>
                      executable content e1
                      queues prompts {p1}
                      ends with goto f2 in d1 with fetchaudio fa
                  </block>
            										
                  in document d1
                  <field name="f2">
                    queues prompts {p2}
                    enables grammars {g2}
                 </field>
            ????在<field>元素f0的等待狀態(tài)中接收到輸入,導(dǎo)致了下面操作的發(fā)生:
            ??????· 在跳轉(zhuǎn)狀態(tài)
            ????????o 執(zhí)行 e1
            ????????o 對(duì)<prompt>元素 {p1}排隊(duì)
            ????????o 同時(shí)
            ??????????·獲取 d1
            ??????????·播放 {p1} ,之后播放fa,直到獲取資源完畢
            ????????o 對(duì)<prompt>元素 {p2}排隊(duì)
            ??????·在等待狀態(tài)中同時(shí)進(jìn)行如下操作
            ????????o 播放 {p2}
            ????????o 激活語(yǔ)法 {g2} 并等待輸入
            ????情形3
            ????和情形2類(lèi)似,只是沒(méi)有指定fetchaudio屬性。
                  in document d0
            										
                  <field name="f0"/>
            										
                  <block>
                      executable content e1
                      queues prompts {p1}
                      ends with goto f2 in d1 (no fetchaudio specified)
                  </block>
            										
                  in document d1
                  <field name="f2">
                    queues prompts {p2}
                    enables grammars {g2}
                 </field>
            ????在<field>元素f0的等待狀態(tài)中接收到輸入,導(dǎo)致了下面操作的發(fā)生:
            ??????· 在跳轉(zhuǎn)狀態(tài)
            ????????o 執(zhí)行 e1
            ????????o 對(duì)<prompt>元素 {p1}排隊(duì)
            ????????o 獲取 d1
            ????????o 對(duì)<prompt>元素 {p2}排隊(duì)
            ??????·在等待狀態(tài)中同時(shí)進(jìn)行如下操作
            ????????o 播放<prompt>元素 {p1, p2}
            ????????o 激活語(yǔ)法{g2},并等待輸入
            posted on 2006-09-16 22:29 鐵觀(guān)音 閱讀(836) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): VoiceXML2.0規(guī)范
            国产福利电影一区二区三区久久老子无码午夜伦不 | 国产V综合V亚洲欧美久久| 欧美一区二区三区久久综合| 久久人人妻人人爽人人爽| 精品久久久久久无码国产| 热RE99久久精品国产66热| 久久久女人与动物群交毛片| 伊人丁香狠狠色综合久久| 久久精品国产男包| 7777久久亚洲中文字幕| 亚洲欧美成人久久综合中文网 | 一本久久a久久精品综合夜夜| 久久精品国产欧美日韩| 久久精品www| 久久综合五月丁香久久激情| 国产日产久久高清欧美一区| 精品久久久久久国产牛牛app| 色综合久久综合中文综合网| 国产99久久久久久免费看| 久久亚洲精品成人av无码网站| 久久国产乱子伦精品免费午夜| 国产婷婷成人久久Av免费高清| 久久这里都是精品| 欧美久久亚洲精品| 天天久久狠狠色综合| 久久久久亚洲AV成人片| 亚洲级αV无码毛片久久精品| 人妻无码久久精品| 久久精品18| 国产成人无码精品久久久免费| 99久久婷婷免费国产综合精品| 国产亚洲精久久久久久无码77777| 手机看片久久高清国产日韩| 久久免费99精品国产自在现线| 久久精品国产99久久久香蕉| 亚洲综合久久综合激情久久| 久久国产成人精品麻豆| 99久久国产综合精品网成人影院| 久久婷婷国产麻豆91天堂| 国产ww久久久久久久久久| 国产亚洲成人久久|