首頁(yè)>>廠(chǎng)商>>IVR系統(tǒng)平臺(tái)廠(chǎng)商>>Voxeo

Voxeo Prophecy平臺(tái)開(kāi)發(fā)VoiceXML應(yīng)用

2008/11/20

一、簡(jiǎn)介

  人們已經(jīng)熟悉了用于語(yǔ)音郵件、撥入會(huì)議、電話(huà)客服和遠(yuǎn)程銀行的傳統(tǒng)IVR系統(tǒng)。VoiceXML[1]是W3C開(kāi)發(fā)的基于XML的語(yǔ)言,用來(lái)創(chuàng)建為電話(huà)應(yīng)用刻畫(huà)合成語(yǔ)音、數(shù)字音頻、話(huà)音與DTMF鍵入識(shí)別和音頻錄制的語(yǔ)音會(huì)話(huà)。它將傳統(tǒng)的專(zhuān)用與密閉式IVR系統(tǒng)提高成開(kāi)放式可編程體系結(jié)構(gòu),并且通過(guò)提供類(lèi)似于HTML表單或CGI腳本的可編程會(huì)話(huà)把Web技術(shù)的優(yōu)點(diǎn)帶給了電話(huà)用戶(hù)。

  SIP(會(huì)話(huà)啟動(dòng)協(xié)議)[2]是用于建立和終止因特網(wǎng)多媒體會(huì)話(huà)的因特網(wǎng)電話(huà)信令協(xié)議;赟IP的VoiceXML瀏覽器(或稱(chēng)SIP-VoiceXML瀏覽器)允許SIP用戶(hù)參與專(zhuān)用IVR系統(tǒng),比如語(yǔ)音郵件和遠(yuǎn)程銀行。通過(guò)SIP-PSTN網(wǎng)關(guān),它還可以把VoiceXML技術(shù)的優(yōu)勢(shì)帶給傳統(tǒng)電話(huà)用戶(hù)。

  Voxeo Prophecy [3]是一個(gè)靈活可靠的完全開(kāi)放式IVR語(yǔ)音應(yīng)用的開(kāi)發(fā)、部署和運(yùn)行平臺(tái)。其核心的呼叫控制全部基于SIP,可以運(yùn)行和部署任何基于VoiceXML、CCXML標(biāo)準(zhǔn)的電話(huà)應(yīng)用。Prophecy不但自嵌TTS (Text To Speech, 語(yǔ)音合成輸出) 和 ASR (Automatic Speech Recognition, 自動(dòng)語(yǔ)音識(shí)別),同時(shí)支持標(biāo)準(zhǔn)的MRCP接口,可以和第三方語(yǔ)音引擎集成。Prophecy的以Web為中心的開(kāi)發(fā)模型很容易被Web和電話(huà)應(yīng)用開(kāi)發(fā)者所理解,并且在開(kāi)放SIP的支持下,同您的后臺(tái)系統(tǒng)輕松快速地集成到一起。

二、VoiceXML應(yīng)用的典型結(jié)構(gòu)

  SIP-VoiceXML瀏覽器之于電話(huà),類(lèi)似于Web瀏覽器之于桌面PC。語(yǔ)音瀏覽器從Web服務(wù)器取得VoiceXML頁(yè)面或預(yù)先錄制的媒體文件,然后向電話(huà)用戶(hù)呈現(xiàn)交互式會(huì)話(huà)。圖1顯示了一個(gè)典型應(yīng)用結(jié)構(gòu),其中VoiceXML瀏覽器可以被SIP電話(huà)或傳統(tǒng)電話(huà)所訪(fǎng)問(wèn)。

  VoiceXML頁(yè)面可以靜態(tài)地存儲(chǔ)在Web服務(wù)器上,或者由諸如HTTP-CGI(通用網(wǎng)關(guān)接口)、Java Servlet或JSP這樣的服務(wù)器側(cè)編程邏輯動(dòng)態(tài)生成。媒體文件可以存儲(chǔ)在Web服務(wù)器上,或者從RTSP媒體服務(wù)器產(chǎn)生實(shí)時(shí)流媒體,并通過(guò)RTP直接發(fā)給SIP主叫方。

