& lt; < 小于号
& gt; > 大于号
& amp; & 和
& apos; ' 单引号
& quot; " 双引号
<= 要写成 & lt;=VoiceXML是建立于XML 语言规范基础之上,是一种应用于语音浏览的标记语言。利用VoiceXML可以建立基于WEB的语音应用和服务。本文简要描述了VoiceXML规范及相关术语,并给出了一种基于VoiceXML的语音与数据集成模型,它主要由语音浏览器、语音识别、语音合成和VoiceXML网关等部分组成。应用该模型,可以方便地建立各种基于WEB的语音应用系统。
关键词 VoiceXML 集成 模型 语音浏览器
1 引言
随着电子商务、客户服务等信息服务的普遍化,交互式语音应答系统(IVR ,Interactive Voice Response)在各种商业系统中的应用越来越广泛。然而这种语音交互方式存在以下缺点[1]:(1)移植性、灵活性差;(2)在实际系统上做应用开发的难度很大,特别是涉及到话音流程的编写及调试问题;(3)无法综合利用现在的WEB资源。而将IVR系统Internet化,可以增加系统可重用的机会,降低成本,这必将成为今后语音应用的一种主要趋势。另一方面,到目前为止,人们从Internet获取各种资源时,还只能是借助计算机来实现。而实际上,电话具有比计算机更高的普及率,如果允许人们通过电话来访问Internet的资源,那么这对于Internet的应用发展必将是一次质的飞跃。
在这类应用前景的驱动下,VoiceXML [2] 标准被提出来了,它是由World Wide Web Consortium (W3C)制定的。利用这种技术,用户可以通过电话按键或语音来访问Internet上的各种资源,它是语音浏览技术以及语音互联网的核心。与XML标准类似,VoiceXML是一种基于文本的语言,它只定义了数据的存取方式,用户必须编写程序,以便能解释、生成、传送VoiceXML文档。
VoiceXML为语音应用领域展现了一个广阔的未来,在语音门户、语音呼叫中心(Call Center) 、语音信息服务、语音电子商务等领域有着广泛的应用。而这些应用或服务可以很容易地和原有的数据系统结合起来,甚至可以轻易地从原有的各类应用中延展出来。使用VoiceXML的应用系统中,不要求用户学习复杂的高级语言,就可灵活扩充新业务。而无需再与开发商联系,重新定制开发,只需要编写几个VoiceXML页面就可以实现新的业务流程。而且编制好的VoiceXML脚本可以随时随地加入到系统中,而不会影响系统的正常运行。
本文简要描述了VoiceXML规范及主要术语,给出了一个基于VoiceXML的语音与数据集成模型。该模型通过VoiceXML解释器和浏览器访问Internet上的VoiceXML文档及数据库,从而实现语音和数据的集成,达到了语音浏览的目标。
2 VoiceXML规范
21 结构模型
VoiceXML的结构模型[2] 如图1所示。主要包括文档服务器、VoiceXML解释器程序、VoiceXML解释程序环境和执行平台组成。
图1 VoiceXML 的结构模型
文档服务器,可以是一台WEB服务器,它处理VoiceXML解释程序的请求数据包,文档服务器产生VoiceXML文档并送给VoiceXML解释程序。解释程序对文档中的标识进行分离,产生相应的数据或动作命令,引导和控制用户与执行平台之间的交互作用。同时,VoiceXML解释程序环境和解释程序一起监控用户的输入。比如,一个解释程序环境可能监听用户的 *** 作帮助请求;另一个环境可能监听用户请求更改音量或文本语音输出的某些特性。
执行平台是由解释程序环境和解释程序控制的,例如,在一个交互式的语音应答应用中, VoiceXML解释程序环境能可靠地监测到呼叫,获得初始的VoiceXML文档,并且回答这一呼叫,在回答之后VoiceXML解释程序引导这一对话。执行平台产生事件响应用户的动作(说话或者字符输入)和系统事件(例如计时器溢出)。这些事件中的一部分依照相应的VoiceXML文档按照VoiceXML解释程序的解释加以执行,其他的被VoiceXML解释程序环境控制。执行平台提供字符和语音的输入和音频输出,包括合成语音的输出(TTS,text to speech)、音频文件的播放、话音输入的识别(ASR ,automated speech recognition)、DTMF按键的识别、语音输入的录音等。
22 术语
VoiceXML中的基本术语[2]主要有:
会话和子会话(Dialogs and Subdialogs):
会话用于描述应用程序对用户所说的各种提示,定义和收集用户做出的响应,并描述应用程序控制的流程。用户和应用系统用会话轮流进行交互。有两种类型的会话:表格和菜单。表格负责执行会话定义中描述的所有 *** 作,用于封装用户的输入和输出相关的命令。在表格中,可以包含一些域,可以从表格中得到这些域的值。而每个域可以规定允许用户输入的语法定义。菜单允许用户进行选择,而进入到所选的对话中。一个子会话类似一个函数调用,它引起一个新的交互作用并且返回给上一层的表单。
例如,子会话可以用于创建一个在数据库查询时需要的确认序列;创建在单一请求中的多个文档共享的一批组件;或创建一个在多个请求中共享的可重用的会话库。
会话(session):
会话期从用户与VoiceXML解释程序语境交互开始,持续进行文档的装载和处理,直到由用户、文档或解释程序环境发出终止请求才结束。
请求:
一个请求就是一组共享同一个请求根文档的文档。在一个请求中,无论何时用户与文档交互,请求根文档总是被加载。请求根文档被加载后,它的变量作为请求变量被其它文档使用,而且它的文法在请求的持续时间一直起作用。当用户在同一个请求中的不同文档间转换时,请求根文档总是被加载,只有用户转换到别的请求中的文档时,请求根文档才被卸载。
文法(grammar):
每一个会话有一个或多个语音和(或)DTMF文法。在定向对话应用中,一个会话的文法只有在使用者与此会话交互时才起作用。在混合主动式对话中,计算机和用户交替控制下一步的 *** 作,一些会话被标记以使它们的文法(如侦听呼叫)即使当用户在同一文档的其它会话时也起作用。在这种情况下,如果用户进行的 *** 作与另一个会话的有效文法匹配,执行就会转移到另一个会话。
事件(Event):
VoiceXML提供一种表单填充机制以处理"正常"的用户输入。另外,VoiceXML也定义了处理异常事件的机制。如用户在一定时间内没有作出应答,请求系统帮助等情况下平台会产生事件。如果解释程序在VoiceXML文档中发现语义性错误也会产生事件。
链接(Links):
链接支持混合主动式对话,当用户在链接的作用范围时它指定的文法就起作用。如果用户的输入与链接的文法匹配,控制就转移到链接的目的URI。<link>可以用来产生一个事件跳转到目的URI。
应用(Applications):
一个应用是由许多有共同应用根的文档组成。应用根在其中一个文档激活时就被装入,同时,在同一个应用的不同文档之间跳转时,根文档仍然驻留在内存,只有当用户在不同的应用之间跳转时,才会被弃。应用根文档的变量和语法定义都可以被其中的文档访问。
3 基于VoiceXML的语音与数据集成
31 总体结构模型
一个VoiceXML应用模型,如图2所示。主要由以下几个部分组成:VoiceXML网关,WEB服务器,数据库服务器。各部分的功能介绍如下。
图2 VoiceXML应用模型
32 文档结构及其执行过程
VoiceXML以应用、会话期、文档为单位建立应用结构,以会话为交互单位,逐个完成对话确定流程导向。<vxml>可以看作一个包含会话的容器,所有的VoiceXML文档都是由一系列会话构成的。一组VoiceXML文档之间可以互相跳转,并且构成一个会话的有限状态机。用户总是处于某一会话中,每一个会话决定要转移到的下一个会话。转移由URIs指定,URIs定义下一个要使用的文档和会话。
根文档是一个VoiceXML程序的开始,其中可以包括form、script、var、grammars等元素。VoiceXML程序总是从元素form开始执行,当程序需要跳转时,也是从一个form跳转到另一个form。一般采用多文档的应用结构,在一个应用中有一个根文档,其他文档中用<vxml>来引用。
一个应用的例子,如下:
Application root document (app-rootvxml)
<xml version="10">
<vxml version="20">
<var name="test" expr="'Man'"/>
<link next="operator_xfervxml">
<grammar>
<rule id="root" scope="public">operator</rule>
</grammar>
</link>
</vxml>
Leaf document (leafvxml)
<xml version="10">
<vxml version="20" application="app-rootvxml">
<form id="say_hello">
<field name="answer" type="boolean">
<prompt>Shall we say <value expr="applicationtest"/></prompt>
<filled>
<if cond="answer">
<exit/>
</if>
<clear namelist="answer"/>
</filled>
</field>
</form>
</vxml>
一个VoiceXML的应用是一系列VoiceXML文档的集合。而且每一个应用都包含一个“根文档”,这有点像一个动态网站的defaultasp或是indexasp。在VoiceXML应用调用的时候,“根文档”始终被调用。
33 VoiceXML网关
331 语音识别
语音识别使计算机能理解用户的语音命令,产生相应的文字结果,送回VoiceXML解析程序做处理。在VoiceXML网关中,语音识别引擎为命令式的识别引擎,其根据有限的文法)来识别用户的语音信号,并产生对应语法定义的识别结果。在VoiceXML语音浏览器中,文法决定了用户能说什么以及如何说。好的语法能带给用户良好的交互感觉,也能从逻辑上提高语音识别引擎的识别率。
VoiceXML网关中,语音识别不仅需要处理对用户语音信号的识别,同时也需要处理对用户按键的识别,按键和语音以同样的机制被处理和传递。
一个典型的语音识别流程[3]如图3所示。
图3 典型的语音识别流程
可以针对软件结构做一些调整[4],进行数据压缩传输。如图4是一个基于client/server方式的改进方法。
图4 基于client/server方式得语音识别XmlNode xmldocSelect=xmlDocSelectSingleNode("user");
XmlElement el=xmlDocCreateElement("person"); //添加person节点
elSetAttribute("name","风云"); //添加person节点的属性"name"
elSetAttribute("sex","女"); //添加person节点的属性 "sex"
elSetAttribute("age","25"); //添加person节点的属性 "age"
XmlElement xesub1=xmlDocCreateElement("pass"); //添加person节点的里的节点
xesub1InnerText="123";//设置文本节点
elAppendChild(xesub1);
XmlElement xesub2=xmlDocCreateElement("Address");
xesub2InnerText="昆明";//设置文本节点
elAppendChild(xesub2);
xmldocSelectAppendChild(el);
xmlDocSave(ServerMapPath("userxml"));xml有效值写法如下:
1、必须有XML文档声明,XMLstandalone定义了外部定义的DTD文件的存在性standaloneelement有效值,是“yes”和“no”。
2、必须有且仅有一个根元素。
3、格区分大小写。
4、属性值用引号(双引号或单引号):等号分开的名称-值对。在一个元素上,相同的属性只能出现一次。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)