Edited at

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