WebブラウザーだけでStyle-Bert-VITS2 GPUサーバーを構築する方法☕️
はじめに
Style-Bert-VITS2とは、簡単に言うとAIによるとても表現力豊かな音声合成システムです。モデルをカスタムして使用することも簡単にできるようになっており、AIキャラクター界隈でも人気のText-to-Speechです。
しかしながら、これをリアルタイム対話で使用するには高性能なGPUを搭載するAPIサーバーが必要となり、構築難易度やコスト面でハードルが高いという実態があります。サーバレスという手もありますが、コールドスタンバイがあるので実用的とは言えません。
そこで、GPUインスタンスを時間単位で使用できるRunPodというサービスを使用して簡単かつ低コスト・オンデマンドでStyle-Bert-VITS2のTTS APIを利用できるようにする手順をこの記事ではご紹介します。
なおこの記事のやり方は超簡易版のため、本家のAPIサーバーを使ってちゃんとやりたい方はこの記事を書くきっかけにもなったニケちゃんさんの記事の手順で構築することをお勧めします。
それでは、やっていきましょう💪
全体の概要と流れ
この手順はすべてブラウザーで完結します。RunPodでPodと呼ばれるコンテナーの起動時処理をブラウザー上で設定できるため、これを利用してインストールから自動起動設定までを全て行います。手順は以下の3ステップ。
GitHubからのリソースの取得
実行環境の構築と依存ライブラリーのインストール
APIサーバー自動起動の設定
サーバーが立ち上がったあと、API仕様画面からモデルファイルをアップロードしたらすぐにTTSサービスとして利用できるようになります🚀
ステップ1. GitHubからのリソースの取得
Podを立ち上げて、今回導入する簡易版APIサーバーのリソースを配置します。適当なPodsのメニューからDeployを選択し、適当なGPUマシンを選択します。今回は一番安いRTX2000 Adaを使用しました。
Pod TemplateにはPyTorch 2.1 / CUDA 1.18 / Ubuntu 22.04のものがデフォルトで選択されていましたので、これを利用します。Edit Templateのボタンを押すと以下のような画面が表示されますので、Container Start Commandに以下の通り入力してください。
git clone https://github.com/uezo/sbv2-api-lite /workspace/sbv2-api-lite
また、ポート番号には5000を設定しましょう。
編集が完了したらSet Overridesボタンを押して適用し、Podを起動してください。コンテナの起動処理が始まります。Cloning into '/workspace/sbv2-api-lite'…というログ出力が始まり、しばらくしたらfatalのエラーが表示されます。まごうことなきエラーですが、これが処理完了の合図なので問題ありません。Podを◼︎ボタンで停止してください。
ステップ2. 実行環境の構築と依存ライブラリーのインストール
Edit Podのボタンを押すとテンプレート編集と同じ画面が表示されますので、Container Start Commandに以下の通り入力してください。
bash /workspace/sbv2-api-lite/runpod_install.sh
入力内容を反映させたらPodを起動します。この処理には5分くらいかかりますので、しばらく待ちましょう。完了すると以下のようなメッセージが表示されますので、Podを停止してください。
Setup complete! To launch the API server, please follow these steps:
1. Set the following command as the Container Start Command:
---------------------
bash /workspace/sbv2-api-lite/runpod_start.sh
---------------------
2. Set the following environment variables:
---------------------
SBV2_API_LITE_USE_GPU=true
SBV2_API_LITE_VERBOSE=true
---------------------
3. Restart the pod.
ステップ3. APIサーバー自動起動の設定
Podを起動すればAPIサーバーが起動するようにしたいので、そのための設定をします。Container Start Commandに以下の通り設定してください。
bash /workspace/sbv2-api-lite/runpod_start.sh
また、以下2つの環境変数を追加して、両方とも値をtrueとしてください。
しばらくするとログにhttp://0.0.0.0:5000で起動した旨が表示されます。PodのConnectボタンを押すと表示される画面にあるClick Connect to HTTP Service [Port 5000]ボタンを押しましょう。Webルートがブラウザーで開きますので、パスに/docsを指定するとOpen APIのスペック画面が表示されます。
なんと、これでもうStyle-Bert-VITS2をTTSサービスとして利用できるようになりました!やったね👍
TTSとして使ってみる
セットアップは終わりですが、TTSとして利用するにはまずモデルをアップロードする必要があります。Open APIの画面から PUT /models/load を展開し、Try it outボタンを押します。必ずuse_gpuにtrueを設定して、モデルの各ファイルを選択して、Executeボタンを押してください。サーバーへのアップロードと反映処理が開始されます。反映処理自体はすぐに終わるのですが、環境によってはアップロードに数分かかる場合があります。(私の環境ではそう)
モデルのアップロードが完了したら、お待ちかねの音声合成を試してみましょう!GET /voice を展開し、text に発話させたい文言を入力したら、Executeボタンを押しましょう。Pod起動後(モデルロード後)の初回の音声合成だけは数秒かかります。
成功すると下の方に再生ボタンが表示されますので、思い通りの内容になっているか確認してみてください。
なお今回の簡易版のStyle-Bert-VITS2 APIサーバーは、GitHubの以下のリポジトリーとして公開しています。今回の手順でうまくいったよーという方は⭐️をつけていただけるとうれしいです✨🙏✨
GPUのないPC上で手元にあるモデルを使ってちゃっと喋らせたい!という用途にも仕様できますので、ぜひ試してみてくださいね。
また、せっかく魅力的な声が出せるようになったので私もAIキャラクター開発をしてみたい!という方は、ChatdollKitというフレームワークを使えばiOS/Android/PC/Web/VR/ARとあらゆるプラットフォームで音声対話型AIキャラクターを開発できます。もちろんStyle-Bert-VITS2にも対応していますのでチャレンジしてみてください。
こんな感じで表情や身振り手振りを交えた会話、マルチリンガル対応ができたり、
自律運転可能なAITuberも作れます。
ではでは!👋