Skip to content

Latest commit

 

History

History
358 lines (243 loc) · 17.8 KB

README.md

File metadata and controls

358 lines (243 loc) · 17.8 KB

GPT-SoVITS-WebUI

パワフルなFew-Shot音声変換・音声合成 WebUI。

madewithlove


Open In Colab License Huggingface Discord

English | 中文简体 | 日本語 | 한국어 | Türkçe


機能:

  1. Zero-Shot TTS: たった5秒間の音声サンプルで、即座にテキストからその音声に変換できます。

  2. Few-Shot TTS: わずか1分間のトレーニングデータでモデルを微調整し、音声のクオリティを向上。

  3. 多言語サポート: 現在、英語、日本語、韓国語、広東語、中国語をサポートしています。

  4. WebUI ツール: 統合されたツールは、音声と伴奏(BGM等)の分離、トレーニングセットの自動セグメンテーション、ASR(中国語のみ)、テキストラベリング等を含むため、初心者の方でもトレーニングデータセットの作成やGPT/SoVITSモデルのトレーニング等を非常に簡単に行えます。

デモ動画をチェック!

声の事前学習無しかつFew-Shotでトレーニングされたモデルのデモ:

few.shot.fine.tuning.demo.mp4

ユーザーマニュアル: 简体中文 | English

インストール

テスト済みの環境

  • Python 3.9, PyTorch 2.0.1, CUDA 11
  • Python 3.10.13, PyTorch 2.1.2, CUDA 12.3
  • Python 3.9, PyTorch 2.2.2, macOS 14.4.1 (Apple silicon)
  • Python 3.9, PyTorch 2.2.2, CPUデバイス

注記: numba==0.56.4 は py<3.11 が必要です

Windows

Windows ユーザー:(Windows 10 以降でテスト済み)、統合パッケージをダウンロードし、解凍後に go-webui.bat をダブルクリックすると、GPT-SoVITS-WebUI が起動します。

Linux

conda create -n GPTSoVits python=3.9
conda activate GPTSoVits
bash install.sh

macOS

注:MacでGPUを使用して訓練されたモデルは、他のデバイスで訓練されたモデルと比較して著しく品質が低下するため、当面はCPUを使用して訓練することを強く推奨します。

  1. xcode-select --install を実行して、Xcodeコマンドラインツールをインストールします。
  2. brew install ffmpeg を実行してFFmpegをインストールします。
  3. 上記の手順を完了した後、以下のコマンドを実行してこのプロジェクトをインストールします。
conda create -n GPTSoVits python=3.9
conda activate GPTSoVits

pip install -r requirements.txt

手動インストール

FFmpegをインストールします。

Conda ユーザー
conda install ffmpeg
Ubuntu/Debian ユーザー
sudo apt install ffmpeg
sudo apt install libsox-dev
conda install -c conda-forge 'ffmpeg<7'
Windows ユーザー

ffmpeg.exeffprobe.exe をダウンロードし、GPT-SoVITS のルートフォルダに置きます。

MacOS ユーザー
brew install ffmpeg

依存関係をインストールします

pip install -r requirementx.txt

Docker の使用

docker-compose.yaml の設定

  1. イメージのタグについて:コードベースの更新が速い割に、イメージのパッケージングとテストが遅いため、Docker Hub で現在パッケージされている最新のイメージをご覧になり、ご自身の状況に応じて選択するか、またはご自身のニーズに応じて Dockerfile を使用してローカルでビルドしてください。

  2. 環境変数:

    • is_half:半精度/倍精度の制御。"SSL 抽出"ステップ中に4-cnhubert/5-wav32kディレクトリ内の内容が正しく生成されない場合、通常これが原因です。実際の状況に応じて True または False に調整してください。
  3. ボリューム設定:コンテナ内のアプリケーションのルートディレクトリは/workspaceに設定されます。デフォルトのdocker-compose.yamlには、アップロード/ダウンロードの内容の実例がいくつか記載されています。

  4. shm_size:Windows の Docker Desktop のデフォルトの利用可能メモリは小さすぎるため、うまく動作しない可能性があります。状況に応じて適宜設定してください。

  5. deployセクションの GPU に関連する内容は、システムと実際の状況に応じて慎重に設定してください。

