Last Updated on 2023年5月3日 by かんりにん
会社の開発チームから、”音声合成ツールのOpen Jtalkを試したいので、開発サーバーに入れといてくださ~い”との依頼を受けたので、ひとまず動かせるところまでざざっと調べてインストールしたので、ログをささっと。
メモっておかないと次回セットアップするとき忘れちゃいそう(汗 セットアップ環境は、Amazon Linux。
■予備知識
- HMMとは?
Hidden Markov Modelの略で、確率モデルの一つ。音声認識に利用されている(らしい) - HTKとは?
Hidden Markov Model Tool Kit の略。HMMを利用した音声認識ツールキット。 - HTSとは?
修正HTK。
HMM-based Speech Synthesis System
名古屋工業大学徳田・李研究室 が提供する音声合成基盤ソフトウェア。 - Open Jtalkとは?
オープンソースの日本語音声合成エンジン
入力された日本語テキストに基づいて人工音声を生成する、テキスト音声システム。
–BSDライセンス準拠。
–名古屋工業大学で開発。
–音声認識エンジンにHTSを使う。 - 関連する環境
MMDAgent
サンプルファイルの公開など。
参考情報
参考:お世話になっております。
Open JTalk公式ページ
hts_engine API
MMDAgent
■環境設定のドラフト
作業ディレクトリ
ソースコードのダウンロード、展開、コンパイル等は以下のディレクトリで実施。
/home/user/src/open_jtalk
ソースコード
open jtalk のインストールに必要なファイル群。
バージョンは2014/10/23現在に使用したものを記載。
– ”hts_engine”
HTSのランタイムエンジン。
hts_engine_API-1.08.tar.gz
– ”open jtalk モジュールファイル群”
open_jtalk-1.07
– ”辞書ファイル”
open_jtalk_dic-1.07
– ”音声ファイル”
hts_voice_nitech_jp_atr503_m001-1.05
– ”サンプル音声”
MMDAgent_Example-1.4
インストール先
RPMやOSコマンドと区別するため、基本的にすべて/usr/local以下に展開。
実行ファイル | /usr/local/bin/以下 |
インクルードファイル | /usr/local/include/ |
ライブラリ | /usr/local/lib/ |
open jtalk辞書ファイル | /usr/local/share/open_jtalk/ |
open jtalk音声ファイル、サンプルファイル | /usr/local/share/hts_voice/ |
■インストール作業ログ
ソースからのコンパイルになるので、インストール管理ツールに”porg”を使用。
porg
http://porg.sourceforge.net/
1)hts_engine API のインストール
まず最初にHTSエンジンのAPI(HTSのランタイムエンジン)をインストール
Open Jtalkの実行環境として使うだけなので、ランタイムだけでひとまずOKの様子。
1.ダウンロードと展開
$ wget http://downloads.sourceforge.net/hts-engine/hts_engine_API-1.08.tar.gz $ tar zxvf hts_engine_API-1.08.tar.gz
2.ビルド、コンパイル
$ cd hts_engine_API-1.08 $ ./configure $ make
3.インストール
$ sudo porg -lp hts_engine_api-1.08 "make install"
インストールされたファイル
$ porg -f hts_engine_api-1.08 hts_engine_api-1.08: /usr/local/bin/hts_engine /usr/local/include/HTS_engine.h /usr/local/lib/libHTSEngine.a
2)OpenJTalkのインストール
ビルド時に”–with-charset=”オプションで文字コードを指定しておくこと。
(文字コードを指定せずにインストールしたら、UTF-8形式のテキストを認識しなくて軽くハマっちゃったw)
今回はサーバー環境に合わせてUTF-8を指定。
1.ダウンロードと展開
$ wget http://downloads.sourceforge.net/open-jtalk/open_jtalk-1.07.tar.gz $ tar zxvf open_jtalk-1.07.tar.gz
2.ビルド、コンパイル
$ cd open_jtalk-1.07 $ ./configure --with-charset=UTF-8 $ make
3.インストール
$ sudo /usr/local/bin/porg -lp open_jtalk-1.07 "make install"
インストールされたファイル
$ porg -f open_jtalk-1.07 open_jtalk-1.07: /usr/local/bin/open_jtalk /usr/local/dic/char.bin /usr/local/dic/left-id.def /usr/local/dic/matrix.bin /usr/local/dic/pos-id.def /usr/local/dic/rewrite.def /usr/local/dic/right-id.def /usr/local/dic/sys.dic /usr/local/dic/unk.dic
3)各種ファイル群のコピー
ライブラリ用ディレクトリの作成。
辞書ファイル用ディレクトリ
# mkdir /usr/local/share/open_jtalk
音声ファイル用ディレクトリ
# mkdir /usr/local/share/hts_voice
辞書ファイルの展開
$ wget http://sourceforge.net/projects/open-jtalk/files/Dictionary/open_jtalk_dic-1.07/open_jtalk_dic_utf_8-1.07.tar.gz/download $ tar zxvf open_jtalk_dic_utf_8-1.07.tar.gz # su - # mv open_jtalk_dic_utf_8-1.07 /usr/local/share/open_jtalk/
音声ファイル
$ wget http://downloads.sourceforge.net/open-jtalk/hts_voice_nitech_jp_atr503_m001-1.05.tar.gz $ tar zxvf hts_voice_nitech_jp_atr503_m001-1.05.tar.gz # su - # mv hts_voice_nitech_jp_atr503_m001-1.05 /usr/local/share/hts_voice/
サンプル音声
$ unzip MMDAgent-1.4.zip # su - # mv MMDAgent-1.4 /usr/local/share/hts_voice/
■動作テスト
(以下、自社内での作業ログなのでスルーOKです)
動作テストに際してのポイントを以下に取りまとめ。
- テキストファイルをUTF-8で作成し、open_jtalkコマンドにて読み込む。
- 出力音声ファイルは.wav形式となる。
- /home/user/sandbox以下にテスト用テキストファイルと出力音声ファイルを保存。
- 出力ファイルは出力先を指定可能だが、指定が無い場合はカレントディレクトリに出力される(ファイル名の指定は必須)
1)入力分『おはよう』
入力ファイル:/home/user/sandbox/test.txt
出力ファイル:/home/user/sandbox/output.wav
実行コマンド: open_jtalk -m /usr/local/share/hts_voice/hts_voice_nitech_jp_atr503_m001-1.05/nitech_jp_atr503_m001.htsvoice \
-ow output.wav -x /usr/local/share/open_jtalk/open_jtalk_dic_utf_8-1.07 test.txt
2)入力分『本日は晴天なり』
入力ファイル:/home/user/sandbox/test2.txt
出力ファイル:/home/user/sandbox/output2.wav
実行コマンド: $ open_jtalk -m /usr/local/share/hts_voice/hts_voice_nitech_jp_atr503_m001-1.05/nitech_jp_atr503_m001.htsvoice \
-ow output2.wav -x /usr/local/share/open_jtalk/open_jtalk_dic_utf_8-1.07 test2.txt
といったところで、生成したwavファイルを再生・確認して完了。
イントネーションとかはともかく、割とはっきりとした音声で、なかなか面白いかも。
ひとまずこれで開発チームに戻しつつ、どういうカスタマイズをしたり依頼されたりするか、といったあたりは
今後の依頼次第でもうちょっと勉強したり試してみようかと。