ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Windows】WindowsでOpen JTalkを使ってみる

 調べものをしていたら合成音声の音声ファイルを作れるOpenJTalkというものを見つけました。
 Windowsの場合はビルドする必要があったりとちょっと面倒ですが、導入して少し使ってみたので今回はその備忘録になります。


 では、始めます。


1:Visual StudioC++コンパイラのインストール
 Windowsの場合はOpenJTalkをビルドする必要があり、それにはVisual StudioC++コンパイラを使うので導入します。

 以下のVisual Studio Communityのダウンロードページを開きます。

 Visual Studio Communityの「無償ダウンロード」ボタンをクリックすると、ページが遷移して自動的にインストーラのダウンロードが始まります。

 ダウンロードしたインストーラを起動させます。

 インストーラを起動すると以下のような画面になるので「続行」をクリックします。

 クリックするとインストーラの準備が始まるのでしばらく待ちます。

 インストールの準備が終わるとどれをインストールするかの画面になるので、少しスクロールした中にある「C++によるデスクトップ開発」にチェックを入れて「インストール」ボタンをクリックします。

 インストールが始まるのでしばらく待ちます。

 インストールが終わると再起動を促されるので「OK」をクリックして再起動させます。

 再起動後、コマンドプロンプトPowerShellでは動かないので注意)を起動させて以下のコマンドを実行します(2022の部分はバージョンによって違う場合があるので適宜書き換えてください)。

$ cd C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build
$ vcvarsall.bat x64

 以下のような結果が表示されていればOKです。

**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.2.6
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

 次にビルドに必要なnmakeのパスを環境変数に追加します。

 検索欄に「システムの詳細」と入力して出てきた「システムの詳細設定の表示」をクリックします。

 システムのプロパティが表示されるので「環境変数」をクリックします。

 システム環境変数の「Path」を選択した状態で「編集」をクリックします。

 環境変数の設定画面になるので「新規」ボタンをクリックして以下のパスを追加します(2022、14.32.31326の部分はバージョンによって違う場合があるので適宜書き換えてください)。

C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\Hostx64\x64

 追加されていることを確認して「OK」をクリックして閉じます。

 新たにコマンドプロンプトを立ち上げ、コマンドを実行して以下のように表示されればコンパイラのインストールは完了です。

$ nmake

Microsoft(R) Program Maintenance Utility Version 14.32.31332.0
Copyright (C) Microsoft Corporation.  All rights reserved.

NMAKE : fatal error U1064: MAKEFILE が見つかりません、またターゲットが指定されていません。
Stop.


2:OpenJTalkに必要なファイルのダウンロード
 コンパイラの準備ができたので必要なものをダウンロードしていきます。

 OpenJTalkではHTS Engineを使っているのでまずはそれをダウンロードします。

 以下のページを開きます。

 ページ下にある「hts_engine_API-1.10.tar.gz」のリンクをクリックしてダウンロードします。

 次にOpenJTalkとその他必要なファイルをダウンロードします。

 Open JTalkのダウンロードページを開きます。

 赤枠部分の「open_jtalk-1.11.tar.gz」、「open_jtalk_dic_shift_jis-1.11.tar.gz」をそれぞれクリックしてダウンロードします。open_jtalk-1.11.tar.gzはOpenJTalk本体、open_jtalk_dic_shift_jis-1.11.tar.gzは日本語の辞書データです。

 最後に合成音声の元となるボイスファイルをダウンロードします。

 OpenJTalkのダウンロードページにある「Files」タブをクリックして表示された中にある「HTS voice」をクリックします。

「hts_voice_nitech_jp_atr503_m001-1.05」をクリックします。

「hts_voice_nitech_jp_atr503_m001-1.05.tar.gz」をクリックしてダウンロードします。

 これで必要なファイルのダウンロードは終わりです。

 以下の合計4つのファイルがダウンロードされていればOKです。

hts_engine_API-1.10.tar.gz
open_jtalk-1.11.tar.gz
open_jtalk_dic_shift_jis-1.11.tar.gz
hts_voice_nitech_jp_atr503_m001-1.05.tar.gz


