JSpeech Grammar Format 学习笔记

一、简介

JSpeech Grammer Format(JSGF), 是平台无关的用于语音识别的语法格式。语法用于确定语音识别器应该听什么并且描述用户可能想说什么。举个例子,JSGF描述了出去旅游场景,那么这个时候语义理解就只能理解这种场景,如果你一直在巴拉巴拉说去看某个电影,那真的只能是对牛弹琴了。

一个完整的语音对话过程可能是这样子的,JSGF常见的应用场景ASR和NLU对语义理解的规则。

二. 例子

通过将简单规则组合在一起,可以构建捕获用户所说内容的复杂语法。以下是带有完整标题和正文的语法示例。

5.1 例1,简单的命令和控制

 

本示例显示了使用两个基本语法定义了控制窗口的口头命令。同时,这里添加礼貌性使语音交互变得更加自然。

#JSGF V1.0;

grammar com.acme.politeness;

// Body
public <startPolite> = (please | kindly | could you | oh  mighty  computer) *;
public <endPolite> = [ please | thanks | thank you ];

 上面定义的politeness语法开始和结束的礼貌规则,将在后面的对话定义中使用

#JSGF V1.0 ISO8859-1 en;

grammar com.acme.commands;
import <com.acme.politeness.startPolite>;
import <com.acme.politeness.endPolite>;

/**
  * Basic command.
  * @example please move the window
  * @example open a file
  */

public <basicCmd> = <startPolite> <command> <endPolite>;

<command> = <action> <object>;
<action> = /10/ open |/2/ close |/1/ delete |/1/ move;
<object> = [the | a] (window | file | menu);

这里commands语法定义了一个public的命令basicCmd,由外部引入的startPolite和endPolite规则,和本地的三个private的command,action, object 规则组成。注意,action 规则中使用备选词汇和权重。因为basicCmd是public的,因此他可以被语义理解处理,即,下面的例子对话可以匹配此类规则

  • "open a window"
  • "close file please"
  • "oh mighty computer please open a menu"

 5.2 例2,解析名字

下面的例子展示了如何使用完全限定名称。两个导入的语法都有定义color, 因此使用限定的或者完全限定的名字来区分。

#JSGF V1.0;
grammar com.acme.selections;
import <com.acme.pants.*>;
import <com.sun.shirts.*>;

<color> = <com.acme.pants.color> |
<com.acme.shirts.color>;
public <statement> = I like <color>;

最后规则中的color并不是模棱两可的,因为他使用了本地定义的color规则,而color由完全限制名字来定义,或者你可以使用限定名字写法如下:

<color> = <pants.color> | <shirts.color>;

5.3 例3, 文件注释

下面的例子将展示如何添加注释,分别有三种情况添加注释:语法生命添加注释,为导入规则添加注释,为规则定义添加注释。

#JSGF 1.0 ISO8559-1;

/**
  * Define simple travel directives.
  *
  * @author Mary Contrary
  * @version 3.141beta
  */

grammar com.acme.travel;

/**
  * Get a list of city names: <city>.
  */

import <com.acme.cities.*>;

/**
  * A simple travel command
  *
  * @example go from sydney to tokyo to dublin
  * @example go from "san francisco" to bangkok
  */

public <travel> = go from <city> ( to <city> )+;
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值