性格决定命运 气度左右格局 拼搏方能取胜 谦虚才会进步

IVR-2 [Voice XML规范详细描述5]

上一篇 / 下一篇  2008-03-25 10:06:19 / 个人分类:做着

 
第三章  User Input(Grammars)
 
第一节 Speech Grammars
 
    <grammar>元素用于提供一个语音语法:
      ·该语法指定了一系列要匹配的短语,用户可能说出这些短语用于执行一个操作或提供一些信息。
      ·对于一个要匹配的短语,该语法返回一个相应的语义解释。返回的可以是一个简单的值(例如一个字符串),一组成对的属性――值(例如年、月、日),或一个嵌套的对象(对于复杂的请求)。
    <grammar>元素适用于满足上述要求的任意的语法格式。VoiceXML平台必须至少支持一种通用的格式,即W3C SRGS的XML格式。VoiceXML平台应该支持W3C SRGS的ABNF格式。VoiceXML平台可以选择支持SRGS以外的语法格式。例如,平台可能借助<grammar>元素对PCDATA的支持来嵌入一个专有的语法,或使用src或type属性引用一个外部的语法。
    VoiceXML平台必须是一个合格的XML格式的语法处理器,如W3C SRGS中定义的。虽然这样使得平台要处理文档中定义的一个或多个“xml:lang”属性,但是并不要求平台必须是多语言的。当遇到一种不支持的语言时,平台要抛出error.unsupported.language事件,该事件在它的"_message"变量中指定了这种不支持的语言。
    SRGS的XML格式的元素
    下面是在W3C SRGS的XML格式中定义的元素,它们在VoiceXML2.0中是可用的。本文档没有重复定义这些元素,请参考W3C SRGS中的定义和例子。
元素作用章节链接
<grammar>XML格式语法的根元素。
<meta>等价于HTTP元内容的头部声明。
<metadata>XML元数据内容的头部声明。
<lexicon>发音词典的头部声明。
<rule>定义一条语法展开规则。
<token>定义一个可作为输入的词或其他实体。
<ruleref>引用一条本地或外部定义的规则。
<item>定义一个可选的、重复的或可能的展开项。
<one-of>定义一组可供选择的规则展开项。
<example>包含在一个规则定义中的元素,该元素提供了一个匹配该规则的输入的例子。
<tag>定义一个任意的字符串,该字符串可作为该展开规则的语义解释。
表27:SRGS(XML 格式)的元素
 
一、Inline Grammars
    <grammar>元素可用于指定一个联机语法或外部语法。联机语法由<grammar>元素的内容指定,它定义了一个完整的语法:
<grammar type="media-type" mode="voice">
inline speech grammar
</grammar>
    在这种情况下,有必要把内容封装在XML的CDATA段中。对于联机语法,<grammar>元素的type属性指定了一个媒体类型,该媒体类型控制着<grammar>元素内容的解释。
    下面是一个联机语法的例子,是W3C SRGS的XML格式的:
<grammar mode="voice" xml:lang="en-US" version="1.0" root="command">
<!-- Command is an action on an object -->
<!-- e.g. "open a window" -->
<rule id="command" scope="public">
<ruleref uri="#action"/> <ruleref uri="#object"/>
</rule>
<rule id="action">
<one-of>
<item> open </item>
<item> close </item>
<item> delete </item>
<item> move </item>
</one-of>
</rule>
<rule id="object">
<item repeat="0-1">
<one-of> <item> the </item> <item> a </item> </one-of>
<one-of>
<item> window </item>
<item> file </item>
<item> menu </item>
</one-of>
</rule>
</grammar>
    下面这个语法和上面的效果是一样的,不过它是W3C SRGS的ABNF格式的。因为VoiceXML平台不是必须支持这种格式的,所以这种格式的语法可移植性比较差。
<grammar mode="voice" type="application/srgs">
#ABNF 1.0;
language en-US;
mode voice;
root $command;
public $command = $action $object;
$action = open | close | delete | move;
$object = [the | a] (window | file | menu);
</grammar>
 
二、External Grammars
    外部语法是由form的<grammar>元素指定的。
