ラズパイで音声出力を試す! OpenJtalkの準備から喋りまで

2017年7月25日

60爺は、少し前に Open JTalk を使って RaspberryPi に話をさせていました。今回、再実行しようとしましたが、環境が壊れており一からやり直しとなってしまいました。しかも、過去の記録を取っていないため、再現するまで時間を食ってしまいました。

また、同じ轍を踏まないよう、環境設定の手順を記録として残します。

スポンサーリンク

音声出力の準備

さて、Open JTalk は、バージョン1.05以前と1.06以降で hts_voice のファイルフォーマットが異なるそうです。

今回は、2015年3月時点で一番最新バージョンの「Open JTalk1.08」で喋らせてみます。

ちなみに、2015年3月現在、apt-get でインストールすると、バージョン1.05がインストールされるそうなので、今回は、ソースからコンパイルしてインストールします。

今回は、aptではなく、ソースからmake installでインストールをします。

音声出力の準備としての手順は次の通りです。

  1. 管理ソフトウェアインストール
  2. hts_engine API(version 1.09)のインストール
  3. Open JTalk(version 1.08)のダウンロード
  4. Open JTalk ビルド、コンパイル、インストール
  5. 確認
  6. 辞書ファイルの入手
  7. MMDAgent音声ファイルの入手

管理ソフトウェアインストール

make installでインストールしたアプリケーションを管理する「paco」というソフトウェアをインストールします。

pi@raspberrypi:~ $ sudo aptitude install paco
以下の新規パッケージがインストールされます:
paco
・
・
libc-bin (2.19-18+deb8u9) のトリガを処理しています ...

hts_engine API(version 1.09)のインストール

/tmp にダウンロードして解凍します。

pi@raspberrypi:~ $ cd /tmp
pi@raspberrypi:/tmp $sudo wget https://sourceforge.net/projects/hts-engine/files/hts_engine%20API/hts_engine_API-1.09/hts_engine_API-1.09.tar.gz
--2017-07-12 13:10:30-- https://sourceforge.net/projects/hts-engine/files/hts_engine%20API/hts_engine_API-1.09/hts_engine_API-1.09.tar.gz
・
・
2017-07-12 13:10:33 (1.39 MB/s) - `hts_engine_API-1.09.tar.gz' へ保存完了 [169258/169258]
pi@raspberrypi:/tmp $ ls
dhcpcd-(null)
hts_engine_API-1.09.tar.gz
pulse-PKdhtXMmr18n
ssh-HX0mzZHu4Vbj
ssh-HhEJHKrJN1Dw
systemd-private-ab1613aa03874ad4b8e68245cacb52a3-rtkit-daemon.service-E8spzT
pi@raspberrypi:/tmp $ sudo tar zxvf hts_engine_API-1.09.tar.gz
hts_engine_API-1.09/
・
・
hts_engine_API-1.09/bin/Makefile.mak

■ビルド、コンパイル、インストールします。

参考記事では「数分かかります」と書いてありましたが、それほどでもなかったです。

pi@raspberrypi:/tmp $ cd /tmp/hts_engine_API-1.09
pi@raspberrypi:/tmp/hts_engine_API-1.09 $ sudo ./configure
checking for a BSD-compatible install... /usr/bin/install -c
・
・
config.status: executing depfiles commands
pi@raspberrypi:/tmp/hts_engine_API-1.09 $ sudo make
Making all in lib
・
・
make[1]: Leaving directory '/tmp/hts_engine_API-1.09'
pi@raspberrypi:/tmp/hts_engine_API-1.09 $ sudo paco -lD "make install"
Making install in lib
・
・
make[1]: Leaving directory '/tmp/hts_engine_API-1.09'

Open JTalk(version 1.08)ダウンロード

/tmp にダウンロードして解凍します。

pi@raspberrypi:/tmp/hts_engine_API-1.09 $ cd /tmp
pi@raspberrypi:/tmp $ sudo wget https://sourceforge.net/projects/open-jtalk/files/Open%20JTalk/open_jtalk-1.08/open_jtalk-1.08.tar.gz--2017-07-12 13:22:58-- https://sourceforge.net/projects/open-jtalk/files/Open%20JTalk/open_jtalk-1.08/open_jtalk-1.08.tar.gz
・
・
2017-07-12 13:23:12 (1.28 MB/s) - `open_jtalk-1.08.tar.gz' へ保存完了 [14235254/14235254]pi@raspberrypi:/tmp $ ls
dhcpcd-(null)
hts_engine_API-1.09
hts_engine_API-1.09.tar.gz
open_jtalk-1.08.tar.gz
pulse-PKdhtXMmr18n
ssh-HX0mzZHu4Vbj
ssh-HhEJHKrJN1Dw
systemd-private-ab1613aa03874ad4b8e68245cacb52a3-rtkit-daemon.service-E8spzTpi@raspberrypi:/tmp $ sudo tar zxvf open_jtalk-1.08.tar.gzopen_jtalk-1.08/
・
・
open_jtalk-1.08/mecab-naist-jdic/feature.def

Open JTalk ビルド、コンパイル、インストール

この処理は、だいぶ時間を食います。じっくり待ちましょう。

pi@raspberrypi:/tmp $ cd /tmp/open_jtalk-1.08
pi@raspberrypi:/tmp/open_jtalk-1.08 $ sudo ./configure --with-charset=UTF-8checking for a BSD-compatible install... /usr/bin/install -c
・
・
config.status: executing depfiles commands
pi@raspberrypi:/tmp/open_jtalk-1.08 $ sudo make
Making all in text2mecab
・
【ここで、だいぶ時間がかかりました。10分近くかかったかな。】
・
make[1]: Leaving directory '/tmp/open_jtalk-1.08'
pi@raspberrypi:/tmp/open_jtalk-1.08 $ sudo paco -lD "make install"
Making install in text2mecab
・
・
make[1]: Leaving directory '/tmp/open_jtalk-1.08'

