TA的每日心情 | 怒 2016-1-22 11:18 |
---|
签到天数: 159 天 连续签到: 1 天 [LV.7]常住居民III
|
给你的机器人增加语音,听觉,和视觉功能
P1
本文在上一期的第一部分已经提供了这个机器人的基本介绍,并且给出了关于用你的树莓派做一个有趣的小型机器人的比较实用的 几条小建议。
那么第二部分呢,我们将会涉及一些更高级的探索,并且演示怎样用树莓派模拟人类一些令人印象深刻的行为和设计系统。
P2
我们将会介绍三个领域,这三个领域对于这个有用处的机器人有巨大价值。这些分别是语音播报,语音识别,和机器视觉。
这三个部分每一个都与人类的中枢神经能的一部分有关-听,说,看。上期我们见识了机器人是怎样计算模拟计算真实世界,那个有用的机器人可以感知,处理,然后智能的在这个世界上活动。我们所选的每个领域,都会介绍这项领域的相关技术并且给一个简单的小例子看它是怎样在机器人应用方面做些有趣的事情的。
P3
前两个领域,语音播报和语音识别都与声音有关。用一个廉价的麦克风,一个扬声器,和一个树莓派,一个具有无限可能的世界打开了,这就是为什么我在我做的这个项目中加入它们。
首先让我们来看看怎样用语音播报功能让树莓派说话。
演说功能
我发现的对于树莓派最好的人工语音播报方案是espeak。它有很好的声音频域而且不是太耗费资源(意味着他会为其他事情省下处理能力)。不仅体积小,espeak还提供了一个简单直白并且很容易被集成到python等其他语言的的命令行接口。他甚至允许我们用一点简单的命令把它直接记录到WAV格式的文件中。最棒的是,他有一个史蒂芬霍金那样的发声器,来给它带来几分派头。发现它是如何发错音也是很有趣的啊!
P4
首先,我们最好要先试装一下espeak,看看他是否能够"开箱即用",如果你不用HDMI自带的音频,那不要忘了弄一个扬声器或麦克风插到你的树莓派上.如果在安装调试过程中需要帮助,请访问这个在树莓派spy中的公告。
P5
要安装espeak ,在以下命令行中键入:
sudo apt-get install espeak
这将会安装好espeak这个软件和相关的数据包。尝试着直接发送这条命令给espeak:
espeak “hello,can we be friends?”
espeak 第一次运行的时候 在说话前可能会有一点小的延时,这在接下来的几次运行中这种情况基本就消失了。你还很有可能得到一长串的关于“ALSA lib”“server sockets”“jack server”的警告。不过这些都不会有什么不良影响,你可以将他们忽略。最重要的是它能和你对话了!
P6
更多关于TTS和espeak的细节可以再//espeak.sourceforge.net上找到.
P7
既然我们能给树莓派机器人发音的能力,你认为它能来做些什么?或许它能让你知道你什么时候来新邮件,并帮你大声朗读出来.我认为你一定能想出不少其他的用处.
P8
以下是一段简单的代码示例,让我们想想它每次碰到语句时语音功能是怎样被触发的.这里我们给它加了一个硬件开关,每次遇到事件都会被触发.从我们的python库中,我们已经把这种事件封装成一个函数叫PiBot.isBumped.
代码(略)
语音识别
P9
在机器人学中,我发现的一个非常有前景的项目叫Jasper.这个项目宣称你可以用你的声音控制任何事情而且他们的网站进一步解释说,"Jasper 是一个为发展长期语音控制应用的开源平台".
P10
几年来,语音控制已经成为应用于世界上最先进(且昂贵)的机器人的一项令人振奋的技术,并且值得一提的是这个自由软件已经在廉价的树莓派机器人上成为可能.
P11
Jasper 是通过识别特定的口语单词然后触发事件来工作的(例如 执行一个python 函数).这些你想用来触发事件的口语单词可以通过一个字符串输给Jasper.每一个你要用的python脚本都包含一个叫WORDS的字符串,一个isvalid()函数,和一个handle()函数.isvalid函数与要识别的单词有关,handle函数与要发生的动作有关.
P12
WORDS字符数组包含你想从语音中抽取的单词.比如,我们来选一个单词"跳舞",我们可以这样声明:
WORDS = ["dance"]
我们也想设置这段脚本的优先级高于其他脚本.
数字越高就越重要,在遇到其他同样的单词时就越有可能被执行.我们暂时饿把我们这个单词设置为10;如果另外一段脚本中有一个优先级小于10的,它也包含dance在它的WORDS数组中,那我们的脚本将会被执行,因为它有一个更高的优先级.
PRIOIRTY = 10;
inValid()函数从Jasper的声音识别引擎中检查输入的文本,并检索出是否有对应的文字.他会检查用户的输入,如果输入文本与脚本相关那就返回真.
handle()函数主要是执行与输入相关的动作.这就是Jasper将会对输入做出反应的动作.你可能需要传递text,mic,和profile作为形式参量,这样你就能获得更多选择.在这个例子里我要使Jasper报告它将要跳舞,然后从我们的函数中调用一个函数让它跳舞.
视觉能力
高级树莓派机器人的第三个领域就是机器视觉.用树莓派的高清摄像头模组,你就拥有了捕捉视觉数据的能力.最近卓越的开原机器视觉库OPENCV在树莓派上实现了.这将会为分析视觉数据提供巨大的处理能力,并且让树莓派做更多有趣的应用提供了无限可能.面部识别,迷踪循迹,运动检测,手势控制都可以在树莓派上用opencv实现.在机器人上实现这些事情也是非常令人激动的.尽管我们当前要做的还是现在我们的树莓派上装上opencv.
我们在Adafruit上找了一份手册来让我们的树莓派能够运行opencv.你可以在http://learn.adafruit.com/raspberry-pi-face-recognition-treasure-box. 找到.
里面也包含关于图像捕捉和下面要提到的训练配置脚本的链接.
为了能识别一张脸我们需要许多那个人的照片.
我们可以用这个python脚本-capture-positive.py. 这要获得树莓派摄像头的访问权限,所以你要在根用户下运行.
同一张脸的多张照片应该在不同角度拍摄. 我们用这些图片来训练图像识别模型.这可能要花费几分钟.
键入
python train.py
下一步我们必须调整config.by这个脚本来配置我们的伺服电机的移动动作.不同的选项在以上的连接中已经详尽描述,并且会根据你的应用做相应的改变.
我们需要的最后一个python脚本初始化树莓派的摄像头,并且执行面部识别.这一版本的代码是改编自托尼狄谷拉在github上的opencv面部识别工程.这个脚本能检测单张脸,这就是我们要在我们的树莓派上要运行的程序.
机器人的未来
这些话同时如此的高端大气上档次,所以如果你已经设法读完这篇文章你已经做得很好了.
网上有很多资源,如果你想跟深入的研究这些话题可以上网查看.特别说明的是由许多文章是可以在pibot 网站http://www.pibot.org/how-to上找到.我们将继续往树莓派机器人学添加更多资源.
我们正致力于研究树莓派的机器视觉,语音识别,和文本播报功能并且所有的代码都是开源的,也已经在社区内共享.虽然我不认识你,但是我们都会为能在树莓派上用上这么不可思议的软件而高兴.多亏树莓派社区的帮忙,我们现在可以做一个可以听见你,识别你的脸,而且可以与你对话的机器人了.实在非常幸福啊!
感谢 pibot上Aldi Rina ,Alex Gray 和steph Tyszka三位为此文章的贡献!
|
|