VXML介绍

    1:VoiceXML的目标之一:互联网和公用电话网的信息共享

    2:VoiceXML的目标之二:简化语音业务的开发

   :3:VoiceXML的目标之三:音资源控制高级功能(ASR与TTS控制)

   :4:VXML的格式与语法

   :5:VXML例1:放音收号

  : 6: VXML例2:IVR

    7:VXML与CCXML\CPL\SCML的比较

   :8:MRFC与XML

   :9:某公司的VXML功能列举

 

                  CCXML

  CCXML语言介绍

  CCXML控制元素

  CCXML脚本举例

  CCXML的呼叫流程控制功能

 

VXML与CCXML的结合

VXML与CCXML对于SIP呼叫客户端的作用

SCXML

RFC6230与RFC6231(Media Control Channel Framework)

HTTP协议的作用

某公司媒体服务器白皮书

HP OpenCall

相关文献

MRFC软件架构分析

 

 

===============================

VoiceXML

  VXML介绍

       VXML标准文本:http://www.w3.org/TR/2007/REC-voicexml21-20070619/ 

         VoiceXML(Voice Extensible Markup Language,,语音可扩展标记语言)定义了如何使用语音识别、语音合成、互联网访问、数据库访问、语音文件播放、DTMF输入等功能开发一个完整的语音应用系统。VoiceXML2.0最终草案在2003年由W3C推出,并得到AT&T、IBM、Lucent Technologies、以及Motorola 等公司的支持。

     VoiceXML语音浏览的实现主要依赖于语音处理技术和类似于Web浏览技术的语音浏览技术。在 VoiceXML语音浏览器的支持下,电话用户可以用语音输入和传统的按键输入方式通过电话与电话语音应用系统进行对话交流,电话语音应用系统则用语音的方式与用户对话。在此过程中, 语音识别 ASR和语音合成 TTS等语音处理技术起着重要的作用。

     VoiceXML语音浏览技术也是电话语音应用系统的关键技术。与HTML类似,VoiceXML使得电话语音应用系统根据对话流程所处的状态和具体应用领域的业务需求将当前对话流程转向由互联网 URI 链接定义的下一个对话流程。在对话流程的定义中,不仅可以访问互联网上的 URI 文件,而且还可以访问互联网和局域网内的数据库。同时,Web浏览技术的引进使电话语音应用系统与互联网有机地结合,使电话语音应用系统以开放式的方式呈现给电话用户。

  

VoiceXML的目标

  • 为应用开发者屏蔽底层的、平台相关的细节

  • 分离交互代码和服务逻辑

  • 提高应用在不同平台的可移植性

  • 既能提供对简单应用快捷开发,也提供对复杂应用语言级的支持

  • 单文档表示多次交互,减少了Client/Server交互负荷

 VoiceXML的目标之一:互联网和公用电话网的信息共享

     互联网与公用电话网长期以来出于分离状态。随着互联网的飞速发展和互联网信息的迅速增加,让庞大的电话用户群(包括固定电话用户群和移动电话用户群)访问互联网信息和享用互联网提供的服务显得越来越重要。VoiceXML的问世,无疑对互联网服务商、运营商以及内容提供商都提供了一个极好的商机。

      首先,VoiceXML 浏览技术是开放式的,VoiceXML 浏览器可以浏览互联网上的任何公开的文件和数据,这使得电话用户可以借助于语音处理技术通过电话访问互联网信息。例如,电话用户可以通过VoiceXML浏览器收听网上新闻、查询网上数据库、下载和收听语音文件(如音乐、歌曲、留言、语音邮件等)。因而,VoiceXML浏览技术的使用,使得互联网的信息能够自然地流向公用电话网。

     与此同时,VoiceXML 浏览技术还可以将公用电话网的信息传送给互联网。公用电话网信息与互联网信息不同之处在于前者是动态的、以语音形式为主并且随着电话对话流的结束而消失。然而,在有些电话语音应用系统中,需要将对话流所产生的信息保存起来,以便将来通过 Web 浏览器进行访问。例如,用户的语音留言和对话过程等都可以利用 VoiceXML 浏览技术通过电子邮件或文件的形式传到互联网中进行保存,此后,互联网用户和电话用户就可以分别通过 Web浏览器和 VoiceXML浏览器访问这些信息。

     VoiceXML 浏览技术的引入,使互联网和公用电话网得以有机地结合,使两网信息可以互相流动,从而使互联网与公用电话网达到信息共享。

