帖子

QIVWSessionBegin参数问题

[复制链接]

该用户从未签到

170313 139****3519 发表于 2019-2-27 15:30:57 1#
QIVWSessionBegin(const char * grammarList, ......)文档里说第一个参数是bnf格式的语法,请问该指针是语法文件名、语法内容还是QISRBuildGrammar构建返回的语法ID?
讯飞2017hj 发表于 2019-2-27 17:36:03
2#

楼内回复

我试过无论传入语法字符串指针还是语法文件名,唤醒(ONESHOT)后识别时都返回10303“参数出错”;按你说的参照QISRSessionBegin()中的grammarList,但其说明里该参数仅支持“在线”情况啊,我测试的唤醒(ONESHOT  详情 发表于 2019-2-27 18:12
使用道具 举报 回复
139****3519 发表于 2019-2-27 18:12:52
3#
讯飞2017hj 发表于 2019-2-27 17:36
可参考一下api文档:http://mscdoc.xfyun.cn/windows/api/iFlytekMSCReferenceManual/qisr_8h.html#aaec4a5 ...


我试过无论传入语法字符串指针还是语法文件名,唤醒(ONESHOT)后识别时都返回10303“参数出错”;按你说的参照QISRSessionBegin()中的grammarList,但其说明里该参数仅支持“在线”情况啊,我测试的唤醒(ONESHOT)是离线模式,而且grammartype=abnf或xml,没有bnf啊!
使用道具 举报 回复
讯飞2017hj 发表于 2019-2-28 15:03:42
4#
唤醒是QIVWSessionBegin()这个函数,参数
grammarList[in]bnf格式的语法,一个引擎内置语法列表。可以同时指定多个语法,不同的语法之间以","隔开。进行语音唤醒时不需要语法,此参数设定为NULL 或空串即可;进行语 音唤醒+识别时则需要语法,语法可以在此参数中指定。



使用道具 举报 回复
讯飞2017hj 发表于 2019-2-28 15:08:00
5#
使用语音唤醒的时候这个参数传空

楼内回复

我问的是“唤醒加识别”也即oneshot业务类型,该参数不应该为空吧!?  详情 发表于 2019-3-1 10:20
使用道具 举报 回复
139****3519 发表于 2019-3-1 10:20:47
6#
讯飞2017hj 发表于 2019-2-28 15:08
使用语音唤醒的时候这个参数传空


我问的是“唤醒加识别”也即oneshot业务类型,该参数不应该为空吧!?
使用道具 举报 回复
讯飞2017hj 发表于 2019-3-1 10:47:52
7#
唤醒加识别需要bnf语法的,bnf语法直接参考离线命令词识别的语法。如附件所示,同时还需要下载离线命令词识别的sdk,还要使用离线命令词的common.jet文件。

wake.bnf

216 Bytes, 下载次数: 1

楼内回复

你说的条件都具备,我想问的是:QIVWSessionBegin(const char * grammarList, ......)第一个参数是传递语法文件名、语法内容还是QISRBuildGrammar构建返回的语法ID?  详情 发表于 2019-3-1 11:29
使用道具 举报 回复
139****3519 发表于 2019-3-1 11:29:33
8#
讯飞2017hj 发表于 2019-3-1 10:47
唤醒加识别需要bnf语法的,bnf语法直接参考离线命令词识别的语法。如附件所示,同时还需要下载离线命令词识 ...

你说的条件都具备,我想问的是:QIVWSessionBegin(const char * grammarList, ......)第一个参数是传递语法文件名、语法内容还是QISRBuildGrammar构建返回的语法ID?
使用道具 举报 回复
讯飞2017hj 发表于 2019-3-1 13:51:28
9#
QIVWSessionBegin(const char * grammarList, ......)文档里说第一个参数是bnf格式的语法,请问该指针是语法文件名、语法内容还是QISRBuildGrammar构建返回的语法ID?
答案:这个是语法ID
使用道具 举报 回复
讯飞2017hj 发表于 2019-3-1 14:19:27
10#
我试过无论传入语法字符串指针还是语法文件名,唤醒(ONESHOT)后识别时都返回10303“参数出错”;按你说的参照QISRSessionBegin()中的grammarList,但其说明里该参数仅支持“在线”情况啊,我测试的唤醒(ONESHOT)是离线模式,而且grammartype=abnf或xml,没有bnf啊!
答案:这里的是在线的,不是离线,离线这个参数传NULL,语法类型是在QISRBuildGrammar()中传的
另外,使用唤醒+识别,只用唤醒中的QIVWSessionBegin()即可。
在线语法识别(sub=asr)除上述方法外,也可在此处传入语法字符串指针,并在params参数中添加"grammartype=abnf"或" grammartype=xml"。
此方法仅在本次识别有效。

楼内回复

你好! 我把问题总结一下: Demo里只有sst=wakeup的离线唤醒,我想测试下sst=oneshot的离线唤醒过程——该业务是否支持离线? 如果支持,QIVWSessionBegin的参数应该怎么传? 我在session_begin_params里包含sst=one  详情 发表于 2019-3-1 16:51
使用道具 举报 回复