RaspberryPi
日本語
ラズパイ
Raspberrypi3
jtalk

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

■はじめに

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

■大まかな流れ

JTalk のインストール
JTalk でお試し発声
JTalk に女性音声を追加
JTalk の女性音声でお試し発声

■前提

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

前提の手順はこちらから。

Raspberry Pi3の日本語入力を有効にする
Raspberry Pi3 にてオーディオジャックから音声を出力する

■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ファイル>

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>

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

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

■作業2. JTalkでお試し(ファイル読み込みで実施)

・準備
以下ファイルを準備。

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

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

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>

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のディレクトリへコピー

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

./MMDAgent_Example-1.7/Voice/mei/ 配下には、女性音響モデルが複数入っています。

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ファイル>

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>

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