DIY: 实现自己的中文语音应用

本文介绍了VXML作为描述性语音应用的构建工具,详细解释了如何利用VXML实现语音识别与语音合成,并展示了与JAVA层信息交互的方法,旨在帮助读者构建酷炫的语音控制系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VXML 是 w3 组织提出的用以搭建语音应用的描述性语音。使用 VXML 可以很方便得搭建集成语音识别和语音合成技术的语音应用。本文给出了一个简单的例子介绍 VXML 的两个基本的使用方法——语音识别和语音合成,并且简单介绍了 VXML 与 JAVA 层信息交互的方法。相信通过本文的介绍,大家就可以搭建出很酷的语音控制系统。

  语音技术

  微软公司董事长比尔盖茨曾不止一次的提出,语音技术将越来越多得改变我们的生活。新一代的搜索引擎也将使用语音最为最终的输入手段;电脑键盘的作用将逐步减少,今后人们使用电脑时将不再是通过键盘输入文字,而是用语音来输入文字。

  不可否认的是,如今的语音技术还未达到如他所述的成熟程度。但是一些简单的应用,例如语音拨号的功能已经被大家所接受。基于语音技术的自动应答系统在欧美已然流行开来,帮助像银行,移动运营商这样的大型服务性机构搭建无人电话语音服务,以此减少接线员的工作量,给大家的生活带来便利。

  VXML 简介

  Voice eXtensible Markup Language(简称 VXML)是被用来创建语音对话系统,可以调用语音合成以及语音识别服务,可以用来记录语音录入和连接电话系统。创建 VXML 语音的主要目的就是用 Web 开发的理念来开发交互式的语音应用。VXML 提供了基于 Menu 和基于 Form 的两套框架,整合了语音识别和语音合成两个关键服务,使得语音应用的开发变得更为方便和快捷。

  VXML 的运行环境

  VXML 和普通的标记语言一样,需要有浏览器进行解析;还需要提供语音识别和语音合成服务的应用服务器;有时也需要有 http 服务器提供文档服务;当然,如果需要与电话系统相连,就必须加上 VOIP (网络电话)的支持。如下图所示的就是 VXML 的运行环境:

  图 1. VXML 运行环境

  一个企业级应用的系统框架

  IVR (interactive voice-response services) 也就是自动应答服务,是使用 VXML 的典型企业级应用。IVR 和使用者通过电话,按键 (DTMF) 互动,如语音订票,语音查询,语音投票等。普通的 IVR 都是支持 VXML 的解析和提供了 sip 协议的支持,通过和 ASR ( 语音识别 ) 应用服务器以及 TTS( 语音合成 ) 应用服务器的集成,可以实现几乎所有的 VXML 封装的操作。

  企业级的 VXML 应用需要如下的体系结构,以使用 IBM Voice Server (WVS) 为例:

  图 2. 一个 VXML 具体应用的例子

  上图中的 IVR 事实上就是 VXML 解析器,通过解析 VXML,分发相应的工作给 WVS ,实现 VXML 封装的语音识别和语音合成的功能。

  两个开源的实验环境

  尝试 VXML,可以使用开源的项目 OpenVXI (见参考资源) 。OpenVXI 提供的是完整的 VXML 解析服务,同时也提供了有限语言的 TTS 支持。虽然暂时来看, OpenVXI 没有提供 ASR 的实现,但是 OpenVXI 提供了方便的回调函数的接口,因此可以很方便的嵌入外部 ASR 和 TTS 的服务。

  尝试 VXML ,另一个选择是使用一个名为 Tadpole (见参考资源) 的 Firefox 浏览器上的开源插件。通过 Tadpole 的帮助, Firefox 平台因此具有 VXML 解析浏览器的功能。此架构的缺点是只支持 XHTML-Voice 标记语言,这个语言只能说是 VXML 语言的一个子集。

  搭建自己的 VXML 中文应用

  从一个简单的例子开始

  清单 1. 一个典型的 VXML 的例子

双击代码全选
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<? xml version = "1.0" encoding = "UTF-8" ?>
 
< vxml version = "2.0" xml:lang = "zh-CN" xmlns = "http://www.w3.org/2001/vxml" >
 < meta name = "GENERATOR" content = "Voice demo" />
 
< form id = "head" >
    < block >
        请问您需要何种服务?
        < audio src = "BEEP.WAV" />
        < goto next = "#main" />
    </ block >
</ form >
 
< menu id = "main" >
 < choice next = "menu_1.jsp" >
 开空调
 </ choice >
< choice dtmf = "1" next = "menu_1.vxml" />
 
< choice next = "menu_2.jsp " >
 开洗澡水        
 </ choice >
 < choice dtmf = "2" next = "menu_2.vxml" />
 
 < choice next = "menu_3.jsp" >
 打开音响
 </ choice >
 < choice dtmf = "3" next = "menu_3.vxml" />
 
< catch event = "noinput" count = "1" >
 < prompt > 请问您需要何种服务? < audio src = "BEEP.WAV" /> </ prompt >
 </ catch >
 
 < catch event = "noinput" count = "2" >
 < submit next = "menu_whole.vxml" />
 </ catch >
 
 < catch event = "nomatch" >
    < prompt > 对不起,我没有听清,请再重复一遍。 < audio src = "BEEP.WAV" /> </ prompt >
 </ catch >
 
</ menu >
</ vxml >

找了很久的VoiceXml开发工具,小巧而实用,由华为开发,希望对大家有用。   VoiceXML是建立于XML 语言规范基础之上,是一种应用于语音浏览的标记语言。利用VoiceXML可以建立基于WEB的语音应用和服务。本文简要描述了VoiceXML规范及相关术语,并给出了一种基于VoiceXML的语音与数据集成模型,它主要由语音浏览器、语音识别语音合成和VoiceXML网关等部分组成。应用该模型,可以方便地建立各种基于WEB的语音应用系统。随着电子商务、客户服务等信息服务的普遍化,交互式语音应答系统(IVR ,Interactive Voice Response)在各种商业系统中的应用越来越广泛。然而这种语音交互方式存在以下缺点:(1)移植性、灵活性差;(2)在实际系统上做应用开发的难度很大,特别是涉及到话音流程的编写及调试问题;(3)无法综合利用现在的WEB资源。而将IVR系统Internet化,可以增加系统可重用的机会,降低成本,这必将成为今后语音应用的一种主要趋势。另一方面,到目前为止,人们从Internet获取各种资源时,还只能是借助计算机来实现。而实际上,电话具有比计算机更高的普及率,如果允许人们通过电话来访问Internet的资源,那么这对于Internet的应用发展必将是一次质的飞跃。在这类应用前景的驱动下,VoiceXML 标准被提出来了,它是由World Wide Web Consortium (W3C)制定的。利用这种技术,用户可以通过电话按键或语音来访问Internet上的各种资源,它是语音浏览技术以及语音互联网的核心。与XML标准类似,VoiceXML是一种基于文本的语言,它只定义了数据的存取方式,用户必须编写程序,以便能解释、生成、传送VoiceXML文档。 VoiceXML为语音应用领域展现了一个广阔的未来,在语音门户、语音呼叫中心(Call Center) 、语音信息服务、语音电子商务等领域有着广泛的应用。而这些应用或服务可以很容易地和原有的数据系统结合起来,甚至可以轻易地从原有的各类应用中延展出来。使用VoiceXML的应用系统中,不要求用户学习复杂的高级语言,就可灵活扩充新业务。而无需再与开发商联系,重新定制开发,只需要编写几个 VoiceXML页面就可以实现新的业务流程。而且编制好的VoiceXML脚本可以随时随地加入到系统中,而不会影响系统的正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值