想学习如何开发一款星座占卜机器人吗?你可能错过了一场
Rokid Workshop 第一期在众多开发者们静静的码字中落幕~
Rokid Workshop 是专攻语音交互深度解析和实战的工作坊,第一期于5月5日在米萨咖啡馆开幕,主题为 " 如何开发一款星座占卜机器人 "。
现场由来自 Rokid 的 Java 开发工程师鲍杭为众多开发者们讲述了如何设计一款用户喜欢使用的语音交互技能,并针对具体的开发难点进行了技术分享。
讲师不但给大家普及了语音元认知,包括语音交互的基础概念、语音三元组(ASR、NLP、TTS)和交互场景,还在现场亲自为开发者演示操作完整的星座占卜技能的开发过程。
将向大家讲述如何开发一款用户喜欢使用的对话式 AI 技能 ,并针对具体的开发难点进行技术分享。
对啦,本次活动中不只有讲师的现场分享,还安排了实操环节。
看开发者和他们密不可分的伙伴。
在现场开发过程中,开发者与讲师和辅导员进行了一对一的交流,更重要的是实时解决了一些开发者的疑问。
最后,恭喜千山暮雪同学以当场开发完成的两个技能获得了现场的 Rokid 鼓励大奖。
【活动分享】
讲师 ppt 分享
Rokid Workshop 01 课题分享.pdf (2.1 MB)
开发者常见问题分享
概念部分问题汇总
- 还是需要加强
domain
,intent
,pattern
,slots
概念的理解。
解答:详细部分可参照[官方文档](https://developer.rokid.com/docs/2-RokidDocument/1-SkillsKit/important-concept/intend.html),下面是一种类比的解读方式:domain
相当于一个应用程序,intent
相当于程序中的一个方法,而slots
相当于方法执行时需要的参数,pattern
是连接intent
和slots
之间的桥梁。使用这种语义解析形式,最终我们可以通过asr
的输出信息,直接让程序去执行特定的业务方法。
- 为什么使用如下形式的
pattern
:($today|$tomorrow|$week|$month|$year)?$astroname($astro)?($info)?($how)?
,有什么好处?
解答:pattern
由多个slots
组成,在新建pattern
之前我们首先需要新建使用到的slots
,即在页面中先创建slot_type
并填写相应的value
值(一个slot_type
可以有多个value
值,使用换行符分隔)。这里我们使用的是引用slots
的方式,其中$
符号表示引用,()
符仅为了词之间的区分,?
表示此slots
是可选的,注意在编写pattern
的时候要细心,要符合语法规则,否则会编译失败。引用的功能相当于程序中的变量的作用,我们可以给变量赋不同的值,比如$how
,当我们这样定义,并且在slots
的value
中添加了怎样
、怎么样
、如何
等值后,我们就可以使用how
来替代这三个值了。当我们的词表中的value
值很丰富的时候,我们就可以使用一个pattern
来覆盖相当多的说法了,这是我们推荐的做法。为了比较,我们也可以使用(今天)?(白羊)(星座)?(运势)?(怎样)?
作为一个pattern
,大家可以试一试同样能实现星座查询的效果,但这显然不是最佳实践,因为他只支持很少的说法,当用户说今天白羊星座运势如何
的时候,程序就不支持了。具体的细节,大家可以多调试程序,动手实践去发现 :)。
技能创建部分问题汇总
- 技能创建时,尽量取一个易读的名称,
技能名称
和入口词
保持一致,比如都为星座大师
,入口词部分不需要填写打开
二字,这部份我们程序在处理时会自动帮您加上。开放性
选择公有
,场景化展示
选择非场景化
。 -
语音交互
页面配置时,需要在编辑框中定义intent
、pattern
以及slots
。其中user_says
部分就是我们所说的pattern
。同时因为我们使用到了slots
,所以意图定义完毕后需要在下方填写词表的内容,词表就是我们之前说的slots
,词表的定义的就是对pattern
中出现的变量进行不同的赋值,从而来完善我们的语句的覆盖面。
> 注意: 语音交互配置完毕后需要点击下方的 编译 方可生效。
- 接下来进行编程的环节,点击
配置
中的配置服务
选项,进行相关信息的填写,并在代码框中放入自己的程序。请保证代码的正确性,对于星座大师
技能,如果使用我们提供的代码,注意将程序中的var appkey="xxx";
这一行,替换成自己申请注册的appkey
。配置完毕后进行保存,然后可以进行测试,我们有两种测试方式。一种是在代码编辑窗口,点击更多操作
下的配置测试用例按钮
,自行配置自己的intent
和slots
来模拟请求测试。第二种方式是回到之前创建技能的页面,选择集成测试
按钮,在后端服务测试
中输入语句开始测试,就可以看到相应的测试结果信息。对于新人我们推荐这种测试方式,更加的便捷。
真机测试
- 技能创建成功后,无需发布即可进行真机的测试。我们只需要在
集成测试
页面,进行测试设备的添加即可,其中mini的device_type_id
为3EBDA7D872134F9485457653B43257D8
,mini的device_id
在mini设备的背面,03
开头,先竖着读,再横着读~
添加成功后,我们就可以对着设备说:若琪,打开星座大师
,就可以愉快的体验你自己开发的技能了。其中星座大师
只是一个例子,这是你创建技能时候填写的名字,大家需要根据自己的名字自行替换哦。
> 注意: 考虑到设备的体验,我们的平台内部对整个语音链锯请求的延时控制在2s
,如果2s
内请求没有结果响应,交互将会被终止,所以大家在开发过程中调用了第三方API时,应该将这种情况考虑进去,尽可能的优化自己的程序,控制程序的耗时。开发过程中可以多打印日志,查看日志了解程序的运行状态。
现学的mini日志查看技能,命令行输入:`adb shell
rklogger`