智能创客,中国最大的极客空间,智能平台,免费教学,视频教程,手把手教你创造儿时梦想!

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 14848|回复: 52
打印 上一主题 下一主题

《android入门教程三》语音控制的那些事

  [复制链接]

6

主题

25

帖子

129

积分

版主

Rank: 7Rank: 7Rank: 7

积分
129
跳转到指定楼层
楼主
发表于 2015-10-12 15:40:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 feiju 于 2015-10-12 16:00 编辑

    开源是一种精神,开源是一种境界。上面的教程已经教大家学习如何搭建app的开发环境和app工程的基本框架,如果你没有看,不要紧,点击下面代码,按照步骤学习一下吧。
《android入门教程一》开发环境的搭建http://www.znck007.com/forum.php?mod=viewthread&tid=42038&extra=page%3D1
《android入门教程二》安卓工程框架介绍 http://www.znck007.com/forum.php?mod=viewthread&tid=42337&extra=page%3D1
从教程三开始,我们就要玩真的咯,请大家跟随我一起DIY属于我们自己的app吧!在前面的入帖问候中,我曾经提到,怎么让家居智能起来,“智能”二字如何体现?难道我们拿着手机,打开看看家里温湿度多少,这就算智能吗?出门办事,眼睛时时盯着手机上的烟雾报警器数据和红外人体探测数据吗?答案显然是否定的!传感器数据不仅仅是为了给我们查看而存在的,如何运用它们,并且智能地做出反应和提醒,实现智能联动,给传感器们配上一个大脑,这才是我们的终极目标。有人会说:别扯这些没用的,你就告诉我怎么弄吧!{:soso_e143:}好吧,接下来,就教大家如何把手机app转换成自己的管家机器人,陪它说说话,陪它聊聊天,陪它唠唠嗑!
    作为管家机器人,不能说话你说着急不着急,还好创客提供的app里面有语音控制这个模块,但是大部分人点进去之后会发现:童话里都是骗人的!你跟它说话,它也不回答你,你说什么,它就只能识别出你说的话,然后显示出来。没关系,之所以是这样,是创客想让我们自己设计,自由发挥,别问我怎么知道的,因为,我也是猜的!
    首先,我们先进入语音控制的模块,看一下里面的代码是怎么写的吧!找到下图的文件,双击打开:

    打开后,其他的你先不要管,找到如图的代码位置
现在你就找到处理语言的地方了,你会发现,在里面已经写了这么几行代码
[Java] 纯文本查看 复制代码
String cmdstr="";//当前命令类型 
cmdstr="卧室开灯";//当前命令类型
if ( yuyin.contains("开") && yuyin.contains("灯") && yuyin.contains("卧室")) {
WebApi znckWebapi = new WebApi(IatDemo.this);//声明云端操作api类 
znckWebapi.sid="003";//修改成云端对应的sid
znckWebapi.nid="001";//修改成云端对应的nid
String mode="yysetdata";//语音数据模式
String data="1";//上传的数据,1代表开灯
znckWebapi.SetDate(mode,data);//调用SetDate数据函数发送。

return;
}

cmdstr="卧室关灯";//当前命令类型
if ( yuyin.contains("关") && yuyin.contains("灯") && yuyin.contains("卧室")) {

WebApi znckWebapi = new WebApi(IatDemo.this);//声明云端操作api类 
znckWebapi.sid="003";//修改成云端对应的sid
znckWebapi.nid="001";//修改成云端对应的nid
String mode="yysetdata";//语音数据模式
String data="0";//上传的数据,0代表关灯
znckWebapi.SetDate(mode,data);//调用SetDate数据函数发送。

return;
}

    如果你看得懂中文,就会发现,噢,原来语音就是在这个地方识别和进行控制的啊!是的!但是现在,机器人都不开口说话,怎么办呢?别着急,接着往下看。
    让手机说话,其实是通过android里面的TextToSpeech类实现的,不需要知道它是什么的,你跟着教程一步步做就行了。
    一、新建m_speeck变量,位置放着跟下图一样就行了
[AppleScript] 纯文本查看 复制代码
TextToSpeech m_speech;

    二、复制如下代码,将其放入制定位置,主要是初始化TextToSpeech。
[Java] 纯文本查看 复制代码
m_speech = new TextToSpeech(IatDemo.this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int arg0) {
if (arg0 == TextToSpeech.SUCCESS) {

//下面这句代码是主要的,设置语言,如果是英文的话,就用Locale.ENGLISH
int result = m_speech.setLanguage(Locale.CHINA);
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("lanageTag", "not use");
} 

}

}
});
注意上面的红框,这个是复制的位置哦,别复制错了。
    三、找到上面的鼠标选中里面的代码,然后Ctrl+/,将它们全部注释掉

