目覚ましサーバ…前準備
とりあえず、朝、シャトルバスの時間 5 分前に通知させてみたい。
細かい仕様はすぐに思いついたものの、簡単なところから実装していく。
準備したもの
- スピーカー(ジャックタイプ。USB電源)
- Raspberry Pi 2 (弐号機)
やったこと
OpenJTalk をインストールして cron 登録。
参考したサイト様
スピーカーの接続。
ヘッドホンジャックに接続するスピーカーが手元にあるので、これを Raspberry Pi に接続してある。
電源は、USB 充電器のポートに接続したまま。
つまり、音楽再生時の環境そのまま。
音声読み上げソフト OpenJTalk のインストール
sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic htsengine libhtsengine-dev hts-voice-nitech-jp-atr503-m001
相変わらず、サクッと終わるインストールである。
つぎに、音声変更。
wget http://downloads.sourceforge.net/project/mmdagent/MMDAgent_Example/MMDAgent_Example-1.3/MMDAgent_Example-1.3.zip
unzip MMDAgent_Example-1.3.zip
sudo cp -R MMDAgent_Example-1.3/Voice/* /usr/share/hts-voice/
喋らせるコードも、そのまま拝借。
/usr/local/bin/jsay としてスクリプト登録。
#!/bin/sh TMP=/tmp/jsay.wav #cd /usr/share/hts-voice/nitech-jp-atr503-m001 cd /usr/share/hts-voice/mei_happy echo "$1" | open_jtalk \ -td tree-dur.inf \ -tf tree-lf0.inf \ -tm tree-mgc.inf \ -md dur.pdf \ -mf lf0.pdf \ -mm mgc.pdf \ -dm mgc.win1 \ -dm mgc.win2 \ -dm mgc.win3 \ -df lf0.win1 \ -df lf0.win2 \ -df lf0.win3 \ -dl lpf.win1 \ -ef tree-gv-lf0.inf \ -em tree-gv-mgc.inf \ -cf gv-lf0.pdf \ -cm gv-mgc.pdf \ -k gv-switch.inf \ -s 16000 \ -a 0.05 \ -u 0.0 \ -jm 1.0 \ -jf 1.0 \ -jl 1.0 \ -x /var/lib/mecab/dic/open-jtalk/naist-jdic \ -ow $TMP && \ aplay --quiet $TMP rm -f $TMP
cron 登録
cron 登録コマンドを呼び出して、とりあえず記述。
前回 crontab -e でファイルを作ってあるので、それに直接記述する。
sudo vi /var/spool/cron/crontabs/pi 30 6 * * * /usr/local/bin/jsay "シャトルバスのじかん。テストです"
…成功。
これだけなら、スクリプトの記述さえ必要なかった。
思い立ってから実装まで、この記録を含めても30分もかかってないとは素晴らしい。
参照したサイト様の、見事な整理のおかげなのは間違いない。
で、ぱらぱらと時間と読み上げてもらいたい内容を、お好みで cron 登録して、完了。