1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Style-Bert-VITS2のAPIをPythonから叩いて音声合成を自動化する (Gradio Client)

Last updated at Posted at 2025-11-22

概要

Style-Bert-VITS2(以下、SBV2)は非常に高精度な音声合成が可能ですが、長文の読み上げや大量のセリフデータを生成したい場合、WebUIで毎回ポチポチと操作するのは大変です。

WebUIでの動かし方に関する情報は多いのですが、API機能を使って外部から操作する方法についての記事があまり見つからなかったので、備忘録としてまとめておきます。

なお、APIを使用するにはSBV2のWebUIがローカル(またはサーバー)で起動している必要があります。

導入方法、WebUIでの音声合成、自作モデル作成については素晴らしい解説が既にあるため割愛します。

前提環境

  • Python環境があること
  • Style-Bert-VITS2 が起動しており、ブラウザでアクセスできる状態であること(デフォルト: http://127.0.0.1:7860/

必要なライブラリ

gradio-clientを導入しておきましょう。

pip install gradio-client

API操作の基本ステップ

SBV2を外部から操作して音声を生成する流れは、大きく分けて以下の3ステップです。

  1. モデル一覧の更新 (/update_model_files_for_gradio)
  2. モデルのロード (/get_model_for_gradio)
  3. 音声合成の実行 (/tts_fn)

実装サンプル

ここからは、実際のコードを機能ごとに分割して解説します。
モデルは初めから入っているamitaroを使用します。

1. クライアントの接続

まずは gradio_client をインポートし、ローカルで稼働しているSBV2に接続します。

from gradio_client import Client

# SBV2が動いているURLを指定します
client = Client("http://127.0.0.1:7860/")

2. モデルの更新とロード(準備)

音声合成を行う前に、「モデルリストの更新」と「モデルのロード」を行う必要があります。
特に、/update_model_files_for_gradioをスキップすると、アルファベット順で一番上にあるモデル以外のモデルパスが認識されないので注意してください。
amitaro以外のモデルパスが読み込めない!なんてことになります。

# 変数設定
MODEL_NAME = "amitaro"  # WebUI上のモデル名
MODEL_PATH = "model_assets\\amitaro\\amitaro.safetensors"  # 実際のファイルパス


# 最初にファイルリストを更新させます。
client.predict(
    model_name=MODEL_NAME,
    api_name="/update_model_files_for_gradio"
)

# 推論に使用するモデルを指定してメモリにロードします。
print(f"Loading {MODEL_NAME}...")
client.predict(
    model_name=MODEL_NAME,
    model_path_str=MODEL_PATH,
    api_name="/get_model_for_gradio"
)

3. 音声合成の実行

準備ができたら、音声合成(推論)を実行します。
text に読み上げさせたい文章を渡し、api_name="/tts_fn" を叩きます。

text = "ここに読み上げさせたいテキストを入力します"

# 推論実行
result = client.predict(
    text=text,
    model_name=MODEL_NAME,
    model_path=MODEL_PATH,
    language="JP",
    reference_audio_path=None,  # 【必須】参照音声(使わない場合はNone)
    assist_text="",  # 【必須】補助テキスト(使わない場合は空文字)
    kata_tone_json_str="",  # 【必須】アクセント指定(使わない場合は空文字)
    speaker="あみたろ",  # 【必須】話者ID(モデル内のスピーカー名)
    style="Neutral",  # 【必須】話者スタイル名(モデル内のスタイル名)
    api_name="/tts_fn",
    # ---その他のパラメータ(省略可能)---
    sdp_ratio=0.2,
    noise_scale=0.6,
    noise_scale_w=0.8,
    length_scale=1.0,
    line_split=True,
    split_interval=0.5,
    assist_text_weight=1.0,
    use_assist_text=False,
    style_weight=1.0,
    use_tone=False,
    pitch_scale=1.0,
    intonation_scale=1.0,
)

# result[1] に生成されたwavファイルのパスが入っている
print(f"生成された音声パス: {result[1]}")

APIの仕様・引数の確認方法

「自分の環境ではどの引数を渡せばいいの?」と迷ったときは、以下の2つの方法で確認できます。

1. Web UIから確認する

Web UI(Windowsなら app.bat 等で起動した画面)のページ最下部にある 「APIを介して使用」 というリンクをクリックしてください。
画面上にAPIドキュメントが展開され、各APIに必要なパラメータや型、デフォルト値をその場で確認できます。基本的にはここを見るのが一番早いです。
スクリーンショット 2025-11-22 201313.png

2. Pythonコードから確認する

スクリプト実行時に確認したい場合や、コンソールでログとして残したい場合は、以下のコードを実行してください。

from gradio_client import Client

client = Client("http://127.0.0.1:7860/")
client.view_api(all_endpoints=True)

これを実行すると、コンソールに現在利用可能なAPIの一覧がずらっと表示されます。ここを見て /tts_fn に渡すべきパラメータを確認するのが確実です。

おわりに

APIを活用すれば、Style-Bert-VITS2の活用の幅がぐっと広がります。
APIには他にも色々な機能があるので、ぜひドキュメントを眺めながら自分だけの活用法を見つけてみてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?