🎙

T5Gemma-TTSを並列化して高速推論する

に公開

はじめに

今回は手短に、T5Gemma-TTSの推論を並列化したリポジトリとgradio UI上の使い方を簡単にまとめる。

T5Gemma-TTSについては、開発者であるAratakoさんのポストを参照されたい。

https://x.com/Aratako_LM/status/2000128713305043450

今回作成したコードのリポジトリ

Aratakoさんのリポジトリをフォークし、並列推論できるように改修したリポジトリがこちら。

https://github.com/robustonian/T5Gemma-TTS

メンテナンスはおそらくできないので、ご自身で必要に応じて改修してください。
また、並列推論に対応させたのはinference_gradio.pyのみなので、他の用途で使いたい場合はinference_gradio.pyを参考にしてください。

使い方

以下ではUbuntu + NVIDIA環境での使い方を記載する。

$ git clone https://github.com/robustonian/T5Gemma-TTS -b feature/sentence-segmentation
$ cd T5Gemma-TTS
$ uv init --python 3.12
$ uv venv
$ uv pip install "torch<=2.8.0" torchaudio --index-url https://download.pytorch.org/whl/cu128 # DGX Sparkはとりにくさんの記事参照
$ uv pip install -r requirements.txt
$ sh serve.sh # このコマンドを実行する前に下記の注意を参照されたい

※DGX Sparkで導入したい場合は、以下のとりにくさんの記事を参照されたい

https://note.com/tori29umai/n/ndc2adf123f63


モデルのダウンロードができていない場合は時間がかかるが、

* Running on local URL:  http://0.0.0.0:7860
* To create a public link, set `share=True` in `launch()`.

という文字列が端末に表示されたら、webブラウザでアクセスすることでGUIを開ける。

GUI画面の説明

http://localhost:7860またはhttp://[サーバのIPアドレス]:7860を開くと下記のような画面になる。

公式リポジトリのUIと一部異なっている点に注意する。具体的には、下記の3つ。

  • Batch Count

  • Enable Sentence Segmentation/文分割を有効化

  • Inter-segment Silence / セグメント間の無音(秒)

の3つである。それぞれの説明を以下に示す。

Batch Count

同一プロンプト、異なるseedで並列に推論を行う。大きくしすぎるとVRAMが枯渇してエラーが出るかもしれないので、その時は小さくする。

最大数を変えたい場合は、起動オプション--max_batchの値を変更すれば良い。

Enable Sentence Segmentation/文分割を有効化

これにチェックを入れると、プロンプトが複数の文章で構成されている時に自動的に分割して並列で推論するようになる。Batch Countと同時に使うことは想定していないため、これをONにするときはBatch Countは1を推奨。

Inter-segment Silence / セグメント間の無音(秒)

文分割を有効化したときに、分割されたセグメント間の無音時間を指定できる。具体的には、それぞれの無音時間をトリムし、その後に無音時間を追加している。デフォルトは1秒となっており、0〜2秒で調整可能。

何の役に立つのか?

ところで、並列に推論できるようになったことが何の役に立つのか?

答えは簡単で、GPUをフル活用して悦に入ることができる!

https://x.com/gosrum/status/2000571313996607918

Batch Count

というのは半分冗談で、まずBatch Countによりリファレンスなしで音声を生成することで、生成された音声の比較検討を短時間で実現できるようになる

気に入った音声があれば、名前を付けて保存しておく。

Enable Sentence Segmentation/文分割を有効化

次に文分割を有効化することで、気に入った音声をリファレンスにして、長文のプロンプトを高速に生成することができる。

その際、Inter-segment Silence / セグメント間の無音(秒)を調整すれば、プロンプトに応じたより自然な長時間の音声を生成しやすくなる。

https://x.com/gosrum/status/2000908211004834046

さいごに

今回はT5Gemma-TTSの推論を並列化して高速化したリポジトリを紹介し、導入方法・使い方を簡単にまとめました。

改めて、素晴らしいモデルとコードを公開いただいたAratakoさんに感謝申し上げます!

Discussion