admin 管理员组

文章数量: 1086019


2024年4月19日发(作者:反码的取值范围)

维普资讯

l54・ 计算机应用研究 2002钜 

个VoiceXM L语音浏览器的设计和实现 

张先锋,金连甫,陈平 

(浙江大学兰德软俘技术研究中心,浙江杭州310027) 

摘 要:电话是目前人们最常使用的交流工具之一。Intemet的出现为人们提供了空前巨大的信息资源。 

如何使电话使用hatemet资源显得至关重要。作为语音浏览技术以及语音互联网的核心,VoiceXML突破 

性地实现了互联网与电话网的融合。首先阐述基于VoiceXML的语音平台,然后再着重讲述其中的语音 

浏览器部分的设计和实现。 

关键词:VioceXML;语音浏览器;解释XML;ECMAScript;JavaScript 

中图法分类号:TP312 文献标识码:A 文章编号:1001.3695(2002)10.0154-O4 

The Design and Implementation of a VoiceXML Browser 

ZHANG Xian-feng,JIN lJan—fu,CHEN Ping 

(Institute o厂Land Sotfware T ̄mology,Zheju ̄ng University,Hangzhou z『 310027,Chma) 

Altaraet:Telephone is one of the most commonly used communication tools.Meanwhile the Intemet pm、,ides a huge quantity of 

informadon H urces.Thus it is important to use Intemet Fesouree¥by telephone、As the o0f℃of voice browsing technology and voice 

Intemet,the voiceXML implements the combination of Intemet and PSTN、The paper first describes the Voice platform based 

VoieeXML,then emphasizes on the design and implementation of hte voieeXML browser、 

Key words:VoieeXML;VoieeXML Browser;Inteprete XML;ECMAScfi ̄;JavaScript 

1 基于VoiceXML的语音平台的总体框架介绍 2 VoiceXML的体系结构和重要的概念介绍 

Voice XML是一个新的XML Schema用来制定通过 

VoiceXML规范1.0中使用的体系结构如图2所示 

语音对话访问Web的内容和其交互语音应答的传递标 

准。VoiceXML建立在与基于weI)的相同模型上。在这 

种应用模型中,除HTML解释程序(Web浏览器)被 

VoiceXML解释程序取代,语音取代作为用户接口媒介的 

鼠标和键盘外,VoiceXML结构与可视Web模型的结构基 

本相同。除其核心能力外,VoiceXML提供更先进的功能 

图2 VoiceXML体系结构模型 

特性,包括本地验证和处理、音频回放和记录,以及支持 

它由以下四个部分组成: 

上下文特有的修剪,并支持可重用的附属对话。图l表 

(1)文件服务器(Document Server) 处理“解释器”经 

示了VoiceXMI 模型与Web模型的关系。 

由“解释器语境”发送的请求,产生VoiceXML页面并回 

应给“解释器”,由“解释器”做进一步处理。 

(2)解释器(VoiceXML Interpreter)。VoiceXML解释程 

序是一个计算机程序,它解释一个VoiceXML文件,引导 

和控制用户与执行平台之间的交互作用。 

(3)解释器语境(VoiceXML Interpreter Context)。 

图1 VoiceXML采用的Web模型 

VoiceXML解释程序语境也是一个计算机程序,用一个 

在这样的体系结构中,各种终端通过PsTN网络连 

VoiceXML解释程序解释一个VoiceXML文件,并且可以 

接到语音网关,而通过语音网关来访问后台的数据服 

与执行平台相互作用而与VoiceXML解释程序无关。 

务、应用服务,或者通过互联网络访问各个语音ICP: 

(4)实现平台(1mplimentation Plaffoma)。实现平台包 

含了与电话有关的硬件设备和一些CT资源,由“解释 

收稿日期:2002-04-06;修返日期:2002—05.08 

器”和“解释器语境”控制。它将针对用户的动作和系统 

维普资讯

第10期 张先锋等:一个VoieeXML语音浏览器的设计和实现 ・155・ 

状况产生事件(Event)。这些事件将被“解释器”或者“解 

●在文件绒别定义的语法,并且是争局激话状怂 

释器语境”处理:当一个电话呼叫到来时,实现平台发 

・在应用级别定义的语法,并且是应用激活状态 

送一个消息到“解释器”,“解释器”从“解释器语境”巾获 

⑥事件(Events):事件是VoiceXML规范1.0中定义 

得相应的文件服务器地址,“解释器”发送请求给“文件 

的一种处理异常的机制。当用户没有提供解释器预期 

