Raspberry Pi3に日本語で喋ってもらうまで

#■はじめに
Raspberry Pi3に、日本語で喋ってもらうための作業手順になります。
日本語音声プラグイン JTalkをインストールし、好きな日本語を喋らせるまでが目的です。

#■大まかな流れ
JTalk のインストール
JTalk でお試し発声
JTalk に女性音声を追加
JTalk の女性音声でお試し発声

#■前提
ラズパイにて日本語が入力できること、音声ジャックから音が出ることが前提です。

前提の手順はこちらから。
>[Raspberry Pi3の日本語入力を有効にする](https://qiita.com/Higemal/items/6cde9d6b40cbe9f0e97f)
[Raspberry Pi3 にてオーディオジャックから音声を出力する](https://qiita.com/Higemal/items/950712475e18a4ae1997)

#■JTalkの使い方
JTalkは、「日本語文字列を日本語音声に変換」するものです。
よって、音声出力する（音を鳴らす）部分は持ち合わせていません。
今回は、以下にて音声出力まで行います。

|順番|役割|内容|実体|
|:--|:--|:--|:--|
|1|セリフ作成|日本語のセリフを作成|手作り|
|2|日本語音声変換|セリフを音声ファイルとして作成|JTalk|
|3|音声出力|音声ファイルを音として出力|aplay|


#■作業1. JTalkのインストール
・パッケージリストをアップデート
`sudo apt-get update`

・JTalkをインストール
`sudo apt-get install open-jtalk`
＃特に入力や設定は不要

・推奨パッケージのインストール
`sudo apt-get install open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001`
＃JTalkインストール中に Suggested packages(提案パッケージ) として表示されるものになります。

#■作業2. JTalkでお試し（echoで実施）
・コマンド：
`echo "<日本語>" | open_jtalk -m <音響モデル> -x <辞書ディレクトリ> -ow <出力WAVファイル>`

```sh:
root@raspberrypi:~# echo "テスト用です" | open_jtalk
 -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice 
 -x /var/lib/mecab/dic/open-jtalk/naist-jdic
 -ow /tmp/test.wav
root@raspberrypi:~#
```

・コマンド：
`aplay <音声ファイル.wav>`

```sh:
root@raspberrypi:~# aplay /tmp/test.wav 
再生中 WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
root@raspberrypi:~# 
```

→これで音が出るはずです。


#■作業2. JTalkでお試し（ファイル読み込みで実施）
・準備
以下ファイルを準備。

```sh:
root@raspberrypi:~# cat /tmp/testword.txt 
ファイル内のテキストを読み上げます。
root@raspberrypi:~# 
```



・コマンド：
`open_jtalk -m <音響モデル> -x <辞書ディレクトリ> -ow <出力WAVファイル> <入力テキストファイル>`

```sh:
root@raspberrypi:~# open_jtalk
 -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice 
 -x /var/lib/mecab/dic/open-jtalk/naist-jdic
 -ow /tmp/testword.wav
 /tmp/testword.txt
root@raspberrypi:~# 
```

・コマンド：
`aplay <音声ファイル.wav>`

```sh:
root@raspberrypi:~# aplay /tmp/testword.wav 
再生中 WAVE '/tmp/testword.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
root@raspberrypi:~# 
```

→これで音が出るはずです。


#■3. JTalk に女性音声を追加
デフォルトのJTalkは男性音声なので、女性音声となる音響モデルを入手します。
今回はMMDAgentを利用します。

>MMDAgent
http://www.mmdagent.jp/

①ダウンロード
コマンド：
`wget https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.7/MMDAgent_Example-1.7.zip`

②zipファイルを解凍
`unzip ./MMDAgent_Example-1.7.zip`

③音響モデルをJTalkのディレクトリへコピー

```sh:
root@raspberrypi:/tmp# cp -r ./MMDAgent_Example-1.7/Voice/mei/ /usr/share/hts-voice/
```


>./MMDAgent_Example-1.7/Voice/mei/ 配下には、女性音響モデルが複数入っています。
>
```sh:
root@raspberrypi:/tmp# ls -lh ./MMDAgent_Example-1.7/Voice/mei/
合計 4.2M
-rw-r--r-- 1 root root 2.9K 12月 26  2016 COPYRIGHT.txt
-rw-r--r-- 1 root root 4.5K 12月 26  2016 README.txt
-rw-r--r-- 1 root root 843K 12月 26  2016 mei_angry.htsvoice
-rw-r--r-- 1 root root 843K 12月 26  2016 mei_bashful.htsvoice
-rw-r--r-- 1 root root 843K 12月 26  2016 mei_happy.htsvoice
-rw-r--r-- 1 root root 843K 12月 26  2016 mei_normal.htsvoice
-rw-r--r-- 1 root root 843K 12月 26  2016 mei_sad.htsvoice
```

#■手順4. JTalk の女性音声でお試し発声
音響モデルのみ、今回ダウンロードしたものを利用します。
それ以外の辞書ディレクトリなどは従来のものを利用します。

・コマンド：
`echo "<日本語>" | open_jtalk -m <音響モデル> -x <辞書ディレクトリ> -ow <出力WAVファイル>`

```sh:
root@raspberrypi:~# echo "テスト用です" | open_jtalk
 -m /usr/share/hts-voice/mei/mei_normal.htsvoice
 -x /var/lib/mecab/dic/open-jtalk/naist-jdic
 -ow /tmp/test.wav
root@raspberrypi:~#
```

・コマンド：
`aplay <音声ファイル.wav>`

```sh:
root@raspberrypi:~# aplay /tmp/test.wav 
再生中 WAVE '/tmp/test.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル
root@raspberrypi:~# 
```

→これで女性音声が出るはずです。

#■最後に
コマンドラインで操作が簡単に出来るので、シェル等でくるめばかなり便利に使えるかと思います。

>と思って、簡単なシェルを作ってみました。
>
JTalkの音声変換と音声出力をシェルで一気にやる(ラズパイ用)
https://qiita.com/Higemal/items/aacaa30588ebd2fceb1f


#■出典/参考
Open JTalk
http://open-jtalk.sourceforge.net/

MMDAgent
http://www.mmdagent.jp/

Raspberry Piでテキストを音声化する (Open JTalk)
http://www.taneyats.com/entry/raspi-open-jtalk

Ras Pi 3 スピーカーから音を鳴らす！そしてOpen JTalkで日本語を喋らせる！
https://iot-plus.net/make/raspi/speaker-open-jtalk-japanese-speech/

Raspberry piで日本語音声合成(Open JTalk)を試してみる。
https://qiita.com/lutecia16v/items/8d220885082e40ace252

Open JTalk の音響モデルを試す
http://mahoro-ba.net/index.php?j=1875