Ras Pi 3 スピーカーから音を鳴らす!そしてOpen JTalkで日本語を喋らせる!

2017年11月23日

はじめに

AI音声アシスタントが花盛りの今日この頃。

海外では、Siri(Apple)、Cortana(Microsoft)、Alexa(Amazon)、Google Assistant(Google)が次々と製品を発表して話題になっています。

そこでうちのラズパイ3も、まずは喋らないと話にならないだろう!(文字通り)ということで、スピーカーを接続して「日本語」を話せるようにしてみました。

使ったもの

スピーカー

  • USBから電源が取れるもの。
  • Logicool社製、ステレオスピーカー Z120BW
  • ¥1,523 @Amazon

環境:

  • Raspberry Pi 3 Model B
$ uname -r
4.9.24-v7+

スピーカーから音を鳴らす!

まず、スピーカーを接続します。USBポートから電源を取り、ステレオミニプラグを接続します。

音素材を用意する

  • フリーの音源。魔王魂さんから「ファンタジー13」のmp3をゲット!
    (ファイナルファンタジーが好きなので、なんとなく名前で惹かれましたw)
  • ※母艦PCから、mp3ファイルのボタンを右クリックしてリンク先をコピーし、ラズパイ3のターミナルからwget コマンドで入手しました。

出力先を設定する。

HDMIディスプレイが接続されている場合、音声の出力先HDMIになってしまいスピーカーから音が出ない場合があります。

そのような時には、コマンドラインで raspi-config を起動して、7 Advanced Option → A4 Audio の「1 Force 3.5mm (‘headphone’) jack」選択しましょう。

再生ソフトを用意する。

mp3を再生したいので、mpg321 をインストールします。

$ sudo apt-get install mpg321

ボリュームを調整する。

コマンドで設定する場合は以下のコマンドを実行します。

$ alsamixer

上下キーで適当な値に設定しましょう。私は85にしました(最初小さかったので)

デスクトップ環境がある場合は、スピーカーアイコンをクリックして適当な値に設定してください。

先ほどゲットしたmp3をいざ、再生!

$ mpg321 bgm_maoudamashii_fantasy13.mp3

無事に音が流れました♪

参考にしたサイト

こちらのサイトを参考にさせていただきました。

Open JTalkで日本語を喋らせる!

日本語を喋らせるには、日本語音声合成システムが必要です。
ユックロイドとか、初音ミクとか有名処に心惹かれつつも、Modified BSD license(修正BSDライセンス) で配布されているOpen JTalkを利用しました。

※インストールと設定はこちらのサイトがとても参考になりました。

早速インストール!

コマンドラインで以下を実行

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

日本語テキストから音声ファイルを作る

インストールが完了したら、喋らせたい日本語テキストを作ります。

$ cat voice.txt
わがはいは、ラズパイ3である。

次に、音声ファイルを作ります。

$ 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 test.wav voice.txt

再生してみる!

以下のコマンドで作成したファイルを再生してみます。

$ aplay test.wav

っつぁあっ!おっさんのボソボソ声じゃないですかー (´д`)

シェルスクリプトでまとめる

気を取り直して、参考サイトより、音声ファイルを作成・再生・削除する一連のスクリプトを作ります。

$ vim jsay.sh
#!/bin/sh
TMP=/tmp/jsay.wav
echo "$1" | 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 && \
aplay --quiet $TMP
rm -f $TMP

作ったファイルに実行権を付けて、

$ chmod +x jsay.sh

コマンドとして実行!

$ ./jsay.sh やっほー

っくぁっ!おっさんの「やっほー」テンション低いー (´д`)

できたけれど、これだとあまり嬉しくない(笑)ということで、女性の声にしてみます。

女性の声にする!

こちらも修正BSDライセンスで配布されている MMDAgent(http://www.mmdagent.jp)を利用して、女性の声で喋らせてみます。

記事執筆時点(2017-07-07)で最新の「version 1.7」を使用しました。

ファイルを取得します。

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

展開します。

$ unzip MMDAgent_Example-1.7.zip

その中にあるmeiフォルダをまるっとコピーします。

$ sudo cp -R ./MMDAgent_Example-1.7/Voice/mei /usr/share/hts-voice/

色々な声が入っています。

$ ls /usr/share/hts-voice/mei/ | grep mei
mei_angry.htsvoice
mei_bashful.htsvoice
mei_happy.htsvoice
mei_normal.htsvoice
mei_sad.htsvoice

ファイル名から察するに、嬉しい声、悲しい声など色々な声色があるようです。

先ほどの jsay.sh の -m xxxx.htsvoice の部分を好みの声に変えましょう。

before:

-m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice \

after:

-m /usr/share/hts-voice/mei/mei_bashful.htsvoice \

いざ、再生!(ドキドキ

./jsay.sh やっほー

うわっ!なんだか色っぽい感じになったので、normalに変更 (^^ゞ

$ vim jsay.sh
...
-m /usr/share/hts-voice/mei/mei_bashful.htsvoice \
…

そして、

./jsay.sh わたしはラズパイ3だよ!

できたーっ!らずぱいさん!

音声ファイルのサンプル


「次から次に、どんどん喋りますわよ!」

ということで、私のラズパイ3がスピーカーの接続とOpen JTalkによる日本語音声合成で日本語を喋ることができるようになりました♪