语音互联网   Internet

VoiceXML   HTML

语音浏览器   WEB浏览器

语音网页   WEB网页

语音超链接   文本超链接

声音   文本

    这些都被XML所支持。

 

互联网与电话网的桥梁 包括:

    丰富的互联网信息与庞大的电话用户群

    解决互联网与电话网的分离

    语音与网站交流

        - 电话收听网上信息

        - 电话提取网上数据库

        - 与网页对话

        - ……

-互联网联结

访问WEB网页

访问Internet数据库

 

-互联网浏览技术

语音浏览器

语音网页

语音超链接

语音输入、语音输出

 

互联网技术的发展和普及

庞大的信息储存

丰富的网上服务

用户数量剧增

互联网访问终端剧增

 

问题:互联网与公用电话网分离

 

 VoiceXML的目标之二:简化语音业务的开发

      电话语音应用系统的传统开发模式是利用 CTI 技术将语音卡、交换机等各系统构件组织和集成起来,开发人员因此需要熟悉相关的底层编码并深入了解有关硬件的编程接口才能建立一个传统的电话语音应用系统。Voice XML 的出现则不仅改变了电话语音应用系统的使用方法和使用范围,而且给电话语音应用系统的开发过程带来全新的概念和模式,使电话语音应用系统的开发实际上成为“语音网页”的开发。

   首先,VoiceXML 浏览器的使用可以使开发人员从繁琐的编程细节中解脱出来。开发过程不需要了解各系统构件(如语音识别、语音合成、语音卡、交换机等)的编程接口,而是类似于 Web 网页的开发,只需编写 VoiceXML 脚本。开发人员因此能够把精力放在应用系统的业务流程上。

   其次,开发过程简单、快捷。开发人员不需要掌握C/C++或Java 等高级计算机编程语言便可以开发一个完整的电话语音应用系统,并且所开发出来的系统往往比传统开发方式开发出来的系统更开放、功能更强大。

    开发过程简单、快捷,类似开发WEB网页

    对开发人员要求较低

    系统易维护、修改、和扩充

    代码可重用性好

    ……

    大量潜在的开发人员

    大量的信息和丰富的服务

    任何时间、任何地点用电话获取信息和享受服务

    提高工作和生活效率改变工作和生活方式

 

 VoiceXML的目标之三:音资源控制高级功能(ASR与TTS控制)

语音识别(ASR – Automated Speech Recognition)

语音到文本的转换

DTMF输入+语音输入

IBM、Dragon Systems、Nuance、Speechworks、Infotalk, etc.

 

语音合成(TTS – Text to Speech)

文本到语音的转换

语音文件输出 +文本输出

Nuance、科大讯飞、捷通华声,etc.

 

  VXML的格式与语法

     VoiceXML是一种脚本文件格式,下面是一段播放欢迎音的脚本,用于给用户播放welcome.wav音文件。

    1  

    2  

    3     

    4        

    5          

    6        

    7     

    8  

   除了带放音文件信息外,其它控制放音的参数也可以携带,包括H.248中的an/apf 包中的各种控制参数。

 

    VXML的框架性XML元素如下:

  •  

     

     

    VoiceXML的主元素,必不可少

  •  

     

     

    一个form单元

  •  

     

     

    一个form item,其中可以放置执行单元

  •  

     

     

    一个执行单元,用于放音

     VXML用于控制流程的XML元素如下:

  • clear 

     

     

     

     

         变量清空 

     

     

     

     

     

  • var 

     

     

     

     

     

     

         变量定义

  • prompt 

         放音

  • reprompt    重放音

  • goto 

    submit   流程跳转

  • if else 

    else if   流程分支的判断

  • return      返回subdialog调用

  • exit       退出  

  • throw 

     

     

     

     

      抛出事件

  • assign  变量赋值

  • script 

     

     

     

     

     

     

     

    脚本操作

常用的标准session变量

  • Session.telephone.ani 

     

     

      系统主叫

  • Session.telephone. dnis 

     

     

     

    系统被叫

    

