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(5) | TrackBack(0) | 音声合成 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
CeVIOの聞いたことありますか?それはCeVIOが使用するファイル名をTTSVOICEするHTSエンジンモデルを変換することは可能でしょうか?

(英語からの翻訳)
Posted by coral422 at 2013年08月03日 17:53
CeVIOのことは知っています。CeVIOプロジェクトはとても期待しています。
残念ながらこのプログラムでCeVIO用のファイルを変換することはできません。
ここで公開しているプログラムでhtsvoiceファイルの変換ができたのは、そのデータの処理を行うhts_engine APIのソースコードが公開されていて、その構造を理解できたからです。
CeVIOではhtsvoiceファイルの代わりに、tsvoiceファイルが使われています。しかし、このtsvoiceファイルを処理するソースコードは非公開です。またCeVIOではリバースエンジニアリングなどによるソースコードの解析が明確に禁じられています。そのためtsvoiceファイルの構造を知ることはできません。
Posted by takayan at 2013年08月04日 01:25
おはようございます。随分、御無沙汰しています。

Open JTalk SAPI Ver.1.01 なるものが出来ています。
http://2sen.dip.jp/2sen/top.html

これは、コメントにあるCeVIOのSAPI5化の技術を転用して
出来たそうでして、この記事で記載されているプログラムを使って、
音響モデルファイルを作る事もできるそうです。


読み上げは出来るものの、音声出力は出来ない模様です。


CeVIOのSAPI5化は、表向き非公開となっております。
http://blog.livedoor.jp/sgnw/archives/28930076.html
Posted by a at 2014年08月16日 08:59
それと、時間がある時に男性版のノーマルの音響モデルを作って
アップして頂けないでしょうか?

無料で男性のSAPI5は無いと思われるので、需要があると思います。

おんぶにだっこで申し訳ありませんが、宜しくお願いします。
Posted by a at 2014年08月16日 10:19
aさん、お久しぶりです。
SasaraPadはCeVIOに注意を受ける前に見つけて試したことがあります。SAPI5で使えたら本当に便利だったのですが、CeVIO側が認めてくれなければ仕方がないですね。

それはそうと「男性版のノーマルの音響モデル」って何でしょう。Open JTalk標準のnitech_jp_atr503_m001.htsvoice のことでしょうか?
これならば、http://open-jtalk.sourceforge.net/
のHTS voiceのところからダウンロードすれば手に入ります。
これは Open JTalk SAPI の読み手として追加して使えたはずです。

それとも、独自にhtsvoiceファイルを作れってことでしょうか?
ちょっとそれは難しいですね。

代わりに、こういうのはどうでしょう。
次のリンクのSHABERUで使えるhtsvoiceファイルが配布されています。
http://akihiro0105.blog55.fc2.com/blog-entry-135.html
そして、その追加音響モデルのページ
http://akihiro0105.blog55.fc2.com/blog-entry-136.html
ここに男声のファイルもあります。
これらのhtsvoiceファイルも Open JTalk SAPI に登録可能なはずです。
うまくいけば、これで相当数の音声が使えるようになります。
もちろんSHABERUの規約などに違反しないように使ってください。
Posted by takayan at 2014年08月18日 03:00
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/316259910
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

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