LoginSignup
28
29

Windowsで音声合成Open JTalk

Last updated at Posted at 2017-09-09

事前準備

ソースコードからフルビルドするので、Microsoft Visual Studioが必要です。

Visual Studio Community - Visual Studio
https://www.microsoft.com/ja-jp/dev/products/community.aspx

無料のCommunityエディションで大丈夫。ビルドに時間はかかりません。

中でもVisual C++が必要なので、Visual Studioのインストール時に選択すること。

Visual Studio入ってるけどVisual C++入ってないって人は、Visual Studio起動して、
ファイルメニューの「ツール」から「ツールと機能を取得」で、
「C++によるデスクトップ開発」をインストール出来ます。

また、tar.gzを解凍できるツールをご準備ください。

HTSエンジンをDL

hts_engine_API-1.10.tar.gz

hts_engine download | SourceForge.net
https://sourceforge.net/projects/hts-engine/

ちょっとスクロールして、Project Activityから、
hts_engine_API-1.10.tar.gzのように名前にAPIと入っているファイルをDL。

見当たらなかったらメニューのFilesからhts_engine APIに入れば見つかるはず。

Open JTalkをDL

open_jtalk-1.10.tar.gz

Open JTalk download | SourceForge.net
https://sourceforge.net/projects/open-jtalk/

緑色のDownloadボタンからopen_jtalk-1.10.tar.gzをDL。

open_jtalk_dic_shift_jis-1.10.tar.gz

前項のサイトから、ちょっとスクロールして、Project Activityから、
open_jtalk_dic_shift_jis-1.10.tar.gzをDL。

本当はUTF-8でやれたら良かったんだけど、WindowsではShift JISでないとダメなようなので泣く泣くShift JISを選択しました。

(2023/12/09追記:UTF-8でのビルド方法をコメントをいただきました。この場合open_jtalk_dic_utf_8-1.11.tar.gzをダウンロードすればいいはず)

hts_voice_nitech_jp_atr503_m001-1.05.tar.gz

前項のサイトから、メニューのFilesからHTS Voiceディレクトリに入り、
hts_voice_nitech_jp_atr503_m001-1.05ディレクトリの、
hts_voice_nitech_jp_atr503_m001-1.05.tar.gzをDL。

hts_engine_APIをビルド

DLしておいたhts_engine_API-1.10.tar.gzを解凍。

解凍先ディレクトリのパスが2バイト文字を含んでいると面倒なことが起こる時があるので、
2バイト文字を含まないディレクトリに移動しておくと楽です。

以降はコマンドプロンプトで、解凍後のファイル一式が入っているディレクトリに移動して、

call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary/Build/vcvarsall.bat" x64
nmake -f Makefile.mak
nmake -f Makefile.mak install

筆者は横着してGit Bashでやろうとしたらvcvarsall.batの結果を環境変数に適用できず、
nmakeが動かせなくてコマンドプロンプトを立ち上げました。無念。

ビルドが完了すると、C:\hts_engine_API が出来上がっています。
この中のincludeディレクトリにあるヘッダファイル等をOpen JTalkのビルドで利用する模様。

Open JTalkをビルド

DLしておいたopen_jtalk-1.10.tar.gzを解凍

ディレクトリを移動して、さっきと同じく

nmake -f Makefile.mak
nmake -f Makefile.mak install

すると今度は、

cd ..
cd mecab-naist-jdic
nmake /f Makefile.mak

で処理が止まって、

NMAKE : fatal error U1073: 'left-id.def' のビルド方法が指定されていません。
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\nmake.EXE"' : リターン コード '0x2'
Stop.

でエラーが出ました。

が、色々確認したり試したりした結果、ビルドがここまで進んでいればC:\open_jtalk\bin\open_jtalk.exeの生成には成功しており、
辞書データファイルの生成に失敗しているだけで、辞書データファイルは別途DLしたものを使用するため、
このエラーは無視しても支障ないようです。

ggっても他にこのエラーが出てる方は見当たらなかったので、筆者の環境の問題の可能性が高そうです。

(2021/08/08追記:このエラーについて問題箇所の可能性がある部分をコメントいただきました。検証はしていないのでご自身でご確認ください)

(2021/09/07追記:上記コメントの修正でうまくいったというコメントをいただきました。漢字の読みも改善されたとのことで、手間をかけても辞書データもビルドしたほうが良いかもしれません)

Open JTalkの稼動準備

辞書データファイルの準備

open_jtalk_dic_shift_jis-1.10.tar.gzを解凍して、ディレクトリ名を「dic」に変更し、
C:\open_jtalk\binにディレクトリごとコピー。

音響モデルファイルの準備

hts_voice_nitech_jp_atr503_m001-1.05.tar.gzを解凍して、出てきたファイルの中から
nitech_jp_atr503_m001.htsvoiceをC:\open_jtalk\binにコピー。
こちらは一式ではなくファイル単体で良いので注意。

Open JTalkの動作テスト

Shift JISの辞書データファイルを選択したので、入力用のテキストファイルもShift JISで記述します。
C:\open_jtalk\bin直下にinput.txtを作成し、テスト再生用のテキストを保存。

コマンドプロンプトから

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

を実行。

生成されたoutput.wavを再生すると、某CeVIOの某タカハシさんに似た男性声で音声が再生されます。

UTF-8の辞書データファイルで、テスト用のテキストファイルをUTF-8で書いてもダメだったので、
Windowsでは内部処理自体がShift JISに依存しているのではと愚考していますが、それ以上は調べてないので詳細は分からず。

(2023/12/09追記:辞書ファイルのLDのところでも書きましたが、UTF-8でのビルド方法をコメントをいただきました。Makefile.makファイルの修正が必要とのこと)

女性の声に変更

MMDAgent - Toolkit for Building Voice Interactoin Systems
http://mmdagent.sourceforge.net/

から、Sample ScriptのほうのSource CodeをDL。
解凍して出てきたファイルのVoice/meiディレクトリにhtsvoiceファイルがいくつか入っているので、
このディレクトリをもらってきます。
C:\open_jtalk\binにmeiディレクトリをコピー。

open_jtalk.exe -m mei/mei_normal.htsvoice -x dic -ow output.wav input.txt

を実行すると、今度はoutput.wavで女性声が再生されます。

ライセンス

対象 ライセンス
hts_engine_API Modified BSD license
Open JTalk Modified BSD license
男性ボイス Creative Commons Attribution 3.0
女性ボイス Creative Commons Attribution 3.0

誤りがあればご指摘ください

参考資料

Open JTalkをWindowsでビルドして動かしてみる - 真実の楽譜(フルスコア)
http://truthfullscore.hatenablog.com/entry/2015/05/31/102221

Raspberry piで日本語音声合成(Open JTalk)を試してみる。 - Qiita
http://qiita.com/lutecia16v/items/8d220885082e40ace252#%E5%A5%B3%E6%80%A7%E3%81%AE%E5%A3%B0%E3%81%AB%E5%A4%89%E3%81%88%E3%81%A6%E3%81%BF%E3%82%8B

28
29
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
29