XXXXRT666 d5e479dad6
Introduce Docker and Windows CI Workflow, Pre-commit Formatting, and Language Resource Auto-Download (#2351)
* Docker Auto-Build Workflow

* Rename

* Update

* Fix Bugs

* Disable Progress Bar When workflows triggered

* Fix Wget

* Fix Bugs

* Fix Bugs

* Update Wget

* Update Workflows

* Accelerate Docker Image Building

* Fix Install.sh

* Add Skip-Check For Action Runner

* Fix Dockerfile

* .

* .

* .

* .

* Delete File in Runner

* Add Sort

* Delete More Files

* Delete More

* .

* .

* .

* Add Pre-Commit Hook
Update Docker

* Add Code Spell Check

* [pre-commit.ci] trigger

* [pre-commit.ci] trigger

* [pre-commit.ci] trigger

* Fix Bugs

* .

* Disable Progress Bar and Logs while using GitHub Actions

* .

* .

* Fix Bugs

* update conda

* fix bugs

* Fix Bugs

* fix bugs

* .

* .

* Quiet Installation

* fix bugs

* .

* fix bug

* .

* Fix pre-commit.ci and Docker

* fix bugs

* .

* Update Docker & Pre-Commit

* fix  bugs

* Update Req

* Update Req

* Update OpenCC

* update precommit

* .

* Update .pre-commit-config.yaml

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update Docs and fix bugs

* Fix \

* Fix MacOS

* .

* test

* .

* Add Tag Alias

* .

* fix bugs

* fix bugs

* make image smaller

* update pre-commit config

* .

* .

* fix bugs

* use miniconda

* Fix Wrong Path

* .

* debug

* debug

* revert

* Fix Bugs

* Update Docs, Add Dict Auto Download in install.sh

* update docker_build

* Update Docs for Install.sh

* update docker docs about architecture

* Add Xcode-Commandline-Tool Installation

* Update Docs

1. Add Missing VC17
2. Modufied the Order of FFmpeg Installation and Requirements Installation
3. Remove Duplicate FFmpeg

* Fix Wrong Cuda Version

* Update TESTED ENV

* Add PYTHONNOUSERSITE(-s)

* Fix Wrapper

* Update install.sh For Robustness

* Ignore .git

* Preload CUDNN For Ctranslate2

* Remove Gradio Warnings

* Update Colab

* Fix OpenCC Problems

* Update Win DLL Strategy

* Fix Onnxruntime-gpu NVRTC Error

* Fix Path Problems

* Add Windows Packages Workflow

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* .

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* Fix Path

* Fix Path

* Enable Logging

* Set 7-Zip compression level to maximum (-mx=9)

* Use Multithread in ONNX Session

* Fix Tag Bugs

* Add Time

* Add Time

* Add Time

* Compress More

* Copy DLL to Solve VC Runtime DLL Missing Issues

* Expose FFmpeg Errors, Copy Only Part of Visual C++ Runtime

* Update build_windows_packages.ps1

* Update build_windows_packages.ps1

* Update build_windows_packages.ps1

* Update build_windows_packages.ps1

* WIP

* WIP

* WIP

* Update build_windows_packages.ps1

* Update install.sh

* Update build_windows_packages.ps1

* Update docker-publish.yaml

* Update install.sh

* Update Dockerfile

* Update docker_build.sh

* Update miniconda_install.sh

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update Colab-WebUI.ipynb

* Update Colab-Inference.ipynb

* Update docker-compose.yaml

* 更新 build_windows_packages.ps1

* Update install.sh

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-05-26 10:45:14 +08:00
..

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 でトレーニングされたモデルのデモ:

https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-80c060ab47fb

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

インストール

テスト済みの環境

Python Version PyTorch Version Device
Python 3.10 PyTorch 2.5.1 CUDA 12.4
Python 3.11 PyTorch 2.5.1 CUDA 12.4
Python 3.11 PyTorch 2.7.0 CUDA 12.8
Python 3.9 PyTorch 2.8.0dev CUDA 12.8
Python 3.9 PyTorch 2.5.1 Apple silicon
Python 3.11 PyTorch 2.7.0 Apple silicon
Python 3.9 PyTorch 2.2.2 CPU

Windows

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

Linux

conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
bash install.sh --device <CU126|CU128|ROCM|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]

macOS

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

以下のコマンドを実行してこのプロジェクトをインストールします:

conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
bash install.sh --device <MPS|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]

手動インストール

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

conda create -n GPTSoVits python=3.10
conda activate GPTSoVits

pip install -r extra-req.txt --no-deps
pip install -r requirements.txt

FFmpeg をインストールします

Conda ユーザー
conda activate GPTSoVits
conda install ffmpeg
Ubuntu/Debian ユーザー
sudo apt install ffmpeg
sudo apt install libsox-dev
Windows ユーザー

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

Visual Studio 2017 環境をインストールしてください

MacOS ユーザー
brew install ffmpeg

GPT-SoVITS の実行 (Docker 使用)

Docker イメージの選択

コードベースの更新が頻繁である一方、Docker イメージのリリースは比較的遅いため、以下を確認してください:

  • Docker Hub で最新のイメージタグを確認してください
  • 環境に合った適切なイメージタグを選択してください
  • Lite とは、Docker イメージに ASR モデルおよび UVR5 モデルが含まれていないことを意味します. UVR5 モデルは手動でダウンロードし、ASR モデルは必要に応じてプログラムが自動的にダウンロードします
  • Docker Compose 実行時に、対応するアーキテクチャ (amd64 または arm64) のイメージが自動的に取得されます
  • オプション:最新の変更を反映させるため、提供されている Dockerfile を使ってローカルでイメージをビルドすることも可能です

環境変数

  • is_half:半精度 (fp16) を使用するかどうかを制御します. GPU が対応している場合、true に設定することでメモリ使用量を削減できます

共有メモリの設定

Windows (Docker Desktop) では、デフォルトの共有メモリサイズが小さいため、予期しない動作が発生する可能性があります. Docker Compose ファイル内の shm_size を (例:16g) に増やすことをおすすめします

サービスの選択

docker-compose.yaml ファイルには次の 2 種類のサービスが定義されています:

  • GPT-SoVITS-CU126 および GPT-SoVITS-CU128:すべての機能を含むフルバージョン
  • GPT-SoVITS-CU126-Lite および GPT-SoVITS-CU128-Lite:依存関係を削減した軽量バージョン

特定のサービスを Docker Compose で実行するには、以下のコマンドを使用します:

docker compose run --service-ports <GPT-SoVITS-CU126-Lite|GPT-SoVITS-CU128-Lite|GPT-SoVITS-CU126|GPT-SoVITS-CU128>

Docker イメージのローカルビルド

自分でイメージをビルドするには、以下のコマンドを使ってください:

bash docker_build.sh --cuda <12.6|12.8> [--lite]

実行中のコンテナへアクセス (Bash Shell)

コンテナがバックグラウンドで実行されている場合、以下のコマンドでシェルにアクセスできます:

docker exec -it <GPT-SoVITS-CU126-Lite|GPT-SoVITS-CU128-Lite|GPT-SoVITS-CU126|GPT-SoVITS-CU128> bash

事前訓練済みモデル

install.shが正常に実行された場合、No.1,2,3 はスキップしてかまいません.

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

  2. G2PWModel.zip(HF)| G2PWModel.zip(ModelScope) からモデルをダウンロードし、解凍して 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.zip(HF)| G2PWModel.zip(ModelScope) (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 さん、広東語のトレーニングセットの提供と、広東語に関する知識のご指導をいただき、感謝申し上げます.

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