確認

下記のコマンドを実行し「hts_engine_API-1.09」と「open_jtalk-1.08」が表示されればOKです。

pi@raspberrypi:/tmp/open_jtalk-1.08 $ paco -a
hts_engine_API-1.09 open_jtalk-1.08

望んでいた結果が出ました。OKです。

辞書ファイルの入手

辞書ファイル(version 1.08) をダウンロードして、/usr/local/share/ の下に置きます。

今回は、/tmp にダウンロード・解凍して配置します。

pi@raspberrypi:/tmp/open_jtalk-1.08 $ cd /tmp
pi@raspberrypi:/tmp $ sudo wget https://sourceforge.net/projects/open-jtalk/files/Dictionary/open_jtalk_dic-1.08/open_jtalk_dic_utf_8-1.08.tar.gz--2017-07-12 13:40:56-- https://sourceforge.net/projects/open-jtalk/files/Dictionary/open_jtalk_dic-1.08/open_jtalk_dic_utf_8-1.08.tar.gz
・
・
2017-07-12 13:41:09 (1.48 MB/s) - `open_jtalk_dic_utf_8-1.08.tar.gz' へ保存完了 [14787242/14787242]
pi@raspberrypi:/tmp $ ls
dhcpcd-(null)
hts_engine_API-1.09
hts_engine_API-1.09.tar.gz
open_jtalk-1.08.tar.gz
open_jtalk_dic_utf_8-1.08
open_jtalk_dic_utf_8-1.08.tar.gz
pulse-PKdhtXMmr18n
ssh-HX0mzZHu4Vbj
ssh-HhEJHKrJN1Dw
systemd-private-ab1613aa03874ad4b8e68245cacb52a3-rtkit-daemon.service-E8spzT
pi@raspberrypi:/tmp $ sudo tar zxvf open_jtalk_dic_utf_8-1.08.tar.gz
open_jtalk_dic_utf_8-1.08/
・
・
open_jtalk_dic_utf_8-1.08/COPYING
pi@raspberrypi:/tmp $ sudo mkdir /usr/local/share/open_jtalk
pi@raspberrypi:/tmp $ sudo mv /tmp/open_jtalk_dic_utf_8-1.08 /usr/local/share/open_jtalk/

MMDAgent音声ファイルの入手

MMDAgent は、名古屋工業大学国際音声技術研究所によって作成されたオープンソースの音声インタラクション構築ツールキットです。

MMDAgent公式サイト

今回は、MMDAgent(version 1.4 ) をダウンロードして、/usr/local/share/ 配下に置きます。

前回と同様、/tmp にダウンロード・解凍して配置します。

pi@raspberrypi:/tmp $ cd /tmp
pi@raspberrypi:/tmp $ sudo wget https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.4/MMDAgent_Example-1.4.zip
--2017-07-12 13:45:37-- https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.4/MMDAgent_Example-1.4.zip
・
・
2017-07-12 13:45:49 (1.64 MB/s) - `MMDAgent_Example-1.4.zip' へ保存完了 [11706517/11706517]
pi@raspberrypi:/tmp $ sudo unzip MMDAgent_Example-1.4.zipArchive: MMDAgent_Example-1.4.zip
・
・
inflating: MMDAgent_Example-1.4/Voice/mei/README.txt
pi@raspberrypi:/tmp $ sudo mkdir /usr/local/share/hts_voice
pi@raspberrypi:/tmp $ sudo mv /tmp/MMDAgent_Example-1.4/Voice/mei /usr/local/share/hts_voice/

シェルのダウンロード

/usr/local/bin 配下に open_jtalk を使って喋らせるためのシェルをダウンロードします。

参考記事の中にあるプログラムをダウンロードしてください。

参考記事の「しゃべらせる」の項にあるサイトからダウンロードしましょう。

ダウンロードしたら、「jsay」ファイルに実行権限を付けます。

pi@raspberrypi:/tmp $ sudo chmod +x /usr/local/bin/jsay

喋らせる

以上の設定が終了すれば、以下のように jsay の引数に喋らせたい文字列を渡すことで、ラズパイに喋らせることができます。

pi@raspberrypi:/tmp $ jsay こんにちは

スピーカから、ちゃんと声が聞こえてきました。少し、イントネーションがおかしいかなと思いますが。

音周りの設定

出力先の変更等、必要があれば試してみることを掲げておきます。

60爺は、以前いろいろ触った関係か以下の設定は一切実施実施していません。

60爺は、幸いなことに、以上の処理を終えた段階で音声が出ました。

◆ヘッドフォン端子から音を出す場合

$ amixer cset numid=3 1

◆HDMIから音を出す場合

$ amixer cset numid=3 2

◆自動判別

$ amixer cset numid=3 0

◆ボリュームの調整はパーセントで指定します

$ amixer set PCM 20%
スポンサーリンク

openjtalk に関する記事です。是非、ご覧ください。

ラズパイで音声出力を試す! OpenJtalkの準備から喋りまで
定時にラズパイを使って時刻と横浜の天気予報をしゃべらせてみる
cronで指定した時間にコマンドが正常に稼働しない原因と対策
yahoo!天気のrssデータでpythonの天気予報データ読上げプログラムをリプレース

※参考資料
今回記事は、以下のページを忠実に実行したものです。
もし、本記事でわからないところがあった場合は、このページを見ていただければいいと思います。
Raspberry Piにしゃべらせてみた(OpenJTalk 1.08、.htsvoiceファイル対応)

スポンサーリンク

openJtalk

Posted by mizutan