性格决定命运 气度左右格局 拼搏方能取胜 谦虚才会进步
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中的定义和例子。 | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
| 表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继承的属性: | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
| 表28:<grammar>元素从SRGS中继承的属性 | |||||||||||||||||||||||||||||||||||||
| 上述属性的用法和解释由以下几个方面决定: | |||||||||||||||||||||||||||||||||||||
| 1、SRGS的XML格式的联机语法:由SRGS决定。SRGS规定属性version是必须的,且它的值为"1.0";属性root是必须的,且它的值确定了要激活哪一条规则;其他的属性是可选的。 | |||||||||||||||||||||||||||||||||||||
| 2、SRGS的ABNF格式的联机语法:平台必须忽略上述任何指定的属性。 | |||||||||||||||||||||||||||||||||||||
| 3、SRGS的XML和ABNF格式的外部语法:平台必须忽略上述任何指定的属性。 | |||||||||||||||||||||||||||||||||||||
| 4、所有其他的语法类型:任何指定的属性的用法和解释是依赖于平台的。 | |||||||||||||||||||||||||||||||||||||
| <grammar>元素中VoiceXML2.0增加的属性: | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
| 表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: