VoiceXML2.0规范

来源:互联网 发布:动态加载js文件并执行 编辑:程序博客网 时间:2024/05/10 17:00
第一章  概述[第一章][前一章][后一章]     这篇文档详细描述了VoiceXML,即语音扩展标记语言。第一章介绍它的背景、基本概念和用途;第二章介绍form的对话框结构(dialog constructs)、menu、link和它们的解释机制FIA(Form Interpretation Algorithm);第三章介绍用户的DTMF(Dual Tone Multi-Frequency)和语音输入用到的语法;第四章介绍系统输出用到的语音合成和预先录制的音频;第五章介绍对话框(Dialog)流程的控制,包括变量、事件和可执行元素;第六章介绍各种环境特性,例如参数(Parameter)、属性(Property)和资源处理;附录提供了包括VoiceXML计划、FIA(Form Interpretation Algorithm)、音频文件格式等附加信息。     VoiceXML最早出现于1995年,作为一种基于XML对话的设计语言,它的出现是为了简化AT&T一个名为PML(Phone Markup Language)项目中语音识别程序的开发过程。经过AT&T的重新组织,AT&T,Lucent and Motorola的开发团队继续致力于开发他们的类PML语言。     1998年,W3C主办了一次关于语音浏览器的会议。此时,AT&T and Lucent对于最开始的PML都有各自不同的发展,Motorola开发了VoXML,IBM正在开发它自己的SpeechML。此次会议的其他与会者也正在开发类似的语言,例如HP的TalkML和PipeBeach的VoiceHTML。     于是AT&T、IBM、Lucent和Motorola共同组织了VoiceXML论坛,它的任务是定义一种标准的对话设计语言,使开发者可以用它来创建会话式的应用程序。他们选择XML作为他们工作的基础,因为他们很清楚,XML是技术发展的趋势。     在2000年,VoiceXML论坛发布了VoiceXML 1.0。此后不久,VoiceXML 1.0被提交给W3C(World Wide Web Consortium)作为一种新的国际标准。VoiceXML 2.0就是W3C的成员单位、其他的W3C工作组和公众的共同努力的结果。     熟悉VoiceXML1.0的开发者可直接到附录,那里总结了VoiceXML2.0和VoiceXML1.0的差别。 第一节 介绍 第二节  第三节  第四节  第五节     VoiceXML是用来创建音频对话的,主要包括语音合成、数字化音频、语音识别、DTMF按键输入识别、录音、通话、混合主动式会话。它的主要作用是把基于网络的开发和信息这两者的优势引入语音应答系统。     这里有两个简短的例子,第一个例子是“Hello World”: 
      <?xml version="1.0" encoding="UTF-8"?>
      <vxml xmlns="http://www.w3.org/2001/vxml"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.w3.org/2001/vxml
               http://www.w3.org/TR/voicexml20/vxml.xsd"
                version="2.0">
        <form>
          <block>Hello World!</block>
        </form>
      </vxml>
     最上层的元素是<vxml>,它主要是作为dialog的容器。在VoiceXML里有两种dialog:form和menu 。form用来输出提示信息和收集输入信息,menu提供一些choice,以决定下一步要做什么。这个例子里有一个form,它包含了一个block,这个block把“Hello World!”合成语音,并输出给用户。由于这个form没有指定下一个dialog,因此,这次会话结束。     第二个例子要求用户选择一种饮料,然后把它提交给服务器端的一个脚本。 
      <?xml version="1.0" encoding="UTF-8"?>
      <vxml xmlns="http://www.w3.org/2001/vxml"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.w3.org/2001/vxml
               http://www.w3.org/TR/voicexml20/vxml.xsd"
                version="2.0">
        <form>
         <field name="drink">
           <prompt>Would you like coffee, tea, milk, or nothing?</prompt>
           <grammar src="drink.grxml" type="application/srgs+xml"/>
         <block>
           <submit next="http://www.drink.example.com/drink2.asp"/>
         </block>
         </field>
        </form>
      </vxml>
     field是一个输入域,用户必须给field提供一个值,否则就不可能进行到form中的下一个元素。下面是这个例子的一个简单的人机交互: 
      C (computer): Would you like coffee, tea, milk, or nothing?
      H (human): Orange juice.
      C: I did not understand what you said. (a platform-specific default message.) 
      C: Would you like coffee, tea, milk, or nothing?
      H: Tea
      C: (continues in document drink2.asp)