推广 热搜: page  小红  红书  数据  论文  考试  数据分析  关键词  哪些  搜索 

Android-AI聊天Demo

   日期:2025-01-01     移动:https://sicmodule.kub2b.com/mobile/quote/17824.html
package com.demo.aidemo.aiui; import android.content.Context; import android.text.TextUtils; import android.util.Log; import com.demo.aidemo.utils.FileUtils; import com.iflytek.aiui.AIUIAgent; import com.iflytek.aiui.AIUIConstant; import com.iflytek.aiui.AIUIEvent; import com.iflytek.aiui.AIUIListener; import com.iflytek.aiui.AIUIMessage; import org.json.JSONException; import org.json.JSONObject; import java.io.UnsupportedEncodingException; public class AIUIManager { private static final String TAG = AIUIManager.class.getSimpleName(); private static AIUIManager instance = null; private Context mContext; private AIUIAgent mAIUIAgent = null; private int mAIUIState = AIUIConstant.STATE_IDLE; private onNlpListener mListener; public static AIUIManager getInstance() { if (instance == null) { instance = new AIUIManager(); } return instance; } public void init(Context context) { this.mContext = context; createAgent(); } public void setonNlpListener(onNlpListener listener) { this.mListener = listener; } private void createAgent() { if (null == mAIUIAgent) { Log.i(TAG, "create aiui agent"); mAIUIAgent = AIUIAgent.createAgent(mContext, getAIUIParams(), mAIUIListener); } if (null == mAIUIAgent) { Log.i(TAG, "创建AIUIAgent失败!"); } else { Log.i(TAG, "AIUIAgent已创建"); } } public void destroyAgent() { if (null != mAIUIAgent) { Log.i(TAG, "destroy aiui agent"); mAIUIAgent.destroy(); mAIUIAgent = null; Log.i(TAG, "AIUIAgent已销毁"); } else { Log.i(TAG, "AIUIAgent为空"); } } public void startVoiceNlp() { if (null == mAIUIAgent) { Log.i(TAG, "AIUIAgent为空,请先创建"); return; } Log.i(TAG, "start voice nlp"); // 先发送唤醒消息,改变AIUI内部状态,只有唤醒状态才能接收语音输入 // 默认为oneshot模式,即一次唤醒后就进入休眠。可以修改aiui_phone.cfg中speech参数的interact_mode为continuous以支持持续交互 // if (AIUIConstant.STATE_WORKING != mAIUIState) { AIUIMessage wakeupMsg = new AIUIMessage(AIUIConstant.CMD_WAKEUP, 0, 0, "", null); mAIUIAgent.sendMessage(wakeupMsg); } // 打开AIUI内部录音机,开始录音。若要使用上传的个性化资源增强识别效果,则在参数中添加pers_param设置 // 个性化资源使用方法可参见http://doc.xfyun.cn/aiui_mobile/的用户个性化章节 // 在输入参数中设置tag,则对应结果中也将携带该tag,可用于关联输入输出 String params = "sample_rate=16000,data_type=audio,pers_param={"uid":""},tag=audio-tag"; AIUIMessage startRecord = new AIUIMessage(AIUIConstant.CMD_START_RECORD, 0, 0, params, null); mAIUIAgent.sendMessage(startRecord); } public void stopVoiceNlp() { if (null == mAIUIAgent) { Log.i(TAG,"AIUIAgent 为空,请先创建"); return; } Log.i(TAG, "stop voice nlp"); // 停止录音 String params = "sample_rate=16000,data_type=audio"; AIUIMessage stopRecord = new AIUIMessage(AIUIConstant.CMD_STOP_RECORD, 0, 0, params, null); mAIUIAgent.sendMessage(stopRecord); } public void startTextNlp(String text) { if (null == mAIUIAgent) { Log.i(TAG, "AIUIAgent 为空,请先创建"); return; } // 先发送唤醒消息,改变AIUI内部状态,只有唤醒状态才能接收文本输入 // if (AIUIConstant.STATE_WORKING != mAIUIState) { AIUIMessage wakeupMsg = new AIUIMessage(AIUIConstant.CMD_WAKEUP, 0, 0, "", null); mAIUIAgent.sendMessage(wakeupMsg); } Log.i(TAG, "start text nlp"); try { // 在输入参数中设置tag,则对应结果中也将携带该tag,可用于关联输入输出 String params = "data_type=text,tag=text-tag"; byte[] textData = text.getBytes("utf-8"); AIUIMessage write = new AIUIMessage(AIUIConstant.CMD_WRITE, 0, 0, params, textData); mAIUIAgent.sendMessage(write); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } private AIUIListener mAIUIListener = new AIUIListener() { @Override public void onEvent(AIUIEvent event) { Log.i(TAG, "on event: " + event.eventType); switch (event.eventType) { case AIUIConstant.EVENT_CONNECTED_TO_SERVER: Log.i(TAG, "已连接服务器"); break; case AIUIConstant.EVENT_SERVER_DISCONNECTED: Log.i(TAG, "与服务器断连"); break; case AIUIConstant.EVENT_RESULT: { try { JSonObject bizParamJson = new JSonObject(event.info); JSonObject data = bizParamJson.getJSonArray("data").getJSonObject(0); JSonObject params = data.getJSonObject("params"); JSonObject content = data.getJSonArray("content").getJSonObject(0); if (content.has("cnt_id")) { String cnt_id = content.getString("cnt_id"); String cntStr = new String(event.data.getByteArray(cnt_id), "utf-8"); if (TextUtils.isEmpty(cntStr)) { return; } JSonObject cntJson = new JSonObject(cntStr); String sub = params.optString("sub"); if ("nlp".equals(sub)) { // 解析得到语义结果 String resultStr = cntJson.optString("intent"); parseTextResult(resultStr); Log.i(TAG, resultStr); } } } catch (Throwable e) { e.printStackTrace(); } } break; case AIUIConstant.EVENT_ERROR: { Log.i(TAG, "错误: " + event.arg1 + "
本文地址:https://sicmodule.kub2b.com/quote/17824.html     企库往 https://sicmodule.kub2b.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号