field:   收集用户输入的域

  •  

     

     

    name 

     

     

     

     

     

     

    结果变量名

  •  

     

     

    expr 

     

     

     

     

     

     

    产生初始值变量表达式

  •  

     

     

    cond 

     

     

     

     

     

     

    判断是否选择该item被执行的表达式

  •  

     

     

    type 

     

     

     

     

     

     

    数据类型,相当于有这样的类型的语法

  •  

     

     

    slot 

     

     

     

     

     

     

    域的关键字名,用于接受语音识别结果

  •  

     

     

    modal 

     

     

     

     

     

     

    是否屏蔽该field以外的所有的语法

filled:用于指明某一个或者多个域被用户输入所填充后的处理流程

 

prompt :播放提示语音 如欢迎进入本系统

  •  

     

     

    bargein 

     

     

     

     

     

     

    提示音是否能不用户打断

  •  

     

     

    bargeintype 

     

     

    打断类型(2.0新增),支持识别打断

  •  

     

     

    cond 

     

     

     

     

     

     

    判断是否播放的条件表达式

  •  

     

     

    count 

     

     

     

     

     

     

    计数(在选择规则中使用)

  •  

     

     

    timeout 

     

     

    用户超时时间

bargeintype:打断方式为:

   energy       能量或者DTMF按键

   speech       语音或者DTMF按键

   recognition   语音识别成功或者DTMF按键

 

audio :播放语音,嵌套文本表示当该语音文件不可获得时,用嵌套的文本以TTS播放

   src       语音文件的URL地址

   expr       动态决定语音文件的URL地址

           当有src属性时,该属性被屏蔽

 

value :将表达式值的运算结果输出为语音或者TTS文本

   expr       输出表达式

例子:

  is the square of .

 

放音内容

  • TTS放音

请您输入呼叫的号码

您呼叫的号码是:

 

  • 播放WAV语音

   

       请您输入呼叫的号码   

 

  • 混合TTS文本、WAV语音

  欢迎进入本系统

  

       本系统最近菜单修改如下:

   

 

 VXML例1:放音收号

   注:系统进入收号流程,以下是收号的digitmap参数定义。它会被MRFC转化为H.248参数

     

    

      

       

  

              注:系统放一段语音,同时进入收号流程,它会被MRFC转化为H.248对应的an包、DD/CE包。

 

 

          注:收号结果自动赋值给变量exercise ,其值为1或2时则执行不同javascript脚本。

                 

       

                

      

 

  

 

 VXML例2:IVR

     在电话银行、基于电话的客户服务、语音邮件大范围应用的今天 ,人们已经非常熟悉按键式交互语音应答系统( IVR) ,但这种系统并不完善:首先 ,按键式菜单的逐层输入方式 ,容易让用户在输入过程中产生混淆;其次 ,按键式菜单的功能简单 ,已经不能满足人们使用的要求。随着语音识别(ASR)技术、文语转换( TTS)技术走向成熟 ,一种通过电话访问 Internet 网络的新方式 ———VoiceXML 诞生了。VoiceXML 是 W3C 定义的可扩展标记语言(XML)的一种扩展 ,根据播放的提示信息、口述的命令、要记录和识别的语音或按键音输入 ,实现人与计算机之间的交互对话。VoiceXML 的标准化将简化 Web 上具有语音响应服务的个性化界面的创建 ,使人们能够通过语音和电话访问网站上的信息和服务。

 

下面给出的是使用 VoiceXML 的一个程序示例:

< ? xml version =″ 1. 0″? >

< ? vxml version =″ 2. 0″? >

< form id =″ weather-infor″ >

< block >欢迎使用天气预报服务< / block >

< field name =″ state″ >

< prompt >哪个省? < / prompt >

< grammar src =″ state. grxml″type =″ application/ grammar + xml″ /

>

< filed name =“城市” >

< prompt >城市名? < / prompt >

< grammar src =″ city. grxml″ type =″ application/ grammar + xml″ / >

< field/ >

< block >

< submit next =″ / servlet/ weather″namelist =“城市 省” / >

< / block >

< / form >

< vxml >

 

C(计算机) :欢迎访问天气预报服务 ,哪个省

H(人) :河北

C:城市名?

H:石家庄

