`
isiqi
  • 浏览: 16004875 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

VXML语音识别 *.gsl文件格式介绍

XML 
阅读更多
VXML语音识别*.gsl文件格式介绍
GSL文件是VXML语音识别中用到的一种特定格式的文件。其格式如下:
1.GSL内部定义和外部定义.
内部定义是在VXML文档中完全用<grammer>元素定义.外部定义是定义一个外部文件,并在VXML中引用.在外部GSL文档中,所有的规则必须命名.在内部GSL定义中,如果只有一个语音识别规则,可以不命名,如果有多个语音识别规则,每一个都要命名.
GSL推荐的扩展名为.gsl.解释器也识别.grammar的扩展名.如果直接在VXML文档中定义grammar,一定要用CDATA括起来,否则VXML文档无法识别.如下:
<grammar...usageattributes...>
<![CDATA[
...grammarheader...
...grammarruledefinitions...
]]>
</grammar>
外部GSL文件不应该包含CDATA部分,格式如下:
;GSL2.0
...grammarruledefinitions...
2.GSL中的注释。
GSL中的注释可以出现在任何地方,注释用分号开始,分号后的内容将会被全部忽略.例如:
;thisisacomment
RuleName[ruleexpansion];thisisacomment,afteranon-comment
3.GSL中的保留字.
AND-n,OR-n,OP-n,KC-n,PC-n以上是GSL的保留字,不能够将它们定义为规则的名字.n是个整数.
4.GSL的头部声明.
GSL文件可以用一个self-identifyingheader开始,来说明GSLgrammar的版本。可以不写,要是有必须用
;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是标示输入可能性的一个浮点数(floatingpointnumber)。weight的值低于1,将会减少该规则匹配的可能性,weight值越接近零的,规则越不容易被匹配。大于1,将会增加匹配的可能性。使用上面三种规则,可以动态的改变规则。
6.语法规则定义的作用域。
每一个规则都有一个作用域,private或public.public修饰的语法规则对外部可见,外部引用可以用名称指定一个public语法规则。private语法规则只在包含它的grammar中可见,而且只能被在同一个grammar中的其他的语法规则引用。把一个语法规则标示为public的
格式为:RuleName:publicruleExpansion
没有标示为public的就是private的语法。如果一个grammar中,没有一个语法规则标示为public,那么所有的语法规则都是public的。如果有一个标示了public,那么其余的都是private。GSL中的根语法规则是第一个标示为public的语法规则。如果都没标示,默认是第一个。下面的例子,定义了一个public语法规则Snapper,和两个private语法规则,SnapperType和FishColors。根语法规则是Snapper。
SnapperType[muttonFishColors]
FishColors[blackgrayred]
Snapper:public(SnapperTypesnapper)
7.语法规则的递归。GSL文件中可以定义直接或间接引用自身的语法规则。
;Rulethatreferstoitselfdirectly
Digits[Digit(DigitDigits)]
Digit[0123456789]
;Rulethatindirectlyreferstoitself
NounPhrase(Noun?PrepositionalPhrase)
PrepositionalPhrase(PrepositionNounPhrase)
写此类语法时要注意,GSL不支持左递归,也就是说不能定义第一个子部分包含语法规则本身的语法规则。这是为了确保解释器不会进入无穷递归,来匹配一个语法规则。
;合法
Digits[Digit(DigitDigits)]
Digits[(DigitDigits)Digit]

;不合法
Digits[(DigitsDigit)Digit]
Digits[Digit(DigitsDigit)]

语音规则扩展部分。声音标示符(英语)应该使用小写字母,数字,-(连字符)_(下划线)‘(单引号)@(at符).(句号).如果使用其他的特殊符号(空格除外),必须用“”双引号括起来。下面是几条简单地规则:
1。避免缩写。例如,用usa代替USA,用vxml代替VXML。
2。展开缩写。例如,用street代替st.。用doctor代替dr.。
3。把标点拼出来。
4。把大于9的数拼出来。

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

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

语法规则的综合使用。
选择:[北京南京呼和浩特]
序列:(whatiscoral)//sequenceoftokens
(QuestionSubject)//sequenceofrulereferences
(SubjectisType)//sequenceoftokensandrulereferences
重复:语法行为
?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.1415dogfish~.25]
[fish~10(angelfish)~2anthia~0.1]
也可以把权值加到?+*上面,这与一般的权值不一样。格式:
语法描述
?expr~.7575%会说一次.
+expr~.75不说,要是说了,75%的可能说第二次,类推。
*expr~.7575%的可能说第一次,第一次说了,75%的可能说第二次,类推。
例如:
;theword"angel"isoptionalandisnotverylikelytooccur.
?angel~0.25fish

;therulereferencecanoccur0ormoretimesanditis
;verylikelyitwilloccurmorethanonce.
*Digit~.8
赋值语句。用{}括起来。
两种形式,<slotnamevalue>和return(value)
需要注意的是return只能用于子语法规则,如果是根grammar则不能包含return语句。
slot的例子:
;GSL2.0;
ColoredOjbect:public(ColorObject)
Color[
[redpink]{<colorred>}
[yellowcanary]{<coloryellow>}
[greenkhaki]{<colorgreen>}
]
Object[
[truckcar]{<objectvehicle>}
[ballblock]{<objecttoy>}
[shirtblouse]{<objectclothing>}
]
;文件结束
这个规则可以识别"yellowshirt"或"canaryblouse"等短语。并返回相同的语义解释;
{
color:yellow;
object:clothing;
}
Return的例子:
Flight:public[
([fromleaving]City:frCity){<origin$frCity>}
([to(arrivingin)]City:toCity){<destination$toCity>}
]

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

(转载自http://www.xml.org.cn

分享到:
评论

相关推荐

    VXml语音业务开发培训

    VXml语音业务开发培训.ppt

    用VXML促进智能网业务的发展

    VXML的出现为电话语音系统带来全新的应用和开发概念,使语音系统开发人员可以用极其简单的方法实现复杂系统的开发。基于智能网的VXML技术的电话语音系统的实现结合了智能网先进的组网模式、强大的呼叫控制功能、专门...

    简单ivr开发vxml文件

    avaya genesis 华为,对ivr开发都可以写vxml文件,不用每次都去学使用每个公司的ivr开发软件

    常用的vxml集合

    个人 日常工作中 整理的一些vxml流程,vxml 即Voice eXtensible Markup Language,主要用于电信行业的应用和富媒体交互

    3G 手机语音识别应用中DSP的选择策略

    随着DSP技术的进步,计算能力更强、功耗更低和体积更小的DSP已经出现,使3G手机上植入更更复杂的自动语音识别(ASR)功能成为可能。目前,基本ASR应用可以分成三大类:1. 语音-文本转换(语音输入);2. 讲者识别;3. ...

    单片机与DSP中的3G 手机语音识别应用中DSP的选择策略

    随着DSP技术的进步,计算能力更强、功耗更低和体积更小的DSP已经出现,使3G手机上植入更精确更复杂的自动语音识别(ASR)功能成为可能。目前,基本ASR应用可以分成三大类:1. 语音-文本转换(语音输入);2. 讲者识别;3...

    Vxml 学习文档

    仅供学习VXML基础语法知识

    VXML数据装入关系数据库的软件.doc

    VXML数据装入关系数据库的软件

    语音扩展标记语言VoiceXML接口规范

    5.3.2.3 播放语音文件 44 5.3.2.4 VALUE元素 45 5.3.2.5 打断语音输出 45 5.3.2.6 超时 46 5.3.3 环境与资源 46 5.3.3.1 资源 46 5.3.3.1.1资源获取 46 5.3.3.1.2 缓冲 46 5.3.3.1.3 预读 47 5.3.3.1.4 协议 47 5.3....

    vxml-browser-jdk8:Vxml浏览器,用于开发和单元测试您的VXML应用程序

    vxml-浏览器-jdk8 Vxml浏览器,用于开发和对VXML应用程序进行单元测试。VXML浏览器(VXML解释器) 一个简单的VXML浏览器,用于VXML开发和测试。 到目前为止,仅支持主要标签。 其他标签支持正在开发中。 您应该能够...

    VxmlIDE.ED531

    本文简要描述了VoiceXML规范及相关术语,并给出了一种基于VoiceXML的语音与数据集成模型,它主要由语音浏览器、语音识别、语音合成和VoiceXML网关等部分组成。应用该模型,可以方便地建立各种基于WEB的语音应用系统...

    vxml-browser:一个简单的VXML浏览器,用于VXML开发和测试

    请参考以获得使用JDK 8的更好实现VXML浏览器(VXML解释器) 一个简单的VXML浏览器,用于VXML开发和测试。 到目前为止,仅支持主要标签。 其他标签支持正在开发中。 您应该能够根据需要非常快速地对其进行增强。 对于...

    VXML Demo

    NULL 博文链接:https://jis117.iteye.com/blog/2009279

    vxml grammar 规范

    Speech Recognition Grammar Specification Version 1.0

    en-Composer-8.1.4-Help-book.pdf

    该手册为Genesys呼叫中心系统的Composer软件开发手册,基于VXML语音,为Eclipse一个插件。

    论文研究-基于H.323的自助语音系统设计与实现 .pdf

    基于H.323的自助语音系统设计与实现,王文俊,徐塞虹,本文研究了基于H323协议的呼叫中心自助语音系统设计与实现,包括自动应答系统和自动外呼系统。为了满足业务的多样性,开发了VXML解�

    VoiceXML入门.chm

    voicexml的帮助文挡. 其中有很多voicexml程序的例子,对语法有详细的介绍.

    文件下载及web文件的contentType类型大全

    //设置下载文件大小 response.setContentType("application/octet-stream");//设置文件类型 OutputStream toClient=new BufferedOuntputStream( response.getOutputStream() );//获取二进制输出流 //读取文件数据...

    xml基础教程xml基础教程.rar

    vxml基础教程.rarxml基础教程.rarxml基础教程.rarxml基础教程.rarxml基础教程.rar

    vxml_summary

    vxml_summary一个很好的vxml开发文档

Global site tag (gtag.js) - Google Analytics