用树莓派打造宇宙翻译机

如果你曾经试过跟一个只会说外语的人沟通,你就会知道这是多么困难的一件事──即使有现代化的翻译网站帮忙,还是很难。这个项目可以将一个39元美元的迷你电脑转变为功能强大的语言翻译机,支援语音识别、母语播放,以及千种以上的词组。不可思议的部分是它只需要平价的硬件、免费的翻译API(应用程序介面),以及一些开源代码的软件,就能以低价完工。

这个宇宙翻译机的原理是利用耳机和Raspberry Pi的迷你电脑录制口说片语;接着利用Google的API将文件转成文本格式以利于语音识别;这个文本格式会被输入Microsoft的翻译API,翻译成想要的语言,然后再次转换成口语;最后,Raspberry Pi将翻译好的语句传回使用者的耳机。

宇宙翻译机非常适合在周末时制作,它可以教你如何运用一些非常强大的工具来打造一些可立即使用的东西。喔,还有,它也超好玩的。

到附近的RadioShack采购所有材料,再依照以下的步骤,一下子就可以做出自己的巴别鱼了。

材料

工具

  • USB键盘
  • HDMI显示器:用于跟Raspberry Pi交互。
  • 能上网的电脑:用来建立免费线上帐号与宇宙翻译机交互。

第一步:设定Raspberry Pi和下载软件

  • 如果你的Raspberry Pi还没准备好运行
  • 确认Raspberry Pi有网络连线。如果没有现成的以太网连接,可以用USB Wi-Fi接收器来连线网络。
  • 从指令行执行以下两个指令来更新Raspberry Pi的软件:
sudo apt-get update 
sudo apt-get upgrade

这个程序可能需要一些时间。

  • 用以下的指令安装这个项目需要的软件:
sudo apt-get install python-pip mplayer flac python2.7-dev libcurl4-gnutls-dev 
sudo pip install requests pycurl
  • 注:这个项目在截稿前经过最新版Raspbian的测试。请注意随着软件的更新产生的变化。如果要比较你的版本和我们测试的版本,可以从指令行:
uname -a  
Linux raspberrypi 3.12.22  #691 PREEMPT Wed Jun 18 18:29:58 BST 2014 armv6l GNU/Linux。

第二步:设定及测试耳机



  • 插入USB耳机(必要时可使用供电USB集线器)。
  • 执行以下的指令,它们会列出你的音效装置:
cat /proc/asound/cards 
cat /proc/asound/modules

这时候应该可以看到罗技耳机被列为card 1。第二个指令会显示card 0(预设输出)的驱动程序是snd_bcm2835,也就是Raspberry Pi的类比音效输出。card 1(我们的罗技耳机)的驱动程序是snd_usb_audio。如果没有看到耳机被列出来,可以尝试重新启动:

sudo reboot
  • 为了把USB耳机设定成预设的音效输入和输出,我们需要更新ALSA配置文件。用Nano文字编辑器开启:
sudo nano /etc/modprobe.d/alsa-base.conf
  • 把这行:
options snd-usb-audio index=-2

改成这样:

options snd-usb-audio index=0
  • 用Ctrl-X和输入y来储存并关闭文件,接着用这个指令来重新启动Raspberry Pi:
sudo reboot
  • 重新启动后,音效系统会重新载入,所以再次执行前面的
cat/proc/asound/cards 
cat/proc/asound/modules

指令后,应该就会看到USB耳机列为预设 的输入/输出装置(card 0),如上图所示。

  • 用麦克风录5秒钟的片段来测试:
arecord -d 5 -r 48000 make.wav

注:如果看到写着「overrun!!!」的错误提示,可以安心把它忽略。

  • 用耳机的扬声器播放:
aplay make.wav

如果声音有点粗糙也不用担心,因为在下一步会用更高的品质来录制。

  • 若需要调整音量,可以使用内建公用程序alsamixer。这个工具可以处理音效的输入和输出音量:
sudo alsamixer

第三步:下载并撷取源代码

  • 要用Raspberry Pi实现语音识别功能有几种方法,不过我认为这里最适合的方案是借助Google的语音转文字服务。这个服务让我们上传录好的音频文件,然后转换成文字(之后我们会用来翻译)。
  • 项目源代码会帮你处理这个部分。执行以下的指令来下载和撷取文件:
wget https://github.com/dconroy/PiTranslate/archive/master.zip 
unzip master.zip 
cd PiTranslate-master

注:里面提供Shell和Python程序码。

  • 将语音转文字程序码转换为可执行文件:
sudo chmod +x stt.sh

第四步:设定Google语音识别API



  • 要使用Google的语音识别API,必须先注册。登录你的Google帐号并依照以下的步骤进行。
  • 前往https://cloud.google.com/console并点选「Create Project」。取一个「我的宇宙翻译机」之类的名称,然后点选「Create」。(Google会产生一个随机的项目ID,所以这一ID不用理他。)
  • 在Google的云盘建立你的新项目时,开启新的浏览器分页来加入Chromium-dev Google网上论坛,这样可以存取语音API: https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-dev
  • 回到Google项目分页。如果完成建立项目了,就会看到项目控制面板。点选左边的「APIS & AUTH」并点选「APIs」。接着往下滚动并开启语音API。
  • 一样在项目控制面板,点选左边「APIS & AUTH」下方的「Credentials」,接着点选「Create new Key(建立新密钥)」按钮,并选取「Browser Key(浏览器密钥)」。把允许的访客来源文字栏位留白,并点选「Create」。新产生的API密钥接着会显示在控制面板上。
  • 在Raspberry Pi上开启 text-to-translate.py文件并找到下面的代码:
key = 'xxx'

用控制面板上的密钥取代xxx。为了让这个步骤更容易,可以启动Raspberry Pi的桌面环境(用startx),用网络浏览器Midori登录Google帐号,然后把密钥复制粘贴到文件里。也可以用电脑通过SFTP变更文件。

  • 注:Google的语音API虽然是免费的,它每天只接受50个要求。

第五步:设定微软翻译API


  • Google也有翻译API,但我们的项目会用微软提供的服务,因为是免费的。用你的微软帐号登录Azure Marketplace: https://datamarket.azure.com/developer/applications/
  • 点选「注册」按钮来建立新的应用程序。
  • 填写用户ID、应用程序名称和重新导向URI(任何URL都行)。 点选「建立」。
  • 接下来和Google密钥的做法很像,在PiTranslate.py正确的单引号之间填上用户ID和用户端密码并储存:
args = {
        'client_id': '',#your client id here
        'client_secret': '',#your azure secret here
        'scope': 'http://api.microsofttranslator.com',
        'grant_type': 'client_credentials'
}

第六步:使用宇宙翻译机

  • 现在API密钥已经建立完成,也输了代码,就可以来测试宇宙翻译机了。戴上耳机后,执行:
./stt.sh
  • 对耳机麦克风说话,说完之后按Ctrl-C
  • 接着可以从耳机听到翻译,还会在指令行看到回馈。
  • 预设设定会把英语翻译成西班牙语。可以在text-to-translate.py 的最后一行轻松变更来源和目标语言,剩下的工作就交给程序代码了。这样的宇宙翻译机支援数以千计的语言交互翻译,你可以尽情尝试!

via

坐沙发

发表评论

你的邮件地址不会公开


*