C:天气晴朗…

       这是一个简单的 VoiceXML 文档 ,执行时输出所在城市天气的合成语音。< vxml >可以看作一个包含会话的容器 ,所有的 VoiceXML 文档都是由一系列会话构成的。一个VoiceXML文档(或称为请求的一组文档)构成了一个对话式的有限状态机。用户总是处于某一对话状态(或称为会话) 。每一个会话决定要转移到的下一个会话。转移由 URI指定 ,URI定义下一个要使用的文档和会话。当一个会话没有指定后继者或指明退出对话状态时操作才会终止。

 

VXML与CCXML\CPL\SCML的比较

         VXML脚本可以控制实现播放或录制多媒体、DTMF收号、留言、语音识别、IVR 等媒体应用。

        VXML不仅可以用于媒体控制,更广泛的应用在于:用XML元素高度抽象出了语音业务事件、连接、对话及会议实体、呼叫状态机,从而使语音业务的开发流程具有可移植性。

举例:底层平台1支持PSTN 七号接口的呼叫控制协议。底层平台2支持SIP呼叫或H.248呼叫。

        只要这两个平台同时支持VXML,那么同样的VXML脚本可以在两个平台间进行移植,方便了应用系统(当需要提供语音、短信功能时)的跨平台应用。上层应用的开发人员不需要理解底层呼叫控制、呼叫协议的细节,只需要大致了解呼叫流程就可以利用VXML进行开发。

     类似的功能还有W3C的CCXML、IETF的 CPL和JAIN 论坛的SCML。

    表 1比较了这 3语言的底层协议和底业务接口模型。CPL主要面向 SIP 和H.323,不是和底层协议完全无关的语言。CCXML 和 SCML 是与底层协议无关的语言。CCXML 基于JTAPI接口,SCML语言基于JCC接口。

VXML和CCXML介绍_第1张图片

    表 2 比较了这 3 种语言所适用的业务种类。CPL 以呼转为设计重点,呼叫处理模型简单。 JCC相当于JTAPI的简化,因而SCML的呼叫处理模型弱于CCXML, CCXML可以配合 VoiceXML使用,VoiceXML是开发对话系统的语言,功能非常强大。

VXML和CCXML介绍_第2张图片

 

表 3 比较了这 4种语言在变量控制和流程控制方面的一些差异。CPL、SCML这两种语言比较简单,不支持循环和并发操作。CCXML具有循环和并发的能力,能够编写出复杂的业务流程。

VXML和CCXML介绍_第3张图片

通过以上三个方面的比较可以看出,CCXML基于JTAPI的业务接口模型,对话音类业务的描述支持最强,同时具有完备的变量和流程控制支持,更适合描述基于传统电话的话音业务。但是,CCXML 对数据类业务的描述缺乏支持,需要底层平台进行扩展。

 

 MRFC与XML

     SIP AS可以下发Voice XML脚本,控制MRFC\MRFP执行媒体控制功能。

      SIP AS可以通过SIP信令携带VoiceXML脚本或Voice XML URI给MRFC,MRFC可以通过解析脚本,并转化为H.248协议或SIP MSML协议,利用这两个协议中的媒体控制功能来表达VoiceXML脚本的要求,用来控制MRFP执行放音、收号、会议、IVR的功能。

      VXML的流程控制功能较差,MRFC只有在流程较单一的呼叫场景中使用它。

    比如要实现多方通话,

 方案一:AS可以用SIP 控制多方通话流程,在各个指示放音控制的SIP信令(发给MRFC)中携带VXML脚本,指示放音文件与播放参数。MRFC将之转化为H.248包发给MRFP。这对MRFC要求实现多方通话流程的控制。

方案二:AS也可以直接使用CCXML,这样AS与MRFC之间的SIP流程就得到简化,主要的会话控制由CCXML来执行,CCXML脚本中嵌入VXML脚本来控制放音参数。由用户自己在MRFC或AS定义CCXML脚本。AS直接在SIP invite中发给MRFC即可。MRFC将CCXML脚本解析后,对应到SIP呼叫状态与H.248流程。

 

       Voice XML脚本文件可以放在SIP AS或Web Server中。

       Web Server中也可以存放音频文件、视频文件。

 

