見出し画像

Style-Bert-VITS2 をAPIで叩いてみる【プログラミング初心者がAIを活用】AITuber制作の備忘録

Style-Bert-VITS2

「Style-Bert-VITS2」は、感情や発話スタイルを自由に強弱をつけて制御できる上に、モデルの学習やマージも可能なツールです。

1月9日には「Style-Bert-VITS2」に大幅なアップデートが行われており(少し前にAPIでも叩けるようになっていたので)早速、試してみました。
今回も自分用のメモ程度の備忘録になります。


API Server

「Style-Bert-VITS2」をセットアップした環境でpython server_fastapi.pyを実行すると、APIサーバーが起動します。モデルが読み込まれ、Webサーバーがローカル環境で立ち上がれば、準備は完了です。
特にブラウザ上にUIが立ち上がってたりはしませんので注意。
デフォルトでは「http://127.0.0.1:5000」に立ち上がります。
APIの仕様は起動後「http://127.0.0.1:5000/docs」で確認できます。

これにより、現状で使っている音声合成「VOICEVOX」とほぼ同じように、ローカル環境でAPIを叩くことが可能になりました。
AIプログラミングツール「Cursor」に「VOICEVOX」のコードを「Style-Bert-VITS2」に書き換えるよう指示。関連するドキュメントやリンク、コードを流し込むと、自動的に置き換えが行われました。いつもこれが凄い。
以下がそのモデル設定のコードです。
`speaker_id`、`model_id`、`speaker_name`は自分のモデルに合わせて変更すれば良さそうです。他はデフォルト設定になっていますね。
上手く動きそうなのでAITuberに組み込みました(記事の最後に動画あり)

params = {
            'text': text,  # 変換するテキスト
            'speaker_id': speaker_id,  # 話者のID
            'model_id': model_id,  # 使用するモデルのID
            'speaker_name': speaker_name,  # 話者の名前(speaker_idより優先される)
            'sdp_ratio': 0.2,  # SDP(Stochastic Duration Predictor)とDP(Duration Predictor)の混合比率
            'noise': 0.6,  # サンプルノイズの割合(ランダム性を増加させる)
            'noisew': 0.8,  # SDPノイズの割合(発音の間隔のばらつきを増加させる)
            'length': 0.9,  # 話速(1が標準)
            'language': 'JP',  # テキストの言語
            'auto_split': 'true',  # 自動でテキストを分割するかどうか
            'split_interval': 1,  # 分割した際の無音区間の長さ(秒)
            'assist_text': None,  # 補助テキスト(読み上げと似た声音・感情になりやすい)
            'assist_text_weight': 1.0,  # 補助テキストの影響の強さ
            'style': 'Neutral',  # 音声のスタイル
            'style_weight': 5.0,  # スタイルの強さ
            'reference_audio_path': None  # 参照オーディオパス(スタイルを音声ファイルで指定)
        }

モデルの学習とマージ

モデルの学習とマージ方法については、以下の動画が非常にわかりやすかったです。学習はinputsフォルダに音声データwavを入れ、Dataset.batから行います。マージはMerge.batからです。わかりやすいUIが用意されているので、初心者でもすぐに始められそうです。


Style-Bert-VITS2のAPI設定でつまずいた部分

「ChatGPT」から生成されたテキストを「Style-Bert-VITS2」で音声合成する際、テキストが長すぎるのかエラーが多発しました。これはテキストを分割して流し込むことで解決。ただし、細かく分割したテキストを音声合成すると、文章の切れ目にノイズが混入する事態に。これは生成される音の前後に0.1秒程度の無音部分を挿入するコードを追加し解決しました。


今回の生成物

音声合成のテスト中に偶然「関西弁風」の話し方になり、妙に可愛かったので今回は「エセ関西弁」を話すキャラにしてみました。話すスピードも0.9にして少し早くしています。

週単位で驚くべきAIツールが登場し、インフラが整備されている今、どんな大ヒットするAITuberが出現するのか非常に楽しみですね。

ご一読いただき、ありがとうございます。

この記事が参加している募集

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