简介
通过 AIUI 的配置及调用,开发一个关于语音合成的智能应用, 让学生了解语音合成技术如何在机器人上使用,同时对语音合成技术的使用途 径和步骤进行详细讲解。最后完成语音的合成。
🍓🍓1、了解 AIUI 开放平台账号申请、应用创建及配置;
🍓🍓2、掌握使用开发套件完成机器人智能应用的开发与调试;
🍓🍓3、掌握语音合成能力接口的调用开发。
内容
🍓🍓1、语音合成技术,将文本内容合成为自然语音,并通过设备发声;
🍓🍓2、语音识别技术,将自然语音通过转写引擎识别为文本内容;
🍓🍓3、语义理解技术,对自然语言文本的理解,识别其具体表达的意思。
步骤
步骤 1:AIUI 开放平台应用添加及设置
步骤 2:项目工程搭建及能力包导入
步骤 3:项目 AIUI 能力导入及配置
在完成了工程项目的搭建后,我们需要在项目工程中集成 AIUI 能力,具体 步骤如下:
💥💥1、 首先,导入配置文件,将 aiui.cfg 文件导入到应用工程目录:src/main/assets/cfg/ (该文件示例工程同目录中可获取)。
💥💥2、修改 aiui.cfg 文件中的配置信息,具体如下修改代码中*标识的位置,主要包括 appid,appkey,scene(场景),将 AIUI 平台创建的应用相关信息填入。 同时需要在 AndroidManifest.xml 中完成权限申请
步骤 4:功能代码开发
💥💥1、当应用接收到语音“你是谁”时,通过语音合成文本“我是小途,很高兴 为您服务。”进行回答;
💥💥2、 当应用接收到语音“你会干什么”时,通过语音合成文本“我可以陪你聊 天,为你解答问题,还可以给你唱歌哦。”进行回答。
💥💥3、首先,在的应用工程 MainActivity.java 文件的 onCreate 方法中进行 AIUI 的 能力初始化,并在文件中添加 AIUI 的回调方法;修改页面布局文件,添加一个 ID 为 txtArea 的 TextView 文本控件。
部分代码:
基础功能初始化:
private void init() { StarLogAbility.getInstance().initAbility(this); //基础能力初始化 StarCommonAbility.getInstance().initAbility(this, RobotType.TYPE_TEACHING, new StarCommonAbility.onResultCallback() { @Override public void onResult(boolean isSuccess, String hardCode) { if (isSuccess) { //硬件和业务状态初始化 switch (hardCode) { case PartCode.HARDWARE_PARTCODE.CODE_EMOJI: //设置初始表情 EmojiHelper.doEmojiBase(); break; case PartCode.HARDWARE_PARTCODE.CODE_GPIO: //默认加载的时候,将拾音方向设置为默认正前方的0度。 GPIOHelper.getInstance().setMainMic(0); break; case PartCode.HARDWARE_PARTCODE.CODE_CENTER_LIGHT: //关闭腹部灯带 CenterLightHelper.takeCenterLightOff(); break; default: break; } } } }); }
🎂🎂重写回答(待合成)预料库:
@Override public void onAiuiResponse(String semantic) { Log.i("test", "test:" + semantic); if (TextUtils.isEmpty(semantic)) { return; } try { JSONObject object = new JSONObject(semantic); if (null == object) { return; } JSONObject intentObject = object.optJSONObject("intent"); if (null == intentObject) { return; } final TextView txtArea = (TextView) findViewById(R.id.txtArea); if (intentObject.has("text")) { String txt = intentObject.getString("text"); if (TextUtils.equals(txt, "你是谁")) { txtArea.setText("我是小途,很高兴为您服务。"); SpeechHelper.getInstance().speak("我是小途,很高兴为您服务。"); } else if (TextUtils.equals(txt, "你会干什么")) { txtArea.setText("我可以陪你聊天,为你解答问题,还可以给你唱歌哦。陶士雯,CSDN博主"); SpeechHelper.getInstance().speak("我可以陪你聊天,为你解答问题,还可以给你唱歌哦。", new TTS.OnSpeakCallback() { @Override public void onSpeak(String s) { //需要在主线程中进行界面元素的修改 runOnUiThread(new Runnable() { @Override public void run() { txtArea.setText("您好,请问有什么可以帮您?"); } }); } }); } } } catch (Exception e) { e.printStackTrace(); } }
步骤 5:应用权限申请
跟以前在安装 APP 的是就申请了权限不同,Google 在 API 23,也就 Android6.0 之后加入了动态权限。对于一些敏感的权限,决定权交还给了用户, 不再是强制申请了。因为这个原因,如果 APP 需要支持 Android6.0 以上的系 统,就需要进行一下适配,否则 APP 就会崩溃。除了进入设置手动开启权限,还有两种方式让应用获得权限:动态权限申请、 平台签名。本次实验我们采用动态权限申请的方式获得权限。
步骤6:实验结果
首先套件机器接受你输入的语音,然后在事先准备好的问答库中找到问题,找不到问题默认不输出语音。在语音输出的同时界面上也会有相应的文字输出。