Raspberry Pi がおしゃべりしたら、子供がわくわくするんじゃないかと思いました。
Mac OSX にはSayコマンドがあって、それと同じことができたらいいなと。
OSX の say コマンド
say Hello
これだけで、OSXが喋ってくれる。声は、システム環境設定の読み上げから行けば大丈夫。
raspberry Pi でどうする?
google の音声読み上げと、mplayer を組み合わせでればいけるようです。
Google に TTS が用意されていて、指定アドレスにアクセスすれば、音声読み上げしてくれる。
http://translate.google.com/translate_tts?tl=en&q=Hello%20World
これで、音の確認をして、これをmplayer で再生すればいい
Raspberry Pi にSSHでアクセスしターミナルから次を実行。
mplayer 'http://translate.google.com/translate_tts?tl=en&q=Hello%20World'
mplayer は apt-line からインストール出来る
sudo aptitude install mplayer
あとは、この2つ(google tts と mplayer )を組み合わせて、関数にすれば完成。
raspberry piや Linuxで Sayコマンドを作って喋らせよう。
function say { mplayer "http://translate.google.com/translate_tts?tl=en&q=$1"; }
このコマンドでbash に say コマンドが追加される。
あとは、これを .bashrc に追記して。
echo 'function say { mplayer "http://translate.google.com/translate_tts?tl=en&q=$1"; }' >> ~/.bashrc
動かしてみよう
say hello
これで、英語についてはこれで行ける。
じゃぁ日本語は?
Googleは、日本語も用意してくれている。やったね。
function say { mplayer "http://translate.google.com/translate_tts?tl=ja&q=$1"; }
tl=en の部分をtl=ja に変えるだけ。楽ちん!
say こんにちは
たのしいね。
子供だけじゃなく、いい年こいた私もワクワクしてます。
追記:日本語関係
Google日本語TTSはUser-agent制限があるらしく、mplayer にUAをブラウザに設定する必要があった。
~/.mplayer/config にUserAgentを切り替えを書いておけば動くようだ。
以下のコマンドでUserAgentを追加する。
echo "user-agent='Mozilla/5.0 (X11; Linux i686; rv:10.0.4) Gecko/20100101 Firefox/10.0.4'" >> ~/.mplayer/config
追加:アニメ声
GoogleのTTSだけじゃ無味乾燥なので、アニメキャラっぽいほうが素敵
say
#!/usr/bin/env ruby # coding:utf-8 require 'open-uri' require 'json' require 'base64' str = ARGV.shift uri = "http://rospeex.ucri.jgn-x.jp/nauth_json/jsServices/VoiceTraSS?method=speak¶ms[]=ja¶ms[]=#{URI.encode(str)}¶ms[]=*¶ms[]=audio/x-wav&_=1386261073492" obj = JSON.parse(open(uri).read) data = obj["result"]["audio"] open("#{str}.wav", "w"){|f| f.write(Base64.decode64(data)) } `mplayer '#{str}.wav' ` `rm '#{str}.wav' `
say あかん
「あかん」のアクセントが気にいった。
参考資料
参考資料というか、元ネタ。
http://jacobsalmela.com/raspberry-pi-and-the-say-command-from-osx-how-to-make-your-pi-speak-at-will/