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