音声合成でおしゃべりをさせよう

 ここでは「Open JTalk」という音声合成ソフトウエアを使ってラズベリーパイにおしゃべりをさせてみましょう。これはオープンソースで開発されている日本語の音声合成エンジンです。Open JTalkのインストールは簡単です。次のコマンドを実行してください。

$ sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic htsengine libhtsengine-dev hts-voice-nitech-jp-atr503-m001 

 途中で「続行しますか [Y/n]?」というメッセージが表示されたら、「Y」を打ち込んで[Enter]キーを押してインストールを続行します。インストールそのものは、これだけで完了です(ただしかなり時間がかかります)。

 実際にOpen JTalkを動かすには、基本的に「open_jtalk」というコマンドを使うのですが、このコマンドは非常にたくさんのオプションを付けて実行しなければなりません。毎回これらのコマンドを打ち込んでいては面倒なので、MJPG-streamerのときと同じように、シェルスクリプトとして一つのファイルにまとめましょう。ここでは、シェルスクリプトを「jtalk.sh」というファイルとしてホームディレクトリーに作ることにします。下記のように、まずホームディレクトリーに移動し、次に「nano jtalk.sh」を実行してnanoを起動したら、図14の内容を打ち込んで保存します。最後に「jtalk.sh」を実行可能なファイルにしてください。

ホームディレクトリーに移動
$ cd /home/pi 
nanoを起動し、図14の内容を打ち込んで保存
$ nano jtalk.sh 
「jtalk.sh」を実行可能なファイルにする
$ chmod 755 jtalk.sh 
図14●Open JTalkを起動するシェルスクリプト「jtalk.sh」の内容
#!/bin/sh
tmpfile=/tmp/jtalk.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 \
-p 90 \
-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 $tmpfile && \
aplay --quiet $tmpfile
rm $tmpfile

 シェルスクリプトが作成できたら、次のコマンドを実行して実際に音声合成ができるかどうか試してみましょう。

音の出力先をスピーカーに設定
$ sudo amixer cset numid=3 1 
スピーカーから音が出るかどうかテスト
$ ./jtalk.sh 今日はいい天気ですね 

 最後の行を実行して、数秒後にスピーカーから「今日はいい天気ですね」という声が聞こえてきたら成功です! なお最初のコマンドは音の出力先を変更するためのものですが、この設定はラズベリーパイを再起動した後も有効です(別掲記事「音の出力先を切り替える」参照)。

 ここで作成した「jtalk.sh」は、読者がダウンロードしてすぐに利用できるように用意しておきました。次のコマンドでダウンロードできます。

$wget https://raw.githubusercontent.com/doublebind/rasrobo/master/jtalk.sh