<grammar src="URI" type="media-type"/>
    在这种情况下,属性type是可选的,因为如果没有指定该属性,解释器环境会试图动态的确定它的类型(例如,使用服务器特定的媒体类型,文件扩展名或内容自检)。
    如果指定了src属性,且有一个联机语法作为该<grammar>元素的内容,则抛出error.badfetch事件。
    下面的例子引用了一个W3C SRGS的XML格式的外部语法。
<grammar type="application/srgs+xml" src="http://www.grammar.example.com/date.grxml"/>
    下面的例子引用了一个W3C SRGS的ABNF格式的外部语法。和上面的例子的效果是一样的。
<grammar type="application/srgs" src="http://www.grammar.example.com/date.gram"/>
 
三、Grammar Weight
    <grammar>元素的weight属性指定了该语法的权重。
<grammar weight="0.6" src="form.grxml" type="application/srgs+xml"/>
    <grammar>元素,包括<link>、<field>和<form>元素中的,都有这个属性,语法可以是联机语法、外部语法或内置语法。
    属性weight遵循W3C SRGS中关于weight的定义。属性weight的值是一个简单的没有指数的正的浮点数。合法的格式有“n”,“n.”,“.n” 和“n.n”,其中n是一位或多位数字的序列。
    在语音识别的搜索范围内,weight是影响语法被选中的可能性的一个因素。Weight属性的值为1.0时相当于没有指定weight属性。Weight属性值大于1.0时,该语法被选中的可能性就比较大。反之,weight属性值小于1.0时,可能性就比较小。如果没有指定该属性,则所有激活的语法的可能性一样。
<link event="help">
<grammar weight="0.5" mode="voice" version="1.0" root="help">
<rule id="help" scope="public">
<item repeat="0-1">Please</item> help
</rule>
</grammar>
</link>
<form>
<grammar src="form.grxml" type="application/srgs+xml"/>
<field name="expireDate">
<grammar weight="1.2" src="http://www.example.org/grammar/date"/>
</field>
</form>
    在上面的例子中,weight的语义等同于下面的XML语法:
<grammar root="r1" type="application/srgs+xml">
<rule id="r1">
<one-of>
<item weight="0.5"> <ruleref uri="#help"/> </item>
<item weight="1.0"> <ruleref uri="form.grxml"/> </item>
<item weight="1.2"> <ruleref uri="http://www.example.org/grammar/date"/> </item>
</one-of>
</rule>
<rule id="help">
<item repeat="0-1">Please</item> help
</rule>
</grammar>
    隐式的语法,如<option>元素中的,不支持weight。如果需要用weight属性,请使用<grammar>元素代替隐式语法控制weight。
    语法的weight属性值只影响语法的处理,不会直接影响到语法结果的后期处理,包括当用户的输入匹配了多个激活的语法时的语法优先权(见3.1.4节)。
    Weight属性对DTMF语法没有影响(见3.1.2节)。在<grammar>元素中,如果属性mode为dtmf时,则该<grammar>元素指定的weight属性被忽略。
<!-- weight will be ignored -->
<grammar mode="dtmf" weight="0.3" src="http://www.example.org/dtmf/number"/>
    恰当的weight值是很难确定的。猜测的weight值对于提高识别的性能没有任何帮助。有效的weight值是通过对自然语言和特定平台上的原始数据长期研究得到的。此外,语法的weight是依赖于平台的。注意,不同的ASR引擎对于相同的weight值可能有不同的理解。因此,在一个特定平台上工作得好好的weight值在其他的平台上可能会得到不同的结果。
 
四、Grammar Element
    <grammar>元素从W3C SRGS继承的属性:
