Raspberry Pi で遊ぶ (2) —Open JTalk で喋ってもらう—

さて、今回は Open JTalk を導入して Raspberry Pi (RPi) に日本語のテキストの読み上げをしてもらうことにする。その前に RPi の音の設定から。

Sound

user を audio グループに加えておく。

$ sudo usermod -G audio user

以下は R-Pi Troubleshooting を参考に。

$ sudo apt-get install alsa-utils
$ sudo modprobe snd_bcm2835

modprobe は念のため。デフォルトで snd_bcm2835 が設定されている。

$ amixer -c 0 cset numid=3 <n>

“n” のところが “0” で「自動」、”1″ で「ヘッドフォン」、”2″ で「HDMI」からの出力に設定される。ひとまずヘッドフォンから音を出してみたが、「プチ」という嫌な音が入る。ファームウェアのアップデート (cf. rpi-update) を行ったが変わらず。

そこで、ちょうど雑誌のおまけの USB-DAC (LUXMAN LXU-OT2) があったのでそこから出力してみる。LXU-OT2 をデフォルトのデバイスにするため /etc/modprobe.d/alsa-base.conf の以下の箇所 (index=0) を編集する。

$ sudo vi /etc/modprobe.d/alsa-base.conf
options snd-usb-audio index=0

再起動後 snd_usb_audio が “0” となっていることを確認する。

$ cat /proc/asound/modules
0 snd_usb_audio
1 snd_bcm2835

音のテスト。

$ aplay /usr/share/sounds/alsa/Front_Center.wav

ついでに mplayer も導入しておく。

$ sudo apt-get install mplayer libmpg123-0
$ vi ~/.mplayer/config
afm=mp3lib
ao=alsa
$ mplayer /path/to/test.mp3

ボリューム調整等は、

$ alsamixer -c 0 

で行える。音も良くなったし、眠っていた LXU-OT2 も活用できて一石二鳥の気分になる。

https://skalldan.files.wordpress.com/2013/02/wpid-rpi_lxu-ot2.png

Open JTalk

橋本商会 さんのガイドに従う。

$ 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/

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 -D plughw:0,0 -q $TMP
rm -f $TMP

# ends here

これを適当な場所 (~/bin/jsay など) に置く。

$ chmod +x ~/bin/jsay
$ jsay こんにちは

これで RPi が喋るようになった。例えば cron で、

0 7 * * 4    root     jsay "おはようございます。今日はゴミの日ですよ。"

と登録しておくと、毎週木曜日朝7時にゴミの日を知らせてくれる。

あるいは、RPi の小ささを利用してちょっとしたサプライズにも使えるかもしれない。例えば、子供部屋にそっと忍ばせてサンタクロースの声になりすまし、娘の希望を聞き出すこともできるだろうか。

$ ssh santa@raspberrypi
$ jsay "こんばんは。今年はどんなプレゼントが欲しいのかな?"

まあ、夢の住人にしてはあまりに無機質な声である (-_-;)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s