ラズパイで音声出力を試す!OpenJtalkの準備から喋りまで
ボードコンピュータRaspberryPiは、色々な可能性を秘めたコンピューターです。
電子工作を行って電気の仕組みを理解したり、はたまた、ロボットの操作まで実施できるという優れものです。
追加ボードなども販売されており、実験をじっしするなど可能性は果てしなく広がるでしょう。
さて、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でインストールをします。
音声出力の準備としての手順は次の通りです。
- hts_engine API(version 1.09)のインストール
- Open JTalk(version 1.08)のダウンロード
- Open JTalk ビルド、コンパイル、インストール
- 確認
- 辞書ファイルの入手
- MMDAgent音声ファイルの入手
それでは、個々の作業について細かく見ていきます。
hts_engine API(version 1.09)のインストール
hts_engineをインストールする前に、make installでインストールしたアプリケーションを管理する「paco」というソフトウェアをインストールします。
pi@raspberrypi:~ $ sudo aptitude install paco
以下の新規パッケージがインストールされます:
paco
・
・
libc-bin (2.19-18+deb8u9) のトリガを処理しています ...
次に、hts_engine APIをインストールしましょう。
/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」の記事も増えてきました
※参考資料
今回記事は、以下のページを忠実に実行したものです。
もし、本記事でわからないところがあった場合は、このページを見ていただければいいと思います。
Raspberry Piにしゃべらせてみた(OpenJTalk 1.08、.htsvoiceファイル対応)
ディスカッション
コメント一覧
まだ、コメントがありません