新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> VoiceXML, CCXML, OpenVXI
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML在语音技术中的应用 』 → VXML语音识别       *.gsl文件格式介绍 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 10622 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: VXML语音识别       *.gsl文件格式介绍 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     zhu_ruixian 帅哥哟,离线,有人找我吗?射手座1983-12-2
      
      
      威望:2
      等级:大二期末(Java考了96分!)
      文章:406
      积分:3471
      门派:W3CHINA.ORG
      注册:2006/3/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给zhu_ruixian发送一个短消息 把zhu_ruixian加入好友 查看zhu_ruixian的个人资料 搜索zhu_ruixian在『 XML在语音技术中的应用 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看zhu_ruixian的博客楼主
    发贴心情 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符)  .(句号).如果使用其他的特殊符号(空格除外),必须用“”双引号括起来。下面是几条简单地规则:
      1。避免缩写。例如,用usa 代替 USA ,用vxml代替 VXML。
      2。展开缩写。例如,用street代替st.。用doctor代替dr.。
      3。把标点拼出来。
      4。把大于9的数拼出来。

    DTMF标示符。
    键 DTMF标示符
    0 dtmf-0
    1 dtmf-1
    2 dtmf-2
    3 dtmf-3
    4 dtmf-4
    5 dtmf-5
    6 dtmf-6
    7 dtmf-7
    8 dtmf-8
    9 dtmf-9
    * dtmf-star
    # dtmf-pound
    例如:[(小王)(dtmf-4 dtmf-9 dtmf-7 dtmf-3)]
           {<emp 小王>}
    用户或者说“小王”或者连续的按4973 都能正确匹配。
    语法规则的引用。
           引用                         格式
    本地语义规则                         语义规则名
    本地语义规则的变量                   语义规则名:变量名
    用URL指定根语义规则名               <grammarURI>
    用URL指定语义规则                   <grammarURI#RuleName>
    特定规则                           <special:passthrough>, NULL
       <special:roadblock>, VOID
       <special:resistor?weight=n>
    PrimaryColors ( ?Shades [red blue green])
    Shades [ dark light ]
    PrimaryColors [ ( ?[dark light] [red blue green] ) ]
    引用和宏替换差不多。上面两个等价。本地引用有两种形式。
    RuleName
    RuleName:variableName
    第二个将会用RuleName的返回值替换。
    外部引用也有两种形式。
    <grammarURI>
    <grammarURI#RuleName>
    ; 指定外部语法为根grammar
    <http://www.myCompany.com/grammars/fish.gram>

    ; 引用外部语法规则
    <../fish.gram#butterflies>

    语法规则的综合使用。
    选择:[ 北京 南京 呼和浩特]
    序列:(what is coral)    // sequence of tokens
           (Question Subject) // sequence of rule references
           (Subject is Type)  // sequence of tokens and rule references
    重复:语法  行为
     ?expr   可选的
     *expr   重复该表达式0或更多次.
     +expr   重复该表达式1或更多次.
    例如:
    Gear = [鞋 裤子 袜子 帽子 手套 围巾]
    Action = [买 购买]
    MakeRequest = (我想Action +Gear ?(和Gear) )
    下面的都是匹配项。
    我想买手套.
    我想买手套和围巾.
    我想购买手套,围巾,裤子.

    可以无限制的写下去,但是用户不可能永远地说下去,如果对结果设定范围,语音识别效果会更好。用户不可能说重复的名字。把上面的改为如下,只说1-5次。
    MakeRequest = (我想Action +Gear 我想Action +Gear ? (和Gear)  (和Gear)  (和Gear)  (和Gear) )
    权值:权值可以任意设 2, 2.5, 0.8, 或.4。大于1说明该选项可能性比较大。如果没有指定,各项的可能性是一样的。
    格式: grammarExpression~probability
    例如:
    [cat~3.1415 dog fish~.25]
    [fish~10 (angel fish)~2 anthia~0.1]
    也可以把权值加到? + * 上面,这与一般的权值不一样。格式:
    语法                                   描述
    ?expr~.75       75%会说一次.
    +expr~.75    不说,要是说了,75%的可能说第二次,类推。
    *expr~.75    75%的可能说第一次,第一次说了,75%的可能说第二次,类推。
    例如:
    ; the word "angel" is optional and is not very likely to occur.
    ?angel~0.25 fish

    ; the rule reference can occur 0 or more times and it is
    ; very likely it will occur more than once.
    *Digit~.8
    赋值语句。用{}括起来。
    两种形式,<slotname value> 和  return (value)
    需要注意的是return 只能用于子语法规则,如果是根grammar则不能包含return 语句。
    slot的例子:
    ;GSL 2.0;
    ColoredOjbect:public (Color Object)
    Color [
       [red pink]      { <color red> }
       [yellow canary] { <color yellow> }
       [green khaki]   { <color green> }
    ]
    Object [
       [truck car]    { <object vehicle> }
       [ball block]   { <object toy> }
       [shirt blouse] { <object clothing> }
    ]
    ;文件结束
    这个规则可以识别"yellow shirt" 或 "canary blouse"等短语。并返回相同的语义解释;
    {
       color: yellow;
       object: clothing;
    }
    Return的例子:
    Flight:public [
       ( [from leaving] City:frCity )     { <origin $frCity> }
       ( [to (arriving in)] City:toCity ) { <destination $toCity> }
    ]

    City [
       atlanta { return ("Atlanta") }
       chicago { return ("Chicago") }
       dallas  { return ("Dallas") }
    ]
    ;文件结束
    从City子项 返回一个值给 Flight。
    GSL中可以定义变量,也有整型和字符串类型(我也没用过),也可以调用函数。
    主要函数为:
    名称  描述
    add 加两数
    sub 减运算
    mul 乘运算
    div 除运算
    neg 返回相反数
    strcat 连接两个字符串


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    为什么总是索取的人多,奉献的人少...

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/4/11 22:24:00
     
     careprad 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:69
      门派:XML.ORG.CN
      注册:2008/5/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给careprad发送一个短消息 把careprad加入好友 查看careprad的个人资料 搜索careprad在『 XML在语音技术中的应用 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看careprad的博客2
    发贴心情 
    我有个很疑惑的问题,一直没找到filed中类型为字符串的输入
    这是什么原因,难道是必须明确语法才能输入字符串类型?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/5/20 13:13:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML在语音技术中的应用 』 的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/27 23:28:56

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms