一、VoiceXML簡介
VoiceXML(Voice eXtensible Markup Language)是由VoiceXML論壇制定的通過電話訪問Internet網(wǎng)絡的標準。1999年3月,由Motorola、Lucent、AT&T和IBM四家公司聯(lián)合發(fā)起成立了VoiceXML論壇,其目的在于為電話和移動設備提供一種便捷的訪問Internet網(wǎng)絡,獲取服務和信息的手段。2000年3月,VoiceXML論壇發(fā)布了VoiceXML 1.0標準。5月,W3C(World Wide Web Consortium)接受了VoiceXML1.0;2003年1月,VoiceXML 2.0正式版發(fā)布。包括我國華為公司等國內外共有數(shù)百家公司支持VoiceXML,Motorola、Lucent等公司已開發(fā)出了基于VoiceXML的產品。
VoiceXML是W3C定義的可擴展標記語言(XML)的一種擴展,根據(jù)播放的提示信息、口述的命令、要記錄和識別的語音或按鍵音輸入,實現(xiàn)人和計算機之間的交互對話。VoiceXML的標準化將簡化Web上具有語音響應服務的個性化界面的創(chuàng)建,使人們能夠通過語音和電話訪問網(wǎng)站上的信息和服務。
VoiceXML的主要目標是希望通過交互式語音界面應用Web上已經有的大量信息,同時VoiceXML希望能夠將開發(fā)人員從最低級的編程和資源處理工作中解放出來。VoiceXML能夠利用人們已經非常熟悉的客戶機/服務器方式,將語音服務和數(shù)據(jù)服務融合起來。
VoiceXML作為一種標記語言,主要有下表1所示的主要特點。
表1:VoiceXML技術的主要特點
二、VoiceXML的結構模型
VocieXML整體結構模型如下圖2所示。一個文檔服務器比如說一個Web服務器,處理一個來自終端應用的請求,這一請求經過了VoiceXML解釋程序和VoiceXML解釋程序環(huán)境處理。作為響應,服務器產生出VoiceXML文檔,在回復當中,要經過VoiceXML解釋程序的處理。
圖2:VocieXML整體結構模型
執(zhí)行平臺是被VoiceXML解釋程序環(huán)境和VoiceXML解釋程序控制的。例如,在一個交互式語音應答應用中,VoiceXML解釋程序環(huán)境能可靠地監(jiān)測到呼叫,獲得初始的VoiceXML文檔,并且回答這一呼叫,在回答之后VoiceXML解釋程序引導這一對話。執(zhí)行平臺產生事件響應用戶的動作(說話或者字符輸入)和系統(tǒng)事件(例如計時器溢出)。這些事件中的一部分依照相應的VoiceXML文檔按照VoiceXML解釋程序的解釋加以執(zhí)行,其他的被VoiceXML解釋程序環(huán)境控制。
VoiceXML解釋程序是一個計算機程序,它解釋一個VoiceXML文檔,引導和控制用戶與執(zhí)行平臺之間的交互作用。VoiceXML解釋程序環(huán)境也是一個計算機程序,用一個VoiceXML解釋程序解釋一個VoiceXML文檔,并且可以與執(zhí)行平臺相互作用而與VoiceXML解釋程序無關。
執(zhí)行平臺是指一個能支持VoiceXML定義的交互作用的計算機。
音的輸入和音頻輸出,包括合成語音的輸出(TTS,text to speech)、音頻文件的輸出、話音輸入的識別(ASR,automated speech recognition)、DTMF輸入的識別、語音輸入的錄音、電話功能像呼叫轉移等。
三、VoiceXML的基本概念
首先舉一個簡單的例子:
<?xml version="1.0"?>;
<vxml version="1.0">;
<form>;
<block>Hello World!</block>;
</form>;
</vxml>;
這是一個簡單的VoiceXML文檔,執(zhí)行時輸出Hello World!的合成語音。<vxml>可以看作一個包含會話的容器,所有的VoiceXML文檔都是由一系列會話構成的。一個VoiceXML文檔(或稱為請求的一組文檔)構成了一個對話式的有限狀態(tài)機。用戶總是處于某一對話狀態(tài)(或稱為會話)。每一個會話決定要轉移到的下一個會話。轉移由URIs指定,URIs定義下一個要使用的文檔和會話。當一個會話沒有指定后繼者或指明退出對話狀態(tài)時操作才會終止。
VoiceXML中的基本概念主要有:
1、會話和子會話:VoiceXML中定義了兩種類型的會話,表單(forms)和選單(menus)。表單定義了一個獲取一組字段變量的值的交互過程。每一個字段可以指定一個文法,定義了該字段的允許的輸入值。選單提供選項供用戶選擇,然后根據(jù)選擇的結果轉移到另一個會話。
子會話像函數(shù)調用,它引起一個新的交互作用并且返回給上一層的表單。局部的數(shù)據(jù),文法和狀態(tài)信息被保存,當返回到調用文檔時可以使用。例如,子會話可以用于創(chuàng)建一個在數(shù)據(jù)庫查詢時需要的確認序列;創(chuàng)建在單一請求中的多個文檔共享的一批組件;或創(chuàng)建一個在多個請求中共享的可重用的會話庫。
2、會話期:會話期從用戶與VoiceXML解釋程序語境交互開始,持續(xù)進行文檔的裝載和處理,直到由用戶,文檔或解釋程序環(huán)境發(fā)出終止請求才結束。
3、請求:一個請求就是一組共享同一個請求根文檔的文檔。在一個請求中,無論何時用戶與文檔交互,請求根文檔總是被加載。當用戶在同一個請求中的不同文檔間轉換時,請求根文檔總是被加載,只有用戶轉換到別的請求中的文檔時請求根文檔才被卸載。請求根文檔被加載后,它的變量作為請求變量被其它文檔使用,而且它的文法在請求的持續(xù)時間一直起作用。
4、文法:每一個會話有一個或多個語音和(或)DTMF文法。在定向對話應用中,一個會話的文法只有在使用者與此會話交互時才起作用。在混合主動式對話中,機器和用戶交替控制下一步的操作,一些會話被標記以使它們的文法(如偵聽呼叫)即使當用戶在同一文檔的其它會話時也起作用。在這種情況下,如果用戶進行的操作與另一個會話的有效文法匹配,執(zhí)行就會轉移到另一個會話。混合主動式對話增加了語音應用的適應性和能力。
5、事件:VoiceXML提供一種表單填充機制處理"正常"的用戶輸入。另外,VoiceXML也定義了處理異常事件的機制。如用戶在一定時間內沒有作出應答,請求系統(tǒng)幫助等情況下平臺會產生事件。如果解釋器在VoiceXML文檔中發(fā)現(xiàn)語義性錯誤也會產生事件。
6、鏈接:鏈接支持混合主動式對話,當用戶在鏈接的作用范圍時它指定的文法就起作用。如果用戶的輸入與鏈接的文法匹配,控制就轉移到鏈接的目的URI。<link>可以用來產生一個事件跳轉到目的URI。
欲進一步了解交換設備呼叫處理能力的請進入。