見出し画像

Style-Bert-VITS2 API Serverのpython client

AI Tuberを作りたいと思い、Style-Bert-VITS2を触りはじめてみました。

Style-Bert-VITS2のAPI Serverの使い方理解のために、RESTAPIをたたくPythonのコードを試しに作ってみたのでメモがてらnoteに残します。


Style-Bert-VITS2

Style-Bert-VITS2は日本語特化型のText-to-Speechモデルです。
歌を歌わせている人がいたり、かなり自然な日本語の音声データが合成することができます。

概要引用

入力されたテキストの内容をもとに感情豊かな音声を生成するBert-VITS2のv2.1とJapanese-Extraを元に、感情や発話スタイルを強弱込みで自由に制御できるようにしたものです。

https://github.com/litagin02/Style-Bert-VITS2


API Server

APIサーバーの使い方はREADMEに記載されています。
https://github.com/litagin02/Style-Bert-VITS2?tab=readme-ov-file#api-server

API Server

構築した環境下でpython server_fastapi.pyするとAPIサーバーが起動します。 API仕様は起動後に/docsにて確認ください。

ローカルPC上で環境構築ができている前提で進めます。
API serverを起動します。

$ python server_fastapi.py
--略--
05-02 21:37:14 |  INFO  | server_fastapi.py:305 | server listen: http://127.0.0.1:5000
05-02 21:37:14 |  INFO  | server_fastapi.py:306 | API docs: http://127.0.0.1:5000/docs

ブラウザでhttp://127.0.0.1:5000/docsにアクセスすると、FAST APIのpageが開かれます。

docs

このpage上でお試しでAPIコールすることができます。

音声合成のテスト

GET /models/info

GET /models/infoでmodel_assetsディレクトリに配置したmodelの一覧が取得できます。
それで取得できたmodel idなどを/voiceのパラメータに設定します


GET /voice

GET /voiceで合成したwavファイルが取得できます
Pythonでclient作成します。

    params = {
        "text": text
        "encoding": "utf-8",
        "model_id": model_id,
        "speaker_id": speaker_id,
        "sdp_ratio": 0.2,
        "noise": 0.6,
        "noisew": 0.8,
        "length": 1,
        "language": "JP",
        "auto_split": "true",
        "split_interval": 0.5,
        #"assist_text": None,
        "assist_text_weight": 1,
        "style": "Neutral",
        "style_weight": 10
    }

text:喋らせたい文言
model_id : models/infoで取得した再生させたいmodelのid
speaker_id : models/infoで取得した再生させたいspeakerのid


このようにAPI callするとwavのデータがresponseで返ってきます。

base_url = "http://127.0.0.1:5000"

# パラメータをURLエンコードして、URLに追加
url = base_url + "/voice" + "?" + urlencode(params)

# GETリクエストを作成
req = Request(url, headers=headers, method="GET")


実際のコードはGitHubに上げています。
text部分と設定パラメータは別ファイルから読み込むようにしています。
これで指定したテキストで音声再生できました。

speechのテキストだけ書けば連続でAPI呼んで音声再生し続けることができました。これをベースにAI Tuber開発進めます。


この記事が気に入ったらサポートをしてみませんか?