docker compose で実行する

docker compose -f "docker-compose.yaml" up -d

docker コマンドで実行する

上記と同様に、実際の状況に基づいて対応するパラメータを変更し、次のコマンドを実行します:

docker run --rm -it --gpus=all --env=is_half=False --volume=G:\GPT-SoVITS-DockerTest\output:/workspace/output --volume=G:\GPT-SoVITS-DockerTest\logs:/workspace/logs --volume=G:\GPT-SoVITS-DockerTest\SoVITS_weights:/workspace/SoVITS_weights --workdir=/workspace -p 9880:9880 -p 9871:9871 -p 9872:9872 -p 9873:9873 -p 9874:9874 --shm-size="16G" -d breakstring/gpt-sovits:xxxxx

事前訓練済みモデル

  1. GPT-SoVITS Models から事前訓練済みモデルをダウンロードし、GPT_SoVITS/pretrained_models ディレクトリに配置してください。

  2. G2PWModel_1.1.zip からモデルをダウンロードし、解凍して G2PWModel にリネームし、GPT_SoVITS/text ディレクトリに配置してください。(中国語TTSのみ)

  3. UVR5(ボーカル/伴奏(BGM等)分離 & リバーブ除去の追加機能)の場合は、UVR5 Weights からモデルをダウンロードし、tools/uvr5/uvr5_weights ディレクトリに配置してください。

    • UVR5でbs_roformerまたはmel_band_roformerモデルを使用する場合、モデルと対応する設定ファイルを手動でダウンロードし、tools/UVR5/UVR5_weightsフォルダに配置することができます。モデルファイルと設定ファイルの名前は、拡張子を除いて同じであることを確認してください。さらに、モデルと設定ファイルの名前には**「roformer」が含まれている必要があります**。これにより、roformerクラスのモデルとして認識されます。

    • モデル名と設定ファイル名には、直接モデルタイプを指定することをお勧めします。例:mel_mand_roformer、bs_roformer。指定しない場合、設定文から特徴を照合して、モデルの種類を特定します。例えば、モデルbs_roformer_ep_368_sdr_12.9628.ckptと対応する設定ファイルbs_roformer_ep_368_sdr_12.9628.yamlはペアです。同様に、kim_mel_band_roformer.ckptkim_mel_band_roformer.yamlもペアです。

  4. 中国語ASR(追加機能)の場合は、Damo ASR ModelDamo VAD Model、および Damo Punc Model からモデルをダウンロードし、tools/asr/models ディレクトリに配置してください。

  5. 英語または日本語のASR(追加機能)を使用する場合は、Faster Whisper Large V3 からモデルをダウンロードし、tools/asr/models ディレクトリに配置してください。また、他のモデル は、より小さいサイズで高クオリティな可能性があります。

データセット形式

TTS アノテーション .list ファイル形式:

vocal_path|speaker_name|language|text

言語辞書:

  • 'zh': 中国語
  • 'ja': 日本語
  • 'en': 英語

例:

D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.

微調整と推論

WebUIを開く

統合パッケージ利用者

go-webui.batをダブルクリックするか、go-webui.ps1を使用します。 V1に切り替えたい場合は、go-webui-v1.batをダブルクリックするか、go-webui-v1.ps1を使用してください。

その他

python webui.py <言語(オプション)>

V1に切り替えたい場合は

python webui.py v1 <言語(オプション)>

またはWebUIで手動でバージョンを切り替えてください。

微調整

パス自動補完のサポート

1. 音声パスを入力する
2. 音声を小さなチャンクに分割する
3. ノイズ除去(オプション)
4. ASR
5. ASR転写を校正する
6. 次のタブに移動し、モデルを微調整する

推論WebUIを開く

統合パッケージ利用者

go-webui-v2.batをダブルクリックするか、go-webui-v2.ps1を使用して、1-GPT-SoVITS-TTS/1C-inferenceで推論webuiを開きます。

その他

python GPT_SoVITS/inference_webui.py <言語(オプション)>

または

python webui.py

その後、1-GPT-SoVITS-TTS/1C-inferenceで推論webuiを開きます。

V2リリースノート

新機能:

  1. 韓国語と広東語をサポート

  2. 最適化されたテキストフロントエンド

  3. 事前学習済みモデルが2千時間から5千時間に拡張

  4. 低品質の参照音声に対する合成品質の向上

    詳細はこちら

V1環境からV2を使用するには:

  1. pip install -r requirements.txtを使用していくつかのパッケージを更新

  2. 最新のコードをgithubからクローン

  3. huggingfaceからV2の事前学習モデルをダウンロードし、それらをGPT_SoVITS\pretrained_models\gsv-v2final-pretrainedに配置

    中国語V2追加: G2PWModel_1.1.zip(G2PWモデルをダウンロードし、解凍してG2PWModelにリネームし、GPT_SoVITS/textに配置します)

V3 リリースノート

新機能:

  1. 音色の類似性が向上し、ターゲットスピーカーを近似するために必要な学習データが少なくなりました(音色の類似性は、ファインチューニングなしでベースモデルを直接使用することで顕著に改善されます)。

  2. GPTモデルがより安定し、繰り返しや省略が減少し、より豊かな感情表現を持つ音声の生成が容易になりました。

    詳細情報はこちら

v2 環境から v3 を使用する方法:

  1. pip install -r requirements.txt を実行して、いくつかのパッケージを更新します。

  2. GitHubから最新のコードをクローンします。

  3. v3の事前学習済みモデル(s1v3.ckpt、s2Gv3.pth、models--nvidia--bigvgan_v2_24khz_100band_256x フォルダ)をHuggingface からダウンロードし、GPT_SoVITS\pretrained_models フォルダに配置します。

    追加: 音声超解像モデルについては、ダウンロード方法を参照してください。

Todo リスト

  • 優先度 高:

    • 日本語と英語でのローカライズ。
    • ユーザーガイド。
    • 日本語データセットと英語データセットのファインチューニングトレーニング。
  • 機能:

    • ゼロショット音声変換(5 秒)/数ショット音声変換(1 分)。
    • TTS スピーキングスピードコントロール。
    • TTS の感情コントロールの強化。
    • SoVITS トークン入力を語彙の確率分布に変更する実験。
    • 英語と日本語のテキストフロントエンドを改善。
    • 小型と大型の TTS モデルを開発する。
    • Colab のスクリプト。
    • トレーニングデータセットを拡張する(2k→10k)。
    • より良い sovits ベースモデル(音質向上)
    • モデルミックス

(追加の) コマンドラインから実行する方法

コマンド ラインを使用して UVR5 の WebUI を開きます

python tools/uvr5/webui.py "<infer_device>" <is_half> <webui_port_uvr5>

コマンド ラインを使用してデータセットのオーディオ セグメンテーションを行う方法は次のとおりです。

python audio_slicer.py \
    --input_path "<path_to_original_audio_file_or_directory>" \
    --output_root "<directory_where_subdivided_audio_clips_will_be_saved>" \
    --threshold <volume_threshold> \
    --min_length <minimum_duration_of_each_subclip> \
    --min_interval <shortest_time_gap_between_adjacent_subclips>
    --hop_size <step_size_for_computing_volume_curve>

コマンドラインを使用してデータセット ASR 処理を行う方法です (中国語のみ)

python tools/asr/funasr_asr.py -i <input> -o <output>

ASR処理はFaster_Whisperを通じて実行されます(中国語を除くASRマーキング)

(進行状況バーは表示されません。GPU のパフォーマンスにより時間遅延が発生する可能性があります)

python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language> -p <precision>

カスタムリストの保存パスが有効になっています

クレジット

特に以下のプロジェクトと貢献者に感謝します:

理論研究

事前学習モデル

推論用テキストフロントエンド

WebUI ツール

@Naozumi520 さん、広東語のトレーニングセットの提供と、広東語に関する知識のご指導をいただき、感謝申し上げます。

すべてのコントリビューターに感謝します