目覚ましサーバ…前準備

とりあえず、朝、シャトルバスの時間 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 登録して、完了。