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

标题: 《android入门教程三》语音控制的那些事 [打印本页]

作者: feiju    时间: 2015-10-12 15:40
标题: 《android入门教程三》语音控制的那些事
本帖最后由 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;
}

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




作者: 创客帝国    时间: 2015-10-12 16:00
开源是一种精神,开源是一种境界。
给你36个赞!
作者: feiju    时间: 2015-10-12 16:31
创客帝国 发表于 2015-10-12 16:00
开源是一种精神,开源是一种境界。
给你36个赞!

感谢支持!哈哈!
作者: qq380540379    时间: 2015-10-12 17:00
赞一个!赞一个!赞一个!
作者: znck007    时间: 2015-10-12 17:03
已经有文字转语音,自定义回复,再加上图灵api机人的话,就是人机对话了哦,如果控制智能创客云端,就按书上的教程做就可以了。语音机器人+控制云端+会走,就是家用机器人哦。
作者: zhangjf    时间: 2015-10-12 18:47
好样的
作者: puvas    时间: 2016-1-10 16:45
走淘宝虽然慢一些 客服很耐心讲解流程并指导作! 不错诚信商家
作者: Raspberry    时间: 2016-1-13 21:53
小菜鸟刷等级,看教程,学习中
作者: caiboxuan    时间: 2016-3-11 10:47
小菜鸟刷等级,看教程,学习中
作者: caiboxuan    时间: 2016-3-11 22:38
厉害得不要不要
作者: lk14d9    时间: 2016-3-19 22:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: 镜花水月    时间: 2016-3-24 08:11
我也一直在学习做语音
作者: lccyctyz    时间: 2016-3-25 22:09
继续学习中、、、、、、
作者: qiao3755    时间: 2016-3-29 22:18
好棒的程序i!!
作者: karlliang    时间: 2016-3-31 01:07
谢谢详细的教程,我按照做完教程三,debug as Android application时会报错,Eclipse显示bin->res->crunch是红色叉子,可有解?
作者: iwdlw    时间: 2016-4-3 23:43
〓金牌-投票███扣扣:119209911 ███微信:13911679882(手机)如有网上投票刷票需求就到金牌微信投票公司,将提供专业服务。

作者: 镜花水月    时间: 2016-4-5 10:01
开源是一种精神,开源是一种境界,我喜欢这句
作者: nkubf    时间: 2016-4-12 00:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: sncxe    时间: 2016-5-5 20:28
顶也~~~
作者: liangzhineng    时间: 2016-5-20 15:31
很好的教程,谢谢作者
作者: dpzkm    时间: 2016-6-11 04:25
真是好东西,顶啊!
作者: holmes    时间: 2016-6-16 21:28
有点难度,没有搞过,不知道能不能学会。
作者: qq571484380    时间: 2016-6-20 17:02
给力给力
作者: hszrk    时间: 2016-6-26 16:13
没有问题,坚决支持













作者: {五洲管道}    时间: 2016-9-10 05:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: hmdid    时间: 2016-9-12 09:38
file:///C:/Users/x-001/Desktop/QQ图片20160907135952.png
file:///C:/Users/x-001/Desktop/QQ图片20160907135433.png
作者: 方重明    时间: 2016-10-1 13:32
ding呀 支持












某宝购买 视频教程 素材 软件 xiao视频 等资源  百度网盘免费下载   hao.wpan123.com
作者: 所有爱情都成    时间: 2016-10-15 12:47
经验啊... 向楼主学习













作者: 生活积淀uzv    时间: 2016-10-19 15:34
谢谢楼主  。。。。。。













作者: 草拟母oh    时间: 2016-11-4 02:33
不知该说些什么。。。。。。就是谢谢

















欢迎光临 智能创客,中国最大的极客空间,智能平台,免费教学,视频教程,手把手教你创造儿时梦想! (http://luntan.znck007.com/) Powered by Discuz! X3.2