PythonスクリプトからStyle-Bert-VITS2で文字列を読み上げるサンプルコード

東海道 日本橋 コンピュータ
出典:国立国会図書館「NDLイメージバンク」(https://ndlsearch.ndl.go.jp/imagebank)

Windows環境でWSL+UbuntuでStyle-Bert-VITS2がインストール環境で、Pythonスクリプトで任意の文字列からWAVファイルを生成するサンプルコード

# Windows 11側のPython環境で実行

import requests

# 読み上げる文字列
speak_text = "本日は晴天なり。"

# アドレス1:環境に合わせて変更
API_URL_G2P = "http://localhost:8000/api/g2p"
payload = {"text": speak_text}
try:
    # POSTリクエストを送信
    response = requests.post(API_URL_G2P, json=payload)
    response.raise_for_status()  # HTTPエラーがあれば例外発生

    # レスポンス(JSON形式)
    moraToneList = response.json()

    print("✅ サーバーからの応答:", moraToneList)

except requests.exceptions.RequestException as e:
    print(f"❌ 通信エラー: {e}")


# アドレス2:環境に合わせて変更
API_URL = "http://localhost:8000/api/synthesis" 

# 送信するデータ 
payload = {
    "model": "jvnv-F1-jp",
    "modelFile": "model_assets/jvnv-F1-jp/jvnv-F1-jp_e160_s14000.safetensors",
    "text": speak_text,
    "moraToneList": moraToneList,
    "style": "Neutral",
    "styleWeight": 1,
    "assistText": "",
    "assistTextWeight": 1,
    "speed": 1,
    "noise": 0.6,
    "noisew": 0.8,
    "sdpRatio": 0.2,
    "language": "JP",
    "silenceAfter": 0.5,
    "pitchScale": 1,
    "intonationScale": 1,
    "speaker": "jvnv-F1-jp"
}

try:
    # POSTリクエストを送信
    response = requests.post(API_URL, json=payload)
    
    response.raise_for_status() # HTTPエラーがあれば例外を発生させる
    
    # WAV バイナリデータを取得
    wav_data = response.content

    # ファイルに保存
    output_path = "output.wav"
    with open(output_path, "wb") as f:
        f.write(wav_data)

    print(f"✅ 音声ファイルを保存しました: {output_path}")

except requests.exceptions.RequestException as e:
    print(f"❌ リクエストエラーが発生しました。WSL2側でStyle-Bert-VITS2が起動しているか、またAPIのURL '{API_URL}' が正しいか確認してください。エラー: {e}")

試行錯誤して、wavファイルが作成出来るところまで、たどり着きました。

コメント