3:OpenJTalkのビルド
 まずは2でダウンロードしたファイルを解凍します。

 コマンドプロンプトPowerShellでは動かないので注意)を起動し、ファイルのあるカレントディレクトリに「cd」コマンドで移動して以下のコマンドを実行して解凍します。

$ tar -xzf hts_engine_API-1.10.tar.gz
$ tar -xzf open_jtalk-1.11.tar.gz
$ tar -xzf open_jtalk_dic_shift_jis-1.11.tar.gz
$ tar -xzf hts_voice_nitech_jp_atr503_m001-1.05.tar.gz

 全てのファイルの解凍が終わった後、open_jtalk-1.11フォルダ内に解凍したhts_engine_API-1.10フォルダを移動させます。

 フォルダの移動後、新しくコマンドプロンプトPowerShellでは動かないので注意)を開いて以下のコマンドを改めて実行します(2022の部分はバージョンによって違う場合があるので適宜書き換えてください)。

$ cd C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build
$ vcvarsall.bat x64

 上記コマンドを実行したコマンドプロンプトを開いたまま、open_jtalk-1.11/hts_engine_API-1.10フォルダに「cd」コマンドで移動します。

 移動後、以下のコマンドを実行して「HTS Engine」をビルドします。PCの性能によってはかなり時間がかかる場合があります。

$ nmake /f Makefile.mak
$ nmake /f Makefile.mak install

 ビルド終了後、以下のコマンドを実行して「open_jtalk-1.11」フォルダに移動します。

$ cd ..

 移動後、以下のコマンドを実行してOpenJTalkをビルドします。PCの性能によってはかなり時間がかかる場合があります。

$ nmake /f Makefile.mak
$ nmake /f Makefile.mak install

 ビルドの途中で何かしらエラーや警告文が出る場合がありますが、ビルド終了後に「open_jtalk/bin」フォルダ内に「open_jtalk.exe」が作成されていればビルド完了です(※20220922追記:ビルド後、「open_jtalk.exe」が見つからない時はCドライブ直下に「open_jtalk」フォルダが作成されている場合もあるのでそちらも確認してください)。


4:辞書とボイスファイルの配置
 4のビルドが終わった後、3で解凍した「open_jtalk_dic_shift_jis-1.11」フォルダを「dic」に名前変更します。
 名称変更した「dic」フォルダを「open_jtalk/bin」フォルダ内に丸ごと移動させます。

 次に解凍した「hts_voice_nitech_jp_atr503_m001-1.05」フォルダ内にある「nitech_jp_atr503_m001.htsvoice」ファイルを「open_jtalk/bin」フォルダ内に移動させます。

 これでOpenJTalkで合成音声を作成する準備ができました。


5:OpenJTalkでの合成音声ファイルの作成
 ようやく準備ができたので、実際に合成音声ファイルを作成してみます。

「open_jtalk/bin」フォルダ内に「input.txt」ファイルをShift JISで作成します。内容は改行なしで日本語で入力します。長文だとおかしくなる場合があるので短めの文章にしてみてください。

 Shift JISでの「input.txt」ファイルが作成できたら、コマンドプロンプトを起動させて「cd」コマンドで「open_jtalk/bin」フォルダに移動します。

「open_jtalk/bin」フォルダで以下のコマンドを実行することでoutput.wavという合成音声ファイル作成することができます。

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


 以上がWindowsでOpen JTalkを使ってみた備忘録になります。

 環境構築のほとんどは参考資料に挙げたページ様の通りですが、Visual Studioを入れないといけなかったりビルドしないといけなかったりで割と大変でした。

 今回は「nitech_jp_atr503_m001.htsvoice」という音声を使いましたが、他にも色々と音声ファイルが公開されているのでそれを使えば別の声で音声ファイルを作成することもできます。

 各種ライセンス回りは調べてないのでわかりませんが、無料で合成音声を作って遊べることがわかったので色々と楽しめそうです。


・参考資料