Open JTalk は日本語音声合成ソフトウェアです。
インストール方法は先人の偉大な記事があるのでそちらを大いに参考にさせていただきました。
私は最新バージョン原理主義者(とくにネットワーク機器のファームウェアは)ここでは現時点での最新版のインストール方法を紹介しています。
弊社のスーパー Software Engineer 田中からスクリプトは流用させてもらっています。
私の作った PHP はデモ用なので良い子は真似しないでね。
インストール
大抵のファイルは公式から最新ソースもってこれます。
いい感じに読み替えてください。
hts_engine API(version 1.10)のインストール
EPEL のパッケージに “paco“ ないんで飛ばしています。。
数分と書いてあったけど数秒で終わった。
時代は変わったなあ。
[wataru@localhost ~]$ cd /usr/local/src/ [wataru@localhost src]$ sudo wget https://downloads.sourceforge.net/project/hts-engine/hts_engine%20API/hts_engine_API-1.10/hts_engine_API-1.10.tar.gz [wataru@localhost src]$ sudo tar xvzf hts_engine_API-1.10.tar.gz [wataru@localhost src]$ cd /usr/local/src/hts_engine_API-1.10 [wataru@localhost hts_engine_API-1.09]$ sudo ./configure [wataru@localhost hts_engine_API-1.09]$ sudo make [wataru@localhost hts_engine_API-1.09]$ sudo make install
Open JTalk(version 1.10)のインストール
[wataru@localhost ~]$ cd /usr/local/src/ [wataru@localhost src]$ sudo wget https://downloads.sourceforge.net/project/open-jtalk/Open%20JTalk/open_jtalk-1.10/open_jtalk-1.10.tar.gz [wataru@localhost src]$ sudo tar xvzf open_jtalk-1.10.tar.gz [wataru@localhost src]$ cd /usr/local/src/open_jtalk-1.10
[wataru@localhost open_jtalk-1.10]$ sudo ./configure --with-charset=UTF-8 (snip) checking if g++ supports template(required)... configure: WARNING: g++ template does not work checking if g++ supports const_cast<> (required)... configure: WARNING: g++ const_cast<> does not work checking if g++ supports static_cast<> (required)... configure: WARNING: g++ static_cast<> does not work checking if g++ supports dynamic_cast<> (required)... configure: WARNING: g++ dynamic_cast<> does not work checking if g++ supports reinterpret_cast<> (required)... configure: WARNING: g++ reinterpret_cast<> does not work checking if g++ supports exception handler (required)... configure: WARNING: g++ exception does not work checking if g++ supports namespaces (required) ... no checking if g++ environment provides all required features... no configure: error: Your compiler is not powerful enough to compile MeCab. If it should be, see config.log for more information of why it failed.
こけた。。
g++
入れればええんやろ。
[wataru@localhost open_jtalk-1.10]$ sudo yum -y groupinstall "Development Tools"
[wataru@localhost open_jtalk-1.10]$ sudo ./configure --with-charset=UTF-8 [wataru@localhost open_jtalk-1.10]$ sudo make [wataru@localhost open_jtalk-1.10]$ sudo make install
辞書ファイルの入手
上で UTF-8 サポート入りでインストールしているので UTF-8 版をインストール。
[wataru@localhost ~]$ cd /usr/local/src/ [wataru@localhost src]$ sudo wget http://downloads.sourceforge.net/open-jtalk/open_jtalk_dic_utf_8-1.10.tar.gz [wataru@localhost src]$ sudo tar xvzf open_jtalk_dic_utf_8-1.10.tar.gz [wataru@localhost src]$ sudo mkdir /usr/local/share/open_jtalk [wataru@localhost src]$ sudo mv /usr/local/src/open_jtalk_dic_utf_8-1.10 /usr/local/share/open_jtalk/
MMDAgent 音声ファイルの入手
ここで最新が手に入ります。
$ sudo wget http://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.7/MMDAgent_Example-1.7.zip $ sudo unzip MMDAgent_Example-1.7.zip $ sudo mkdir /usr/local/share/hts_voice $ sudo mv /usr/local/src/MMDAgent_Example-1.7/Voice/mei /usr/local/share/hts_voice/
以下は 160 MB 近くあって結構重いです。
たぶん不要。
$ sudo wget http://sourceforge.net/projects/mmdagent/files/MMDAgent/MMDAgent-1.7/MMDAgent-1.7.zip
スクリプト
再生までやる
[wataru@localhost src]$ sudo vim /usr/local/bin/jsay
/usr/local/bin/jsay
サーバーはしゃべれないのであまり意味のないコマンドかもしれない。
元ファイルはこちらから拝借させていただきました。
どうもありがとうございます。
#!/bin/sh # 引数チェック CMDNAME=`basename $0` if [ $# -lt 1 ]; then echo "Usage: ${CMDNAME} [ text ]" 1>&2 exit 1 fi # 定数定義(出力ファイル名、辞書の場所、音声データの場所) TMPFILE=`mktemp /tmp/tmp.XXXXXXXX.wav` DIC=/usr/local/share/open_jtalk/open_jtalk_dic_utf_8-1.10/ VOICE=/usr/local/share/hts_voice/mei/mei_normal.htsvoice # 音声データ生成 echo "$1" | open_jtalk \ -x ${DIC} \ -m ${VOICE} \ -ow ${TMPFILE} && \ # 生成した音声データを再生する aplay --quiet ${TMPFILE} # 生成した音声データを削除する rm -f ${TMPFILE} # 終了 exit 0
[wataru@localhost src]$ sudo chmod 755 /usr/local/bin/jsay
音声データを生成しておわり
[wataru@localhost src]$ sudo vim /usr/local/bin/jsay_make
/usr/local/bin/jsay_make
#!/bin/sh # 引数チェック CMDNAME=`basename $0` if [ $# -lt 1 ]; then echo "Usage: ${CMDNAME} [ text ]" 1>&2 exit 1 fi # 定数定義(出力ファイル名、辞書の場所、音声データの場所) TMPFILE=$2 DIC=/usr/local/share/open_jtalk/open_jtalk_dic_utf_8-1.10 VOICE=/usr/local/share/hts_voice/mei/mei_normal.htsvoice # 音声データ生成 echo "$1" | open_jtalk \ -x ${DIC} \ -m ${VOICE} \ -ow ${TMPFILE} # 終了 exit 0
[wataru@localhost src]$ sudo chmod 755 /usr/local/bin/jsay_make
叩いてみる
[wataru@localhost ~]$ time jsay_make "こんにちは。こちらはユニキャストサーバーです。" /usr/local/bin/jsay_make: 24 行: 18701 終了 echo "$1" 18702 Segmentation fault | open_jtalk -x ${DIC} -m ${VOICE} -ow ${TMPFILE} real 0m0.034s user 0m0.025s sys 0m0.009s
セグフォって死んだ。。。
単純に第2引数の TMPFILE がなかったからだった。。。
[wataru@localhost ~]$ time jsay_make "こんにちは。こちらはユニキャストサーバーです。" ~/hello.wav real 0m0.301s user 0m0.295s sys 0m0.007s [wataru@localhost ~]$ ls -l hello.wav -rw-rw-r-- 1 wataru wataru 347564 3月 17 12:43 hello.wav
できた!
scp でダウンロードする。
開く。
シャァベッタァァァァァァァ
Web から叩けるようにする
今回はサーバー用の VM から当然直接音声は流せません。(いろいろ工夫すれば流せるんだと思うけど。。)
デモ用スクリプト
使い方
以下を叩くと指定した GET パラメータの日本語で合成された名工大の mei ちゃんの声で
voice.wav
というファイルがダウンロードされます。http://voice.example.com/?message=こんにちは
References
- Raspberry Piにしゃべらせてみた(OpenJTalk 1.08、.htsvoiceファイル対応): Raspberry Piでやってみた
- Open JTalk
- hts_engine API
- mmdagent.jp
投稿者紹介
- * Bio: Software Engineer, Network and Server Engineer
* Certification:
IPA: FE, AP, Network Specialist
Cisco: CCNA R&S, CCNP R&S
LPI: LPIC Level1, Level2, LPIC-3 Specialty LPI-304 Virtualization &High Availability最近のエントリ