服务器”,得到起始页面。然后语音交白 过程歼始,“解 

的输入,或者用户提供的输入不合法时,或者用户需要 

释器”解释页面输出语音提示,用户输入语音,控制对话 

帮助时,实现平台都会抛出事件。当解释器发现在 

过程进行,得到需要的内容,一直到结束 

voiceXML文件中有语义错误时,它也会抛出事件。事件 

下面介绍VoiceXML中重要的概念定义以利予分析 

将会被Catch元素捕获并处理。 

的展开: 

⑦链接(Links)。链接实际上是一种语法,当用户的 

①对话(Dialogs)和附属对话(Subdi,.dogs)。VoiceXML 

输入符合这个语法时,控制将转移到由这个链接指定的 

规范1.0定义了两种对话:表单(Form)和菜单(Menu)。 

个URI 链接也可以被用来抛出异常: 

F0丌n定义了一组域变量(Field Item Variables)用来收集用 

⑧可执行内容。它指一段执行逻辑,它们出现在 

户输入的数据。每一个域(Field)可以指定一个语法 

Block元素、Filled元素、事件处理元素Catch中。另外If 

(Granunar),这个语法定义丁,用户输入的范围。附属对话 

元素是属于可执行内容的,ff元素本身又包含町执行内 

就像是一次函数调用,它提供了一个机制,调用新的对 

容。可以说,可执行内容是VoiceXML中最基本的动作 

话,并且在新对话结束时返回到调用子对话状态。在调 

单位,它们是VoiceXML语义的最终执行者。 

用子对话时,局部数据、语法和状态信息需要被保存并 

在子对话返回时被回复。子对话提供了一种机制,一些 

3 Voice Browser的设计和实现 

常用的对话过程被定义成子对话后可以在多个文件 

3.1集成XML Parser 

(Document)中使用,也可以将一个复杂的交互分解为多 

个子对话从而能够更好地组织。 

个VoiceXML文件首先是一个XML文件,在进行 

②会议(Sessions)。当用户开始和解释器交互时,会 

VoiceXML语义分析之前,必须先对它进行XML解析,这 

议就开始了,在VoieeXML文件被装载,卸载的过程中, 

需要一个XML Purser 在语音浏览器的设计过程中,我 

会议一直存在;当用户或者解释器请求结束,或者所有 

们采用了DOM接口,主要是因为在对VoiceXML语言解 

的VoiceXML文件都到达_r结束状态,会议才结束。 

释的过程中,需要反复浏览不同的节点元素,采用DOM 

③应用(Applications)。一个应用是指一组文件,这 

树结构会方便许多。在该程序实现中,XML Parse-.采用 

组文件共享一个根文件(Application Root Document)。当 

Xerees—C XML Parser。Xerees是一组词法分析器,它兼容 

用户和应用中的任何一个文件交互时,根文件都要被加 

XMI 。Xerces词法分析器对Java和C++可用。Xerces—C 

载。并且只要用户和这个应用中的文件交互,根文件就 

是以c语言写成,它使得应用程序可读写XML数据 

直处于有效状态。直到用户请求另一个应用中的文 

Xerees.C的详细资料见文献[5]。 

件,前一个应用的根文件才被卸载。当根文件被加载 

3.2集成ECMAScript解释器 

时,在根文件中声明的变量对于应用中的其它文件都是 

VoiceXML的语义在很大程度上是利用ECMAScript 

可用的,根文件中的语法也处于激活状态。图2表示了 

实现的,VoieeXML解释器的状态信息大多是用 

在同一个应用的文件转移时,这些文件共享一个根文 

ECMAScript解释器保存的。ECMASeript是ECMA(欧洲计 

件。 

算机制造商协会)定义的一种JavaScript标准 它是一种 

面向对象的编程语言,能够执行计算、操作对象。 

罾二硇 

VoiceXML规范1.0中涉及ECMAScript的使用主要有三 

图2共享根文件 

个方面:变量、表达式、作用域和<script>元素标记,由 

④文件(Document)。一个VoiceXML文件类似于一 

于篇幅原因在此不做详细解释。在该浏览器中集成了 

个HTML文件,它定义了: 

Spider Money Java.Script解释器。Spider Money是由Mozilla 

・语音提示(语音合成) ・输出的录音 

实现的一种C语言JavaScript解释器l4一: 

・需要被识别的词语和句子 ・需要被识别的lYI'MF按键 

・语音输入 ・对话控制 ・电话控制 

3.3解释VoiceXML 

⑤语法(Grammars)。每一个对话可以有一个或者多 

在前面分析中,我们知道了: 

个语法。语法规定了用户在交互过程中的语音输入范 

・浏览器的体系结构主要包括了voiceXML解释器 

围和许可的DTMF按键。 

和解释器语境两部分; 

在最简单的情况下,只有从属于对话的语法才被激 

・浏览器需要利用XML Parser完成XML语义的分 

活,在复杂的情况下,其它的语法也可以被激活: 

析,从VoiceXML文件生成DOM树; 

・在x 话内部定义的语法 

・浏览器需要利用Jav'aScript解释器执行脚本,声 

●被链接引用的外部语法 

明变量,管理变量作用域,以及记录解释过程中产生的 

维普资讯

・ l56 ・ 计算机应用研究 2002在 

状态信息 

队列,然后激活相应的语法等待语音识别的结果或者是 

・VoiceXML解释器需要具备如下功能:①对话管 

事件的发生。 

理,主要就是FIA算法的实现;②事件处理,主要就是非 

・如果是一个<Initial>元素,FIA将Initila元素中 

正常对话流程的管理;③语法管理,在搜集用户输入的 

的提示语音根据Prompt Counter和Prompt Conditions形成 

过程中需要激活(Active)相应的语法。 

个提示音队列,然后激活相应的语法等待语音识别的 

可执行内容的实现,这是VoieeXML中最基本的动 

结果或者是事件的发生 

作单位,它们是VoiceXML语义的最终执行者。 

・如果是<Block>元素,FIA将Block元素的Form 

3.3.1表单(Forms)功能部分 

Item Vaiable的值置为True,执行Block的内容,然后跳过 

Forsm是VoiceXML页面的关键组成部分。一个表单 

处理阶段。在Blcok中,不需要获取用户输入,直接进入 

包含如下内容: 

下一次循环迭代。 

(1)一组表单项目(Form Items)。这些表单项目被表 

⑤处理阶段。其目的是处理搜集阶段获得的用户 

单解释算法(Form herpretation Algorithm,FIA)解释执行。 

输入或者事件,处理过程如下: 

表单项目又可分为以下两个: 

・如果有事件发生(如Noinput或者是Hangup),找 

①字段项目(Field Item)定义了一个项目变量用来 

到相应的Catch元素并且执行。这可能导致FIA结束 

获取用户的输入。 

(如Exit事件),或者导致FIA进入下一次迭代循环过程 

②控制项目(Control Item)用来帮助获取用户输入。 

(如执行缺省的事件处理器)。 

(2)非项目变量的变量。 

・如果用户的输入与某一个<Link>元素的语法 

(3)事件处理者。 

相匹配,则执行Link所链接的转移动作,或者是Link指 

(4)“填充”(Filled)动作。这是一段执行逻辑,当 

定的事件被触发,这个事件在当前的语境内被处理。 

Filed Item得到了输入值时,“Filled”动作被触发执行。 

・如果用户输入与另外的Form的语法相匹配,而 

FIA算法是解释表单元素的,是解释器的核心,它包括以 

不是当前的Form,则当前Form的FIA过程结束,进入另 

下动作: 

外Form的FIA过程。 

①初始化阶段。当解释器遇到一个<Form>元素 

・如果用户输入与当前Form的某个语法相匹配, 

时,要对Form作初始化。内部的语音提示计数器置l, 

那么,将输入语法的Slot值赋予对应的neld Item 

利用JavaScript解释器声明所有的变量,并给这些变量赋 

Variable。 

值(缺省为Undefined,或者是Expr的值)。 

<Filed>元素的动作被触发执行。 

②主循环。主循环有三个阶段: 

按顺序执行每个<Filled>元素的动作。如果有< 

・选择阶段(Select Phase)。因为<Form>元素可以 

Goto>或者<Throw>元素,则立刻终止当前<Filled>元 

包含多个Form Item,选择阶段的任务就是从多个Fo邢 

素的动作,FIA或者结束,或者进入下一次迭代。 

Item中选择当前需要解释的Form Item。 

处理过程结束后,就进入下一个选择阶段,开始下 

