首页>>厂商>>IVR系统平台厂商>>Voxeo

Voxeo Prophecy平台开发VoiceXML应用

2008/11/20

一、简介

  人们已经熟悉了用于语音邮件、拨入会议、电话客服和远程银行的传统IVR系统。VoiceXML[1]是W3C开发的基于XML的语言,用来创建为电话应用刻画合成语音、数字音频、话音与DTMF键入识别和音频录制的语音会话。它将传统的专用与密闭式IVR系统提高成开放式可编程体系结构,并且通过提供类似于HTML表单或CGI脚本的可编程会话把Web技术的优点带给了电话用户。

  SIP(会话启动协议)[2]是用于建立和终止因特网多媒体会话的因特网电话信令协议。基于SIP的VoiceXML浏览器(或称SIP-VoiceXML浏览器)允许SIP用户参与专用IVR系统,比如语音邮件和远程银行。通过SIP-PSTN网关,它还可以把VoiceXML技术的优势带给传统电话用户。

  Voxeo Prophecy [3]是一个灵活可靠的完全开放式IVR语音应用的开发、部署和运行平台。其核心的呼叫控制全部基于SIP,可以运行和部署任何基于VoiceXML、CCXML标准的电话应用。Prophecy不但自嵌TTS (Text To Speech, 语音合成输出) 和 ASR (Automatic Speech Recognition, 自动语音识别),同时支持标准的MRCP接口,可以和第三方语音引擎集成。Prophecy的以Web为中心的开发模型很容易被Web和电话应用开发者所理解,并且在开放SIP的支持下,同您的后台系统轻松快速地集成到一起。

二、VoiceXML应用的典型结构

  SIP-VoiceXML浏览器之于电话,类似于Web浏览器之于桌面PC。语音浏览器从Web服务器取得VoiceXML页面或预先录制的媒体文件,然后向电话用户呈现交互式会话。图1显示了一个典型应用结构,其中VoiceXML浏览器可以被SIP电话或传统电话所访问。

  VoiceXML页面可以静态地存储在Web服务器上,或者由诸如HTTP-CGI(通用网关接口)、Java Servlet或JSP这样的服务器侧编程逻辑动态生成。媒体文件可以存储在Web服务器上,或者从RTSP媒体服务器产生实时流媒体,并通过RTP直接发给SIP主叫方。

