您的位置:首页 > 其它

讯飞语音命令词离线识别,离线听写demo修改

2014-07-03 13:24 615 查看
http://open.voicecloud.cn/http://open.voicecloud.cn/

可以到平台上下载demo

1:demo 中有两个开发包,主要用的是msc.jar

默认的实现的听写是在线的,修改成离线的需要在

IatDemo类中找到并在else中加入绿色的参数,同时在onresult方法内把结果打印

// 开始听写

case R.id.iat_recognize:

.....

if (isShowDialog) {}else{

// 不显示听写对话框

mIat.setParameter(SpeechConstant.LOCAL_GRAMMAR, "sms.irf");

mIat.setParameter(SpeechConstant.ENGINE_TYPE, "local");

ret = mIat.startListening(recognizerListener);



操作:运行apk 进入听写界面,点击右上角的设置图标,在设置界面将显示听写界面复选框去掉,返回即可,在听写结束后通过log查看结果,(针对离线模式)

2.命令词识别,开发中用得到的还是离线模式,所以在demo中如果想要写自己的命令词,可assets目录在创建grammar_main.bnf(离线的命令词写法),后面会附上测试的语法命令,在AsrDemo类中将改成mLocalGrammar = FucUtil.readFile(this, "grammar_main.bnf", "utf-8"); 我们编写好的文法文件。

mAsr.setParameter(SpeechConstant.GRAMMAR_LIST, "test"); //对应文法中的test 名称

// 设置本地识别使用语法id

mAsr.setParameter(SpeechConstant.LOCAL_GRAMMAR, "test");//对应文法中的test 名称

以下为grammar_main.bnf 文件,可以实现多个命令一起生成,不像demo中的只生成一个一个命令

#BNF+IAT 1.0 UTF-8;

!grammar test;

!slot <cmdleft>;

!slot <cmdright>;

!slot <cmdfront>;

!slot <cmdback>;

!slot <cmdstop>;

!slot <cmdbegin>;

!slot <cmdpause>;

!slot <cmdrestart>;

!slot <optsend>;

!slot <optcancel>;

!start <mainaction>;

<mainaction>:<cmdactionleft>|<cmdactionright>|<cmdactionfront>|<cmdactionback>|

<cmd1>|<cmd2>|<cmd3>|<cmd4>|<smsaction2>|<smsaction3>;

<cmdactionleft>:<cmdleft>;

<cmdactionright>:<cmdright>;

<cmdactionfront>:<cmdfront>;

<cmdactionback>:<cmdback>;

<cmd1>:<cmdstop>;

<cmd2>:<cmdbegin>;

<cmd3>:<cmdpause>;

<cmd4>:<cmdrestart>;

<smsaction2>:<optsend>;

<smsaction3>:<optcancel>;

<cmdleft>:左转;

<cmdright>:右转;

<cmdfront>:前进;

<cmdback>:后退;

<cmdstop>:停止;

<cmdbegin>:开始;

<cmdpause>:暂停;

<cmdrestart>:再来一遍;

<optsend>:确定|确认|发送|接受|发送短信|短信发送|左转;

<optcancel>:取消|不发送|别发送|取消发送|取消发送短信;

操作:运行apk 进入命令词识别界面,单选框本地语法,之后构建语法,如果成功就可以开始识别了。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: