VOICEVOXをYMM4で使ってみた(その1)

今まではゆっくりボイスを使っていたのですが、VOICEVOXという、無料で商用利用も可能な音声合ソフトが公開されたため使ってみました!

VOICEBOXは以下で公開されています!
https://voicevox.hiroshiba.jp/

CPUモード、GPUモード

エンジンの起動モードにはCPUモードとGPUモードがあり、GPUモードの方がかなり速いです。

GPUモードの問題点

GPUモードでエンジンを使用していると音声合成できなくなります。
例えば、私の環境ではGPUメモリーが4GBですが、YMM4でセリフが100個くらいあるプロジェクトを開くと、50個位の音声合成したところあたりから以降の音声合成がすべて失敗します。
音声合成が出来るようにするにはVOICEVOXを再起動する必要があります。
ただし、YMM4のプロジェクトを閉じて開きなおすと、再度最初から音声合成するため、また50個目くらいから後すべての音声合成失敗するので解決になりません。

まずは構造を調べてみた

構造は以下の通りでした。

1.VOICEVOX単体で使用する場合
普通に使う場合ですね。画面に入力した文字列はエンジンに対して色々なHTTPリクエストを発行して、最終的に音声ファイルを受け取っていました。

2.YMM4で使った場合
YMM4の画面からVOICEVOXのエンジンに対してHTTPリクエストを発行して音声ファイルを受け取っていました。

エラー時に自動復旧できる構造とは?

以下の4.の構造にするとエラー時の自動復旧が実現できそうだと思いました。

3.YMM4単体で起動する場合(その2)は、実はVOICEVOX.exeは起動しないでもrun.exeを起動すればエンジンは起動できます。
GPUモードにする場合は–use_gpuを指定します。
run.exeのショートカットを作成して、リンク先を
“C:\インストール先\VOICEVOX 0.3.1\VOICEVOX\run.exe” –use_gpu
にしてそれを起動しても良いでしょう。

4.YMM4で使った場合(wrapperを挿入)
このwrapperを挿入することで、すべてのリクエストとレスポンスを監視できるようになります。

wrapperは具体的に何をするのか?


wrapperに最低限必要な機能は以下の通りです。

1.エンジンへのリクエストを中継する
2.エンジンからのレスポンスを中継する

つぎに、wrapperでエンジンの異常に対応するために必要な機能は以下の通りです。

1.エンジンから500エラーが返ってきたら、エンジンを再起動して、再度リクエストを発行する
2.エンジン再起動からリクエストを受け付けられるようになるまでは時間がかかるのでリトライ処理を入れる(1秒間隔で20回など)

基本的に以上の機能があればVOICEVOXエンジン(GPUモード)でエラーが発生してもYMM4は少し待たされるだけで、あたかもすべてのリクエストが成功したと錯覚してくれます。

最後におまけの機能を追加します

1.初回のリクエストが接続失敗した場合に限り、エンジンを起動する。

この機能を入れることで、YMM4がVOICEVOXを自動起動してくれていたことと同じことができます。
YMM4がVOICEVOX.exeを起動しないように、YMM4のVOICEVOX自動起動設定は空欄にします。(VOICEVOXのUIが起動するとYMM4の画面の上に乗っかって邪魔なので)

具体的なwrapperの作り方はその2につづく・・・

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA