2013年01月25日

htsvoiceへ変換するプログラム

今回はひさしぶりに Open JTalk 関連です。

旧式の hts_engine_API 用の音響モデルの設定ファイル群を htsvoiceフォーマットのファイルに変換する実行ファイルを作ってみました。

必要な方は以下のリンクからダウンロードできます。自己責任でお使いください。

ダウンロード: htsvconv002.zip

(更新2013/02/09:config.txt がそばに無いとき、alphaを標準値にする処理が抜けていたので修正しました。)

内容物は、htsvconv.exe、config.txt、htsvconv.cs、test.bat の4つです。実際に必要なのは htsvconv.exe のみで、必要に応じてパラメータを初期値から変更するためのファイルconfig.txt、C#ソースファイルhtsvconv.cs、そして実際に声が出るかテストするためのWindows用バッチファイルです。

コマンドラインから、

htsvconv {ファイル群のあるフォルダ名}

で使います(上記の{}は省略可能かつ繰り返し可能の意味)。マウス操作のときはhtsvconv.exe の上に音声ファイル群のあるフォルダを重ねて落として使います。うまくいくとhtsvconv .exeと同じ場所にそのフォルダ名に.htsvoiceを付けたファイルが生成されます。なおパラメータ無しで実行すると、htsvconv .exeと同じ場所にファイル群があるとみなして処理を始めます。

exeファイルなのでWindows限定かというとそうでもありません。mono 環境下での実行もコンパイルも問題ないはずです。環境が整っていれば、Windows 以外でも実行できるはずです。

htsvoiceフォーマットはいくつかのパラメータを内部に持つことができます。特に重要なのがSAMPLING_FREQUENCYとFRAME_PERIODです。また、OPTIONパラメータとして、ALPHA、GAMMA
LN_GAINの値も記述できます。

htsvconv.exe のあるフォルダに config.txt というファイルを入れておくと、そこに書いてある定数をhtsvoiceに埋め込むようにしています。表記法は「定数名=値」です。一行に一つの式です。指定が無ければ標準値SAMPLING_FREQUENCY=48000、FRAME_PERIOD=240、ALPHA=0.55が使われます。

Windows版 のopen_jtalk.exe 1.06の作成は、以前公開したビルドバッチで生成できます。ただし修正パッチなどは今回のバージョン向けに作っていないので、64ビットなどの特殊なビルドはできません。またopen_jtalkのオプションが変わっているので、ojtalk.bat による発声もできません。

今回のアーカイブはそのビルドバッチでできたvoiceフォルダに直接それぞれのファイルを展開すると使いやすいようにしています。音声が使えるか試すための test.bat はvoiceフォルダから使うことを前提として書いています。内容は以下の通りです。ディレクトリの構成が違うときは必要に応じて内容を書き換えます。

set VOICE=hts_voice_nitech_jp_atr503_m001\nitech_jp_atr503
rem set VOICE=mei_normal
..\bin\open_jtalk -x ..\dic -m ..\voice\%VOICE%.htsvoice -z 2000 ..\text.txt

mei の各音声と nitech_jp_atr503_m001 バージョン1.04での変換は確認できましたが、それ以外のデータでの動作は分かりません。うまくいかないときはソースを修正しビルドし直して対応するか、あきらめてください。

ソースのビルドは、.NET Framework だと 「csc htsvconv.cs」、mono だと 「mcs htsvconv.cs」 です。

 

以下、制作動機など:

上記のopen jtalk というのは、オープンソースの音声合成エンジンです。WindowsやLinuxなどでそれなりの技術があれば無料でパソコンに言葉をしゃべらせられるようになります。おもしろそうだったので何度かここで紹介してきました。毎年恒例ですが年末に最新版1.06が出ました。

今回のバージョンアップで一番の変化は、hts_engine_APIの仕様が変わったのに伴い、音声データのフォーマットが変わったことです。いままでは、音声についての設定が複数のファイルに分かれていたので、これをコマンドラインのオプションスイッチで20個くらいのファイルを一つ一つ指定しなくてはいけなくて、設定がとてもわかりにくかったのですが、1.06から-mスイッチでファイルを一つ指定するだけになりました。

ただ、このフォーマットの日本語の音響モデルのデータは、2013/01/25現在、標準音声の hts_voice_nitech_jp_atr503_m001 だけしかありません。今までは MMDAgent_Example に入っている mei_normal などを転用できたのですが、mei の htsvoice 版のデータはまだ出ていないようです。待っていれば、いずれは正式に出てくるでしょう。待っていれば、いずれはね。

でも待ちきれなかったので、作ってみました、変換器。新しい nitech_jp_atr503_m001.htsvoice を使った音声を聞いてみても、ほとんど違いは分からなかったので、おそらくデータそのものは同じで、格納方法が変更になっただけだろうと予想を立てて、新旧のHTS_model.cでの処理の違いを調べ、htsvoiceファイルへの変換器を作ってみました。言語はC#。

公式の htsvoice フォーマットの音声が出てくるのは時間の問題だと思いますので、とりあえずそれまでのつなぎということで。

 

関連リンク:
Open JTalk 公式サイト、Open Jtalk のダウンロードはここから。
mmdagent.jp MMDAgentの公式サイト
mono 公式サイト。Windows以外で利用するときは、この mono の環境があれば実行できます。
まほろば::オープンソース音声合成エンジン「Open JTalk 1.06」  ビルドの方法やテストの仕方があります

当ブログ関係記事:
Open JTalk を Windows でビルドするバッチファイル



posted by takayan at 22:45 | Comment(15) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。