2017年10月3日火曜日

OpenJTalkでLinuxに話してもらう@CentOS7

普通はRaspberry piなどでやるのかもしれませんが、たまたま手元にそれらしい環境がなかったので、なぜかVirtualBox上のCentOSから話してもらうテストです。意味があるかというとあまりないような気もしますが・・・

パッケージは用意されていないように思いますので、ソースからのインストールです。

今回利用した環境は下記の通り。
  • CentOS 7.4
  • Open JTalk 1.10
  • hts_engine API 1.10
まずは、yumで入るものを入れてしまいます。
yum install alsa-utils unzip wget gcc gcc-c++

hts_engineのインストール

hts_engineは、HMMベースの音声合成システムによって訓練されたHMMから音声波形を合成するソフトウェアだそうです。これがないとOpenJTalkをconfigureする際にエラーになります。
mkdir ~/download/
mkdir ~/src/
cd ~/download
wget https://jaist.dl.sourceforge.net/project/hts-engine/hts_engine%20API/hts_engine_API-1.10/hts_engine_API-1.10.tar.gz
cd ~/src/
tar xvzf ~/download/hts_engine_API-1.10.tar.gz
cd hts_engine_API-1.10/
./configure
make
make install


OpenJTalkのインストール

続いてOpenJTalkをインストールします。./configureの際にutf-8のオプションをつけ忘れないようにしてください。
cd ~/download
wget https://jaist.dl.sourceforge.net/project/open-jtalk/Open%20JTalk/open_jtalk-1.10/open_jtalk-1.10.tar.gz
cd ~/src
tar xzvf ~/download/open_jtalk-1.10.tar.gz
cd open_jtalk-1.10/
./configure --with-charset=UTF-8
make
make install

音響モデルの配置

htsvoiceは声の特徴を音素を基本単位としてモデル化した音響ファイルです。ただのファイルなので、どこに置いても良いのですが、/usr/local/shareに配置することが多いようです。
cd ~/download
wget https://jaist.dl.sourceforge.net/project/open-jtalk/HTS%20voice/hts_voice_nitech_jp_atr503_m001-1.05/hts_voice_nitech_jp_atr503_m001-1.05.tar.gz
cd ~/src
tar xzfv ~/download/hts_voice_nitech_jp_atr503_m001-1.05.tar.gz
mv hts_voice_nitech_jp_atr503_m001-1.05 /usr/local/share/hts_voice

辞書の配置

文字を音に変換するので分かち書きと辞書が必要になります。辞書はMeCabで使っていた辞書とほぼ同等のフォーマットになりますが、読み上げに特化した情報(アクセントなど)が付記された辞書になります。これも、どうせ実行時にファイルパスを指定することになりますので、どこに置いても良いです。
cd ~/download
wget http://downloads.sourceforge.net/open-jtalk/open_jtalk_dic_utf_8-1.10.tar.gz
cd ~/src
tar xzfv ~/download/open_jtalk_dic_utf_8-1.10.tar.gz
mv open_jtalk_dic_utf_8-1.10 /usr/local/share/open_jtalk_dic
ここまできたら、とりあえず試験的にしゃべらせてみます。
echo "これはテストです。"| open_jtalk -m /usr/local/share/hts_voice/nitech_jp_atr503_m001.htsvoice -ow output.wav -x /usr/local/share/open_jtalk_dic; aplay output.wav;rm -f output.wav
ちょっと太い男の声で「これはテストです」と話したはずです。
ネット上に音響ファイルはたくさん落ちていますので、気に入ったものを見つけてくるといいと思います。

ほかのサイトでもやっていますが、MMDAgentというソフトウェアの中にmeiという女の人の声が入っていますのでダウンロードして同じディレクトリに配置してみます。
cd ~/download
wget https://jaist.dl.sourceforge.net/project/mmdagent/MMDAgent_Example/MMDAgent_Example-1.7/MMDAgent_Example-1.7.zip
cd ~/src
unzip ../download/MMDAgent_Example-1.7.zip
mv MMDAgent_Example-1.7/Voice/mei/*.htsvoice /usr/local/share/hts_voice/.


配置したらテスト。先ほどから少しパラメータを変更してみました。パラメーターによって声の高さや読み上げるスピードなどを変更することができます。
echo "これはテストです。"| open_jtalk -m /usr/local/share/hts_voice/mei_happy.htsvoice -ow output.wav -x /usr/local/share/open_jtalk_dic/ -a 0.5 -fm 1.0 -jf 0.5 ; aplay output.wav;rm -f output.wav
なお音声自体が個人情報だからなのか、各音響モデルで利用条件がありますので、読み上げた音声を利用する場合は、条件をよく読んで利用したほうが良いと思います。

0 件のコメント:

コメントを投稿