举例如下:

    AS通过RFC4240,在INVITE消息的Request-URI中携带以下dialog标记,其中携带了VXML脚本地址。

         sip:[email protected];voicexml=http://vxmlserver1.net/cgi-bin/scripta.vxml

    MRFC利用HTTP接口,向Web Server取得VXML脚本文件后执行脚本。

 

某公司的VXML功能列举

VoiceXML支持的标准 

支持voiceXML Version 2.1    规范 

支持SRGS Version 1.0   (语音识别语法规范)(比如:DTMF 输入) 

支持SSML Version 1.1    (语音合成标记语言) 

    功能如:实现DTMF         识别、语音视频播放控制、语音视频录制。扩展voiceXML  元素和属性,并整合CCXML,完成复杂的语音应答系统。 

1) 语音视频播放 

  可播放wav、mp3       等格式的音频文件;(具体格式要看媒体服务器) 

  可播放wmv、3gp       等格式的视频文件;(具体格式要看媒体服务器 ) 

  支持文件远程访问; 

  可配置播放时间、播放次数以及速度等;(播放次数和速度不支持属于较高级功能) 

  可配置DTMF      来控制快进、回退、停止播放等;(快进和回退属于较高级功能) 

  支持多个音频或视频文件的拼接播放;(属于较高级功能) 

2) 语音视频录制 

  可录制wav、mp3       等格式的音频文件;(具体格式要看媒体服务器) 

  可录制wmv、3gp       等格式的视频文件;(具体格式要看媒体服务器 ) 

  支持文件存储、删除;(具体要看MRC ) 

  可配置录制文件保存位置、录制最大时间、录制静音时间、终止DTMF                              等; 

3 ) DTMF  识别 

  支持SRGS   的DTMF  语法;(有简单的,有复杂的) 

  支持通配符”?”的DTMF       模糊输入; 

4) 其他扩展 

  扩展了Session 变量,voiceXML     脚本可引用CCXML的Session 变量,便于CCXML与VXML   通信; 

  扩展了元素属性,便于控制语音视频录制; 

5) 系统配置 

  可通过命令行或web browser      配置系统参数;(目前两者都不支持) 

  专门工具VQuicker    撰写voiceXML   脚本,使定制脚本简单快捷;(目前未实现) 

4. 应用 

在各种IVR    应用中,包括视频交互式应用,采用CCXML 和voiceXML  可快速完成复杂的交互式系统。常见有以下应用: 

1) Voice&Video Mail 语音视频邮箱 

2 ) Voice&Video Attendant 接线员 

3) Call Center 呼叫中心 

4 ) Voice&Video Conference 语音视频会议

应用—电话书店

一个有十种图书小书店,每本书都有书名和书价。用户可以说出书名来购买图书,在不知道有哪些书的时候可以说“查询”来获取所有书名,可以说“结帐”系统计算出总书款并报读;

系统在用户呼入时提示用户输入帐号,没有帐号直接按#键进入。如果帐号为123,口令也为123则是vip用户,对其书价打8折,用subdialog实现计算书价的功能,并在用户帐号不同时分别调用

用户可以说“留言”时进入录音功能并录制不长于30秒的留言并可以回放确认。

使用NBest对用户输入产生一种以上结果时让用户按键确认;

用户在寻求帮助时转接人工。

使用动态脚本实现用户购书后产生订单号,用户可以查询订单内容和状态。

 

 

CCXML

    SIP AS可以下发CCXML脚本,控制MRFC执行呼叫控制功能。

  CCXML语言介绍            

     CCXML(Call Control eXtensible Markup Language,呼叫控制可扩展标志语言)是W3C 语音浏览器工作组发布的呼叫控制语言,它基于XML定义了一系列开放标准的呼叫控制API。CCXML结合VoiceXML可以提供高级的电话呼叫控制功能,它允许开发人员通过简单的方式编写XML脚本,进行编程,功能包括:电话系统的呼入、呼出和各种呼叫转移功能,并提供复杂的会议服务。

   VXML和CCXML介绍_第4张图片

       CCXML可以使复杂的动作很容易地程序化,诸如有条件的接收呼叫(包括中间呼叫处理事件)、各种呼叫转移、复杂的多方会议控制,以及复杂的多方呼叫处理和控制,包括主动呼出呼叫的管理等。VoiceXML可以为CCXML提供语音媒体的控制功能。

 

 通用业务实体的抽象

     CCXML对传统电话业务实体的抽象基于JTAPI模型。每个CCXML应用程序由控制和管理下表列出的对象的CCXML文档集合组成:

      CCXML 会话:一个 CCXML 会话可以由一个正在执行中的 CCXML 文档组成,也可以由一系列 CCXML文档组成;每个正在并发执行的文档是一个单独的会话,并且能够被唯一的标识和引用。

     连接:连接可以是“呼叫腿”(真实的电话连接),或者是与话音对话相关的系统资源。连接之间,连接与会议对象之间的媒体流由CCXML解析器跟踪并且占用系统资源,但是不需要专门的标识,因为它们有其端点标识。连接的所有者可以使用从一个会话移到另一个会话。

    会议对象:一个会议对象模型化了混合媒体流的资源。为了适应最广泛的底层电话呼叫控制定义,CCXML假想了一个单独的会议对象。

    对话:当一个对话活动时,它可以使用单向或双向的媒体流和连接或会议对象交互,通常是由象 VoiceXML这样的对话环境控制。

