关于Speech接口的疑问?


(oursyslink) #1

参考文档:https://github.com/Rokid/rokid-openvoice-sdk/blob/master/android_api_example.md#vo
问题:
1:Speech这个接口,必须要使用putVoice才能识别语音吗?如果不是,那是不是不去调用putVoice,它会自动获取语音数据流?接口如何区分?
2:针对VoiceOptions这个结构体也不是很理解,激活词是通过这里去动态设置的吗?trigger_start传入还是传出参数?如果传入,怎么知道激活词在语音数据的什么位置?如果是传出,调用的位置就不对。。。


(chen.zhang) #2

speech需要调用putVoice才能识别语音,它没有自动拾音功能。

VoiceOptions是高级能力,需要配合Rokid拾音模块使用,比如trigger_start就是Rokid拾音模块给出的数据。
一般用户传空就可以了,不影响普通语音识别功能。


(oursyslink) #3

谢谢回复!
那请问:
1:哪个包的哪个接口可以自动拾音,然后做语音识别?
2:如何动态设置唤醒词?
3:mini板的麦克风阵列在唤醒前是不是不可用的?

补充下:我现在用的是开发镜像(Android系统),里面是没有跑Rokid自己的交互系统

再补充下:
在调用Speech这个接口做语音识别的时候,需要调用其putVoice函数把语音数据输入进去,此时开始碰到以下两个问题:

1 如果我们自己给语音数据,肯定要调用AudioRecord来获取环境声音,但现在获取此对象时的状态不正常,无法录音(由此我猜测原因是mic硬件资源无法访问),即使能录音,我们还会碰到一个新的棘手问题,就是在人机语音交互的时候,我们自己不容易判断语音的起止时刻,也就是何时开始putVoice,何时endVoice,原来用其它公司的语音识别库时,其提供的SDK只要设置好前后端点检测时间以及其它一些参数,语音数据的采集和识别就能同时完成,无需我们自己采集语音数据,使用起来很方便;

2 你们的BlackSiren应该是来干数据采集的事,但看github中的blacksiren说明,这个库好像还没搞好:“BlackSiren现在正在开发状态,第一个版本将支持Android NDK/AOSP构建,请参考open-voice中的sample环节进行集成。”,不知道什么时候能完成,没有这个,要我们自己做1.1中的工作,技术上有点困难,或者你们能给出demo给我们看也行;


(chen.zhang) #4

你是用的我们的all in one开发板吗?
如果是,那么无视你主帖里的那个文档,那个文档是独立的speech sdk,不包括拾音功能。
all in one开发板的镜像下载链接: ftp://ftp-customer.dev.rokid-inc.com:9921/tmp/nanat_dev_pkg.tgz
压缩包解压后有README.pdf,按这个文档做就可以了,不需要你自己使用AudioRecord


(oursyslink) #5

这个链接无效。。。


(chen.zhang) #6

外部不能访问?我问下公司同事

telnet ftp-customer.dev.rokid-inc.com 9921 不通吗?


(chen.zhang) #7

ftp://ftp-customer.rokid-inc.com:9921/tmp/nanat_dev_pkg.tgz
用这个地址,试试看


(oursyslink) #8

可以下了,谢谢!


(oursyslink) #9

系统刷好了,若琪自己的系统已经跑起来了,但按照文档描述,我把自己的APP安装进去后onNewIntent没收到语音识别结果,不知道是哪里出问题了,exec_config.json配置文件如下(com.pirobot.jinsu是我的包名):
{
“cloud”: [
{
“action”: “cloudengine”,
“type”: “service”
}
],
“native”: [
{
“action”: “com.pirobot.jinsu”,
“type”: “activity”
}
],
“exit”: [
{
“action”: “cloudengine”,
“type”: “service”
}
],
“exception”: [
],
“other”: [
]
}
不知道这样配对不对。。

另外在AndroidManifest.xml里不知道怎么填action name的值,你给的demo中填的是RKNativeAppDemo,我用这个值和com.pirobot.jinsu都无法收到语音识别结果。


(oursyslink) #10

问题解决了,exec_config.json配置文件如下(com.pirobot.jinsu是我的包名):
{
“cloud”: [
{
“action”: “com.pirobot.jinsu”,
“type”: “activity”
}
],
“native”: [
{
“action”: “com.pirobot.jinsu”,
“type”: “activity”
}
],
“exit”: [
{
“action”: “cloudengine”,
“type”: “service”
}
],
“exception”: [
],
“other”: [
]
}

AndroidManifest.xml里面的action name为com.pirobot.jinsu


(oursyslink) #11

现在新的问题是:
1:必须“若琪”开头才会返回结果,是否可以取消这个限制?
2:程序(不通过APP)如何更换唤醒词?
3:如何控制led灯的显示?


(medea) #12

1,若琪是激活词,必须要激活之后才开始指令后面的语句理解。否则如果是噪音,ASR服务就会识别出很多奇怪的语句。 激活词 + COMMND 是我们VUI的交互模式。也可以先激活,后面使用连续指令进行对话。
2,目前程序级别的唤醒词还没有开放,后续可以考虑开放这一系列的API。
3,目前LED灯的接口是一些固定的特效,还没有开放。

2,3的需求我们先内部讨论看看如何开放。


(oursyslink) #13

关于1,程序如何设置,才能激活后连续指令交互?
现在是每句话都必须带“若琪”

关于3,我烧写的这个镜像版本,一旦启动,LED灯是一直处于蓝色光圈常亮状态,交互时也没有变化。

另外,我烧写的这个镜像版本,在若琪的APP中一直处于离线状态,这种情况正常吗?


(medea) #14

这里不需要程序设置的。可以叫若琪后, 只要灯没有灭, 就可以连续说指令。
你的镜像是哪里下载的? 如果是开源代码的镜像, 默认就是常亮的。 需要自己开发自己的功能。

开发板刷机和源代码下载路径:


开发板开发文档中心:
https://developer.rokid.com/docs/


(oursyslink) #15

现在有个问题:
若琪能识别语音,但我的APP收不到intent,之前能收到的,配置文件也都没问题,请问该如何定位此问题