以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML在语音技术中的应用 』   (http://bbs.xml.org.cn/list.asp?boardid=47)
----  [分享]《语音技术与VoiceXML 应用》  (http://bbs.xml.org.cn/dispbbs.asp?boardid=47&rootid=&id=44814)


--  作者:admin
--  发布时间:4/3/2007 11:10:00 PM

--  [分享]《语音技术与VoiceXML 应用》


语音技术与VoiceXML 应用

廖峻锋

NCCU Computer Center June 22 ,2003

1 前言
VoiceXML 是一个由AT&T, IBM, Lucent and Motorola 率先领导及发起的语音标记语言规格。这些CTI 的大厂将原本各自发展的Telephony Markup Language(IBM 的 speechML, Motorolla 的 voxML, AT&T 的 TelePortal….) 协调整理之后送交World Wide Web Consortium(W3C) 审查,在2000 年5 月13 日W3C 接受了voice extensible markup language 1.0 规格(VoiceXML

1.0),之后该组织继续针对1.0 规格做扩充与改进,目前VoiceXML 2.0 已经在Candidate Recommendation 的阶段。

IVR(interactive voice-response services)是现代生活中不可或缺的一项信息服务,IVR 可以和使用者透过电话,以电话按键(DTMF)互动,如语音订票、语音查榜、语音投票等都是平常很常见的IVR 应用程序。VoiceXML 便是一种方便开发IVR 系统的特殊的标记语言(Markup Language)。

Web 技术目前非常普及,坊间有很多书籍可参考。相对于Web 技术,电话方面的程序设计则难度较高,也较难学习。VoiceXML 的带来的好处便是利用大部份人熟悉的 web-based model ,开发IVR,连存取数据库的方式也都和与web 上的传统做法相同。这项特点使得IVR 的开发人员得以不用费心处理电信方面的细节,而专心在商业逻辑的开发上。

传统IVR 其实只是VoiceXML 功能一部份。VoiceXML 同时支持预录音文件及语音合成(TTS)的输出,电话按键(DTMF)及语音辨识(SR)的输入。利用这种先进的使用者界面,我们可以做出更进阶的ASR 应用程序。VoiceXML 所写作的Applications 可说是ASR 及TTS 技术的最佳应用。

2 语音技术概观
2.1 语音技术应用现况

语音应用程序往往需求很大的系统资源。在1990 年代初期,计算机硬件技术开始突飞猛进后,原本只能在大型主机上实验的语音辨识引擎便开始被使用在个人及商用计算机上。

语音技术主要分成输出及输入二部份。在做语音输出时,我们可以去找声音好听的人预先录制好的音档。可是我们需要的输出一旦改变,就要重录,所以才有语音合成器(Speech Synthesis, 或称Text to Speech,TTS) 的发展。利用TTS,我们只要随时输入文字,它自动帮我们转成人的语音,如此一来我们便能轻松改变Prompt,但目前合成的语音听起来毕竟还是不像人类直接说话来得自然。所以预录音文件的目前的语音应用程序中一般是担任比较「不易改变」的Prompt,而如姓名、数量等每一次都变动性很大的音档我们通常交由TTS 来产生。

传统IVR 中,我们只会用电话按键来输入。在较先进的ASR 系统中,我们可以使用语音辨识技术取代电话按键。电话按键表达能力有限,所以使用语音辨识可以让使用者更方便输入文字。在语音系统中使用的语音辨识引擎必须是Speaker-Independent 且辨识率要相当高,才不会让使用者感到不适。目前的语音辨识技术没有办法达到100%的辨识率,所以一般比较重要的信息输入我们仍然使用电话按键来做,如身份证字号、密码或金额等等。

2.2 语音辨识(Speech Recognition)
语音辨识,顾名思义就是将人的语音转成文字,在VoiceXML 的应用中,更进一步须配合文法,以便转换成计算机可以理解的Notations 。 目前业界流行的语音辨识引擎除了基本的辨识之外,通常包含下列功能。

Voice Barge-in: 计算机语音在播放途中,user 又说出一句话,就可以中断计算机语音,并且也可以辨识user 的这一句话。

Continous/Discrete input:使用者语音输入时要一个字一个字说称为Discrete Input,使用者输入时可连续说称为Continous Input。辨识时要能接受Continous 及Discrete 的输入。

word spotting:在Continous Input 时,抓User 说一整句话时的关键词,以提高辨识率。

Speaker Independent: 应该不只能辨识单一使用者的语音。

成功地将语音转成计算机了解的Notation 之前,必须经过一连串的处理,以下列出目前一般ASR 的处理步骤及其说明。

Step 1:User Input User 从电话中说一个字或一句话,系统以模拟方式捕捉其语音讯号(analog acoustic signal) 。

Step 2:Digitization

把捕捉到的模拟讯号转成数字讯号。

Step 3:Phonetic Breakdown 讯号数字化后,将这个讯号切成音素(Phoemes)。

Step 4:Statistical Modeling 利用统计模型(如HMM,隐藏式马可夫模型)将这些patterns 对映到它们的phonetic representation( 类似音标的符号)。

Step 5:Matching ASR 依据程序开发者写的Grammar 、setp4 所得到的Phonetic representation 及Dictionary(phonetic respresentation 和word 的对照表,如thee,thunàthe),来做比对,传回一个n-best list(就是可能的word 加上一个Confidence score) 。

2.3 语音合成(Speech Synthesis or Text to Speech)
语音合成和语音辨识相反,是将人输入的文字转成音文件,以供播放。合成器接受到文字后,必须加解析,依据声韵学将文字加以标注,依据这些标注,再将语音库的音文件取出,并合成。语音库传统有二种做法,一种是完全由计算机产生,另一种是由人的语音一个一个输入。目前普遍认为后者可以产生较好的音色,也因此一般都是以人的语来制作语音库。

3

3 普及计算(Pervasive Computing)与语音上网(Voice Browsing)
3.1 普及计算的概念

最近十年来,业界的信息业务应用已经从Client-Server 架构渐渐转成Web 的分布式架构。随着硬件技术的发展,许多小型的device 也具有不输计算机的运算能力,于是我们希望透过各式各样型的device ,从计算机、NoteBook、PDA 到手机,只要我们走到不同的地方,都要能随时存取信息。这便是普及计算的动机。


IBM 的CEO , Lou Gerstner ,曾经为普及计算下过一个定义,他说: 「Persavive computing model is billion people interacting with million e-business with trillion devices interconnected. 」。简言之,所有人都能透过不用的装置,随时随地存取所以要的信息。而VoiceXML 可以让我们使用手机来得到Internet 可以很到的信息,可以说是实践普及计算的其中一种重要技术。

3.2 语音上网(Voice Browsing)
语音上网的典型运作方式如下图所示(本图取自[2])。


首先电话利用传统方式(拨号)向Voice Browser( 或称VoiceXML Intepreter)提出要求,其中 Voice Browser 由业者提供,一个Voice Browser 可能服务许多条电话进线。Voice Browser 除了要处理一般电话功能之外,也要处理一个典型Web Browser 的所有功能(如 Cache、解析并render 使用者界面等)。透过Voice Browser ,使用者可以存取业者或Internet 上其它VoiceXML 的资源。从这里可看出,要建立VoiceXML 运作平台,最关键的组件就是Voice Browser 的开发。在4.2 节中我们会针对实作细节详细做介绍。

一般对Voice 常见的误解是透过VoiceXML ,我们就可以任意从电话存取Internet 上的HTML。其实Voice Browser 只看得懂VoiceXML ,一般提供 HTML 的Content Provider 如要提供Voice Browsing 的服务,尚须另外准备一份VoiceXML 的文件才行。当然写作这份VoiceXML 文件所花的时间与人力比传统直接以C/C++去写作IVR 有效率多了。

VoiceXML 提供写作语音应用程序的新方式,由于它也是走HTTP,和原来的Web Application 开发方式几乎相同。即使原本不熟悉IVR 程序开发的Content Provider,其开发人员可以在最少时间内学会VoiceXML ,并提供另一种型态的使用者界面,这也是VoiceXML 现在如此受业界重视的原因。

3.3 制定及推动VoiceXML 的组织
W3C Voice Browser Working Group 是制定VoiceXML 规格的组织。这个Working Group 在1999 五月成立,由超过60 家业者的代表组成。另外VoiceXML forum 则是业界成立要推动VoiceXML 标准的组织,成员目前已经超过了550 家公司。

目前通用的VoiceXML 1.0 是由VoiceXML forum 提给W3C 的proposal 所产生,在2000 年五月正式成为Recommandation。

4 VoiceXML 架构
在3.1 节中我们提到过普及计算(Pervasive Computing)的观念,

VoiceXML 可以让我们使用手机来得到Internet 可以很到的信息,可以说是实

践普及计算的其中一种重要技术。

本章将重点放在实作面,下图是一个典型的普及计算架构图。我们可以看

图中有三种不同特色的装置:笔记型计算机(HTML)、手机(WML)及市内电话

(VoiceXML) 。由于这三种不同的装置先天的限制,他们的网时的使用者界面

分别使用了三种不同的技术(HTML、WML 及VoiceXML) 。但后端接的是同一

个Application Server。这代表在普及计算模型之下,尽管UI 不同,商业逻辑

只需开发一次。


深红色框线的部份是便本章重点-VoiceXML 的运作环境,我们在下一节中会详细解说。

4.1 VoiceXML 运作环境
一个VoiceXML 运作环境的架构如下图:


为了提供VoiceXML 的服务,我们在传统电信系统(PSTN)后面接上Voice Gateway 。语音浏览器(Voice Browser) 便是Voice Gateway 的一个重要组件。语音浏览器会透过HTTP 向VoiceXML 文件服务器(Document Server)发出HTTP 要求,而文件服务器也会依请求结果回传相对的HTTP 回应。中间走的完全是传统的HTTP 协议。

其实文件服务器(Document Server)的角色正是一般Web Server 所担任的角色,在实作上我们只要在Web Server 设定档(如apache 中httpd.conf) 中做MIME 设定,让它认得vxml 的文件档式,则这台Web Server 就可以当做VoiceXML 文件服务器使用了。

如果我们有动态网页的需求(比方说,想透过Server-side scripting 存取数据库),也可以使用ASP.NET 或JSP/Servlet 等技术动态产生VoiceXML, 写作方式和原来的ASP.NET 或JSP/Servlet 技术完全一样,只是最后render 的是VoiceXML 而非HTML。(如下图)


透过这层机制,我们发现,过了VoiceXML Gateway 后,VoiceXML 运作方式几乎和传统Web 相同。因此VoiceXML 成功地将电信系统的know-how 从商业逻辑中分割出来,包装在VoiceXML 中。而一般VoiceXML Application 的开发人员,只要懂得一般Web Application 的开发技术及学习VoiceXML 的卷标即可开发IVR 语音应用程序。

从以上的分析可以发现,所有的技术关键在VoiceXML Gateway ,它整合了传统电信及Web 技术,并加以包装。在下一节中我们将深入探讨VoiceXML Gateway 的实作细节。

4.2 VoiceXML Gateway 实作
在这里以OpenVXI 为例详细说明一个VoiceXML Gateway 的实作细节。OpenVXI 是美国CMU 大学提供的一个开放原始码(Open Source)VoiceXML Gateway 实作品。OpenVXI 以C++语言实作,严格来说它只能算是半成品,因为它只提供VoiceXML 的主结构,和各项组件(如电话语音卡、辨识引擎、TTS)的接合部份必须由我们自行依自己的使用环境再补上。这个以下是OpenVXI 的架构图。参考上图我们约略可将整个实作分为几个部份来说明:


VoiceXML intepreter VoiceXML 的解译器负责解译VoiceXML 的档案,将结果存到内存中,用来控制整个VoiceXML Gateway 其它组件的行为。

Web Browser 基本功能包括一个基本Web Brwoser 的功能,例如Internet 的存取(开/关socket)、Java Script 的解译及执行及cache 的使用、cookie 的接受等等。

ASR / TTS 控制做为VoiceXML Gateway 与语音辨识引擎(ASR)及语音合成引擎(TTS) 的接合器(Adapter)的角色,系统透过这些Adapter 控制下面的ASR 及TTS。VoiceXML 规格中并未规定要使用特定的ASR/TTS ,所以理论上我们可以在这层将自己所采用的ASR/TTS 整合进来。

CTI 机制负责包装整合电信语音卡提供的API,和上一点的理由类似,VoiceXML 规格并没有规定要使用那种语音卡片。由于各家的语音卡片API 都不同,所以必须在这部份将自己的语音卡片API 包装起来,供系统呼叫。

其它管理及扩充机制包含其它自行开发的Log、设定档或监控机制。

目前业界实作VoiceXML Gateway 的厂商非常多,在W3C 网站Voice

Group 的Implementations 的网站可以找到非常多。在台湾目前主要有

YesMobile 、eWing(飞翼信息)及中华电信等业者实作出VoiceXML

Gateway。其中中华电信的实作是由OpenVXI 1.4 版修改而成,并计划将

VoiceXML Gateway 做为下一代的IVR 平台。若是个人或学术界要自行开发

一组VoiceXML Gateway 的话,开放原始码的OpenVXI 是一个很好的起点。

5 VoiceXML 语法与文件结构
5.1 VoiceXML 重要观念与定义
右图代表一个典型VoiceXML 应用程序的主要组成部份及其scope 关系。最上层的是session,它代表的就是一通电话,只要使用者未挂断电话,都算是一个session。透过call transfer 或其它机制,使用者可以在同一个session 下使用其它application。一个application 会包含很多VoiceXML 文件(document),其实体就是一个.vxml 档案。在一个document 中,会定义系统和使用者可进行的一连串对话(dialog)。

session 这个名词与一般Web Programming 的session 意义不同,在Servlet 2.3 的规格书中的session 指的是单一Browser 连上Server 时,Browser 未关掉前都算是同一个session。在Web 环境中,一个Brwoser 开启时通常只为一个使用者服务。但在VoiceXML 的环境中,一个Voice Browser 会替许多使用者服务。另外,在传统Web Programming 中,application scope 大于session,而VoiceXML 中,session 则大于application。在二者同时运用时,很容易造成开发人员的混乱。Web Programming 通常会面对multithreaded 的问题,所以session 观念的厘清也特别重要。我个人建议将VoiceXML 中的session 以其它名词取代(如Telephony-Session) ,才可以减少这种误解。

5.2 VoiceXML 文件(document)结构

一个document 在VoiceXML 中就是一个.vxml 档案,其典型结构如左

下图所示。观察图中元素可发现一份文件中主要由<form>、<menu>及其它的global 标签组成。一份文件中可以包括一个或多个<form>或<menu>,一个Form 或Menu 都称为一则对话(dialog),在dialog 中,我们定义使用者和系统间的互动。global 的<link>代表使用者在所有的dialog 中都只要讲<link> 中定义的字,就可以依照<link>中定义的url, Navigate 到别的文件(document)或对话(dialog) 。

根据定义,一位使用者在同一时

间,只会在一个dialog 中,在一个

dialog 结束时,会依据定义的url,

转到下一个dialog 中,这个dialog

可以位在本份document 或其它document。当使用者转到其它文件的dialog

时,Voice Browser 就会向Document Server 发出HTTP Request ,要求指

定的文件,再解析并执行使用者需要的dialog。(如下图)

5.3 Form 与Menu
Dialog 分成Form 与Menu 二大类。Form 的作用与HTML 的Form 相同,用来搜集使用者的信息,通常Form 会使用语音辨识或按键输入(DTMF)的技术来搜集使用者的输入。在一个Form 中需要搜集的信息称为field。为了增进辨识率,通常我们会为一个filed 定一相对应的文法,事先告知系统,使用者被需期要说话的字汇范围及句型。下面是一个典型的Form 宣告:


在这个Form 中,我们想知道有多少人要参加旅游,所以有一个field 叫travellers,我们为这个field 定义了一个文法(grammar),放在number.grxml 中。当field 信息搜集完毕时(filled),将数据submit 到指定的url 上(http://travel.com/order) 。

Menu 则与Form 类似,我们可将Menu 看成是没有field 的Form。Menu 和它名字含义相同,通常用来提供选单,让使用者选择进一步服务。

5.4 文法(Grammar)
在前一节中提到,我们为Form 中的每一个field 定义相对应的Grammar ,在VoiceXML 1.0 中,Grammar 标准规格是采用JSGF(Java Speech Grammar Format) 。JSGF 由Sun 发展出来,是Java Speech API 中Speech Recognition 的文法规格。在VoiceXML 2.0 中,W3C 则自发展出SRGF(Speech Recognition Grammar Format) 并采用成为未来VoiceXML 的通用文法规格。

JSGF 采用格式是ABNF(Augmented Backus-Naur Form),SRGF 则是同时支持XML 及ABNF 二种格式。

6 VoiceXML 与多模式浏览(Multimodal Browsing)
语音输出入界面可以让计算机的使用者感觉更自然,由于近年来语音技术的成熟,在个人计算机上出现了许多以语音做为辅助使用者界面的应用。

xHTML+ Voice porfile 由成熟的xHTML v1.1 的延伸模块(extended module)加上VoiceXML 2.0 子集合组成。主要提供一般浏览器多模式(Mutimodal)的功能。原本我们用Browser 上网时,只能利用鼠标、键盘输入,利用屏幕输出。利用这项技术,我们使用Browser 上网时可以同时使用多种模式输入,使用语音、鼠标或键盘输入,使用语音及屏幕输出。目前IBM 的Alphaworks 网站上已提供部份的xHTML+Voice 实作。

语音界面的加入,可以补足很多传统keyboard 及mouse 不足部份。最

明显的好处就是使用语音输入时,可以将双手空出来,使用语音输出时,眼睛

也可以空出来,这种特色使用人类在使用计算机时的工作效率更高,也是多模式

使用者界面(Multimodal User Interface)最大的好处。

7 结论与未来发展
VoiceXML 结合了语音界面容易使用及Web 界面容易开发的特色,可说

是XML 技术一种很成功的应用。VoiceXML 目前已有150 家以上的通信及软

体厂商加入。由于VoiceXML 是W3C 的标准,可以架构在既有Web 技术的

基础上,所以未来语音应用程序采用VoiceXML 将成为一种趋势,特别是对于

CTI(Computer – Telephony Interface) 与 Web 系统开发人员而言,使用

VoiceXML 将节省许多的发展时间与成本,更有效结合 Web 与 CTI 技术。

8 参考书目
[1]Bob Edgar(2001),“The VoiceXML Handbook” ,NY:CMP Books.
[2]Dave Raggett(2001),”Getting started with VoiceXML 2.0”,W3C.
[3]Sun Microsystems(1998),”Java Speech Grammar Format Specification
v1.0”,Sun Microsystems.
[4]Chetan Sharma and Jeff Kunins(2002),”VoiceXML:Strategies and
Techniques for Effective Voice Application Development with VoiceXML
2.0”,Wiley.
[5]Brian Eberman,Jerry Carter,Darren Meyer,David
Goddeau(2002),”Building VoiceXML Browsers with OpenVXI”, NY:ACM
Press.
[6]Microsoft (2002),“Speech Technology Overview ” ,
http://www.microsoft.com/speech/evaluation/techover/


[7] VoiceGenie Technologies Inc.(2001),”White Paper:Speaking Freely
About The VoiceGenie VoiceXML Gateway and the VoiceXML
Interpreter”,VoiceGenie Technologies Inc.
[8]W3C(2002),”VoiceXML Specification v2.0”,W3C.
[9]James A.Landay (2000),“Pervasive Interaction: Tools for Designing
Anywhere, Anytime, Anydevice Interfaces”,
http://www.cs.berkeley.edu/~landay/research/talks/intel-pervasive/


--  作者:小扇子
--  发布时间:4/5/2007 12:39:00 PM

--  
从前一直没有关注过XML,现在才发现这个领域已经聚集了那么多人^_^
--  作者:swiping
--  发布时间:9/29/2007 4:52:00 PM

--  
支持共享
--  作者:tainw
--  发布时间:12/13/2007 9:28:00 AM

--  
支持!谢谢!
--  作者:lubin59
--  发布时间:2/22/2008 2:38:00 PM

--  
支持,我现在正在学习这个
--  作者:wyh2004
--  发布时间:3/14/2008 1:42:00 AM

--  非常感谢!
正准备了解一些 语音智能处理方面的技术,非常感谢 !
--  作者:liyuexian
--  发布时间:3/31/2008 9:10:00 AM

--  
感谢斑竹, 我现在正在作毕业论文,感谢你的文章
--  作者:holytutor
--  发布时间:4/9/2008 10:39:00 AM

--  
挺不错~~~
--  作者:zzsylws
--  发布时间:5/1/2008 10:07:00 PM

--  
Thank you very much
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
140.625ms