圖1. 基于SIP的VoiceXML應(yīng)用典型結(jié)構(gòu)

  一個(gè)簡(jiǎn)單的VoiceXML頁(yè)面

  如下示例VoiceXML頁(yè)面首先用話(huà)音提示主叫方:“What zip code would you like to search?”,當(dāng)用戶(hù)說(shuō)出“Three two eight zero one”或者按下一串?dāng)?shù)字(比如說(shuō)32801#),ZIP變量獲取數(shù)值“32801”,并傳遞給鏈接地址http://ws.cdyne.com/WeatherWS/Weather
.asmx/GetCityForecastByZIP?ZIP=32801
。最終由GetCityForecastByZIP腳本(實(shí)際上是一個(gè)Web Service接口)來(lái)處理輸入和生成進(jìn)一步的VoiceXML頁(yè)面。如果有錯(cuò)誤或者用戶(hù)沒(méi)有按任何鍵,那么話(huà)音提示會(huì)一再重復(fù)。
<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1">
<form>
<field name="ZIP">
<prompt> Welcome to the Weather Lookup Tool!
What zip code would you like to search? </prompt>
</field>
<catch event="noinput error help">
Please enter the 5-digit ZIP code followed by the pound key.
</catch>
<block>
<submit next="http://ws.cdyne.com/WeatherWS/Weather.asmx/GetCityForecastByZIP" namelist="ZIP"/>
</block>
</form>
</vxml>

三、語(yǔ)音瀏覽器中發(fā)生了什么?

圖2. VoiceXML語(yǔ)音瀏覽器操作

  圖2顯示了SIP-VoiceXML瀏覽器的組件和操作狀態(tài)變遷:

  1. 當(dāng)瀏覽器接收到一個(gè)新進(jìn)來(lái)的SIP呼叫后,它創(chuàng)建三個(gè)不同線(xiàn)程:RTP接收線(xiàn)程、RTP發(fā)送線(xiàn)程和VoiceXML解釋器線(xiàn)程。RTP接收線(xiàn)程從主叫方接收媒體數(shù)據(jù)包并調(diào)用DTMF檢測(cè)模塊;RTP發(fā)送線(xiàn)程將媒體數(shù)據(jù)包以流的方式發(fā)送給主叫方。一個(gè)單獨(dú)的發(fā)送線(xiàn)程幫助維護(hù)外出數(shù)據(jù)報(bào)的固定帶寬(比如針對(duì)G.711音頻的64 kb/s),而不考慮語(yǔ)音合成速度。初始的VoiceXML頁(yè)面地址可以預(yù)先配置在瀏覽器中,或者編碼到SIP請(qǐng)求。例如,如果主叫方撥打sip:dialog.vxml.http%3a//dialogs.server.com/script32.vxml@vxmlservers.com,那么該呼叫將到達(dá)運(yùn)行在vxmlservers.com上的瀏覽器,然后從script32.vxml取得初始VoiceXML頁(yè)面。

  另一方面,如果request-uri是sip:7137@cs.columbia.edu,那么將用缺省的預(yù)先配置的初始VoiceXML URL鏈接(比如會(huì)議服務(wù)的)去調(diào)用解釋器。

  2. 解釋器線(xiàn)程使用初始URL呼叫XML parser。

  3. XML parser從Web服務(wù)器或本地文件系統(tǒng)取得頁(yè)面(基于初始URL)。

  4. XML parser將返回的XML文檔表示成一個(gè)樹(shù)結(jié)構(gòu)。

  5. 解釋器線(xiàn)程在來(lái)自VoiceXML文檔的選定表單上調(diào)用表單解釋算法(Form Interpretation Algorithm, FIA )。

  6. FIA基于VoiceXML文檔內(nèi)容調(diào)用各種其它模塊。例如,它可以調(diào)用TTS SDK合成任何語(yǔ)音提示。

  7. FIA也可以調(diào)用HTTP fetcher模塊取得外部語(yǔ)法文件,或者用于語(yǔ)音提示的媒體文件。XML parser通過(guò)其內(nèi)置HTTP客戶(hù)機(jī)取得VoiceXML頁(yè)面。

  8. HTTP fetcher通過(guò)HTTP GET/POST方法來(lái)檢索文檔。

  9. 使用HTTP fetcher從Web服務(wù)器檢索到的媒體文件被分段成交互式電話(huà)數(shù)據(jù)包,并且排隊(duì)等待發(fā)送線(xiàn)程以流的方式發(fā)送給主叫方。

  10. 語(yǔ)音合成器(Speech synthesizer)輸出也分段和排隊(duì)發(fā)送到主叫方。

  11. VoiceXML文檔可以在文檔的不同范圍指定語(yǔ)法規(guī)則。FIA可以基于VoiceXML頁(yè)面的當(dāng)前執(zhí)行范圍為匹配引擎設(shè)置活動(dòng)語(yǔ)法。

  12. RTP接收線(xiàn)程接收RTP媒體數(shù)據(jù)包,并且調(diào)用DTMF檢測(cè)器。

  13. 任何檢測(cè)到的DTMF數(shù)字被傳給語(yǔ)法匹配引擎。

  14. DTMF按鍵可以通過(guò)多種方式從主叫方傳送到瀏覽器。一種方法是并不把它們從話(huà)音中區(qū)別開(kāi)來(lái),而是使用相同的音頻編解碼器對(duì)它們進(jìn)行編碼。但是低帶寬音頻編解碼器可能扭曲了帶內(nèi)DTMF按鍵的特性,導(dǎo)致它們難以檢測(cè)。第二種首選的方法是使用“電話(huà)事件”來(lái)攜帶數(shù)字碼而不是在RTP數(shù)據(jù)包中的編碼音頻。在第一種情形,瀏覽器必須做DTMF檢測(cè),而第二種情況下,主叫方或網(wǎng)關(guān)必須做DTMF檢測(cè)。RTP接收模塊將電話(huà)事件直接轉(zhuǎn)發(fā)給語(yǔ)法匹配引擎。還有一種方法是在SIP INFO消息中傳輸DTMF。

  15. 語(yǔ)法匹配引擎嘗試把接收到的數(shù)字與任何活動(dòng)語(yǔ)法進(jìn)行匹配,并在找到匹配時(shí)通知FIA。

  16. RTP發(fā)送線(xiàn)程定期把媒體數(shù)據(jù)包發(fā)給主叫方。在靜默時(shí)不發(fā)送數(shù)據(jù)包。

四、使用Voxeo Prophecy簡(jiǎn)化VoiceXML應(yīng)用開(kāi)發(fā)

  通過(guò)使用Voxeo公司提供的Prophecy開(kāi)放應(yīng)用平臺(tái),我們可以快速地創(chuàng)建、集成和部署VoIP應(yīng)用,它所提供的可視化Web界面設(shè)計(jì)工具可以使我們不必寫(xiě)一行代碼,即可完成一個(gè)復(fù)雜而有趣的應(yīng)用。

  首先要做的是花一些時(shí)間前往http://cn.voxeo.com/prophecy/,免費(fèi)下載一個(gè)Prophecy 8.0。安裝完成后,會(huì)在系統(tǒng)托盤(pán)區(qū)生成一個(gè)Voxeo Prophecy v8.0.221.3圖標(biāo),選擇Prophecy Home,在打開(kāi)的Voxeo Prophecy網(wǎng)頁(yè)中點(diǎn)擊Prophecy Designer即開(kāi)始了我們創(chuàng)建VoiceXML項(xiàng)目的輕松之旅。該設(shè)計(jì)工具將整個(gè)VoiceXML應(yīng)用以圖表或樹(shù)狀結(jié)構(gòu)直觀地呈現(xiàn)給開(kāi)發(fā)者,可以方便地控制和修改其交互流程,如圖3所示。

圖3. Prophecy可視化設(shè)計(jì)工具

  項(xiàng)目設(shè)計(jì)完成后,我們需要發(fā)布它,只須簡(jiǎn)單地點(diǎn)擊左下角的Publish鏈接即可。每次發(fā)布項(xiàng)目后,都會(huì)生成一個(gè)新的版本,我們可以通過(guò)Project菜單的Project Settings查看所有版本。

  接下來(lái),我們可以把這個(gè)項(xiàng)目映射成一個(gè)IVR應(yīng)用了。在先前打開(kāi)的Voxeo Prophecy網(wǎng)頁(yè)中,點(diǎn)擊Administration鏈接,打開(kāi)一個(gè)Management Console頁(yè)面,點(diǎn)擊Call Routing,為我們的應(yīng)用選擇一條映射路徑,比如說(shuō)Route ID為“vxml”,在Route Type字段選擇“Designer”,App Name選擇項(xiàng)目名稱(chēng)(比如“Weather Lookup”),滾動(dòng)到頁(yè)面底部,點(diǎn)擊Save Changes按鈕保存。

  最后,交卷的時(shí)刻到了,我們的應(yīng)用到底能不能用呢?讓我們來(lái)測(cè)試一下。打開(kāi)Prophecy自帶的SIP Phone,如圖4所示,給sip:vxml@127.0.0.1撥號(hào)。當(dāng)我們聽(tīng)到揚(yáng)聲器傳來(lái)“Welcome to the Weather Lookup Tool...”,Prophecy沒(méi)有令我們失望,我們已經(jīng)擁有一個(gè)免費(fèi)的“天氣播音員”了,我們只要告訴它想查找的城市的五位郵政編碼(比如“10027”),就可以收聽(tīng)紐約市的天氣情況了。當(dāng)然,本示例項(xiàng)目實(shí)現(xiàn)的是美國(guó)的城市天氣播報(bào),讀者完全可以在其基礎(chǔ)上,實(shí)現(xiàn)中國(guó)的城市天氣預(yù)報(bào)。

圖4. Voxeo SIP Phone

  獨(dú)樂(lè)樂(lè)不如與眾樂(lè)樂(lè),讀者是不是很想與自己的朋友分享這個(gè)成果呢?沒(méi)有問(wèn)題,Voxeo替您考慮到了,它提供了免費(fèi)的開(kāi)發(fā)人員門(mén)戶(hù),您只要訪(fǎng)問(wèn)http://evolution.voxeo
.com/
,免費(fèi)注冊(cè)一個(gè)帳號(hào),就可以象使用Prophecy一樣,方便地將您的應(yīng)用搬到該站點(diǎn)上,Voxeo自動(dòng)給您的應(yīng)用映射開(kāi)通了各種通過(guò)Internet或傳統(tǒng)電話(huà)進(jìn)行訪(fǎng)問(wèn)的途徑。本文的美國(guó)城市天氣查找(Weather Lookup Tool)應(yīng)用已經(jīng)部署在上面了,讀者可以通過(guò)以下幾種途徑來(lái)執(zhí)行它:   

  1. 通過(guò)Skype客戶(hù)端免費(fèi)撥打號(hào)碼 +99000936 9991424457

  2. 通過(guò)SIP終端(比如Voxeo SIP Phone或X-Lite)免費(fèi)呼叫sip:9991424457@sip.voxeo.net

  3. 通過(guò)Gizmo5軟件免費(fèi)撥打iNum號(hào)碼 +883510001800365

  4. 通過(guò)手機(jī)或者固定電話(huà)撥打號(hào)碼 +1 (800) 289-5570 或 +1 (407) 386-2174 (美國(guó)電話(huà)號(hào)碼,收費(fèi)),然后鍵入PIN碼9991424457
  讀者還可以訪(fǎng)問(wèn)http://rapidshare.com/files/165209594/LoopWeather.vra下載Weather Lookup項(xiàng)目源代碼,并導(dǎo)入部署在自己的應(yīng)用中。

五、結(jié)束語(yǔ)

  VoiceXML是允許用戶(hù)通過(guò)電話(huà)和語(yǔ)音方式訪(fǎng)問(wèn)因特網(wǎng)資源的強(qiáng)大技術(shù),它建立在SIP協(xié)議的基礎(chǔ)之上。本文介紹了VoiceXML應(yīng)用的典型結(jié)構(gòu),解析了一款VoiceXML語(yǔ)音瀏覽器的工作原理,最后介紹了如何利用Voxeo Prophecy設(shè)計(jì)工具來(lái)輕松地完成一個(gè)應(yīng)用的創(chuàng)建和部署。筆者希望通過(guò)這篇文章,您可以很快地開(kāi)發(fā)出自己的交互式語(yǔ)音應(yīng)用。

參考資料

[1] VoiceXML 2.1: http://www.w3.org/TR/voicexml21/.
[2] J. Rosenberg, H. Schulzrinne, G. Camarillo, A. Johnston, J. Peterson, R. Sparks, M. Handley, and E. Schooler. SIP: session initiation protocol. RFC 3261, Internet Engineering Task Force, June 2002.
[3] Voxeo Prophecy: http://cn.voxeo.com/prophecy/

CTI論壇編輯



相關(guān)鏈接:
Voxeo VoiceObjects 統(tǒng)一自服務(wù)提高滿(mǎn)意度 2009-09-23
Voxeo攜Prophecy10高度亮相SpeechTEK2009 2009-09-03
擁有中文TTS的Prophecy IVR語(yǔ)音平臺(tái) 2009-08-17
Voxeo發(fā)布開(kāi)源的電話(huà)“云計(jì)算”服務(wù)平臺(tái) 2009-08-12
自助式語(yǔ)音平臺(tái)開(kāi)發(fā)利器Prophecy Platform 2009-08-03

分類(lèi)信息:  交互語(yǔ)音技術(shù)_與_voicexml技術(shù)     技術(shù)_交互語(yǔ)音_文摘   技術(shù)_voicexml_文摘