読者です 読者をやめる 読者になる 読者になる

真実の楽譜(フルスコア)

プログラム関係の忘備録になるはず

Open JTalkをWindowsでビルドして動かしてみる

オープンソースの日本語の音声合成エンジンOpen JTalk
Open JTalk - HMM-based Text-to-Speech System
日本語合成エンジンなのに公式解説は英語だらけだし、
Windowsに導入する際にはソースファイルからビルドが必要だったりと、
一癖あったので忘備録として導入手順をご紹介。

準備

必要なもの

  • Open JTalk本体, open_jtalk-1.xx (記述時1.08)
  • 解析用辞書ファイル, open_jtalk_dic-1.xx (記述時1.08)
  • 音声合成エンジン, hts_engine_API-1.xx (記述時1.09)
  • 音響モデルデータ, hts_voice_nitech_jp_atr503_m001-1.xx (記述時1.05)
  • Visual Studio Community 2013 (VC++12.0)

ファイルのダウンロード

http://sourceforge.net/projects/hts-engine/から以下のファイルをダウンロード

  • hts_engine_API-1.09.tar.gz

http://sourceforge.net/projects/open-jtalk/から以下のファイルをダウンロード。

  • open_jtalk-1.08.tar.gz
  • open_jtalk_dic_shift_jis-1.08.tar.gz
  • hts_voice_nitech_jp_atr503_m001-1.05.tar.gz

辞書ファイル(open_jtalk_dic)は文字コード毎に用意されている模様で、
今回はWindows環境なのでshift_jisを選択。
他の文字コードだとどうなるか不明。

ビルド

hts_engine_APIのビルド

hts_engine_APIがないとOpen JTalkをビルドできないので、
先にhts_engine_APIを以下の手順でビルドします。

  1. ダウンロートした「hts_engine_API-1.09.tar.gz」を解凍
  2. コマンドプロンプトを起動し解凍先のフォルダへ移動後以下のコマンドを入力

call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
nmake -f Makefile.mak
nmake -f Makefile.mak install

ビルドに成功すると以下のパスにhts_engine_APIが作成されます。

C:\hts_engine_API

環境変数のPATHにダブルクォーテーション["]が含まれていると、
 「vcvarsall.bat」を呼び出した時点でエラーが発生してビルドが行われません。
 環境変数設定のGUI上では入力できないのですが、自分の環境ではDirectX関連のパスが
 何故かダブルクォーテーションで囲まれていたのでご注意を。

Open JTalkのビルド

続いてOpen JTalkを同様にビルドします。

  1. ダウンロートした「open_jtalk-1.08.tar.gz」を解凍
  2. コマンドプロンプトを起動し解凍先のフォルダへ移動後以下のコマンドを入力

call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
nmake -f Makefile.mak
nmake -f Makefile.mak install

ビルドに成功すると以下のパスにOpen JTalkの実行ファイルが作成されます。

C:\open_jtalk

音声合成

辞書・音響モデルの配置

Open JTalkはコマンドライン実行プログラムであり、
コマンドライン引数として辞書データファイルと音響モデルファイルを指定する必要があるため、
使いやすくするために予め実行ファイルディレクトリに配置しておきます。

  1. ダウンロートした「open_jtalk_dic_shift_jis-1.08.tar.gz」を解凍
  2. 解凍したフォルダ名を「dic」にして「C:\open_jtalk\bin」直下に配置
  3. ダウンロートしたhts_voice_nitech_jp_atr503_m001-1.05.tar.gzを解凍
  4. 解凍したフォルダ内の「nitech_jp_atr503_m001.htsvoice」を「C:\open_jtalk\bin」直下に配置
入力テキストファイルの作成

テキストエディタを開き音声合成したい文字を入力し、
shift_jis文字コードで「C:\open_jtalk\bin\Input.txt」に保存します。

input.txt例

こんにちは、お元気ですか

データ配置例

f:id:s_sikisya:20150529162309j:plain
f:id:s_sikisya:20150529162319j:plain

実行

コマンドプロンプトを起動し以下のコマンドを入力

open_jtalk.exe -m nitech_jp_atr503_m001.htsvoice -x dic -ow output.wav input.txt

同一フォルダ内に「output.wav」の音声合成した音声ファイルの出来上がり〜
音声のモデルはどこぞやの男性っぽいですね。


声質を変化させる場合は、コマンドライン引数のパラメータを弄ればいいけど、
別の人の声に変えるにはhtsvoiceファイルを用意しないと無理そうです。
名工大の音声案内端末として使われいるメイちゃん声は落とせるようだけど、
好きな声を使うにはモデル生成する必要があるようでまだまだ謎が多いです。