下图展示了各业务实体之间的关系:

VXML和CCXML介绍_第5张图片

      CCXML不提供任何与呼叫方交互的机制, 而是依赖于诸如 VoiceXML之类单独的对话环境。当要求与呼叫方交互时,CCXML会话能够创建一个单独的对话来完成交互。在对话结束后,一个异步事件被发送到该CCXML会话,会话能够使用对话环境返回的任意的结果以决定下一步的动作。

     CCXML程序通过CCXML语言中定义的标签操作这些实体。 它们也可以发送和接收与这些实体相关的异步事件。

        

事件处理模型

        电话应用程序需要实时的接收和处理大量的事件。这些事件来自程序自身以外-可能来自底层的电话平台或者其它事件源。对于许多电话应用来说,这一事件处理机制是必需的。

        事件处理是 CCXML最强大的功能之一。CCXML事件能够在任意时间发送,能够来自许多事件源。每个 CCXML会话都能够发送和接收事件。外部和内部事件的传送和接受都有平台中叫作“事件I/O 处理器”的逻辑组件控制。平台能够支持多种事件 I/O 处理器并且每一种都可支持不同的外部事件格式(例如:SOAP,JMS,SIP,Simple HTTP 或者其它的事件传输方式)。每一个运行中的 CCXML解析器都有一个队列,解析器将传入的事件放到该队列中。一个由一个隐含的事件处理器解析算法(EHIA)解析。

     CCXML文档浏览器必须支持一组核心的电话相关的事件集。下图展示了各类事件间的关系。这些事件集设计的足够抽象,能够独立于底层的网络协议和业务接口。

VXML和CCXML介绍_第6张图片

 

 计算语义的表达

       CCXML的计算语义以ECMAScript Compact Profile(即ES-CP ECMA-327)为基础表达。CCXML 表达式是有效的 ECMAScript 表达式,可以赋值给具有有效 ECMAScript 名字的变量。

     许多CCXML元素具有多个 ECMAScript表达式属性。CCXML语言不保证这些表达式的以特定的顺序求值。同时,一些如的元素可能也可能不对所有的属性求值。所以包含有副作用表达式的属性会导致与实现相关的行为。规范不推荐在应用中使用具有副作用表达式的属性。

 

       CCXML 语言是事件驱动的。现在我们来介绍事件驱动的概念,我们可以把事件看作:

  • 事件可以是电话系统发送给 CCXML 应用程序并驱动 CCXML 应用程序执行相应呼叫控制功能的消息。

  • 事件也可以由用户编写的 CCXML 应用程序、CCXML Interpreter 或者被 CCXML Interpreter 调用的 Voice 应用程序生成。

        事件处理:所谓“处理”,我们指的是事件可以发出和接收。事件处理可以使用 元素完成。等待处理的事件保存在一个队列中。 元素从队列中取出的一个可用的事件。

        ECMAScript 和 JavaScript 类似,是 CCXML 内使用的脚本语言。CCXML 中所用的 ECMAScript 规范是基于 ECMAScript Compact Profile(ES-CP,也成为 ECMA-327)的一种工业标准脚本语言。ES-CP 是为资源受限的设备量身定做的,CCXML 选择它是为了提高效率

 

CCXML控制元素

        

    脚本控制和执行