转载自:http://blog.csdn.net/zhangxy0605/article/details/71601604
现在智能家居越来越普及,智能语音输入也成为一项很方便的工具,可以告别传统的文字输入,可以根据输入的内容,完成相应的对话及功能。OLAMI 人工智能开放平台让你只需通过几个简单的步骤和代码,就能让你的应用程序或设备更加智能更加人性化,并提供趋近完美的用户体验(OLAMI介绍)。本文章就是介绍怎么使用 OLAMI 人工智能开放平台(以下简称为OLAMI开放平台)及sdk开发出一个简单的智能语音输入天气app。天气功能及画面参考开源项目https://git.oschina.net/way/WayHoo 的代码,不详细介绍。
1. 下载sdk:
要使用OLAMI人工智能开发平台首先需要下载相应的sdk,如图将下载下来的voicesdk.jar 放在jniLibs下,将libspeex.so放在jniLibs下的armeabi下。Voicesdk.jar 是用来语音录音,识别语音结果,然后发送给OLAMI平台进行解析,返回相应的json 格式结果,供用户解析。
2. 文件结构
imain 文件夹为主要的语音实现功能和主界面,其他文件目录为获取天气相关数据的和显示相关card的文件夹。
3. 代码详解
WeatherMainActivity.Java 主要初始化页面及各个变量,创建Handler 以进行消息传递。创建Task 查询天气并刷新界面显示。
VoiceSdkService.java初始化智能语音识别相关参数 ,详细可参考https://cn.olami.ai/wiki/?mp=sdk&content=sdk/android/reference.html
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
onResult 函数为OLAMI开放平台结合用户编写的grammar返回的json结果,可以根据实际需求进行解析和显示。
如:本app 中用户语音输入 “上海的天气”,对应的在OLAMI开发品台上的Grammar 为:
返回的json结果为
3.1 modifier:chacitytianqi 对应grammar 中 表示这句语法被匹配上后要送出去的意图。同一应用中每个grammar 的modifier 应该都是唯一的不同的,已变用户区分输入的语句。
3.2 Type: sample 对应OLAMI开发平台上对应的模块名。
3.3 slots: 表示现在输入的是上海,
当查询“北京的天气”时,value值为“北京”,
slots根据编写的grammar,可以有多个json成员。如:
3.4 status:ok 表示正常返回Json数据。
如何创建grammar 及 grammar 中用的slots 和rule详细解析可参考https://cn.olami.ai/wiki/?mp=nli&content=nli2.html
4. 该app 目前支持的查询范围:
查看各个城市的天气 ,如:上海的天气,北京的天气,显示所有天气数据
查看空气质量,如:空气质量,上海的空气质量,等。画面只显示空气质量数据card。
查看一周天气,如: 明天的天气 , 一周的天气, 一周北京的天气,等。画面只显示预报一周的card。
查看今天的天气,如 :今天的天气,今天上海的天气。 画面只显示一天天气的card
查看指数, 如: 穿衣指数, 空气指数、 天气指数 。 画面只显示指数card
详细源码地址: https://github.com/farinaZhang/open_weather