・搜集阶段(Coleet 'hpase)。在搜集阶段,解释器用语 

次迭代。 

音提示用户输入正确的数据,并激活相应的语法检测输入, 

3.3.2事件功能部分 

然后识别出用户的语音,得到输入数据或者是事件。 事件功能部分需要完成这几个动作: 

・处理阶段(Process Phase)。如果在搜集阶段得到 

・事件触发 ・事件捕获 ・事件处理 

了输入数据,则执行<Filled>元素处理这些数据;如果 事件触发与事件捕获动作我们采用C++的异常机 

得到的是事件,则执行事件处理器处理事件。 制实现,当解释器遇到了<'I ̄lrow>元素,或者是<HelD> 

③选择阶段。它的目的是选择下一个Form Ietm进 

等需要抛出事件时,调用c++的引发异常语句: 

行解释。选择的过程是这样的: 

throw nEvent;//其中nEvent为一个整数值 

・如果在上一次循环迭代的处理阶段明确指定了 

抛出异常的同时,将事件的类型,事件所在的Item 

下一个Form Item(<Goto Nextitem>),则选择这个Form 

节点、oFrm节点记录在解释器语境中: 

Item。 

context.strEvent=event;//event为某一事件,LL 3 ̄n help 

・否则按照Form Item在文件中的顺序,选择第一 

在FIA算法中利用C++的异常捕获机制: 

个Guard Condition是False的FOm1 Item。 

( atch(int err) 

・如果所有的Guard Condition都是True,说明解释 

完毕,FIA做<Exit>操作。 

④搜集阶段。其目的是获取用户输入或事件。搜 

if(ell"=nEvent)//有事件发生,继续,然后进入FIA的处理阶段 

continue; 

集阶段的动作取决于选择阶段选择的Form hem类型: 

・如果是Filed Item,FIA将Field Item中的提示语音 

根据Prompt Counter和Prompt Conditions形成一个提示音 

在FIA的处理阶段中,对事件进行处理,要经过以 

维普资讯

第10期 张先锋等:一个VoiceXML语音浏览器的设计和实现 ・157・ 

下步骤: 

解释器语境 解释器 

(1)从解释器语境中提取发生的事件.事件所在的 

DOM付信息 F1A算法 

Item节点、Form节点。 

作用域 事件处理 

(2)处理Form节点中的事件处理记数器 

变量空间 语法对象管理 

(3)从Item节点开始搜索事件处理器(就是<Catch 

脚本解释 可执行内容管理 

语法对象集 

>元素)。 

(4)如果Item节点中没有事件处理器,则往hem节 

图3语音浏览器的功能结构 

点的父节点搜索c 4 结论 

 

 

孽 量}叟 了 霉罩 誊 、  ̄& 11.,ITItl /J' 妄 

: 

. 

对 誊皇 旱二 蒿 某 v。i xML 茬 芋 

、 

 。’

●<r

M 规范 

寸 鬟麓器 埋 二

G ammar>元素和<D

=『= 寸象 

 手

tn1f>元素的U

垄 。

苎 f

个 孳 

J' 。 以 三 网 善。 三 壶 

RI

要皇 象。在 

中守义的外部语法 一 

粟 。

、 、

弄 杀 。 

, 

lI“。、 .I1。 

 

 

:●<C G|hanm 二量素和 [1] Extensible Markup I丑“guage(XML)1.0[EB/OL].ht

・<opti

oi

。n>元 

ce>元素 

>元素中定义的内部语法对象 

www・w3・or

. 

tp:// 

g/TR/2000/REC—xml一20001006,2001—11・ 

詈 

m 

120

0 0 1 10

3/ ,20 0

1- 11 .

与语音识别的位置相关的量 蠢 

够 孥 

: 要置 薏 寸

是孽 登 

竺t

 

i 

主 

零 

; 

R200  1。/ WED- v。oiLce x

//

IU:..1IU/.

LILI.1

1.1

I'

, ̄

. ,

所以语法对象的位置信息是 j spid no v

200l—l

i 

∥ . 。 m . .。 

。 

这里就不再详细叙述了

一 

墨 坌 实现比较直接,由于篇幅有限, 作者简介:

……一

 

 

。 

3.4语音浏览器的整体功能结构 主 詈 主 誉 , :墓 

叠 

*c

三 信息篆 凳 慧 : 拥 

基于

W 

…… 

 

eb的海量存储柔性分布式文件服务器设计 

 

 

 

冀装 嘉蓑 

~ …

蕃善 

… ~ 

软件平台对并行性问题的研究和*

。 九 。。。* 

’ 

*’

?用位操作编 

..Linux ̄"PC

苎 曼 一种技术 

璺銎 篓型 . 

 设备驱动程序研究 

...玻璃 

能信息检索体系结构的研究 

. 基于形状的图像检索的关蠢 研究 

; ; 

: 


本文标签: 语音 事件 用户 语法