以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 XML在语音技术中的应用 』 (http://bbs.xml.org.cn/list.asp?boardid=47) ---- VXML语音识别 *.gsl文件格式介绍 (http://bbs.xml.org.cn/dispbbs.asp?boardid=47&rootid=&id=30401) |
-- 作者:zhu_ruixian -- 发布时间:4/11/2006 10:24:00 PM -- VXML语音识别 *.gsl文件格式介绍 GSL文件是VXML语音识别中用到的一种特定格式的文件。其格式如下: 1.GSL内部定义和外部定义. 内部定义是在VXML文档中完全用<grammer>元素定义.外部定义是定义一个外部文件,并在VXML中引用.在外部GSL文档中,所有的规则必须命名.在内部GSL定义中,如果只有一个语音识别规则,可以不命名,如果有多个语音识别规则,每一个都要命名. GSL推荐的扩展名为.gsl.解释器也识别.grammar的扩展名.如果直接在VXML文档中定义grammar,一定要用CDATA括起来,否则VXML文档无法识别.如下: <grammar ...usage attributes...> <![CDATA[ ...grammar header... ...grammar rule definitions... ]]> </grammar> 外部GSL文件不应该包含CDATA部分,格式如下: ;GSL2.0 ...grammar rule definitions... 2.GSL中的注释。 GSL中的注释可以出现在任何地方,注释用分号开始,分号后的内容将会被全部忽略.例如: ; this is a comment RuleName [rule expansion] ; this is a comment, after a non-comment 3.GSL中的保留字. AND-n, OR-n, OP-n, KC-n, PC-n 以上是GSL的保留字,不能够将它们定义为规则的名字.n是个整数. 4.GSL的头部声明. GSL文件可以用一个self-identifying header开始,来说明GSL grammar的版本。可以不写,要是有必须用 ;GSL2.0 开头。ABNF和XML语法都限制一个grammer元素只能识别语音输入和DTMF中的一种,而不允许一个grammer同时包括语音输入和DTMF。GSL文件没有这个限制,任何的GSL语法都可以在同一个grammar元素,甚至同一个识别规则中,同时包括DTMF和语音输入。XML默认使用的是第一个public 语法规则。 5.基本规则定义. 一个语法规则,包含两个部分。 第一规则的名字,这个名字可以在别的语法规则中引用。 第二 和该规则相关的可能的话音输入。 大多数的语法规则,包括一系列的用户可能说的词语,语法规则扩展部分,一般用[]括起来。例如: city[南京 "北京" 呼和浩特] 该规则的名字是city,语法规则扩展部分是可选的名字。如果用户说,南京 ,北京或呼和浩特,该语法就匹配上了。语法名称是一个字符串,用来标示这个语法规则。同一个grammar中的语法规则名称,必须不一样,但是相同的语法规则名称可以用在不同的grammar中。外部定义语法,所有的语法规则必须有名字,内部语法定义中,如果只有一个语法规则,可以没有名字,否则都必须有名字。语音规则名称大小写敏感,下面的字符都可以用在语音规则名称中。 -(连字符) _(下划线) ‘(单引号) @(at符) .(句号) 特殊的语法规则。GSL有三个预定义的规则。 <special:passthrough> <special:roadblock> <special:resistor> NULL 和<special:passthrough>代表的意义一样。VOID 和<special:roadblock>代表的意义一样。定义在grammar中的语法规则,不能和他们重名。 <special:passthrough>, NULL 和用户什么没有输入匹配。你可以用下面的grammer来匹配,“北京”“上海”和没有输入。 Trigger = [NULL 北京 上海] <special:roadblock>, VOID 定义的语法规则将不会被匹配。如,任何输入都不会匹配下面的规则。 Trigger = (VOID 北京 上海]) <special:resistor?weight=n> 用来标示语音输入的可能性,权值n是标示输入可能性的一个浮点数(floating point number) 。weight的值低于1,将会减少该规则匹配的可能性,weight值越接近零的,规则越不容易被匹配。大于1,将会增加匹配的可能性。 使用上面三种规则,可以动态的改变规则。 6.语法规则定义的作用域。 每一个规则都有一个作用域,private 或 public.public 修饰的语法规则对外部可见,外部引用可以用名称指定一个public 语法规则。private语法规则只在 包含它的grammar中可见,而且只能被在同一个grammar中的其他的语法规则引用。 把一个语法规则标示为public的 格式为:RuleName:public ruleExpansion 没有标示为public 的就是private的语法。如果一个grammar中,没有一个语法规则标示为public,那么所有的语法规则都是public的。如果有一个标示了public ,那么其余的都是private。GSL中的根语法规则是第一个标示为public的语法规则。如果都没标示,默认是第一个。下面的例子,定义了一个public 语法规则Snapper,和两个private语法规则,SnapperType和FishColors。根语法规则是Snapper。 SnapperType [mutton FishColors] FishColors [black gray red] Snapper:public (SnapperType snapper) 7.语法规则的递归。 GSL文件中可以定义直接或间接引用自身的语法规则。 ; Rule that refers to itself directly Digits [Digit (Digit Digits)] Digit [0 1 2 3 4 5 6 7 8 9] ; Rule that indirectly refers to itself NounPhrase (Noun ?PrepositionalPhrase) PrepositionalPhrase (Preposition NounPhrase) 写此类语法时要注意,GSL不支持左递归,也就是说不能定义第一个子部分包含语法规则本身的语法规则。这是为了确保解释器不会进入无穷递归,来匹配一个语法规则。 ; 合法 Digits [Digit (Digit Digits)] Digits [(Digit Digits) Digit] ; 不合法 Digits [(Digits Digit) Digit] Digits [Digit (Digits Digit)] 语音规则扩展部分。声音标示符(英语)应该使用小写字母,数字,-(连字符) _(下划线) ‘(单引号) @(at符) .(句号).如果使用其他的特殊符号(空格除外),必须用“”双引号括起来。下面是几条简单地规则: DTMF标示符。 语法规则的综合使用。 可以无限制的写下去,但是用户不可能永远地说下去,如果对结果设定范围,语音识别效果会更好。用户不可能说重复的名字。把上面的改为如下,只说1-5次。 |
-- 作者:careprad -- 发布时间:5/20/2008 1:13:00 PM -- 我有个很疑惑的问题,一直没找到filed中类型为字符串的输入 这是什么原因,难道是必须明确语法才能输入字符串类型? |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
3,601.563ms |