Help us understand the problem. What is going on with this article?

Windowsで音声合成Open JTalk

More than 1 year has passed since last update.

事前準備

ソースコードからフルビルドするので、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を選択しました。

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

Open JTalkの稼動準備

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

open_jtalk_dic_utf_8-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に依存しているのではと愚考していますが、それ以上は調べてないので詳細は分からず。

女性の声に変更

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

mkgask
業務ではPHP触りつつ趣味ではUnity C#とPythonで遊んでいます。 何か色々やってるのでフォローにはご注意くださいヾ( ╹◡╹)ノ゙
http://zsw.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした