作者 : 不良使
潜力创作新星 华为云享专家
博客记录学习的思路,项目和错误,寻找志同道合的朋友
如果觉得有帮助记得一键三连 ┗|`O′|┛ 嗷~~
通过 AIUI 的配置及调用,开发一个关于语音合成的智能应用, 让学生了解语音合成技术如何在机器人上使用,同时对语音合成技术的使用途 径和步骤进行详细讲解。最后完成语音的合成。
1、了解 AIUI 开放平台账号申请、应用创建及配置;
2、掌握使用开发套件完成机器人智能应用的开发与调试;
3、掌握语音合成能力接口的调用开发。
1、语音合成技术,将文本内容合成为自然语音,并通过设备发声;
2、语音识别技术,将自然语音通过转写引擎识别为文本内容;
3、语义理解技术,对自然语言文本的理解,识别其具体表达的意思。
在完成了工程项目的搭建后,我们需要在项目工程中集成 AIUI 能力,具体 步骤如下:
1、 首先,导入配置文件,将 aiui.cfg 文件导入到应用工程目录:src/main/assets/cfg/ (该文件示例工程同目录中可获取)。
2、修改 aiui.cfg 文件中的配置信息,具体如下
修改代码中*标识的位置,主要包括 appid,appkey,scene(场景),将 AIUI 平台创建的应用相关信息填入。 同时需要在 AndroidManifest.xml 中完成权限申请
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();
}
}
跟以前在安装 APP 的是就申请了权限不同,Google 在 API 23,也就 Android6.0 之后加入了动态权限。对于一些敏感的权限,决定权交还给了用户, 不再是强制申请了。因为这个原因,如果 APP 需要支持 Android6.0 以上的系 统,就需要进行一下适配,否则 APP 就会崩溃。除了进入设置手动开启权限,还有两种方式让应用获得权限:动态权限申请、 平台签名。本次实验我们采用动态权限申请的方式获得权限。
首先套件机器接受你输入的语音,然后在事先准备好的问答库中找到问题,找不到问题默认不输出语音。在语音输出的同时界面上也会有相应的文字输出。
1)Android 开发工具网站
2)Android 开发者社区
3)科大讯飞 AIUI 开放平台
4)科大讯飞开放平台文档中心
最后,兄弟们悠着点,免费(白嫖)用户,一天就500次交互机会,手下留点情。
源码链接:Android学习代码(全)需要自取
觉得有用的可以给个三连,关注一波!!!带你了解更多的智能机器人小知识