5
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

音声合成Open JTalkのインストール[On Windows 10]

Posted at

#0.前提条件

  • Windows 10 Pro
  • HTS Engine API 1.10
  • Open JTalk 1.10
  • Visual Studio 2017 Community

#1. ダウンロード
HTSエンジンとOpen JTalk及び音源をダウンロードしてきます。
その後、各アーカイブを解凍しておきます(7zipを使用しました)。

https://sourceforge.net/projects/hts-engine/
hts_engine_API-1.10.tar.gz

https://sourceforge.net/projects/open-jtalk/
open_jtalk-1.10.tar.gz
[Files]→[HTS voice]→[hts_voice_nitech_jp_atr503_m001-1.05]
hts_voice_nitech_jp_atr503_m001-1.05.tar.gz

#2. HTSエンジンのビルド
「VS 2017用 x64 Native Tools コマンドプロンプト」を開いて、HTSエンジンのフォルダに移動します。

image.png

dos
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>d:

D:\>cd Develop\open-jtalk\hts_engine_API-1.10

移動したら、nmakeコマンドでビルドします。

dos
D:\Develop\open-jtalk\hts_engine_API-1.10>nmake -f Makefile.mak

#3. Open JTalkのビルド
次にOpen JTalkをビルドします。
bin\Makefile.makにHTSエンジンのデフォルトのインストールパス(C:\hts_engine_API)が明記されています。
そこで、このパスをHTSビルド時の環境(D:\Develop\open-jtalk\hts_engine_API-1.10)に修正します。
※HTSビルド時に「**nmake -f Makefile.mak install」している場合は、修正不要です。

bin\Makefile.mak
CC = cl
CL = link

CFLAGS = /O2 /Ob2 /Oi /Ot /Oy /GT /GL /TC 
         /I..\text2mecab 
         /I ..\mecab\src
         /I ..\mecab2njd
         /I ..\njd
         /I ..\njd_set_pronunciation 
         /I ..\njd_set_digit
         /I ..\njd_set_accent_phrase
         /I ..\njd_set_accent_type
         /I ..\njd_set_unvoiced_vowel
         /I ..\njd_set_long_vowel
         /I ..\njd2jpcommon
         /I ..\jpcommon
         /I D:\Develop\open-jtalk\hts_engine_API-1.10\include
LFLAGS = /LTCG

LIBS = ..\text2mecab\text2mecab.lib 
       ..\mecab\src\mecab.lib
       ..\mecab2njd\mecab2njd.lib
       ..\njd\njd.lib
       ..\njd_set_pronunciation\njd_set_pronunciation.lib
       ..\njd_set_digit\njd_set_digit.lib
       ..\njd_set_accent_phrase\njd_set_accent_phrase.lib
       ..\njd_set_accent_type\njd_set_accent_type.lib
       ..\njd_set_unvoiced_vowel\njd_set_unvoiced_vowel.lib
       ..\njd_set_long_vowel\njd_set_long_vowel.lib
       ..\njd2jpcommon\njd2jpcommon.lib
       ..\jpcommon\jpcommon.lib
       D:\Develop\open-jtalk\hts_engine_API-1.10\lib\hts_engine_API.lib
       winmm.lib
       Advapi32.lib

all: open_jtalk.exe

open_jtalk.exe : open_jtalk.obj
	$(CC) $(CFLAGS) /c $(@B).c
	$(CL) $(LFLAGS) /OUT:$@ $(LIBS) $(@B).obj

clean:	
	del *.exe
	del *.obj

修正が終わったら、nmakeでビルドします。

dos
D:\Develop\open-jtalk\open_jtalk-1.10>nmake -f Makefile.mak

mecab-naist-jdicのビルドで以下のようなエラーが発生しました。

dos
   :
   :
Copyright (C) Microsoft Corporation.  All rights reserved.

コード生成しています。
コード生成が終了しました。
        cd ..
        cd mecab-naist-jdic
        nmake /f Makefile.mak

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

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.14.26428\bin\HostX64\x64\nmake.EXE"' : リターン コード '0x2'
Stop.

mecab-naist-jdic を参照してみるとxxx_.defファイルが全てアンダーバー付きのファイル名になっていました。
そこで、以下のようにファイルをコピーする構文をmakefileに追加しました。

mecab-naist-jdic\Makefile.mak(編集前)
all: char.bin matrix.bin sys.dic unk.dic

char.bin matrix.bin sys.dic unk.dic: naist-jdic.csv matrix.def left-id.def pos-id.def rewrite.def right-id.def char.def unk.def feature.def
	..\mecab\src\mecab-dict-index.exe -d . -o . -f UTF-8 -t sjis

clean:
	del char.bin matrix.bin sys.dic unk.dic
mecab-naist-jdic\Makefile.mak(編集後)
all: char.bin matrix.bin sys.dic unk.dic

left-id.def: _left-id.def
	copy _left-id.def left-id.def

pos-id.def: _pos-id.def
	copy _pos-id.def pos-id.def

rewrite.def: _rewrite.def
	copy _rewrite.def rewrite.def

right-id.def: _right-id.def
	copy _right-id.def right-id.def

char.bin matrix.bin sys.dic unk.dic: naist-jdic.csv matrix.def left-id.def pos-id.def rewrite.def right-id.def char.def unk.def feature.def
	..\mecab\src\mecab-dict-index.exe -d . -o . -f UTF-8 -t sjis

clean:
	del char.bin matrix.bin sys.dic unk.dic

再度、nmakeすると無事ビルドが完了しました。

#4. 動作確認
open_jtalk-1.10\bin フォルダに移動して、input.txt にSJISコードで合成したいテキストを保存します。
以下のコマンドを実行するとoutput.wavに合成音声が出力されます。

dos
D:\Develop\open-jtalk\open_jtalk-1.10\bin>open_jtalk.exe -m ..\..\hts_voice_nitech_jp_atr503_m001-1.05\nitech_jp_atr503_m001.htsvoice -x ..\mecab-naist-jdic -ow output.wav input.txt

尚、-m の指定は音源ファイル、-x の指定は辞書ファイルとなります。

#5. 女性の音声を合成
nitech_jp_atr503_m001.htsvoice は男性の音声でしたが、女性の音声を試してみます。
MMDAgentmeiという女性音源が入手できます。
MMDAgent "Sample Script" version 1.7 (December 25, 2016)のSource codeリンクから、MMDAgent_Example-1.7.zipをダウンロードして展開します。

Voice フォルダの中にいくつか音源ファイルが入っていますので、いずれかを -m オプションで指定すると、女性の合成音声が生成されます。

dos
D:\Develop\open-jtalk\open_jtalk-1.10\bin>open_jtalk.exe -m D:\Develop\MMDAgent\MMDAgent_Example-1.7\MMDAgent_Example-1.7\Voice\mei\mei_happy.htsvoice -x ..\mecab-naist-jdic -ow output.wav input.txt

#参考にさせて頂いたページ
Windowsで音声合成Open JTalk @mkgask さん

以上となります。

5
13
0

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
5
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?