智能语音输入查询天气app附源码

转载自: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

mViaVoiceRecognizer = new OlamiVoiceRecognizer(VoiceSdkService.this); 
//创建OlamiVoiceRecognizer 对象
TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(this.getBaseContext().TELEPHONY_SERVICE);
String imei = telephonyManager.getDeviceId();
mViaVoiceRecognizer.init(imei); //设置用户号,用于区分用户,一般设置为iemi号

mViaVoiceRecognizer.setListener(mViaVoiceRecognizerListener); //设置语音设备listener,监听语音识别开始,结束,结果,及各种出错。
mViaVoiceRecognizer.setLocalization(OlamiVoiceRecognizer.LANGUAGE_SIMPLIFIED_CHINESE);// 设置返回结果语言类型,目前支持简体和繁体
mViaVoiceRecognizer.setAuthorization("0fabfbd3db2546a0b48628a4354801f8", "asr", "0a714958eef844869175f9507a074c17", "nli");

// 第一个参数为在OLAMI开放平台上创建的应用的App Key ,第三个参数为App Secret,其他两个值固定。
mViaVoiceRecognizer.setVADTailTimeout(3000);
// 设置录音结束时间 ,即3分钟没有输入认为录音结束。

mViaVoiceRecognizer.setLatitudeAndLongitude(31.155364678184498, 121.34882432933009);
// 设置默认位置。
 
 
  • 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

应用Key

@Override
public void onResult(String result, int type) {
    Log.d(TAG, "onResult ,result=" + result);
    //{"data":{"asr":{"result":"上海的天气","speech_status":0,"final":true,"status":0},"nli":[{"desc_obj":{"status":0},"semantic":[{"app":"sample","input":"上海的天气","slots":[{"name":"city","value":"上海"}],"modifier":["chacitytianqi"],"customer":"58df54a484ae11f0bb7b488b"}],"type":"sample"}]},"status":"ok"}
    getValidData(result);
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

onResult 函数为OLAMI开放平台结合用户编写的grammar返回的json结果,可以根据实际需求进行解析和显示。

如:本app 中用户语音输入 “上海的天气”,对应的在OLAMI开发品台上的Grammar 为: 
编写grammar

返回的json结果为 
返回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

首次进入app 语音输入上海的天气

语音输入今天的天气 语音输入一周的天气

语音输入空气质量 语音输入穿衣指数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值