然后在里面添加
[Java] 纯文本查看 复制代码
m_speech.speak(yuyin, TextToSpeech.QUEUE_FLUSH, null);
Ctrl+S保存后,插上你的安卓手机,点击上面的绿色小爬虫运行。
以上就是实现你说什么,手机就说什么,复读机模式!
运行后,有人会发现,就算在app的语音控制对着手机说话,它也还是一样不说话,咋回事呢?别着急,主要是因为你手机上没有中文的语音包,那怎么办呢?
首先,通过手机应用市场:应用宝,豌豆荚之类的,在里面搜索:讯飞语音+,搜到后安装,安装完啥也别干,退出来,打开手机设置,找到“语言和输入法”,往下找,找到“文字转语音(TTS)输出”,

找到“讯飞语音+”选中就行了。

最后,重新打开app,点击开始说一句话,是不是说话啦!是不是很神奇?
    到这里,有的创友会问:我搞到现在弄一个复读机干什么呢?别着急,你现在可以在里添加自己想要的语音命令了,比如说做一个类似iphone的SIRI下面接一段示例代码,相信你们一定能看懂
[Java] 纯文本查看 复制代码
if(yuyin.contains("你好") || yuyin.contains("哈喽") || yuyin.contains("hello")){

speakString = "你好!很高兴认识你!";

m_speech.speak(speakString, TextToSpeech.QUEUE_FLUSH, null);
return;
}
if(yuyin.contains("介绍") && yuyin.contains("你")){

speakString = "你好!我是这个家的管家机器人!你可以叫我瓦力!";
m_speech.speak(speakString, TextToSpeech.QUEUE_FLUSH, null);
return;

}
if(yuyin.contains("操")|| yuyin.contains("草") ){

speakString = "不能骂人,不然我会不高兴的!";
m_speech.speak(speakString, TextToSpeech.QUEUE_FLUSH, null);
return;
}

下面,你可以编制属于自己的语音命令了哦。在接下来的教程中,我会依据语音命令继续给大家做拓展,让机器人更加智能,实现不间断对话,启动各种自定义模式,并且进行消息推送等功能,敬请期待!大神勿喷!



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

3

主题

69

帖子

839

积分

版主

Rank: 7Rank: 7Rank: 7

积分
839
QQ
沙发
发表于 2015-10-12 16:00:42 | 只看该作者
开源是一种精神,开源是一种境界。
给你36个赞!
回复 支持 反对

使用道具 举报

6

主题

25

帖子

129

积分

版主

Rank: 7Rank: 7Rank: 7

积分
129
板凳
 楼主| 发表于 2015-10-12 16:31:43 | 只看该作者
创客帝国 发表于 2015-10-12 16:00
开源是一种精神,开源是一种境界。
给你36个赞!

感谢支持!哈哈!
回复 支持 反对

使用道具 举报

0

主题

31

帖子

82

积分

注册会员

Rank: 2

积分
82
地板
发表于 2015-10-12 17:00:50 | 只看该作者
赞一个!赞一个!赞一个!
回复 支持 反对

使用道具 举报

110

主题

396

帖子

2329

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2329
QQ
5#
发表于 2015-10-12 17:03:06 来自手机 | 只看该作者
已经有文字转语音,自定义回复,再加上图灵api机人的话,就是人机对话了哦,如果控制智能创客云端,就按书上的教程做就可以了。语音机器人+控制云端+会走,就是家用机器人哦。
回复 支持 反对

使用道具 举报

0

主题

12

帖子

85

积分

注册会员

Rank: 2

积分
85
6#
发表于 2015-10-12 18:47:34 | 只看该作者
好样的
回复

使用道具 举报

0

主题

0

帖子

3

积分

新手上路

Rank: 1

积分
3
7#
发表于 2016-1-10 16:45:41 | 只看该作者
走淘宝虽然慢一些 客服很耐心讲解流程并指导作! 不错诚信商家
回复 支持 反对

使用道具 举报

0

主题

23

帖子

70

积分

注册会员

Rank: 2

积分
70
8#
发表于 2016-1-13 21:53:49 | 只看该作者
小菜鸟刷等级,看教程,学习中
回复 支持 反对

使用道具 举报

2

主题

32

帖子

86

积分

注册会员

Rank: 2

积分
86
9#
发表于 2016-3-11 10:47:49 | 只看该作者
小菜鸟刷等级,看教程,学习中
回复 支持 反对

使用道具 举报

2

主题

32

帖子

86

积分

注册会员

Rank: 2

积分
86
10#
发表于 2016-3-11 22:38:41 来自手机 | 只看该作者
厉害得不要不要
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|手机版|智能创客 ( 桂ICP备14000828号

GMT+8, 2024-11-30 14:03 , Processed in 0.125347 second(s), 31 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表