GPT-SoVITS-WebUI
パワフルな数発音声変換・音声合成 WebUI。
[](https://github.com/RVC-Boss/GPT-SoVITS)

[](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/colab_webui.ipynb)
[](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE)
[](https://huggingface.co/lj1995/GPT-SoVITS/tree/main)
[**English**](../../README.md) | [**中文简体**](../cn/README.md) | [**日本語**](./README.md) | [**한국어**](../ko/README.md)
---
## 機能:
1. **ゼロショット TTS:** 5 秒間のボーカルサンプルを入力すると、即座にテキストから音声に変換されます。
2. **数ショット TTS:** わずか 1 分間のトレーニングデータでモデルを微調整し、音声の類似性とリアリズムを向上。
3. **多言語サポート:** 現在、英語、日本語、中国語をサポートしています。
4. **WebUI ツール:** 統合されたツールには、音声伴奏の分離、トレーニングセットの自動セグメンテーション、中国語 ASR、テキストラベリングが含まれ、初心者がトレーニングデータセットと GPT/SoVITS モデルを作成するのを支援します。
**[デモ動画](https://www.bilibili.com/video/BV12g4y1m7Uw)をチェック!**
未見の話者数ショット微調整デモ:
https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-80c060ab47fb
## インストール
### テスト済みの環境
- 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 ユーザーの場合(win>=10 でテスト済み)、[事前にパッケージ化されたディストリビューション](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta.7z?download=true)を直接ダウンロードし、_go-webui.bat_ をダブルクリックして GPT-SoVITS-WebUI を起動することができます。
### Linux
```bash
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` または `conda install ffmpeg` を実行して、FFmpegをインストールします。
3. 上記の手順を完了した後、以下のコマンドを実行してこのプロジェクトをインストールします。
```bash
conda create -n GPTSoVits python=3.9
conda activate GPTSoVits
pip install -r requirements.txt
```
### 手動インストール
#### 依存関係をインストールします
```bash
pip install -r requirementx.txt
```
#### FFmpegをインストールします。
##### Conda ユーザー
```bash
conda install ffmpeg
```
##### Ubuntu/Debian ユーザー
```bash
sudo apt install ffmpeg
sudo apt install libsox-dev
conda install -c conda-forge 'ffmpeg<7'
```
##### Windows ユーザー
[ffmpeg.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe) と [ffprobe.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe) をダウンロードし、GPT-SoVITS のルートディレクトリに置きます。
### Docker の使用
#### docker-compose.yaml の設定
0. イメージのタグについて:コードベースの更新が速く、イメージのパッケージングとテストが遅いため、[Docker Hub](https://hub.docker.com/r/breakstring/gpt-sovits) で現在パッケージされている最新のイメージをご覧になり、ご自身の状況に応じて選択するか、またはご自身のニーズに応じて Dockerfile を使用してローカルで構築してください。
1. 環境変数:
- `is_half`:半精度/倍精度の制御。"SSL 抽出"ステップ中に`4-cnhubert/5-wav32k`ディレクトリ内の内容が正しく生成されない場合、通常これが原因です。実際の状況に応じて True または False に調整してください。
2. ボリューム設定:コンテナ内のアプリケーションのルートディレクトリは`/workspace`に設定されます。デフォルトの`docker-compose.yaml`には、アップロード/ダウンロードの内容の実例がいくつか記載されています。
3. `shm_size`:Windows の Docker Desktop のデフォルトの利用可能メモリが小さすぎるため、異常な動作を引き起こす可能性があります。状況に応じて適宜設定してください。
4. `deploy`セクションの GPU に関連する内容は、システムと実際の状況に応じて慎重に設定してください。
#### docker compose で実行する
```markdown
docker compose -f "docker-compose.yaml" up -d
```
#### docker コマンドで実行する
上記と同様に、実際の状況に基づいて対応するパラメータを変更し、次のコマンドを実行します:
```markdown
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
```
## 事前訓練済みモデル
[GPT-SoVITS Models](https://huggingface.co/lj1995/GPT-SoVITS) から事前訓練済みモデルをダウンロードし、`GPT_SoVITSpretrained_models` に置きます。
中国語 ASR(追加)については、[Damo ASR Model](https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/files)、[Damo VAD Model](https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/files)、[Damo Punc Model](https://modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files) からモデルをダウンロードし、`tools/asr/models` に置いてください。
UVR5 (Vocals/Accompaniment Separation & Reverberation Removal, additionally) の場合は、[UVR5 Weights](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights) からモデルをダウンロードして `tools/uvr5/uvr5_weights` に置きます。
## データセット形式
TTS アノテーション .list ファイル形式:
```
vocal_path|speaker_name|language|text
```
言語辞書:
- 'zh': 中国語
- 'ja': 日本語
- 'en': 英語
例:
```
D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.
```
## メインブランチ API 使用ガイド
```bash
python api.py -dr "123.wav" -dt "一二三。" -dl "all_ja"
```
### 実行パラメータ
必須パラメータ:
- `-s` - SoVITSモデルのパス。`config.py`で指定できます。
- `-g` - GPTモデルのパス。`config.py`で指定できます。
参照音声がリクエストに含まれていない場合に使用:
- `-dr` - デフォルトの参照音声パス。リクエストに参照音声が提供されていない場合に使用します。
- `-dt` - デフォルト参照音声に対応するテキスト。
- `-dl` - デフォルト参照音声の言語。選択肢には"all_zh"、"en"、"all_ja"、"zh"、"ja"が含まれます。
オプションパラメータ:
- `-d` - 推論デバイス。選択肢には"cuda"、"cpu"が含まれます。
- `-a` - バインドアドレス。デフォルトは"127.0.0.1"。
- `-p` - バインドポート。デフォルトは9880で、`config.py`で指定できます。
- `-fp` - `config.py`の設定を上書きして全精度を使用。
- `-hp` - `config.py`の設定を上書きして半精度を使用。
- `-sm` - ストリーミング返信モード。デフォルトでは無効で、選択肢には"close"、"c"、"normal"、"n"、"keepalive"、"k"が含まれます。
- `-mt` - 返信の音声エンコード形式。ストリーミングではデフォルトでogg、非ストリーミングではデフォルトでwav、選択肢には"wav"、"ogg"、"aac"が含まれます。
- `-cp` - テキスト分割記号設定。デフォルトでは空で、",。?!"の文字列として入力します。
- `-hb` - cnhubertのパス。
- `-b` - bertのパス。
### 推論
#### エンドポイント: `/`
指定された実行パラメータや参照音声、区切り記号を使用して推論を行います。GETまたはPOSTメソッドを使用できます:
GET:
`
http://127.0.0.1:9880?text=先帝が創業の途中で急逝し、今や世界は三分され、益州は疲弊しています。これは真に危機的な存亡の秋です。&text_language=all_ja
`
POST:
```json
{
"text": "先帝が創業の途中で急逝し、今や世界は三分され、益州は疲弊しています。これは真に危機的な存亡の秋です。",
"text_language": "all_ja"
}
```
実行パラメータで指定された参照音声を使用し、分割記号を設定して推論を行います。GETまたはPOSTメソッドを使用できます:
GET:
`
http://127.0.0.1:9880?text=先帝が創業の途中で急逝し、今や世界は三分され、益州は疲弊しています。これは真に危機的な存亡の秋です。&text_language=all_ja&cut_punc=,。
`
POST:
```json
{
"text":"先帝が創業の途中で急逝し、今や世界は三分され、益州は疲弊しています。これは真に危機的な存亡の秋です。",
"text_language": "all_ja",
"cut_punc": ",。"
}
```
この推論に使用する参照音声を手動で指定します。GETまたはPOSTメソッドを使用できます:
GET:
`
http://127.0.0.1:9880?refer_wav_path=123.wav&prompt_text=一二三。&prompt_language=all_ja&text=先帝が創業の途中で急逝し、今や世界は三分され、益州は疲弊しています。これは真に危機的な存亡の秋です。&text_language=all_ja&cut_punc=,。
`
POST:
```json
{
"refer_wav_path": "まつお ばしょう.wav",
"prompt_text": "月日は百代の過客にして、行きかふ年も又旅人也。",
"prompt_language": "all_ja",
"text": "先帝が創業の途中で急逝し、今や世界は三分され、益州は疲弊しています。これは真に危機的な存亡の秋です。",
"text_language": "all_ja",
"cut_punc": ",。"
}
```
成功時、直接wav音声ストリームを返し、HTTPステータスコードは 200 です。失敗時、エラーメッセージを含むJSONを返し、HTTPステータスコードは 400 です。
### デフォルト参照音声の変更
#### エンドポイント: `/change_refer`
使用するデフォルトの参照音声を手動で変更します。GETまたはPOSTメソッドを使用できます:
GET:
`
http://127.0.0.1:9880/change_refer?refer_wav_path=まつお ばしょう.wav&prompt_text=月日は百代の過客にして、行きかふ年も又旅人也。&prompt_language=all_ja`
`
POST:
```json
{
"refer_wav_path": "まつお ばしょう.wav",
"prompt_text": "月日は百代の過客にして、行きかふ年も又旅人也。",
"prompt_language": "all_ja"
}
```
成功時、JSONを返し、HTTPステータスコードは 200 です。失敗時、JSONを返し、HTTPステータスコードは 400 です。
### コマンド制御
#### エンドポイント: `/control`
コマンドには、「restart」(再起動)と「exit」(終了)が含まれます。GETまたはPOSTメソッドを使用できます:
GET:
`
http://127.0.0.1:9880/control?command=restart`
`
POST:
```json
{
"command": "restart"
}
```
## Todo リスト
- [ ] **優先度 高:**
- [x] 日本語と英語でのローカライズ。
- [ ] ユーザーガイド。
- [x] 日本語データセットと英語データセットのファインチューニングトレーニング。
- [ ] **機能:**
- [ ] ゼロショット音声変換(5 秒)/数ショット音声変換(1 分)。
- [ ] TTS スピーキングスピードコントロール。
- [ ] TTS の感情コントロールの強化。
- [ ] SoVITS トークン入力を語彙の確率分布に変更する実験。
- [ ] 英語と日本語のテキストフロントエンドを改善。
- [ ] 小型と大型の TTS モデルを開発する。
- [x] Colab のスクリプト。
- [ ] トレーニングデータセットを拡張する(2k→10k)。
- [ ] より良い sovits ベースモデル(音質向上)
- [ ] モデルミックス
## (オプション) 必要に応じて、コマンドライン操作モードが提供されます。
コマンド ラインを使用して UVR5 の WebUI を開きます
```
python tools/uvr5/webui.py "