Rapiroをしゃべらせてみた

Rapiroは耳の部分にスピーカーを取り付けられるように設計されている。
スピーカーをつけて、ただ音楽を流したりするだけではおもしろくない。
ロボットなんだから、しゃべれるようにしよう。

そんなわけで、Open JTalkを使ってしゃべらせることにした。

Open JTalkを使ってしゃべらせてみる

Open JTalkとは

Open JTalkは名古屋工業大学で開発された、日本語向けのテキストトゥスピーチ(文章読み上げ)ソフトで、txtデータをwavデータへ変換してくれる。

公式サイト:https://open-jtalk.sourceforge.net/

Open JTalkのインストール

open-jtalk(本体)とopen-jtalk-mecab-naist-jdic(辞書)、hts-voice-nitech-jp-atr503-m001(音響モデル)をインストールする。

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

音声の確認

とりあえず、イヤホンジャックにスピーカーを挿して、Open JTalkの動作確認をしてみる。

しゃべってもらいたい文章(あいうえお)と出力先とファイル名(~/test.wav)を指定してwavファイルを生成。

echo "あいうえお" | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -ow ~/test.wav

生成したwavファイルを再生。

aplay ~/test.wav

出力先を「/dev/stdout」にしてパイプ(|)で「aplay –quiet」をつなげると、wav形式のバイナリデータをそのまま出力してくれるので音声の確認はそのほうが便利。
ちなみに「–quiet」は標準出力や標準エラーに表示される情報(メッセージ)を抑制するオプションなので、表示させたい場合はつけなくてよい。

最終的にRapiroの起動確認用に、「起動完了」としゃべってもらうつもりなので、テストでも「起動完了」としゃべってもらう。

echo "起動完了" | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -ow /dev/stdout | aplay --quiet

渋い。ロボットにしては渋すぎる。

女性話者の設定

女性話者があるので、そちらのパッケージをダウンロードする。

wget https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.8/MMDAgent_Example-1.8.zip

ダウンロードが終わったら、解凍する。

unzip ./MMDAgent_Example-1.8.zip

女性話者の音響モデル(mei)をコピー。

sudo cp -r ./MMDAgent_Example-1.8/Voice/mei/ /usr/share/hts-voice/

女性話者でしゃべらせてみる。

echo "起動完了" | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/mei/mei_normal.htsvoice -ow /dev/stdout | aplay --quiet

渋さは取れたが、まだロボット感が足りない。

声色の調整

女性話者には「Happy」、「Bashful」、「Angry」、「Sad」の音響モデルがある。
コマンドの「mei_normal」の部分をそれぞれ「mei_happy」、「mei_bashful」、「mei_angry」、「mei_sad」とすることで声色の雰囲気が変えられる。

全部試してみたが、まだロボット感はない。
パラメータを使用して調整してみる。

ロボット感を出すためにオールパス値(-a)を変えてみる。
0.5以下にするとヘリウムガスを吸ったような声になるらしい。

echo "起動完了" | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/mei/mei_normal.htsvoice -a 0.4 -ow /dev/stdout | aplay --quiet

ロボット感が出た。
もう少しゆっくりしゃべってもらいたい。
スピーチ速度係数(-r)を調整。

echo "起動完了" | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/mei/mei_normal.htsvoice -a 0.4 -r 0.7 -ow /dev/stdout | aplay --quiet

いい感じになった。
他にも色々とパラメータがあり、声色の調整をすることができるので試してみるとよい。

参考サイト:https://server-setting.info/centos/open-jtalk-install.html#voice_7

Ver.1.8の音響モデルで説明しているが、実際にはVer.1.7の音響モデルを使用している。
バージョンによって、雰囲気が変わるので色々と試してみるのもよい。

「起動完了」の音声は起動時にしゃべってもらう固定文なので、wavディレクトリを作成して、そこに保存。

echo "起動完了" | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/mei/mei_normal.htsvoice -a 0.4 -r 0.7 -ow ~/wav/boot.wav

スピーカーを取り付ける

冒頭にも書いたとおり、Rapiroは耳の部分にスピーカーを取り付けられるように設計されており、50mmのスピーカーがきれいに収まるようになっている。

用意したもの

あくまで丸パンダ研究所のRapiroにつけたものなので、下記のものでなくてもよい。
ミニプラグについてはRapiro頭部のスペース的にL型のほうが扱いやすい。

スピーカーの取り付け

アンプモジュール、スピーカー、ミニプラグをハンダ付けする。
シングルエンド入力でいいので、下の図の緑色の線のようにアンプモジュールのGNDとIN−を接続。

アンプモジュールのIN+とIN-をそれぞれミニプラグのチップ端子とスリーブ端子に接続する。
モノラル接続なので、リング端子は使用しない。

Rapiroにスピーカーをセット。
Raspberry Piの3.3Vに接続してミニプラグを挿す。

ここでは片耳しかつけていないが、両耳に取り付けられるので、スピーカーを2個にするのもアリ。

起動時にしゃべらせる

起動時にしゃべってもらうにはいくつか方法があるが、rc.localを使って起動時にしゃべってもらう。

rc.localを開く。
ここではvimを使用しているが、好きなエディタで構わない。

sudo vim /etc/rc.local

一番下に書かれている「exit 0」の上に保存したwavファイルを再生するコマンドを書き込む。

aplay /[homeディレクトリ]/wav/boot.wav

exit 0