version它定义了语法的版本号。
xml:lang该语法的语言标识符(例如,“fr-CA”表示 加拿**语)。如果缺省,将从文档中继承。
mode其值为voice或dtmf。说明该语法是匹配语音的或是匹配 DTMF 的输入。
root定义该语法的根规则。
tag-format定义该语法中所有的<tag>元素的内容格式。
xml:base定义一个基本URI,用于解析该语法中的相对URI。该属性的优先权高于<vxml>元素中的相应属性。如果缺省,则从文档中继承。
表28:<grammar>元素从SRGS中继承的属性
    上述属性的用法和解释由以下几个方面决定:
      1、SRGS的XML格式的联机语法:由SRGS决定。SRGS规定属性version是必须的,且它的值为"1.0";属性root是必须的,且它的值确定了要激活哪一条规则;其他的属性是可选的。
      2、SRGS的ABNF格式的联机语法:平台必须忽略上述任何指定的属性。
      3、SRGS的XML和ABNF格式的外部语法:平台必须忽略上述任何指定的属性。
      4、所有其他的语法类型:任何指定的属性的用法和解释是依赖于平台的。
    <grammar>元素中VoiceXML2.0增加的属性:
src指定一个URI。如果引用一个外部语法,该属性指定了该语法的位置和该语法中的一个规则名(可选的)。该URI被作为一个规则引用来解释,详见SRGS的2.2节。但是,并不是所有的规则引用的形式都被VoiceXML允许。规则引用的能力将在后面详细描述。
scope值为“document”或“dialog”。如果为“document”,则该语法在当前文档(和相关的应用叶文档)所有的dialog中都是激活的。如果值为“dialog”,则该语法只在该form中激活。如果缺省,则该语法的作用域由它的父元素决定。关于语法作用域和优先权的描述见3.1.3节。
type该语法的媒体类型。该属性值的优先权高于其他可能存在的媒体类型(例如HTTP或RTSP交换中的“Content-type”,或文件扩展名)。如果该属性缺省,解释器环境将试图动态的确定它的媒体类型(例如,使用服务器特定的媒体类型、文件扩展名或内容自检)。如果语法的内容包含在该元素中,且没有指定该属性,就假定该媒体类型为一个XML语法。 如果该语法源没有包含选定媒体类型的正确的内容,当使用该语法时,抛出一个错误W3C的XML格式语法暂定的媒体类型为“application/srgs+xml”,ABNF格式语法暂定的媒体类型为“application/srgs”。
weight指定该语法的weight。见3.1.1.3节。
fetchhint见6.1节。默认为grammarfetchhint property。
fetchtimeout见6.1节。默认为fetchtimeout property。
maxage见6.1节。默认为grammarmaxage property。
maxstale见6.1节。默认为grammarmaxstale property。
表29:<grammar>元素中VoiceXML2.0增加的属性
      必须指定属性src或一个联机语法(不是指定两个),否则会抛出一个error.badfetch事件。
    VoiceXML 2.0也扩展可<grammar>元素,允许在PCDATA中嵌入各种格式的语法,包括W3C SRGS的XML格式。
    当引用一个外部语法时,src属性值为一个URI,它指定了该语法的位置。URI可以带一个段,指定规则名。SRGS的2.2节定义了规则引用的几种形式。下面是VoiceXML中<grammar>元素允许的形式。
      · 在外部语法中引用一个规则:src属性的值是一个绝对或相对的URI,该URI带有一个段,它执行一个外部语法的相应规则。这种形式的规则引用遵循SRGS 2.2节中的定义。如果该URI不能被获取,或该规则名不存在,或该规则名在指定的语法中不是一个public(可激活的)规则,则抛出error.badfetch。
      · 引用外部语法的根规则:src属性的值是一个绝对或相对的URI,它引用了一个外部语法,但是没有指定一个规则名。这种形式隐式的引用了该语法的根规则,正如SRGS 2.2节中的定义。如果该URI不能被获取,或如果该语法不能被它得root引用(见SRGS的4.7节),则抛出一个error.badfetch事件。
      · 引用本地语法:只包含段的URI是不被允许的(见SRGS2.2.1中的定义)。如果src属性的值为一个段, 抛出一个error.semantic事件。
      · 引用特殊的规则:虽然联机语法可以引用SRGF的特殊规则(NULL,VOID,GARBAGE),但是VoiceXML并不支持<grammar>元素引用特殊的规则(见SRGS的2.2.3节)。因为没有任何句法支持这种形式,因此也不会产生任何错误。
 
 
 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar