【Android】灵云在线语义理解功能使用说明
来源:互联网 发布:电脑扩音器软件 话筒 编辑:程序博客网 时间:2024/04/30 10:33
注册
使用灵云的语义理解功能需要先在官网上进行注册应用。官网地址
注册比较简单,就不做过多介绍了,注册完应用以后,在后台创建自己的应用,创建完应用以后需要给应用开通对应的语义理解能力。
capKey说明:
- nlu.cloud 云端语义理解别功能
使用nlu.cloud功能时,需要勾选对应的领域,以下示例按照百科领域进行测试。
领域的介绍手册
集成
下载灵云的Android版本语义理解功能,下载地址
源码
Github
灵云在线语义理解功能
需要加入的so和jar包有:
- libhci_curl.so
- libhci_sys.so
- libhci_sys_jni.so
- libhci_nlu.so
- libhci_nlu_jni.so
- libhci_nlu_cloud_recog.so
- libstlport_shared.so
- hcicloud-5.0.jar
需要使用的权限
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
加载配置类
package com.miao.test.util;/** * 灵云配置信息 * Created by 10048 on 2016/12/3. */public class ConfigUtil { /** * 灵云APP_KEY */ public static final String APP_KEY = "c85d54f1"; /** * 开发者密钥 */ public static final String DEVELOPER_KEY = "712ddd892cf9163e6383aa169e0454e3"; /** * 灵云云服务的接口地址 */ public static final String CLOUD_URL = "http://test.api.hcicloud.com:8888"; /** * 需要运行的灵云能力 */ // 云端语义理解 public static final String CAP_KEY_NLU_CLOUD_RECOG = "nlu.cloud";}
封装灵云系统的初始化功能
package com.example.sinovoice.util;import android.content.Context;import android.os.Environment;import android.util.Log;import com.sinovoice.hcicloudsdk.api.HciCloudSys;import com.sinovoice.hcicloudsdk.common.AuthExpireTime;import com.sinovoice.hcicloudsdk.common.HciErrorCode;import com.sinovoice.hcicloudsdk.common.InitParam;import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;/** * Created by miaochangchun on 2016/11/28. */public class HciCloudSysHelper { private static final String TAG = HciCloudSysHelper.class.getSimpleName(); private static HciCloudSysHelper mHciCloudSysHelper = null; private HciCloudSysHelper(){ } public static HciCloudSysHelper getInstance() { if (mHciCloudSysHelper == null) { return new HciCloudSysHelper(); } return mHciCloudSysHelper; } /** * 初始化函数 * @param context * @return */ public int init(Context context){ //配置串参数 String strConfig = getInitParam(context); int errCode = HciCloudSys.hciInit(strConfig, context); if (errCode != HciErrorCode.HCI_ERR_NONE){ Log.e(TAG, "hciInit Failed and return errcode = " + errCode); return errCode; } errCode = checkAuthAndUpdateAuth(); if (errCode != HciErrorCode.HCI_ERR_NONE) { Log.e(TAG, "checkAuthAndUpdateAuth Failed and return errcode = " + errCode); return errCode; } return HciErrorCode.HCI_ERR_NONE; } /** * 获取授权 * @return */ private int checkAuthAndUpdateAuth() { // 获取系统授权到期时间 AuthExpireTime objExpireTime = new AuthExpireTime(); int initResult = HciCloudSys.hciGetAuthExpireTime(objExpireTime); if (initResult == HciErrorCode.HCI_ERR_NONE) { // 显示授权日期,如用户不需要关注该值,此处代码可忽略 Date date = new Date(objExpireTime.getExpireTime() * 1000); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA); Log.i(TAG, "expire time: " + sdf.format(date)); if (objExpireTime.getExpireTime() * 1000 > System.currentTimeMillis()) { // 已经成功获取了授权,并且距离授权到期有充足的时间(>7天) Log.i(TAG, "checkAuth success"); return initResult; } } // 获取过期时间失败或者已经过期 initResult = HciCloudSys.hciCheckAuth(); if (initResult == HciErrorCode.HCI_ERR_NONE) { Log.i(TAG, "checkAuth success"); return initResult; } else { Log.e(TAG, "checkAuth failed: " + initResult); return initResult; } } /** * 获取配置传参数 * @param context * @return */ private String getInitParam(Context context) { InitParam initParam = new InitParam(); //灵云云服务的接口地址,此项必填 initParam.addParam(InitParam.AuthParam.PARAM_KEY_APP_KEY, ConfigUtil.APP_KEY); //灵云云服务的接口地址,此项必填 initParam.addParam(InitParam.AuthParam.PARAM_KEY_DEVELOPER_KEY, ConfigUtil.DEVELOPER_KEY); //灵云云服务的接口地址,此项必填 initParam.addParam(InitParam.AuthParam.PARAM_KEY_CLOUD_URL, ConfigUtil.CLOUD_URL); String authPath = context.getFilesDir().getAbsolutePath(); //授权文件所在路径,此项必填 initParam.addParam(InitParam.AuthParam.PARAM_KEY_AUTH_PATH, authPath); //日志数目,默认保留多少个日志文件,超过则覆盖最旧的日志 initParam.addParam(InitParam.LogParam.PARAM_KEY_LOG_FILE_COUNT, "5"); String logPath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "sinovoice" + File.separator + context.getPackageName() + File.separator + "log" + File.separator; File file = new File(logPath); if (!file.exists()) { file.mkdirs(); } //日志的路径,可选,如果不传或者为空则不生成日志 initParam.addParam(InitParam.LogParam.PARAM_KEY_LOG_FILE_PATH, logPath); Log.d(TAG, "logPath = " + logPath); //日志大小,默认一个日志文件写多大,单位为K initParam.addParam(InitParam.LogParam.PARAM_KEY_LOG_FILE_SIZE, "1024"); //日志等级,0=无,1=错误,2=警告,3=信息,4=细节,5=调试,SDK将输出小于等于logLevel的日志信息 initParam.addParam(InitParam.LogParam.PARAM_KEY_LOG_LEVEL, "5"); return initParam.getStringConfig(); } /** * 反初始化 * @return */ public int release(){ return HciCloudSys.hciRelease(); }}
封装灵云语义理解功能
package com.example.sinovoice.util;import android.util.Log;import com.sinovoice.hcicloudsdk.api.nlu.HciCloudNlu;import com.sinovoice.hcicloudsdk.common.HciErrorCode;import com.sinovoice.hcicloudsdk.common.Session;import com.sinovoice.hcicloudsdk.common.nlu.NluConfig;import com.sinovoice.hcicloudsdk.common.nlu.NluInitParam;import com.sinovoice.hcicloudsdk.common.nlu.NluRecogResult;/** * Created by miaochangchun on 2016/12/15. */public class HciCloudNluHelper { private static final String TAG = HciCloudNluHelper.class.getSimpleName(); private static HciCloudNluHelper mHciCloudNluHelper = null; private HciCloudNluHelper(){ } public static HciCloudNluHelper getInstance() { if (mHciCloudNluHelper == null) { return new HciCloudNluHelper(); } return mHciCloudNluHelper; } /** * nlu的初始化功能 * @return */ public int initNlu(){ NluInitParam nluInitParam = new NluInitParam(); nluInitParam.addParam(NluInitParam.PARAM_KEY_INIT_CAP_KEYS, ConfigUtil.CAP_KEY_NLU_CLOUD_RECOG); nluInitParam.addParam(NluInitParam.PARAM_KEY_FILE_FLAG, "android_so");// nluInitParam.addParam(NluInitParam.PARAM_KEY_DATA_PATH, dataPath); int errCode = HciCloudNlu.hciNluInit(nluInitParam.getStringConfig()); return errCode; } /** * nlu的识别功能 * @param text 要解析的文本 * @param intention 选择的领域信息 */ public void recog(String text, String intention){ NluConfig nluConfig = new NluConfig(); nluConfig.addParam(NluConfig.SessionConfig.PARAM_KEY_CAP_KEY, ConfigUtil.CAP_KEY_NLU_CLOUD_RECOG); //如果使用多个领域,可以以分号间隔 nluConfig.addParam(NluConfig.ResultConfig.PARAM_KEY_INTENTION, intention); Session session = new Session(); int errCode = HciCloudNlu.hciNluSessionStart(nluConfig.getStringConfig(), session); if (errCode != HciErrorCode.HCI_ERR_NONE) { Log.e(TAG, "hciNluSessionStart failed and return " + errCode); return; } NluRecogResult nluRecogResult = new NluRecogResult(); errCode = HciCloudNlu.hciNluRecog(session, text, "", nluRecogResult); if (errCode != HciErrorCode.HCI_ERR_NONE) { Log.e(TAG, "hciNluRecog failed and return " + errCode); return; } errCode = HciCloudNlu.hciNluSessionStop(session); if (errCode != HciErrorCode.HCI_ERR_NONE) { Log.e(TAG, "hciNluSessionStop failed and return " + errCode); return; } } /** * nlu的反初始化功能 * @return */ public int releaseNlu(){ return HciCloudNlu.hciNluRelease(); }}
在MainActivity中使用语义理解的功能
package com.example.sinovoice.util;import android.util.Log;import com.sinovoice.hcicloudsdk.api.nlu.HciCloudNlu;import com.sinovoice.hcicloudsdk.common.HciErrorCode;import com.sinovoice.hcicloudsdk.common.Session;import com.sinovoice.hcicloudsdk.common.nlu.NluConfig;import com.sinovoice.hcicloudsdk.common.nlu.NluInitParam;import com.sinovoice.hcicloudsdk.common.nlu.NluRecogResult;/** * Created by miaochangchun on 2016/12/15. */public class HciCloudNluHelper { private static final String TAG = HciCloudNluHelper.class.getSimpleName(); private static HciCloudNluHelper mHciCloudNluHelper = null; private HciCloudNluHelper(){ } public static HciCloudNluHelper getInstance() { if (mHciCloudNluHelper == null) { return new HciCloudNluHelper(); } return mHciCloudNluHelper; } /** * nlu的初始化功能 * @return */ public int initNlu(){ NluInitParam nluInitParam = new NluInitParam(); nluInitParam.addParam(NluInitParam.PARAM_KEY_INIT_CAP_KEYS, ConfigUtil.CAP_KEY_NLU_CLOUD_RECOG); nluInitParam.addParam(NluInitParam.PARAM_KEY_FILE_FLAG, "android_so");// nluInitParam.addParam(NluInitParam.PARAM_KEY_DATA_PATH, dataPath); int errCode = HciCloudNlu.hciNluInit(nluInitParam.getStringConfig()); return errCode; } /** * nlu的识别功能 * @param text 要解析的文本 * @param intention 选择的领域信息 */ public void recog(String text, String intention){ NluConfig nluConfig = new NluConfig(); nluConfig.addParam(NluConfig.SessionConfig.PARAM_KEY_CAP_KEY, ConfigUtil.CAP_KEY_NLU_CLOUD_RECOG); //如果使用多个领域,可以以分号间隔 nluConfig.addParam(NluConfig.ResultConfig.PARAM_KEY_INTENTION, intention); Session session = new Session(); int errCode = HciCloudNlu.hciNluSessionStart(nluConfig.getStringConfig(), session); if (errCode != HciErrorCode.HCI_ERR_NONE) { Log.e(TAG, "hciNluSessionStart failed and return " + errCode); return; } NluRecogResult nluRecogResult = new NluRecogResult(); errCode = HciCloudNlu.hciNluRecog(session, text, "", nluRecogResult); if (errCode != HciErrorCode.HCI_ERR_NONE) { Log.e(TAG, "hciNluRecog failed and return " + errCode); return; } errCode = HciCloudNlu.hciNluSessionStop(session); if (errCode != HciErrorCode.HCI_ERR_NONE) { Log.e(TAG, "hciNluSessionStop failed and return " + errCode); return; } } /** * nlu的反初始化功能 * @return */ public int releaseNlu(){ return HciCloudNlu.hciNluRelease(); }}
注:灵云的在线识别功能需要联网才能使用。
0 0
- 【Android】灵云在线语义理解功能使用说明
- 【Android】灵云在线语音识别使用说明
- 灵云语义理解
- 【Android】灵云银行卡离线识别功能使用说明
- 图灵语义理解
- [C++]using语义使用说明
- 【Android】灵云离线语音识别使用说明
- 【Android】灵云手写离线识别使用说明
- Android语音识别SDK语义理解与解析方法
- Android语音识别SDK语义理解与解析方法
- 百度Android语音识别SDK语义理解与解析方法
- 百度Android语音识别SDK语义理解与解析方法
- 语音识别,语义理解一站式解决之二(android,olami)
- 带有android悬浮窗的语音识别语义理解demo
- Json在线工具使用说明
- 语义网理解
- 理解web语义化
- 汉语语义理解
- php操作文件
- Uncaught TypeError: Illegal constructor HTML错误
- ios 如何隐藏状态栏
- 解决Spring 3.0 json返回中文乱码问题
- C++ 虚函数表解析
- 【Android】灵云在线语义理解功能使用说明
- <转>深入理解Spark RDD抽象模型和编写RDD函数
- Kali-linux-2016.2安装后常用配置记录(1)
- Android蓝牙4.0开发
- MTD/MT/MDD/MD以及LIB/DLL之间的一些联系和问题
- z-index失效情况
- 数据从关系型数据库到大数据平台再到关系型数据库
- NFC初步开发详解
- 蓝鸥React Native零基础入门到项目实战 props