読者です 読者をやめる 読者になる 読者になる

Raspberry Π

Raspberry Piでいろんなことをやってみようというブログです。

mincraft

自由に言葉を喋らせるようにする

機能追加

Raspberry Piを使った、初めての機能追加として、
スピーカーを通して、Raspberry Piに言葉を喋らせる機能を作ろうと思います。

f:id:taka230035:20161001204055j:plain:w300



まずは、手っ取り早く出来そうな、ラズパイに言葉に喋らせるというものに挑戦

参照サイトは以下です。
Raspberry Piに現在時刻と、天気をしゃべらせてみた(Python)
Raspberry Piに喋らせる
音声合成でRaspberryPiを喋らせる

ただ、上記サイトのプログラムだとうまく実行できず、それぞれを組み合わせたスクリプトで喋るようになりました。




Raspberry Piにスピーカーを接続する

アウトプットする場所が無いと始まらないので、 Raspberry Piにスピーカーを接続する必要があります。
自分の場合は安いが結構大きいUSBスピーカーを取り付けました。
使用したスピーカーについては以下でレビューしております。

rasp0035.hatenablog.com


スピーカーのプラグとUSBをRaspberry Piに接続して、Raspberry Piを再起動するだけで、簡単に音が出ました。

スピーカーに質が悪いせいか、周囲の電波を受け取るごとにガヤガヤ鳴り、
逆にそのおかげで、うまく接続できていることが分かりました。




OpenJTalkのインストール

今回はOpenJTalkを使って喋らせます。
喋らせる方法はいくつかあるらしいですが、、調べてみたらOpenJTalkを使うのが一般的とのことです。

Raspberry Piコンソールより

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

でインストールします。
参照サイトのように声を変更する場合は以下となります。

$ cd /tmp

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





シェルスクリプトで言葉を喋らせる

次にシェルを使いJTalkを言葉を送り、喋らせます。
例として、jtalk.shという名前でスクリプトを作成しました。

vi jtalk.sh



スクリプトは以下
(ちょっと見辛いですが、見栄えを良くしようとすると全角とか入ってしまうので)


#!/bin/bash
HV=/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice

tempfile=`tempfile`
option="-m $HV \
-s 16000 \
-p 100 \
-a 0.03 \
-u 0.0 \
-jm 1.0 \
-jf 1.0 \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-ow $tempfile"

if [ -z "$1" ] ; then
open_jtalk $option
else
if [ -f "$1" ] ; then
open_jtalk $option $1
else
echo "$1" | open_jtalk $option
fi
fi

aplay -q $tempfile
rm $tempfile


コンソールより
./jtalk.sh を実行すれば、スピーカーから声がでました。

"あいうえお"と喋らせる場合

$ ./jtalk.sh あいうえお





さらに喋る声を変更する

作成したjtalk.sh内の
HV=/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice

のhtsvoiceファイルを変更することで、声を変更することが出来ます。

htsvoiceファイルについては、ネット上で公開しているサイトがちらほらあります。

例えば以下サイトです。
なんかいろいろしてみます 音響モデル
ただ、利用規約注意です!!

上記スクリプトにて
HV="新しいhtsvoiceのパス"
とすれば、声が変わって出力されます。

今回は以上です。