图1. 基于SIP的VoiceXML应用典型结构

  一个简单的VoiceXML页面

  如下示例VoiceXML页面首先用话音提示主叫方:“What zip code would you like to search?”,当用户说出“Three two eight zero one”或者按下一串数字(比如说32801#),ZIP变量获取数值“32801”,并传递给链接地址http://ws.cdyne.com/WeatherWS/Weather
.asmx/GetCityForecastByZIP?ZIP=32801
。最终由GetCityForecastByZIP脚本(实际上是一个Web Service接口)来处理输入和生成进一步的VoiceXML页面。如果有错误或者用户没有按任何键,那么话音提示会一再重复。
<?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>

三、语音浏览器中发生了什么?

图2. VoiceXML语音浏览器操作

  图2显示了SIP-VoiceXML浏览器的组件和操作状态变迁:

  1. 当浏览器接收到一个新进来的SIP呼叫后,它创建三个不同线程:RTP接收线程、RTP发送线程和VoiceXML解释器线程。RTP接收线程从主叫方接收媒体数据包并调用DTMF检测模块;RTP发送线程将媒体数据包以流的方式发送给主叫方。一个单独的发送线程帮助维护外出数据报的固定带宽(比如针对G.711音频的64 kb/s),而不考虑语音合成速度。初始的VoiceXML页面地址可以预先配置在浏览器中,或者编码到SIP请求。例如,如果主叫方拨打sip:dialog.vxml.http%3a//dialogs.server.com/script32.vxml@vxmlservers.com,那么该呼叫将到达运行在vxmlservers.com上的浏览器,然后从script32.vxml取得初始VoiceXML页面。

  另一方面,如果request-uri是sip:7137@cs.columbia.edu,那么将用缺省的预先配置的初始VoiceXML URL链接(比如会议服务的)去调用解释器。

  2. 解释器线程使用初始URL呼叫XML parser。

  3. XML parser从Web服务器或本地文件系统取得页面(基于初始URL)。

  4. XML parser将返回的XML文档表示成一个树结构。

  5. 解释器线程在来自VoiceXML文档的选定表单上调用表单解释算法(Form Interpretation Algorithm, FIA )。

  6. FIA基于VoiceXML文档内容调用各种其它模块。例如,它可以调用TTS SDK合成任何语音提示。

  7. FIA也可以调用HTTP fetcher模块取得外部语法文件,或者用于语音提示的媒体文件。XML parser通过其内置HTTP客户机取得VoiceXML页面。

  8. HTTP fetcher通过HTTP GET/POST方法来检索文档。

  9. 使用HTTP fetcher从Web服务器检索到的媒体文件被分段成交互式电话数据包,并且排队等待发送线程以流的方式发送给主叫方。

  10. 语音合成器(Speech synthesizer)输出也分段和排队发送到主叫方。

  11. VoiceXML文档可以在文档的不同范围指定语法规则。FIA可以基于VoiceXML页面的当前执行范围为匹配引擎设置活动语法。

  12. RTP接收线程接收RTP媒体数据包,并且调用DTMF检测器。

  13. 任何检测到的DTMF数字被传给语法匹配引擎。

  14. DTMF按键可以通过多种方式从主叫方传送到浏览器。一种方法是并不把它们从话音中区别开来,而是使用相同的音频编解码器对它们进行编码。但是低带宽音频编解码器可能扭曲了带内DTMF按键的特性,导致它们难以检测。第二种首选的方法是使用“电话事件”来携带数字码而不是在RTP数据包中的编码音频。在第一种情形,浏览器必须做DTMF检测,而第二种情况下,主叫方或网关必须做DTMF检测。RTP接收模块将电话事件直接转发给语法匹配引擎。还有一种方法是在SIP INFO消息中传输DTMF。

  15. 语法匹配引擎尝试把接收到的数字与任何活动语法进行匹配,并在找到匹配时通知FIA。

  16. RTP发送线程定期把媒体数据包发给主叫方。在静默时不发送数据包。

四、使用Voxeo Prophecy简化VoiceXML应用开发

  通过使用Voxeo公司提供的Prophecy开放应用平台,我们可以快速地创建、集成和部署VoIP应用,它所提供的可视化Web界面设计工具可以使我们不必写一行代码,即可完成一个复杂而有趣的应用。

  首先要做的是花一些时间前往http://cn.voxeo.com/prophecy/,免费下载一个Prophecy 8.0。安装完成后,会在系统托盘区生成一个Voxeo Prophecy v8.0.221.3图标,选择Prophecy Home,在打开的Voxeo Prophecy网页中点击Prophecy Designer即开始了我们创建VoiceXML项目的轻松之旅。该设计工具将整个VoiceXML应用以图表或树状结构直观地呈现给开发者,可以方便地控制和修改其交互流程,如图3所示。

图3. Prophecy可视化设计工具

  项目设计完成后,我们需要发布它,只须简单地点击左下角的Publish链接即可。每次发布项目后,都会生成一个新的版本,我们可以通过Project菜单的Project Settings查看所有版本。

  接下来,我们可以把这个项目映射成一个IVR应用了。在先前打开的Voxeo Prophecy网页中,点击Administration链接,打开一个Management Console页面,点击Call Routing,为我们的应用选择一条映射路径,比如说Route ID为“vxml”,在Route Type字段选择“Designer”,App Name选择项目名称(比如“Weather Lookup”),滚动到页面底部,点击Save Changes按钮保存。

  最后,交卷的时刻到了,我们的应用到底能不能用呢?让我们来测试一下。打开Prophecy自带的SIP Phone,如图4所示,给sip:vxml@127.0.0.1拨号。当我们听到扬声器传来“Welcome to the Weather Lookup Tool...”,Prophecy没有令我们失望,我们已经拥有一个免费的“天气播音员”了,我们只要告诉它想查找的城市的五位邮政编码(比如“10027”),就可以收听纽约市的天气情况了。当然,本示例项目实现的是美国的城市天气播报,读者完全可以在其基础上,实现中国的城市天气预报。

图4. Voxeo SIP Phone

  独乐乐不如与众乐乐,读者是不是很想与自己的朋友分享这个成果呢?没有问题,Voxeo替您考虑到了,它提供了免费的开发人员门户,您只要访问http://evolution.voxeo
.com/
,免费注册一个帐号,就可以象使用Prophecy一样,方便地将您的应用搬到该站点上,Voxeo自动给您的应用映射开通了各种通过Internet或传统电话进行访问的途径。本文的美国城市天气查找(Weather Lookup Tool)应用已经部署在上面了,读者可以通过以下几种途径来执行它:   

  1. 通过Skype客户端免费拨打号码 +99000936 9991424457

  2. 通过SIP终端(比如Voxeo SIP Phone或X-Lite)免费呼叫sip:9991424457@sip.voxeo.net

  3. 通过Gizmo5软件免费拨打iNum号码 +883510001800365

  4. 通过手机或者固定电话拨打号码 +1 (800) 289-5570 或 +1 (407) 386-2174 (美国电话号码,收费),然后键入PIN码9991424457
  读者还可以访问http://rapidshare.com/files/165209594/LoopWeather.vra下载Weather Lookup项目源代码,并导入部署在自己的应用中。

五、结束语

  VoiceXML是允许用户通过电话和语音方式访问因特网资源的强大技术,它建立在SIP协议的基础之上。本文介绍了VoiceXML应用的典型结构,解析了一款VoiceXML语音浏览器的工作原理,最后介绍了如何利用Voxeo Prophecy设计工具来轻松地完成一个应用的创建和部署。笔者希望通过这篇文章,您可以很快地开发出自己的交互式语音应用。

参考资料

[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论坛编辑



相关链接:
Voxeo VoiceObjects 统一自服务提高满意度 2009-09-23
Voxeo携Prophecy10高度亮相SpeechTEK2009 2009-09-03
拥有中文TTS的Prophecy IVR语音平台 2009-08-17
Voxeo发布开源的电话“云计算”服务平台 2009-08-12
自助式语音平台开发利器Prophecy Platform 2009-08-03

分类信息:  交互语音技术_与_voicexml技术     技术_交互语音_文摘   技术_voicexml_文摘