接上篇文章:基于树莓派和Tensowflow的物体识别-brain

上篇文章里我们用tensorflow的inception模型为树莓派探险者添加智能(它的大脑(brain))。这篇文章里我们给他添加外设,使其"说"出物体的名称,我们将使其成为speaker

ps:之所以叫树莓派探险者是它的行为很像一个初入地球的外星机器人,对周遭事物充满好奇,试图弄清看到的每个物体是什么(代码的实现是超声波测距+拍照+tensorflow图像识别)

目标

我们将使树莓派探险者用中文说出看到的物体的名字,诸如这是一个橘子

任务

为了实现这个目标我们有几件事要做。

tensorflow的inception模型识别完物体,将输出5个最为贴近的物体的英文名称。我们选取得分最高的物体,将其名称翻译为中文,之后用蓝牙音箱输出:这是一个xxx

实际上是以下两项任务:

  • 英汉翻译
  • 中文文字转语音

解决方案

完成以上任务,有两种典型的方案,一种使用云服务,一种使用本地软件

云服务

使用云服务,我们可以轻松完成以上两项任务,英汉翻译使用:translate, 这是一个python库,直接pip安装就行

1
2
3
4
5
# pip install translate
from translate import Translator
translator= Translator(from_lang='en',to_lang="zh")
translation = translator.translate("umbrella")
print translation #雨伞

中文文字转语音可以使用百度语音合成

本地软件

为了提高响应速度和可控性,使其减少对网络的依赖(有些环境并没有网络),也许我们更倾向使用本地软件

下面分别论述如何在不依赖网络的情况下使用本地软件来完成翻译和文字转语音的任务

英汉翻译我们选择: sdcv

1
2
3
sudo  apt-get install sdcv
mkdir -p ~/.stardict/dic # 之后把字典下载解压到这个目录里
sdcv orange #查询单词 orange

之后我们用正则提取出其中的名词选项,选择最靠前的(这个策略没有认真考虑过)

至于字典的下载可以到这里:zh_CN 简体中文词典

我下了三个字典:朗道英汉字典5.0、KDic11万英汉词典、牛津简明英汉袖珍辞典

朗道英汉字典5.0内容详尽,牛津简明英汉袖珍辞典简单清晰

我偏好后者


下一个任务是中文文字转语音,树莓派机器人原作者Lukas使用Flite来做文字转语音。Flite是一个小型、快速的TTS系统,是著名的语音合成系统festival的C版本,可用于嵌入式系统

可惜这个工具不支持中文,我决定采用:ekho来做文字转语音的工作,项目介绍在:Ekho(余音) - 中文语音合成软件

其他可选的工具还有eSpeak,安装和使用都简单。espeak -vzh "你好",发音比较机械

todo

  • 增加看图说话功能(Show and Tell: image captioning open sourced in TensorFlow)
  • 语音识别(pocketsphinx)

参考