Interactive Voice Response-IVR 项目需要,目前正在学习尝试使用并开发相关功能.
功能支持
http://www.voxeo.com/
Voxeo Prophecy Voice Platform. - Free Download
http://www.voxeo.com/prophecy/
VoiceXML基础教程针对VoiceXML初学者编写,其由浅入深地介绍VoiceXML的主要内容,包括VoiceXML的历史背景与现状、VoiceXML的脚本设计基础等。
第一章 VoiceXML2.0简介
VoiceXML(语音可扩展标记语言)是用来描述语音对话过程的标记语言。其定义了如何使用语音识别、语音合成、互联网访问、数据库访问、语音文件播放、DTMF输入等功能开发一个完整的语音应用系统。用VoiceXML开发的语音应用系统,不仅可以完全代替传统CTI(计算机电话集成) 系统所能提供的功能,而且还可以使应用系统开发过程极其简单快捷、系统有极高的可扩展性、可维护性、可移植性、可重用性和开放性。
1.1 VoiceXML的历史与背景
VoiceXML的出现最早可以追溯到1995在AT&T公司开发的基于XML的电话标记语言(PML)。随后,AT&T、Lucent Technologies以及Motorola公司分别各自着手开发自己的类似于PML的语音标记语言。到了1998年,W3C组织的“语音浏览器”会议上,AT&T和Lucent Technologies分别展现了他们各自的类同PML的标记语言、Motorola和IBM公司分别推出VoxML和SpeechML、HP和PipeBeach公司也分别推出TalkML和VoiceHTML。AT&T、IBM、Lucent Technoglies、以及Motorola随后成立了VoiceXML论坛,其目的是为了建立一个语音对话应用系统的国际标准。到了2000年,AT&T、IBM、Lucent Technologies、以及Motorola通过W3C协会联合推出语音可扩展标记语言VoiceXML1.0。该标准一经推出,便得到相关行业众多公司的响应。经过两年多的论证和实际系统验证,VoiceXML2.0最终草案在2003年推出。
1.2 为什么要用VoiceXML?
VoiceXML的推出给电话语音系统带来全新的应用和开发概念,使传统的CTI技术从繁琐、封闭的模式中走了出来,使广大的语音系统开发人员可以用极其简单的方法实现复杂系统的开发。
完全替代传统CTI:传统的电话语音系统典型的工作方式是接受用户的按键输入和语音文件播放、跟据用户的需求为用户提供相应服务。基于VoiceXML开发的电话语音系统完全可以替代传统CTI系统所能提供的功能。
语音识别功能:基于VoiceXML开发的电话语音系统除了接受用户的按键输入之外,还可以接受用户的语音输入。系统通过语音识别功能实现对用户输入语音到文本的转换。这对于许多仅用按键输入方式而无法解决或解决起来很繁琐的应用领域很有实用意义。
语音合成功能:基于VoiceXML开发的电话语音系统除了能够播放预先录制的语音文件之外,还可以将系统中的文本转换成语音的方式播放给用户。这对于那些需要播报即时消息和可变信息等的应用领域很有实用价值。
与互联网联结:长期以来,公用电话网和互联网是分离的。随着互联网技术的迅速发展,互联网信息与日俱增,以及互联网相关服务的日新月异,将互联网与公用电话网整合为一体,使广大的电话用户也能享受到互联网提供的信息和服务显得越来越有吸引力。VoiceXML使公用电话网与互联网有机地结合,使两网的信息能够相互流动。例如,电话语音流言可以通过互联网以电子邮件的方式传送到目的地;互联网上的新闻可以通过电话播放给用户等。
灵活的数据库接口:许多电话语音应用系统离不开数据库访问。VoiceXM通过脚本方式提供灵活的数据库接口,使得应用系统可以方便地访问各种数据库,如:Microsoft SQL Server 2000、Oracle、Sybase、Microsoft Access、MySQL等。
简化开发过程:用VoiceXML将电话语音应用系统开发人员从繁琐的编码细节中解脱了出来。开发人员不需要了解相关软件(如语音识别和语音合成)和硬件(如语音卡)API的编程接口,只需要把精力放在应用领域的业务流程上。开发过程轻松快捷、开发周期大大缩短(7-10倍)。VoiceXML使开发人员得以用简单的方法实现复杂的工作。
除此之外,基于VoiceXML开发的语音应用系统具有很高的系统可扩展性、可维护性、可移植性、可重用性和开放性。
1.3 VoiceXML现状
自2000年VoiceXML1.0推出以后经过不断的修改,于2003年1月推出最新的VoiceXML2.0最终推荐版本。根据W3C称,该版本将会比较稳定,鼓励各VoiceXML浏览器生产厂家可以根据此版本进行开发。预计不久VoiceXML2.0将会正式推出。
中国目前也有一些相关行业的公司在着手开发有关VoiceXML的产品。深圳市华琛科技有限公司是国内领先的VoiceXML语音平台生产厂家。在华琛公司的VoPromote平台上,开发人员可以用VoiceXML2.0脚本语言开发应用于各行业的电话语音系统。
1.4 小结
VoiceXML标准的出现给电话语音应用系统的开发带来了全新的概念,同时还大大扩展了语音应用系统的应用范围。可以预计,VoiceXML标准的推广将会极大地推动电话语音应用系统的开发和应用,将给广大的电话用户带来深远的影响。
第二章 VoiceXML2.0基础
本章将简单介绍VoiceXML2.0脚本文件的结构,使初学者对VoiceXML有一个大概的了解。
2.1 VoiceXML2.0脚本结构
现在让我们来看一个简单的例子(行号是为了本文引用方便,其不应该出现在VoiceXML脚本文件中):
1
2 http://www.w3.org/2001/vxml">
3
8
当电话接通,用户将会听到由语音合成的“欢迎使用华琛公司语音系统!”。第1,2和8行是每个VoiceXML脚本文件都应该包含的;第3到第7行是一个对话表,用…标志;在该对话表中有一个块…,其包含了要输出的内容。
如果不用语音合成功能,上面的例子还可以写成:
1
2 http://www.w3.org/2001/vxml">
3
8
当电话一接通,用户将会听到预先录制好的语音文件welcome.wav的内容。
用VoiceXML编写语音应用程序,不仅可以方便地实现语音文件以及文本的播放(通过语音合成的功能),而且还可以方便地实现按键输入以及语音输入(通过语音识别的功能)。VoiceXML定义两种基本输入方式:菜单
| 2.2 VoiceXML2.0元素集 |
|
|
给变量赋值。 |
|
播放语音文件。 |
|
无用户交互的可执行代码块。 |
|
捕获一个事件。 |
|
定义一个菜单项。 |
|
清除一个或多个框架项。 |
|
结束一次通话。 |
|
用于元素中的else。 |
|
用于元素中的elseif。 |
|
列举菜单选项。 |
|
捕获一个事件。 |
|
退出一次通话。 |
|
在框架中申明一个输入域。 |
|
指定当输入域被填充以后需要作的操作。 |
|
提示信息和接受数据的对话框架。 |
|
把控制转向在同一个或不同文档中的对话。 |
|
指定语音识别或DTMF语法。 |
|
捕获一个事件。 |
|
条件逻辑。 |
|
在进入一个双向交互式对话框架时申明初始对话逻辑。 |
|
在所有对话公共链接区域指定控制转向。 |
|
生成调试信息。 |
|
定义菜单对话。 |
|
定义一个元数据项。 |
|
定义元数据信息。 |
|
捕获一个事件。 |
|
捕获一个事件。 |
|
系统扩展的对象。 |
|
在一个输入域中选择一个选项。 |
|
|
|
指定语音合成提示和声音文件输出。 |
|
指定特性值以控制平台设置。 |
|
录音。 |
|
指定重新提示。 |
|
从子对话中返回。 |
|
定义ECMAScript模块。 |
|
调用一个子对话。 |
|
向文件服务器上传数据。 |
|
产生一个事件。 |
|
电话转接。 |
|
在提示中插入一个值。 |
|
声明一个变量。 |
|
VoiceXML文档标识。 | |
|
|
|
2.3 语音识别与语音合成
和可以用来接受用户的语音输入(参见2.1)。当用户通过说话的方式与系统进行交谈时,系统将根据脚本中提供的语法对用户的语音输入进行识别。系统根据识别得到的结果和脚本文件的定义决定下一步的操作。
在某些VoiceXML元素中允许出现要输出的文本,如(参见2.1)。有文件输出时会自动启动语音合成功能以将文本转换成语音并播放给用户。
2.4 VoiceXML与互联网的接口
VoiceXML中每个文件是通过URI访问的。因而,VoiceXML脚本文件、语音文件、语法文件、ASP、PHP文件和数据库等都可以置放在互联网中。
2.4.1 通过URI访问互联网中的VoiceXML脚本文件
1
2 http://www.w3.org/2001/vxml">
3
8
welcome.vxml:
1
2 http://www.w3.org/2001/vxml">
3
8
2.4.2 通过URI访问互联网中的语音文件
1
2 http://www.w3.org/2001/vxml">
3
8
2.4.3 通过URI访问互联网中的语法文件
1
2 http://www.w3.org/2001/vxml">
3
14
example_drinks.grxml:
1
2 http://www.w3.org/2001/06/grammar"
xml:lang="zh" root="DRINK" mode="voice">
3
4
5 - 咖啡咖啡
6 - 茶茶
7 - 牛奶牛奶
8 - 什么都不要什么都不要
9
10
11
2.4.4 通过URI访问互联网中的ASP文件
1
2 http://www.w3.org/2001/vxml">
3
8
通过URI访问互联网中的PHP文件与访问ASP文件类似。
internet_asp.asp:
1
2 file:///VoPromote/deploy/config/vxml2.0.dtd">
3 http://www.w3.org/2001/vxml">
4
14
2.4.5 通过URI访问互联网中的数据库
1
2 http://www.w3.org/2001/vxml">
3
8
internet_database.asp:
1
2 http://www.w3.org/2001/vxml">
3
14
2.5 VoiceXML与数据库的接口
VoiceXML通过其所支持的脚本语言,如ASP、PHP、CGI等访问多种数据库。
在windows操作系统中可以为各种windows支持的数据库连接设置数据源。如果已经为数据库连接设置了相应的数据源,可以这样访问数据库:
Set conn = Server.CreateObject("ADODB.Connection")
Conn.open "dsn=odbc_name;uid=your_uid;pwd=your_pwd"
另外也可以如2.4.5那样直接指定数据库驱动来访问需要的数据库。
总之,ASP、PHP、CGI等所支持的各种访问数据库的接口,VoiceXML都支持,因为VoiceXML支持这些脚本语言。
2.6 小结
用VoiceXML给电话语音应用系统的开发带来全新的概念。开发人员不需要了解语音板卡、语音识别、以及语音合成的API接口,可以任意选择接入不同的数据库,可以不用把时间放在繁琐的编程细节,从而只需把精力放在应用流程的定义。VoiceXML简单易学,尤其是对于有WEB开发经验的开发人员更是轻松。
第三章 VoiceXML2.0脚本设计基础
本章将对VoiceXML2.0元素逐一地进行简单介绍。当VoiceXML脚本文件中需要用到语音识别和语音合成功能时,了解SRGS(Speech Recognition Grammar Specification)语音识别语法标准和SSML(Speech Synthesis Markup Language)语音合成标识语言将有助于语音应用系统的开发。因而,本章除了介绍VoiceXML2.0元素之外,还将简单介绍SRGS1.0和SSML1.0。
3.1 VoiceXML2.0脚本
3.1.1
给一个声明过的变量赋值。在下面的例子中,将“学习VoiceXML”赋值给变量verb。由于的属性expr的值是一个Javascript表达式,用单引号将学习VoiceXML括起来以表示其为字符串而不是变量。下面的例子将输出“我学习VoiceXML”。
1
2 http://www.w3.org/2001/vxml">
3
10
3.1.2
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12476590/viewspace-217056/
,如需转载,请注明出处,否则将追究法律责任。