mirror of
https://github.com/RVC-Boss/GPT-SoVITS.git
synced 2025-04-06 03:57:44 +08:00
Merge branch 'main' into main
This commit is contained in:
commit
39dbe99645
6
.gitignore
vendored
6
.gitignore
vendored
@ -1,2 +1,6 @@
|
||||
.DS_Store
|
||||
__pycache__
|
||||
*.pyc
|
||||
env
|
||||
runtime
|
||||
runtime
|
||||
.idea
|
||||
|
@ -175,6 +175,9 @@ def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language)
|
||||
dtype=np.float16 if is_half == True else np.float32,
|
||||
)
|
||||
for text in texts:
|
||||
# 解决输入目标文本的空行导致报错的问题
|
||||
if (len(text.strip()) == 0):
|
||||
continue
|
||||
phones2, word2ph2, norm_text2 = clean_text(text, text_language)
|
||||
phones2 = cleaned_text_to_sequence(phones2)
|
||||
if prompt_language == "zh":
|
||||
|
2
GPT_SoVITS/pretrained_models/.gitignore
vendored
Normal file
2
GPT_SoVITS/pretrained_models/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
20
README.md
20
README.md
@ -11,7 +11,8 @@ A Powerful Few-shot Voice Conversion and Text-to-Speech WebUI.<br><br>
|
||||
[](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE)
|
||||
[](https://huggingface.co/lj1995/GPT-SoVITS/tree/main)
|
||||
|
||||
[**English**](./README.md) | [**中文简体**](./README_ZH.md)
|
||||
|
||||
[**English**](./README.md) | [**中文简体**](./docs/cn/README.md) | [**日本語**](./docs/ja/README.md)
|
||||
|
||||
</div>
|
||||
|
||||
@ -36,9 +37,12 @@ https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-
|
||||
|
||||
If you are a Windows user (tested with win>=10) you can install directly via the prezip. Just download the [prezip](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta.7z?download=true), unzip it and double-click go-webui.bat to start GPT-SoVITS-WebUI.
|
||||
|
||||
### Python and PyTorch Version
|
||||
### Tested Environments
|
||||
|
||||
Tested with Python 3.9, PyTorch 2.0.1, and CUDA 11.
|
||||
- Python 3.9, PyTorch 2.0.1, CUDA 11
|
||||
- Python 3.10.13, PyTorch 2.1.2, CUDA 12.3
|
||||
|
||||
_Note: numba==0.56.4 require py<3.11_
|
||||
|
||||
### Quick Install with Conda
|
||||
|
||||
@ -48,6 +52,12 @@ conda activate GPTSoVits
|
||||
bash install.sh
|
||||
```
|
||||
### Install Manually
|
||||
#### Make sure you have the distutils for python3.9 installed
|
||||
|
||||
```bash
|
||||
sudo apt-get install python3.9-distutils
|
||||
```
|
||||
|
||||
#### Pip Packages
|
||||
|
||||
```bash
|
||||
@ -90,7 +100,7 @@ Download and place [ffmpeg.exe](https://huggingface.co/lj1995/VoiceConversionWeb
|
||||
### Pretrained Models
|
||||
|
||||
|
||||
Download pretrained models from [GPT-SoVITS Models](https://huggingface.co/lj1995/GPT-SoVITS) and place them in `GPT_SoVITS\pretrained_models`.
|
||||
Download pretrained models from [GPT-SoVITS Models](https://huggingface.co/lj1995/GPT-SoVITS) and place them in `GPT_SoVITS/pretrained_models`.
|
||||
|
||||
For Chinese ASR (additionally), download models from [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), and [Damo Punc Model](https://modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files) and place them in `tools/damo_asr/models`.
|
||||
|
||||
@ -131,7 +141,7 @@ D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.
|
||||
- [ ] Improve English and Japanese text frontend.
|
||||
- [ ] Develop tiny and larger-sized TTS models.
|
||||
- [ ] Colab scripts.
|
||||
- [ ] Expand training dataset (2k -> 10k).
|
||||
- [ ] Try expand training dataset (2k hours -> 10k hours).
|
||||
- [ ] better sovits base model (enhanced audio quality)
|
||||
- [ ] model mix
|
||||
|
||||
|
63
api.py
63
api.py
@ -19,40 +19,37 @@ from text import cleaned_text_to_sequence
|
||||
from text.cleaner import clean_text
|
||||
from module.mel_processing import spectrogram_torch
|
||||
from my_utils import load_audio
|
||||
from config import python_exec, infer_device, is_half, api_port
|
||||
import config as global_config
|
||||
|
||||
DEFAULT_PORT = api_port
|
||||
DEFAULT_CNHUBERT = "GPT_SoVITS/pretrained_models/chinese-hubert-base"
|
||||
DEFAULT_BERT = "GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large"
|
||||
DEFAULT_HALF = is_half
|
||||
|
||||
DEFAULT_GPT = "GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt"
|
||||
DEFAULT_SOVITS = "GPT_SoVITS/pretrained_models/s2G488k.pth"
|
||||
g_config = global_config.Config()
|
||||
|
||||
# AVAILABLE_COMPUTE = "cuda" if torch.cuda.is_available() else "cpu"
|
||||
|
||||
parser = argparse.ArgumentParser(description="GPT-SoVITS api")
|
||||
|
||||
parser.add_argument("-g", "--gpt_path", type=str, default="", help="GPT模型路径")
|
||||
parser.add_argument("-s", "--sovits_path", type=str, default="", help="SoVITS模型路径")
|
||||
parser.add_argument("-s", "--sovits_path", type=str, default=g_config.sovits_path, help="SoVITS模型路径")
|
||||
parser.add_argument("-g", "--gpt_path", type=str, default=g_config.gpt_path, help="GPT模型路径")
|
||||
|
||||
parser.add_argument("-dr", "--default_refer_path", type=str, default="",
|
||||
help="默认参考音频路径, 请求缺少参考音频时调用")
|
||||
parser.add_argument("-dt", "--default_refer_text", type=str, default="", help="默认参考音频文本")
|
||||
parser.add_argument("-dl", "--default_refer_language", type=str, default="", help="默认参考音频语种")
|
||||
|
||||
parser.add_argument("-d", "--device", type=str, default=infer_device, help="cuda / cpu")
|
||||
parser.add_argument("-p", "--port", type=int, default=DEFAULT_PORT, help="default: 9880")
|
||||
parser.add_argument("-d", "--device", type=str, default=g_config.infer_device, help="cuda / cpu")
|
||||
parser.add_argument("-p", "--port", type=int, default=g_config.api_port, help="default: 9880")
|
||||
parser.add_argument("-a", "--bind_addr", type=str, default="127.0.0.1", help="default: 127.0.0.1")
|
||||
parser.add_argument("-hp", "--half_precision", action='store_true', default=False)
|
||||
parser.add_argument("-fp", "--full_precision", action="store_true", default=False, help="覆盖config.is_half为False, 使用全精度")
|
||||
parser.add_argument("-hp", "--half_precision", action="store_true", default=False, help="覆盖config.is_half为True, 使用半精度")
|
||||
# bool值的用法为 `python ./api.py -fp ...`
|
||||
# 此时 full_precision==True, half_precision==False
|
||||
|
||||
parser.add_argument("-hb", "--hubert_path", type=str, default=DEFAULT_CNHUBERT)
|
||||
parser.add_argument("-b", "--bert_path", type=str, default=DEFAULT_BERT)
|
||||
parser.add_argument("-hb", "--hubert_path", type=str, default=g_config.cnhubert_path, help="覆盖config.cnhubert_path")
|
||||
parser.add_argument("-b", "--bert_path", type=str, default=g_config.bert_path, help="覆盖config.bert_path")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
gpt_path = args.gpt_path
|
||||
sovits_path = args.sovits_path
|
||||
gpt_path = args.gpt_path
|
||||
|
||||
default_refer_path = args.default_refer_path
|
||||
default_refer_text = args.default_refer_text
|
||||
@ -62,18 +59,15 @@ has_preset = False
|
||||
device = args.device
|
||||
port = args.port
|
||||
host = args.bind_addr
|
||||
is_half = args.half_precision
|
||||
|
||||
cnhubert_base_path = args.hubert_path
|
||||
bert_path = args.bert_path
|
||||
|
||||
if gpt_path == "":
|
||||
gpt_path = DEFAULT_GPT
|
||||
print("[WARN] 未指定GPT模型路径")
|
||||
if sovits_path == "":
|
||||
sovits_path = DEFAULT_SOVITS
|
||||
print("[WARN] 未指定SoVITS模型路径")
|
||||
sovits_path = g_config.pretrained_sovits_path
|
||||
print(f"[WARN] 未指定SoVITS模型路径, fallback后当前值: {sovits_path}")
|
||||
if gpt_path == "":
|
||||
gpt_path = g_config.pretrained_gpt_path
|
||||
print(f"[WARN] 未指定GPT模型路径, fallback后当前值: {gpt_path}")
|
||||
|
||||
# 指定默认参考音频, 调用方 未提供/未给全 参考音频参数时使用
|
||||
if default_refer_path == "" or default_refer_text == "" or default_refer_language == "":
|
||||
default_refer_path, default_refer_text, default_refer_language = "", "", ""
|
||||
print("[INFO] 未指定默认参考音频")
|
||||
@ -84,17 +78,28 @@ else:
|
||||
print(f"[INFO] 默认参考音频语种: {default_refer_language}")
|
||||
has_preset = True
|
||||
|
||||
is_half = g_config.is_half
|
||||
if args.full_precision:
|
||||
is_half = False
|
||||
if args.half_precision:
|
||||
is_half = True
|
||||
if args.full_precision and args.half_precision:
|
||||
is_half = g_config.is_half # 炒饭fallback
|
||||
|
||||
print(f"[INFO] 半精: {is_half}")
|
||||
|
||||
cnhubert_base_path = args.hubert_path
|
||||
bert_path = args.bert_path
|
||||
|
||||
cnhubert.cnhubert_base_path = cnhubert_base_path
|
||||
tokenizer = AutoTokenizer.from_pretrained(bert_path)
|
||||
bert_model = AutoModelForMaskedLM.from_pretrained(bert_path)
|
||||
# bert_model = AutoModelForSequenceClassification.from_pretrained(bert_path, config=bert_path+"/config.json")
|
||||
if (is_half == True):
|
||||
if is_half:
|
||||
bert_model = bert_model.half().to(device)
|
||||
else:
|
||||
bert_model = bert_model.to(device)
|
||||
|
||||
|
||||
# bert_model=bert_model.to(device)
|
||||
def get_bert_feature(text, word2ph):
|
||||
with torch.no_grad():
|
||||
inputs = tokenizer(text, return_tensors="pt")
|
||||
@ -256,7 +261,7 @@ def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language)
|
||||
|
||||
def handle(command, refer_wav_path, prompt_text, prompt_language, text, text_language):
|
||||
if command == "/restart":
|
||||
os.execl(python_exec, python_exec, *sys.argv)
|
||||
os.execl(g_config.python_exec, g_config.python_exec, *sys.argv)
|
||||
elif command == "/exit":
|
||||
os.kill(os.getpid(), signal.SIGTERM)
|
||||
exit(0)
|
||||
|
33
config.py
33
config.py
@ -1,6 +1,16 @@
|
||||
import sys
|
||||
|
||||
|
||||
# 推理用的指定模型
|
||||
sovits_path = ""
|
||||
gpt_path = ""
|
||||
is_half = True
|
||||
|
||||
cnhubert_path = "GPT_SoVITS/pretrained_models/chinese-hubert-base"
|
||||
bert_path = "GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large"
|
||||
pretrained_sovits_path = "GPT_SoVITS/pretrained_models/s2G488k.pth"
|
||||
pretrained_gpt_path = "GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt"
|
||||
|
||||
exp_root = "logs"
|
||||
python_exec = sys.executable or "python"
|
||||
infer_device = "cuda"
|
||||
@ -11,3 +21,26 @@ webui_port_infer_tts = 9872
|
||||
webui_port_subfix = 9871
|
||||
|
||||
api_port = 9880
|
||||
|
||||
|
||||
class Config:
|
||||
def __init__(self):
|
||||
self.sovits_path = sovits_path
|
||||
self.gpt_path = gpt_path
|
||||
self.is_half = is_half
|
||||
|
||||
self.cnhubert_path = cnhubert_path
|
||||
self.bert_path = bert_path
|
||||
self.pretrained_sovits_path = pretrained_sovits_path
|
||||
self.pretrained_gpt_path = pretrained_gpt_path
|
||||
|
||||
self.exp_root = exp_root
|
||||
self.python_exec = python_exec
|
||||
self.infer_device = infer_device
|
||||
|
||||
self.webui_port_main = webui_port_main
|
||||
self.webui_port_uvr5 = webui_port_uvr5
|
||||
self.webui_port_infer_tts = webui_port_infer_tts
|
||||
self.webui_port_subfix = webui_port_subfix
|
||||
|
||||
self.api_port = api_port
|
||||
|
166
docs/ja/README.md
Normal file
166
docs/ja/README.md
Normal file
@ -0,0 +1,166 @@
|
||||
<div align="center">
|
||||
|
||||
<h1>GPT-SoVITS-WebUI</h1>
|
||||
パワフルな数発音声変換・音声合成 WebUI。<br><br>
|
||||
|
||||
[](https://github.com/RVC-Boss/GPT-SoVITS)
|
||||
|
||||
<img src="https://counter.seku.su/cmoe?name=gptsovits&theme=r34" /><br>
|
||||
|
||||
[](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)
|
||||
|
||||
</div>
|
||||
|
||||
------
|
||||
|
||||
|
||||
|
||||
> [デモ動画](https://www.bilibili.com/video/BV12g4y1m7Uw)をチェック!
|
||||
|
||||
https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-80c060ab47fb
|
||||
|
||||
## 機能:
|
||||
1. **セロショット TTS:** 5秒間のボーカルサンプルを入力すると、即座にテキストから音声に変換されます。
|
||||
|
||||
2. **数ショット TTS:** わずか1分間のトレーニングデータでモデルを微調整し、音声の類似性とリアリズムを向上。
|
||||
|
||||
3. **多言語サポート:** 現在、英語、日本語、中国語をサポートしています。
|
||||
|
||||
4. **WebUI ツール:** 統合されたツールには、音声伴奏の分離、トレーニングセットの自動セグメンテーション、中国語 ASR、テキストラベリングが含まれ、初心者がトレーニングデータセットと GPT/SoVITS モデルを作成するのを支援します。
|
||||
|
||||
## 環境の準備
|
||||
|
||||
Windows ユーザーであれば(win>=10 にてテスト済み)、prezip 経由で直接インストールできます。[prezip](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta.7z?download=true) をダウンロードして解凍し、go-webui.bat をダブルクリックするだけで GPT-SoVITS-WebUI が起動します。
|
||||
|
||||
### Python と PyTorch のバージョン
|
||||
|
||||
Python 3.9、PyTorch 2.0.1、CUDA 11でテスト済。
|
||||
|
||||
### Conda によるクイックインストール
|
||||
|
||||
```bash
|
||||
conda create -n GPTSoVits python=3.9
|
||||
conda activate GPTSoVits
|
||||
bash install.sh
|
||||
```
|
||||
### 手動インストール
|
||||
#### python3.9 用の distutils がインストールされていることを確認する
|
||||
|
||||
```bash
|
||||
sudo apt-get install python3.9-distutils
|
||||
```
|
||||
|
||||
#### Pip パッケージ
|
||||
|
||||
```bash
|
||||
pip install torch numpy scipy tensorboard librosa==0.9.2 numba==0.56.4 pytorch-lightning gradio==3.14.0 ffmpeg-python onnxruntime tqdm cn2an pypinyin pyopenjtalk g2p_en chardet
|
||||
```
|
||||
|
||||
#### 追加要件
|
||||
|
||||
中国語の ASR(FunASR がサポート)が必要な場合は、以下をインストールしてください:
|
||||
|
||||
```bash
|
||||
pip install modelscope torchaudio sentencepiece funasr
|
||||
```
|
||||
|
||||
#### 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'
|
||||
```
|
||||
|
||||
##### MacOS ユーザー
|
||||
|
||||
```bash
|
||||
brew install ffmpeg
|
||||
```
|
||||
|
||||
##### 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 のルートディレクトリに置きます。
|
||||
|
||||
### 事前訓練済みモデル
|
||||
|
||||
|
||||
[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/damo_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.
|
||||
```
|
||||
## Todo リスト
|
||||
|
||||
- [ ] **優先度 高:**
|
||||
- [ ] 日本語と英語でのローカライズ。
|
||||
- [ ] ユーザーガイド。
|
||||
- [ ] 日本語データセットと英語データセットのファインチューニングトレーニング。
|
||||
|
||||
- [ ] **機能:**
|
||||
- [ ] ゼロショット音声変換(5秒)/数ショット音声変換(1分)。
|
||||
- [ ] TTS スピーキングスピードコントロール。
|
||||
- [ ] TTS の感情コントロールの強化。
|
||||
- [ ] SoVITS トークン入力を語彙の確率分布に変更する実験。
|
||||
- [ ] 英語と日本語のテキストフロントエンドを改善。
|
||||
- [ ] 小型と大型の TTS モデルを開発する。
|
||||
- [ ] Colab のスクリプト。
|
||||
- [ ] トレーニングデータセットを拡張する(2k→10k)。
|
||||
- [ ] より良い sovits ベースモデル(音質向上)
|
||||
- [ ] モデルミックス
|
||||
|
||||
## クレジット
|
||||
|
||||
以下のプロジェクトとコントリビューターに感謝します:
|
||||
|
||||
- [ar-vits](https://github.com/innnky/ar-vits)
|
||||
- [SoundStorm](https://github.com/yangdongchao/SoundStorm/tree/master/soundstorm/s1/AR)
|
||||
- [vits](https://github.com/jaywalnut310/vits)
|
||||
- [TransferTTS](https://github.com/hcy71o/TransferTTS/blob/master/models.py#L556)
|
||||
- [Chinese Speech Pretrain](https://github.com/TencentGameMate/chinese_speech_pretrain)
|
||||
- [contentvec](https://github.com/auspicious3000/contentvec/)
|
||||
- [hifi-gan](https://github.com/jik876/hifi-gan)
|
||||
- [Chinese-Roberta-WWM-Ext-Large](https://huggingface.co/hfl/chinese-roberta-wwm-ext-large)
|
||||
- [fish-speech](https://github.com/fishaudio/fish-speech/blob/main/tools/llama/generate.py#L41)
|
||||
- [ultimatevocalremovergui](https://github.com/Anjok07/ultimatevocalremovergui)
|
||||
- [audio-slicer](https://github.com/openvpi/audio-slicer)
|
||||
- [SubFix](https://github.com/cronrpc/SubFix)
|
||||
- [FFmpeg](https://github.com/FFmpeg/FFmpeg)
|
||||
- [gradio](https://github.com/gradio-app/gradio)
|
||||
|
||||
## すべてのコントリビューターに感謝します
|
||||
<a href="https://github.com/RVC-Boss/GPT-SoVITS/graphs/contributors" target="_blank">
|
||||
<img src="https://contrib.rocks/image?repo=RVC-Boss/GPT-SoVITS" />
|
||||
</a>
|
@ -1,135 +1,277 @@
|
||||
{
|
||||
">=3则使用对harvest音高识别的结果使用中值滤波,数值为滤波半径,使用可以削弱哑音": "If >=3: apply median filtering to the harvested pitch results. The value represents the filter radius and can reduce breathiness.",
|
||||
"A模型权重": "Weight (w) for Model A:",
|
||||
"A模型路径": "Path to Model A:",
|
||||
"B模型路径": "Path to Model B:",
|
||||
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src",
|
||||
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0 curve file (optional). One pitch per line. Replaces the default F0 and pitch modulation:",
|
||||
"Index Rate": "Index Rate",
|
||||
"Onnx导出": "Export Onnx",
|
||||
"Onnx输出路径": "Onnx Export Path:",
|
||||
"RVC模型路径": "RVC Model Path:",
|
||||
"ckpt处理": "ckpt Processing",
|
||||
"harvest进程数": "Number of CPU processes used for harvest pitch algorithm",
|
||||
"index文件路径不可包含中文": "index文件路径不可包含中文",
|
||||
"pth文件路径不可包含中文": "pth文件路径不可包含中文",
|
||||
"rmvpe卡号配置:以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Enter the GPU index(es) separated by '-', e.g., 0-0-1 to use 2 processes in GPU0 and 1 process in GPU1",
|
||||
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Step 1: Fill in the experimental configuration. Experimental data is stored in the 'logs' folder, with each experiment having a separate folder. Manually enter the experiment name path, which contains the experimental configuration, logs, and trained model files.",
|
||||
"step1:正在处理数据": "Step 1: Processing data",
|
||||
"step2:正在提取音高&正在提取特征": "step2:Pitch extraction & feature extraction",
|
||||
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Step 2a: Automatically traverse all files in the training folder that can be decoded into audio and perform slice normalization. Generates 2 wav folders in the experiment directory. Currently, only single-singer/speaker training is supported.",
|
||||
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Step 2b: Use CPU to extract pitch (if the model has pitch), use GPU to extract features (select GPU index):",
|
||||
"step3: 填写训练设置, 开始训练模型和索引": "Step 3: Fill in the training settings and start training the model and index",
|
||||
"step3a:正在训练模型": "Step 3a: Model training started",
|
||||
"一键训练": "One-click training",
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "Multiple audio files can also be imported. If a folder path exists, this input is ignored.",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声:不带和声的音频选这个,对主人声保留比HP5更好。内置HP2和HP3两个模型,HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点; <br>2、仅保留主人声:带和声的音频选这个,对主人声可能有削弱。内置HP5一个模型; <br> 3、去混响、去延迟模型(by FoxJoy):<br> (1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br> (234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底,DeReverb额外去除混响,可去除单声道混响,但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍;<br>2、MDX-Net-Dereverb模型挺慢的;<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "Batch processing for vocal accompaniment separation using the UVR5 model.<br>Example of a valid folder path format: D:\\path\\to\\input\\folder (copy it from the file manager address bar).<br>The model is divided into three categories:<br>1. Preserve vocals: Choose this option for audio without harmonies. It preserves vocals better than HP5. It includes two built-in models: HP2 and HP3. HP3 may slightly leak accompaniment but preserves vocals slightly better than HP2.<br>2. Preserve main vocals only: Choose this option for audio with harmonies. It may weaken the main vocals. It includes one built-in model: HP5.<br>3. De-reverb and de-delay models (by FoxJoy):<br> (1) MDX-Net: The best choice for stereo reverb removal but cannot remove mono reverb;<br> (234) DeEcho: Removes delay effects. Aggressive mode removes more thoroughly than Normal mode. DeReverb additionally removes reverb and can remove mono reverb, but not very effectively for heavily reverberated high-frequency content.<br>De-reverb/de-delay notes:<br>1. The processing time for the DeEcho-DeReverb model is approximately twice as long as the other two DeEcho models.<br>2. The MDX-Net-Dereverb model is quite slow.<br>3. The recommended cleanest configuration is to apply MDX-Net first and then DeEcho-Aggressive.",
|
||||
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Enter the GPU index(es) separated by '-', e.g., 0-1-2 to use GPU 0, 1, and 2:",
|
||||
"伴奏人声分离&去混响&去回声": "Vocals/Accompaniment Separation & Reverberation Removal",
|
||||
"使用模型采样率": "使用模型采样率",
|
||||
"使用设备采样率": "使用设备采样率",
|
||||
"保存名": "Save name:",
|
||||
"保存的文件名, 默认空为和源文件同名": "Save file name (default: same as the source file):",
|
||||
"保存的模型名不带后缀": "Saved model name (without extension):",
|
||||
"保存频率save_every_epoch": "Save frequency (save_every_epoch):",
|
||||
"保护清辅音和呼吸声,防止电音撕裂等artifact,拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Protect voiceless consonants and breath sounds to prevent artifacts such as tearing in electronic music. Set to 0.5 to disable. Decrease the value to increase protection, but it may reduce indexing accuracy:",
|
||||
"修改": "Modify",
|
||||
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modify model information (only supported for small model files extracted from the 'weights' folder)",
|
||||
"停止音频转换": "Stop audio conversion",
|
||||
"全流程结束!": "All processes have been completed!",
|
||||
"刷新音色列表和索引路径": "Refresh voice list and index path",
|
||||
"加载模型": "Load model",
|
||||
"加载预训练底模D路径": "Load pre-trained base model D path:",
|
||||
"加载预训练底模G路径": "Load pre-trained base model G path:",
|
||||
"单次推理": "Single Inference",
|
||||
"卸载音色省显存": "Unload voice to save GPU memory:",
|
||||
"变调(整数, 半音数量, 升八度12降八度-12)": "Transpose (integer, number of semitones, raise by an octave: 12, lower by an octave: -12):",
|
||||
"后处理重采样至最终采样率,0为不进行重采样": "Resample the output audio in post-processing to the final sample rate. Set to 0 for no resampling:",
|
||||
"否": "No",
|
||||
"启用相位声码器": "启用相位声码器",
|
||||
"响应阈值": "Response threshold",
|
||||
"响度因子": "loudness factor",
|
||||
"处理数据": "Process data",
|
||||
"导出Onnx模型": "Export Onnx Model",
|
||||
"导出文件格式": "Export file format",
|
||||
"常见问题解答": "FAQ (Frequently Asked Questions)",
|
||||
"常规设置": "General settings",
|
||||
"开始音频转换": "Start audio conversion",
|
||||
"很遗憾您这没有能用的显卡来支持您训练": "Unfortunately, there is no compatible GPU available to support your training.",
|
||||
"性能设置": "Performance settings",
|
||||
"总训练轮数total_epoch": "Total training epochs (total_epoch):",
|
||||
"批量推理": "Batch Inference",
|
||||
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Batch conversion. Enter the folder containing the audio files to be converted or upload multiple audio files. The converted audio will be output in the specified folder (default: 'opt').",
|
||||
"指定输出主人声文件夹": "Specify the output folder for vocals:",
|
||||
"指定输出文件夹": "Specify output folder:",
|
||||
"指定输出非主人声文件夹": "Specify the output folder for accompaniment:",
|
||||
"推理时间(ms):": "Inference time (ms):",
|
||||
"推理音色": "Inferencing voice:",
|
||||
"提取": "Extract",
|
||||
"提取音高和处理数据使用的CPU进程数": "Number of CPU processes used for pitch extraction and data processing:",
|
||||
"是": "Yes",
|
||||
"是否仅保存最新的ckpt文件以节省硬盘空间": "Save only the latest '.ckpt' file to save disk space:",
|
||||
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Save a small final model to the 'weights' folder at each save point:",
|
||||
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Cache all training sets to GPU memory. Caching small datasets (less than 10 minutes) can speed up training, but caching large datasets will consume a lot of GPU memory and may not provide much speed improvement:",
|
||||
"显卡信息": "GPU Information",
|
||||
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "This software is open source under the MIT license. The author does not have any control over the software. Users who use the software and distribute the sounds exported by the software are solely responsible. <br>If you do not agree with this clause, you cannot use or reference any codes and files within the software package. See the root directory <b>Agreement-LICENSE.txt</b> for details.",
|
||||
"查看": "View",
|
||||
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "View model information (only supported for small model files extracted from the 'weights' folder)",
|
||||
"检索特征占比": "Search feature ratio (controls accent strength, too high has artifacting):",
|
||||
"模型": "Model",
|
||||
"模型推理": "Model Inference",
|
||||
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Model extraction (enter the path of the large file model under the 'logs' folder). This is useful if you want to stop training halfway and manually extract and save a small model file, or if you want to test an intermediate model:",
|
||||
"模型是否带音高指导": "Whether the model has pitch guidance:",
|
||||
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Whether the model has pitch guidance (required for singing, optional for speech):",
|
||||
"模型是否带音高指导,1是0否": "Whether the model has pitch guidance (1: yes, 0: no):",
|
||||
"模型版本型号": "Model architecture version:",
|
||||
"模型融合, 可用于测试音色融合": "Model fusion, can be used to test timbre fusion",
|
||||
"模型路径": "Path to Model:",
|
||||
"每张显卡的batch_size": "Batch size per GPU:",
|
||||
"淡入淡出长度": "Fade length",
|
||||
"版本": "Version",
|
||||
"特征提取": "Feature extraction",
|
||||
"特征检索库文件路径,为空则使用下拉的选择结果": "Path to the feature index file. Leave blank to use the selected result from the dropdown:",
|
||||
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Recommended +12 key for male to female conversion, and -12 key for female to male conversion. If the sound range goes too far and the voice is distorted, you can also adjust it to the appropriate range by yourself.",
|
||||
"目标采样率": "Target sample rate:",
|
||||
"算法延迟(ms):": "Algorithmic delays(ms):",
|
||||
"自动检测index路径,下拉式选择(dropdown)": "Auto-detect index path and select from the dropdown:",
|
||||
"融合": "Fusion",
|
||||
"要改的模型信息": "Model information to be modified:",
|
||||
"要置入的模型信息": "Model information to be placed:",
|
||||
"训练": "Train",
|
||||
"训练模型": "Train model",
|
||||
"训练特征索引": "Train feature index",
|
||||
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Training complete. You can check the training logs in the console or the 'train.log' file under the experiment folder.",
|
||||
"请指定说话人id": "Please specify the speaker/singer ID:",
|
||||
"请选择index文件": "Please choose the .index file",
|
||||
"请选择pth文件": "Please choose the .pth file",
|
||||
"请选择说话人id": "Select Speaker/Singer ID:",
|
||||
"转换": "Convert",
|
||||
"输入实验名": "Enter the experiment name:",
|
||||
"输入待处理音频文件夹路径": "Enter the path of the audio folder to be processed:",
|
||||
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Enter the path of the audio folder to be processed (copy it from the address bar of the file manager):",
|
||||
"输入待处理音频文件路径(默认是正确格式示例)": "Enter the path of the audio file to be processed (default is the correct format example):",
|
||||
"输入源音量包络替换输出音量包络融合比例,越靠近1越使用输出包络": "Adjust the volume envelope scaling. Closer to 0, the more it mimicks the volume of the original vocals. Can help mask noise and make volume sound more natural when set relatively low. Closer to 1 will be more of a consistently loud volume:",
|
||||
"输入监听": "Input voice monitor",
|
||||
"输入训练文件夹路径": "Enter the path of the training folder:",
|
||||
"输入设备": "Input device",
|
||||
"输入降噪": "Input noise reduction",
|
||||
"输出信息": "Output information",
|
||||
"输出变声": "Output converted voice",
|
||||
"输出设备": "Output device",
|
||||
"输出降噪": "Output noise reduction",
|
||||
"输出音频(右下角三个点,点了可以下载)": "Export audio (click on the three dots in the lower right corner to download)",
|
||||
"选择.index文件": "Select the .index file",
|
||||
"选择.pth文件": "Select the .pth file",
|
||||
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
|
||||
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "Select the pitch extraction algorithm ('pm': faster extraction but lower-quality speech; 'harvest': better bass but extremely slow; 'crepe': better quality but GPU intensive), 'rmvpe': best quality, and little GPU requirement",
|
||||
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "Select the pitch extraction algorithm: when extracting singing, you can use 'pm' to speed up. For high-quality speech with fast performance, but worse CPU usage, you can use 'dio'. 'harvest' results in better quality but is slower. 'rmvpe' has the best results and consumes less CPU/GPU",
|
||||
"采样率:": "采样率:",
|
||||
"采样长度": "Sample length",
|
||||
"重载设备列表": "Reload device list",
|
||||
"音调设置": "Pitch settings",
|
||||
"音频设备(请使用同种类驱动)": "Audio device (please use the same type of driver)",
|
||||
"音高算法": "pitch detection algorithm",
|
||||
"额外推理时长": "Extra inference time"
|
||||
}
|
||||
'很遗憾您这没有能用的显卡来支持您训练': 'Unfortunately, there is no compatible GPU available to support your training.',
|
||||
'UVR5已开启': 'UVR5 opened ',
|
||||
'UVR5已关闭': 'UVR5 closed',
|
||||
'本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.': 'This software is open source under the MIT license. The author does not have any control over the software. Users who use the software and distribute the sounds exported by the software are solely responsible. <br>If you do not agree with this clause, you cannot use or reference any codes and files within the software package. See the root directory <b>Agreement-LICENSE.txt</b> for details.',
|
||||
'0-前置数据集获取工具': '0-Fech dataset',
|
||||
'0a-UVR5人声伴奏分离&去混响去延迟工具': '0a-UVR5 webui (for vocal separation, deecho, dereverb and denoise)',
|
||||
'是否开启UVR5-WebUI': 'Open UVR5-WebUI',
|
||||
'UVR5进程输出信息': 'UVR5 process output log',
|
||||
'0b-语音切分工具': '0b-Audio slicer',
|
||||
'音频自动切分输入路径,可文件可文件夹': 'Audio slicer input (file or folder)',
|
||||
'切分后的子音频的输出根目录': 'Audio slicer output folder',
|
||||
'threshold:音量小于这个值视作静音的备选切割点': 'Noise gate threshold (loudness below this value will be treated as noise',
|
||||
'min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值': 'Minimum length',
|
||||
'min_interval:最短切割间隔': 'Minumum interval for audio cutting',
|
||||
'hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)': 'hop_size: FO hop size, the smaller the value, the higher the accuracy)',
|
||||
'max_sil_kept:切完后静音最多留多长': 'Maximum length for silence to be kept',
|
||||
'开启语音切割': 'Start audio slicer',
|
||||
'终止语音切割': 'Stop audio cutting',
|
||||
'max:归一化后最大值多少': 'Loudness multiplier after normalized',
|
||||
'alpha_mix:混多少比例归一化后音频进来': 'alpha_mix: proportion of normalized audio merged into dataset',
|
||||
'切割使用的进程数': 'CPU threads used for audio slicing',
|
||||
'语音切割进程输出信息': 'Audio slicer output log',
|
||||
'0c-中文批量离线ASR工具': '0c-Chinese ASR tool',
|
||||
'开启离线批量ASR': 'Start batch ASR',
|
||||
'终止ASR进程': 'Stop ASR task',
|
||||
'批量ASR(中文only)输入文件夹路径': 'Batch ASR (Chinese only) input folder',
|
||||
'ASR进程输出信息': 'ASR output log',
|
||||
'0d-语音文本校对标注工具': '0d-Speech to text proofreading tool',
|
||||
'是否开启打标WebUI': 'Open labelling WebUI',
|
||||
'打标数据标注文件路径': 'path to proofreading text file',
|
||||
'打标工具进程输出信息': 'Proofreading tool output log',
|
||||
'1-GPT-SoVITS-TTS': '1-GPT-SOVITS-TTS',
|
||||
'*实验/模型名': '*Experiment/model name',
|
||||
'显卡信息': 'GPU Information',
|
||||
'预训练的SoVITS-G模型路径': 'Pretrained SoVITS-G model path',
|
||||
'预训练的SoVITS-D模型路径': 'Pretrained SoVITS-D model path',
|
||||
'预训练的GPT模型路径': 'Pretrained GPT model path',
|
||||
'1A-训练集格式化工具': '1A-Dataset formatting',
|
||||
'输出logs/实验名目录下应有23456开头的文件和文件夹': 'output folder (logs/{experiment name}) should have files and folders starts with 23456.',
|
||||
'*文本标注文件': '*Text labelling file',
|
||||
'*训练集音频文件目录': '*Audio dataset folder',
|
||||
'训练集音频文件目录 拼接 list文件里波形对应的文件名。': 'Training the file name corresponding to the waveform of the waveform in the List file of the audio file',
|
||||
'1Aa-文本内容': '1Aa-Text',
|
||||
'GPU卡号以-分割,每个卡号一个进程': 'GPU number is separated by -, each GPU will run one process ',
|
||||
'预训练的中文BERT模型路径': ' Pretrained BERT model path',
|
||||
'开启文本获取': 'Start speech-to-text',
|
||||
'终止文本获取进程': 'Stop speech-to-text',
|
||||
'文本进程输出信息': 'Text processing output',
|
||||
'1Ab-SSL自监督特征提取': '1Ab-SSL self-supervised feature extraction',
|
||||
'预训练的SSL模型路径': 'Pretrained SSL model path',
|
||||
'开启SSL提取': 'Start SSL extracting',
|
||||
'终止SSL提取进程': 'Stop SSL extraction',
|
||||
'SSL进程输出信息': 'SSL output log',
|
||||
'1Ac-语义token提取': '1Ac-semantics token extraction',
|
||||
'开启语义token提取': 'Start semantics token extraction',
|
||||
'终止语义token提取进程': 'Stop semantics token extraction',
|
||||
'语义token提取进程输出信息': 'Sematics token extraction output log',
|
||||
'1Aabc-训练集格式化一键三连': '1Aabc-One-click formatting',
|
||||
'开启一键三连': 'Start one-click formatting',
|
||||
'终止一键三连': 'Stop one-click formatting',
|
||||
'一键三连进程输出信息': 'One-click formatting output',
|
||||
'1B-微调训练': '1B-Fine-tuned training',
|
||||
'1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。': '1Ba-SoVITS training. The model is located in SoVITS_weights.',
|
||||
'每张显卡的batch_size': 'Batch size per GPU:',
|
||||
'总训练轮数total_epoch,不建议太高': 'Total epochs, do not increase to a value that is too high',
|
||||
'文本模块学习率权重': 'Text model learning rate weighting',
|
||||
'保存频率save_every_epoch': 'Save frequency (save_every_epoch):',
|
||||
'是否仅保存最新的ckpt文件以节省硬盘空间': "Save only the latest '.ckpt' file to save disk space:",
|
||||
'是否在每次保存时间点将最终小模型保存至weights文件夹': "Save a small final model to the 'weights' folder at each save point:",
|
||||
'开启SoVITS训练': 'Start SoVITS training',
|
||||
'终止SoVITS训练': 'Stop SoVITS training',
|
||||
'SoVITS训练进程输出信息': 'SoVITS training output log',
|
||||
'1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。': '1Bb-GPT training. The model is located in GPT_weights.',
|
||||
'总训练轮数total_epoch': 'Total training epochs (total_epoch):',
|
||||
'开启GPT训练': 'Start GPT training',
|
||||
'终止GPT训练': 'Stop GPT training',
|
||||
'GPT训练进程输出信息': 'GPT training output log',
|
||||
'1C-推理': '1C-inference',
|
||||
'选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。': 'Choose the models from SoVITS_weights and GPT_weights. The default one is a pretrain, so you can experience zero shot TTS.',
|
||||
'*GPT模型列表': '*GPT models list',
|
||||
'*SoVITS模型列表': '*SoVITS models list',
|
||||
'GPU卡号,只能填1个整数': 'GPU number, can only input ONE integer',
|
||||
'刷新模型路径': 'refreshing model paths',
|
||||
'是否开启TTS推理WebUI': 'Open TTS inference WEBUI',
|
||||
'TTS推理WebUI进程输出信息': 'TTS inference webui output log',
|
||||
'2-GPT-SoVITS-变声': '2-GPT-SoVITS-Voice Changer',
|
||||
'施工中,请静候佳音': 'In construction, please wait',
|
||||
'TTS推理进程已开启': 'TTS inference process is opened',
|
||||
'TTS推理进程已关闭': 'TTS inference process closed',
|
||||
'打标工具WebUI已开启': 'proofreading tool webui is opened',
|
||||
'打标工具WebUI已关闭': 'proofreading tool webui is closed',
|
||||
'本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. 如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录LICENSE.': 'This software is under MIT licence. The author does not have any control for this software. Users are solely reponsible for all voices thats being converted and/or distributed. If you disagree with this Terms and Conditions, you cannot use or cite any files or code in this file. Please check LICENSE. for more info.',
|
||||
'*请上传并填写参考信息': '*Please upload and fill reference information',
|
||||
'*请填写需要合成的目标文本': '*Please fill the text that needs inference',
|
||||
'ASR任务开启:%s': 'ASR training started: %s',
|
||||
'GPT训练完成': 'Finished GPT training',
|
||||
'GPT训练开始:%s': 'GPT training started: %s',
|
||||
'SSL提取进程执行中': 'SSL extracting',
|
||||
'SSL提取进程结束': 'SSL extraction finished',
|
||||
'SoVITS训练完成': 'SoVITS training finished',
|
||||
'SoVITS训练开始:%s': 'SoVITS training started:%s',
|
||||
'一键三连中途报错': 'An error has occured during One-click formatting',
|
||||
'一键三连进程结束': 'Finished one-click formatting',
|
||||
'中文': 'Chinese',
|
||||
'凑50字一切': 'Cut per 50 characters',
|
||||
'凑五句一切': 'Cut per 5 sentences',
|
||||
'切分后文本': 'Text after sliced',
|
||||
'切割执行中': 'Slicing audio',
|
||||
'切割结束': 'finished audio slicing',
|
||||
'参考音频的文本': 'Text for reference audio',
|
||||
'参考音频的语种': 'Language for reference audio',
|
||||
'合成语音': 'Start inference',
|
||||
'后续将支持混合语种编码文本输入。': 'Mixed languages input will be supported soon.',
|
||||
'已有正在进行的ASR任务,需先终止才能开启下一次任务': ' An ASR task is already in progress, please stop before starting the next task',
|
||||
'已有正在进行的GPT训练任务,需先终止才能开启下一次任务': 'A GPT training task is already in progress, please stop before starting the next task',
|
||||
'已有正在进行的SSL提取任务,需先终止才能开启下一次任务': 'A SSL extraction task is already in progress, please stop before starting the next task',
|
||||
'已有正在进行的SoVITS训练任务,需先终止才能开启下一次任务': 'A SoVITS training task is already in progress, please stop before starting the next task',
|
||||
'已有正在进行的一键三连任务,需先终止才能开启下一次任务': 'An ASR task is already in progress, please stop before starting the next task',
|
||||
'已有正在进行的切割任务,需先终止才能开启下一次任务': 'An audio slicing task is already in progress, please stop before starting the next task',
|
||||
'已有正在进行的文本任务,需先终止才能开启下一次任务': 'A TTS proofreading task is already in progress, please stop before starting the next task',
|
||||
'已有正在进行的语义token提取任务,需先终止才能开启下一次任务': 'A semantics token extraction task is already in progress, please stop before starting the next task',
|
||||
'已终止ASR进程': 'ASR task has been stopped',
|
||||
'已终止GPT训练': 'GPT training has been stopped',
|
||||
'已终止SoVITS训练': 'SoVITS training has been stopped',
|
||||
'已终止所有1a进程': 'All 1a tasks has been stopped',
|
||||
'已终止所有1b进程': 'All 1b tasks has been stopped',
|
||||
'已终止所有一键三连进程': 'All one-clicking formatting tasks has been stopped',
|
||||
'已终止所有切割进程': 'All audio slicing tasks has been stopped',
|
||||
'已终止所有语义token进程': 'All semantics token tasks has been stopped',
|
||||
'按中文句号。切': '按中文句号。切',
|
||||
'文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。': 'Text slicer tool, since there will be issues when infering long texts, so it is advised to cut first. When infering, it will infer respectively then combined together.',
|
||||
'文本进程执行中': 'Text processing',
|
||||
'文本进程结束': 'Finished text processing',
|
||||
'日文': 'Japanese',
|
||||
'英文': 'English',
|
||||
'语义token提取进程执行中': 'Semantics token extracting',
|
||||
'语义token提取进程结束': 'Finished semantics token extraction',
|
||||
'请上传参考音频': 'Please upload reference audio',
|
||||
'输入路径不存在': 'No input file or directory',
|
||||
'输入路径存在但既不是文件也不是文件夹': 'Input directory exists, but it is not a file or a folder',
|
||||
'输出的语音': 'Inference Result',
|
||||
'进度:1a-done': 'Progress:1a-done',
|
||||
'进度:1a-done, 1b-ing': 'Progress:1a-done, 1b-ing',
|
||||
'进度:1a-ing': 'Progress:1a-ing',
|
||||
'进度:1a1b-done': 'Progress:1a1b-done',
|
||||
'进度:1a1b-done, 1cing': 'Progress:1a1b-done, 1cing',
|
||||
'进度:all-done': 'Progress:all-done',
|
||||
'需要合成的切分前文本': 'Inference text that needs to be sliced',
|
||||
'需要合成的文本': 'Inference text',
|
||||
'需要合成的语种': 'Inference text language',
|
||||
'>=3则使用对harvest音高识别的结果使用中值滤波,数值为滤波半径,使用可以削弱哑音': 'If >=3: apply median filtering to the harvested pitch results. The value represents the filter radius and can reduce breathiness.',
|
||||
'A模型权重': 'Weight (w) for Model A:',
|
||||
'A模型路径': 'Path to Model A:',
|
||||
'B模型路径': 'Path to Model B:',
|
||||
'E:\\语音音频+标注\\米津玄师\\src': 'C:\\Users\\Desktop\\src',
|
||||
'F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调': 'F0 curve file (optional). One pitch per line. Replaces the default F0 and pitch modulation:',
|
||||
'Index Rate': 'Index Rate',
|
||||
'Onnx导出': 'Export Onnx',
|
||||
'Onnx输出路径': 'Onnx Export Path:',
|
||||
'RVC模型路径': 'RVC Model Path:',
|
||||
'ckpt处理': 'ckpt Processing',
|
||||
'harvest进程数': 'Number of CPU processes used for harvest pitch algorithm',
|
||||
'index文件路径不可包含中文': 'index文件路径不可包含中文',
|
||||
'pth文件路径不可包含中文': 'pth文件路径不可包含中文',
|
||||
'rmvpe卡号配置:以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程': "Enter the GPU index(es) separated by '-', e.g., 0-0-1 to use 2 processes in GPU0 and 1 process in GPU1",
|
||||
'step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ': "Step 1: Fill in the experimental configuration. Experimental data is stored in the 'logs' folder, with each experiment having a separate folder. Manually enter the experiment name path, which contains the experimental configuration, logs, and trained model files.",
|
||||
'step1:正在处理数据': 'Step 1: Processing data',
|
||||
'step2:正在提取音高&正在提取特征': 'step2:Pitch extraction & feature extraction',
|
||||
'step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ': 'Step 2a: Automatically traverse all files in the training folder that can be decoded into audio and perform slice normalization. Generates 2 wav folders in the experiment directory. Currently, only single-singer/speaker training is supported.',
|
||||
'step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)': 'Step 2b: Use CPU to extract pitch (if the model has pitch), use GPU to extract features (select GPU index):',
|
||||
'step3: 填写训练设置, 开始训练模型和索引': 'Step 3: Fill in the training settings and start training the model and index',
|
||||
'step3a:正在训练模型': 'Step 3a: Model training started',
|
||||
'一键训练': 'One-click training',
|
||||
'也可批量输入音频文件, 二选一, 优先读文件夹': 'Multiple audio files can also be imported. If a folder path exists, this input is ignored.',
|
||||
'人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声:不带和声的音频选这个,对主人声保留比HP5更好。内置HP2和HP3两个模型,HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点; <br>2、仅保留主人声:带和声的音频选这个,对主人声可能有削弱。内置HP5一个模型; <br> 3、去混响、去延迟模型(by FoxJoy):<br>\u2003\u2003(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br> (234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底,DeReverb额外去除混响,可去除单声道混响,但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍;<br>2、MDX-Net-Dereverb模型挺慢的;<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。': 'Batch processing for vocal accompaniment separation using the UVR5 model.<br>Example of a valid folder path format: D:\\path\\to\\input\\folder (copy it from the file manager address bar).<br>The model is divided into three categories:<br>1. Preserve vocals: Choose this option for audio without harmonies. It preserves vocals better than HP5. It includes two built-in models: HP2 and HP3. HP3 may slightly leak accompaniment but preserves vocals slightly better than HP2.<br>2. Preserve main vocals only: Choose this option for audio with harmonies. It may weaken the main vocals. It includes one built-in model: HP5.<br>3. De-reverb and de-delay models (by FoxJoy):<br>\u2003\u2003(1) MDX-Net: The best choice for stereo reverb removal but cannot remove mono reverb;<br> (234) DeEcho: Removes delay effects. Aggressive mode removes more thoroughly than Normal mode. DeReverb additionally removes reverb and can remove mono reverb, but not very effectively for heavily reverberated high-frequency content.<br>De-reverb/de-delay notes:<br>1. The processing time for the DeEcho-DeReverb model is approximately twice as long as the other two DeEcho models.<br>2. The MDX-Net-Dereverb model is quite slow.<br>3. The recommended cleanest configuration is to apply MDX-Net first and then DeEcho-Aggressive.',
|
||||
'以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2': "Enter the GPU index(es) separated by '-', e.g., 0-1-2 to use GPU 0, 1, and 2:",
|
||||
'伴奏人声分离&去混响&去回声': 'Vocals/Accompaniment Separation & Reverberation Removal',
|
||||
'使用模型采样率': '使用模型采样率',
|
||||
'使用设备采样率': '使用设备采样率',
|
||||
'保存名': 'Save name:',
|
||||
'保存的文件名, 默认空为和源文件同名': 'Save file name (default: same as the source file):',
|
||||
'保存的模型名不带后缀': 'Saved model name (without extension):',
|
||||
'保护清辅音和呼吸声,防止电音撕裂等artifact,拉满0.5不开启,调低加大保护力度但可能降低索引效果': 'Protect voiceless consonants and breath sounds to prevent artifacts such as tearing in electronic music. Set to 0.5 to disable. Decrease the value to increase protection, but it may reduce indexing accuracy:',
|
||||
'修改': 'Modify',
|
||||
'修改模型信息(仅支持weights文件夹下提取的小模型文件)': "Modify model information (only supported for small model files extracted from the 'weights' folder)",
|
||||
'停止音频转换': 'Stop audio conversion',
|
||||
'全流程结束!': 'All processes have been completed!',
|
||||
'刷新音色列表和索引路径': 'Refresh voice list and index path',
|
||||
'加载模型': 'Load model',
|
||||
'加载预训练底模D路径': 'Load pre-trained base model D path:',
|
||||
'加载预训练底模G路径': 'Load pre-trained base model G path:',
|
||||
'单次推理': 'Single Inference',
|
||||
'卸载音色省显存': 'Unload voice to save GPU memory:',
|
||||
'变调(整数, 半音数量, 升八度12降八度-12)': 'Transpose (integer, number of semitones, raise by an octave: 12, lower by an octave: -12):',
|
||||
'后处理重采样至最终采样率,0为不进行重采样': 'Resample the output audio in post-processing to the final sample rate. Set to 0 for no resampling:',
|
||||
'否': 'No',
|
||||
'启用相位声码器': '启用相位声码器',
|
||||
'响应阈值': 'Response threshold',
|
||||
'响度因子': 'loudness factor',
|
||||
'处理数据': 'Process data',
|
||||
'导出Onnx模型': 'Export Onnx Model',
|
||||
'导出文件格式': 'Export file format',
|
||||
'常见问题解答': 'FAQ (Frequently Asked Questions)',
|
||||
'常规设置': 'General settings',
|
||||
'开始音频转换': 'Start audio conversion',
|
||||
'性能设置': 'Performance settings',
|
||||
'批量推理': 'Batch Inference',
|
||||
'批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ': "Batch conversion. Enter the folder containing the audio files to be converted or upload multiple audio files. The converted audio will be output in the specified folder (default: 'opt').",
|
||||
'指定输出主人声文件夹': 'Specify the output folder for vocals:',
|
||||
'指定输出文件夹': 'Specify output folder:',
|
||||
'指定输出非主人声文件夹': 'Specify the output folder for accompaniment:',
|
||||
'推理时间(ms):': 'Inference time (ms):',
|
||||
'推理音色': 'Inferencing voice:',
|
||||
'提取': 'Extract',
|
||||
'提取音高和处理数据使用的CPU进程数': 'Number of CPU processes used for pitch extraction and data processing:',
|
||||
'是': 'Yes',
|
||||
'是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速': 'Cache all training sets to GPU memory. Caching small datasets (less than 10 minutes) can speed up training, but caching large datasets will consume a lot of GPU memory and may not provide much speed improvement:',
|
||||
'查看': 'View',
|
||||
'查看模型信息(仅支持weights文件夹下提取的小模型文件)': "View model information (only supported for small model files extracted from the 'weights' folder)",
|
||||
'检索特征占比': 'Search feature ratio (controls accent strength, too high has artifacting):',
|
||||
'模型': 'Model',
|
||||
'模型推理': 'Model Inference',
|
||||
'模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况': "Model extraction (enter the path of the large file model under the 'logs' folder). This is useful if you want to stop training halfway and manually extract and save a small model file, or if you want to test an intermediate model:",
|
||||
'模型是否带音高指导': 'Whether the model has pitch guidance:',
|
||||
'模型是否带音高指导(唱歌一定要, 语音可以不要)': 'Whether the model has pitch guidance (required for singing, optional for speech):',
|
||||
'模型是否带音高指导,1是0否': 'Whether the model has pitch guidance (1: yes, 0: no):',
|
||||
'模型版本型号': 'Model architecture version:',
|
||||
'模型融合, 可用于测试音色融合': 'Model fusion, can be used to test timbre fusion',
|
||||
'模型路径': 'Path to Model:',
|
||||
'淡入淡出长度': 'Fade length',
|
||||
'版本': 'Version',
|
||||
'特征提取': 'Feature extraction',
|
||||
'特征检索库文件路径,为空则使用下拉的选择结果': 'Path to the feature index file. Leave blank to use the selected result from the dropdown:',
|
||||
'男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ': 'Recommended +12 key for male to female conversion, and -12 key for female to male conversion. If the sound range goes too far and the voice is distorted, you can also adjust it to the appropriate range by yourself.',
|
||||
'目标采样率': 'Target sample rate:',
|
||||
'算法延迟(ms):': 'Algorithmic delays(ms):',
|
||||
'自动检测index路径,下拉式选择(dropdown)': 'Auto-detect index path and select from the dropdown:',
|
||||
'融合': 'Fusion',
|
||||
'要改的模型信息': 'Model information to be modified:',
|
||||
'要置入的模型信息': 'Model information to be placed:',
|
||||
'训练': 'Train',
|
||||
'训练模型': 'Train model',
|
||||
'训练特征索引': 'Train feature index',
|
||||
'训练结束, 您可查看控制台训练日志或实验文件夹下的train.log': "Training complete. You can check the training logs in the console or the 'train.log' file under the experiment folder.",
|
||||
'请指定说话人id': 'Please specify the speaker/singer ID:',
|
||||
'请选择index文件': 'Please choose the .index file',
|
||||
'请选择pth文件': 'Please choose the .pth file',
|
||||
'请选择说话人id': 'Select Speaker/Singer ID:',
|
||||
'转换': 'Convert',
|
||||
'输入实验名': 'Enter the experiment name:',
|
||||
'输入待处理音频文件夹路径': 'Enter the path of the audio folder to be processed:',
|
||||
'输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)': 'Enter the path of the audio folder to be processed (copy it from the address bar of the file manager):',
|
||||
'输入待处理音频文件路径(默认是正确格式示例)': 'Enter the path of the audio file to be processed (default is the correct format example):',
|
||||
'输入源音量包络替换输出音量包络融合比例,越靠近1越使用输出包络': 'Adjust the volume envelope scaling. Closer to 0, the more it mimicks the volume of the original vocals. Can help mask noise and make volume sound more natural when set relatively low. Closer to 1 will be more of a consistently loud volume:',
|
||||
'输入监听': 'Input voice monitor',
|
||||
'输入训练文件夹路径': 'Enter the path of the training folder:',
|
||||
'输入设备': 'Input device',
|
||||
'输入降噪': 'Input noise reduction',
|
||||
'输出信息': 'Output information',
|
||||
'输出变声': 'Output converted voice',
|
||||
'输出设备': 'Output device',
|
||||
'输出降噪': 'Output noise reduction',
|
||||
'输出音频(右下角三个点,点了可以下载)': 'Export audio (click on the three dots in the lower right corner to download)',
|
||||
'选择.index文件': 'Select the .index file',
|
||||
'选择.pth文件': 'Select the .pth file',
|
||||
'选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU': '选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU',
|
||||
'选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU': "Select the pitch extraction algorithm ('pm': faster extraction but lower-quality speech; 'harvest': better bass but extremely slow; 'crepe': better quality but GPU intensive), 'rmvpe': best quality, and little GPU requirement",
|
||||
'选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU': "Select the pitch extraction algorithm: when extracting singing, you can use 'pm' to speed up. For high-quality speech with fast performance, but worse CPU usage, you can use 'dio'. 'harvest' results in better quality but is slower. 'rmvpe' has the best results and consumes less CPU/GPU",
|
||||
'采样率:': '采样率:',
|
||||
'采样长度': 'Sample length',
|
||||
'重载设备列表': 'Reload device list',
|
||||
'音调设置': 'Pitch settings',
|
||||
'音频设备(请使用同种类驱动)': 'Audio device (please use the same type of driver)',
|
||||
'音高算法': 'pitch detection algorithm',
|
||||
'额外推理时长': 'Extra inference time'
|
||||
}
|
93
i18n/locale/pt_BR.json
Normal file
93
i18n/locale/pt_BR.json
Normal file
@ -0,0 +1,93 @@
|
||||
{
|
||||
"很遗憾您这没有能用的显卡来支持您训练": "Infelizmente, você não possui uma placa de vídeo funcional para suportar seu treinamento",
|
||||
"UVR5已开启": "UVR5 está ativado",
|
||||
"UVR5已关闭": "UVR5 está desativado",
|
||||
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Este software é de código aberto sob a licença MIT. O autor não tem controle sobre o software. Aqueles que usam o software e difundem os sons exportados pelo software são totalmente responsáveis. <br>Se você não concorda com esta cláusula, não pode usar ou citar nenhum código e arquivo dentro do pacote de software. Consulte o diretório raiz <b>LICENSE</b> para mais detalhes.<br><br> Traduzido por Rafael Godoy Ebert",
|
||||
"0-前置数据集获取工具": "0- Ferramenta de aquisição de conjunto de dados pré-frontal",
|
||||
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0A-UVR5 separação de voz e acompanhamento instrumental & ferramenta para remover reverberação e atraso",
|
||||
"是否开启UVR5-WebUI": "Se deseja ativar a UVR5-WEBUI",
|
||||
"UVR5进程输出信息": "Informações de saída do processo UVR5",
|
||||
"0b-语音切分工具": "0b- Ferramenta de corte de voz",
|
||||
"音频自动切分输入路径,可文件可文件夹": "Caminho de entrada automático de corte de áudio, pode ser um arquivo ou uma pasta",
|
||||
"切分后的子音频的输出根目录": "Diretório raiz de saída do sub-áudio após o corte",
|
||||
"threshold:音量小于这个值视作静音的备选切割点": "Limiar: O volume menor que este valor é considerado como um ponto de corte mudo alternativo",
|
||||
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length: O comprimento mínimo de cada parágrafo, se o primeiro for muito curto, conecte-o continuamente aos próximos até ultrapassar este valor",
|
||||
"min_interval:最短切割间隔": "min_interval: O intervalo de corte mínimo",
|
||||
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "HOP_SIZE: Como calcular a curva de volume, quanto menor a precisão, maior a quantidade de cálculos (não significa que quanto maior a precisão, melhor o efeito)",
|
||||
"max_sil_kept:切完后静音最多留多长": "max_sil_kept: Depois de cortar, por quanto tempo no máximo o silêncio é mantido",
|
||||
"开启语音切割": "Ativar corte de voz",
|
||||
"终止语音切割": "Encerrar corte de voz",
|
||||
"max:归一化后最大值多少": "MAX: Qual é o valor máximo após a normalização?",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: Em que proporção o áudio normalizado é misturado de volta",
|
||||
"切割使用的进程数": "Número de processos para corte",
|
||||
"语音切割进程输出信息": "Informações de saída do processo de corte de voz",
|
||||
"0c-中文批量离线ASR工具": "0c- Ferramenta chinesa de ASR offline em lote",
|
||||
"开启离线批量ASR": "Ativar ASR offline em lote",
|
||||
"终止ASR进程": "Encerrar processo ASR",
|
||||
"批量ASR(中文only)输入文件夹路径": "Caminho da pasta de entrada para ASR em lote (apenas chinês)",
|
||||
"ASR进程输出信息": "Informações de saída do processo ASR",
|
||||
"0d-语音文本校对标注工具": "0d- Ferramenta de correção e marcação de texto de voz",
|
||||
"是否开启打标WebUI": "Se deseja abrir o webui de marcação",
|
||||
"打标数据标注文件路径": "Caminho do arquivo de marcação de dados de marcação",
|
||||
"打标工具进程输出信息": "Informações de saída do processo da ferramenta de marcação",
|
||||
"1-GPT-SoVITS-TTS": "1-GPT-SOVITS-TTS",
|
||||
"*实验/模型名": "*Nome do experimento/modelo",
|
||||
"显卡信息": "Informações da placa de vídeo",
|
||||
"预训练的SoVITS-G模型路径": "Caminho do modelo SoVITS-G pre-train",
|
||||
"预训练的SoVITS-D模型路径": "Caminho do modelo SoVITS-D pre-train",
|
||||
"预训练的GPT模型路径": "Caminho do modelo GPT pre-train",
|
||||
"1A-训练集格式化工具": "1A-Ferramenta de formatação de conjunto de dados de treinamento",
|
||||
"输出logs/实验名目录下应有23456开头的文件和文件夹": "Logs de saída/deve haver arquivos e pastas começando com 23456 no diretório do nome do experimento",
|
||||
"*文本标注文件": "*Arquivo de marcação de texto",
|
||||
"*训练集音频文件目录": "*Diretório de arquivos de áudio do conjunto de treinamento",
|
||||
"训练集音频文件目录 拼接 list文件里波形对应的文件名。": "Diretório de arquivos de áudio do conjunto de treinamento. Concatene o nome do arquivo correspondente à forma de onda no arquivo de lista",
|
||||
"1Aa-文本内容": "1AA-Conteúdo do texto",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "Número da placa de vídeo dividido por-, cada número de placa é um processo",
|
||||
"预训练的中文BERT模型路径": "Caminho do modelo BERT chinês pre-train",
|
||||
"开启文本获取": "Ativar obtenção de texto",
|
||||
"终止文本获取进程": "Encerrar processo de obtenção de texto",
|
||||
"文本进程输出信息": "Informações de saída do processo de texto",
|
||||
"1Ab-SSL自监督特征提取": "1AB-Extração de características auto-supervisionadas SSL",
|
||||
"预训练的SSL模型路径": "Caminho do modelo SSL pre-train",
|
||||
"开启SSL提取": "Ativar extração SSL",
|
||||
"终止SSL提取进程": "Encerrar processo de extração SSL",
|
||||
"SSL进程输出信息": "Informações de saída do processo SSL",
|
||||
"1Ac-语义token提取": "1AC-Extração de token semântico",
|
||||
"开启语义token提取": "Ativar extração de token semântico",
|
||||
"终止语义token提取进程": "Encerrar processo de extração de token semântico",
|
||||
"语义token提取进程输出信息": "Informações de saída do processo de extração de token semântico",
|
||||
"1Aabc-训练集格式化一键三连": "1AABC-Formatação de conjunto de treinamento em um clique",
|
||||
"开启一键三连": "Ativar um clique",
|
||||
"终止一键三连": "Encerrar um clique",
|
||||
"一键三连进程输出信息": "Informações de saída do processo de um clique",
|
||||
"1B-微调训练": "1B-Treinamento de ajuste fino",
|
||||
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1ba-Treinamento SoVITS. O arquivo de modelo para compartilhamento é gerado em SOVITS_WEIGHTS",
|
||||
"每张显卡的batch_size": "Tamanho do lote de cada placa de vídeo",
|
||||
"总训练轮数total_epoch,不建议太高": "Total de epoch de treinamento, não é recomendável um valor muito alto",
|
||||
"文本模块学习率权重": "Weight da taxa de aprendizado do módulo de texto",
|
||||
"保存频率save_every_epoch": "Frequência de salvamento save_every_epoch",
|
||||
"是否仅保存最新的ckpt文件以节省硬盘空间": "Se deve salvar apenas o último arquivo CKPT para economizar espaço em disco",
|
||||
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Se deve salvar o modelo pequeno final na pasta Weights em cada ponto de salvamento de tempo",
|
||||
"开启SoVITS训练": "Ativar treinamento SoVITS",
|
||||
"终止SoVITS训练": "Encerrar treinamento SoVITS",
|
||||
"SoVITS训练进程输出信息": "Informações de saída do processo de treinamento SoVITS",
|
||||
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1BB-Treinamento GPT. O arquivo de modelo para compartilhamento é gerado em GPT_WEIGHTS",
|
||||
"总训练轮数total_epoch": "Total de epoch de treinamento",
|
||||
"开启GPT训练": "Ativar treinamento GPT",
|
||||
"终止GPT训练": "Encerrar treinamento GPT",
|
||||
"GPT训练进程输出信息": "Informações de saída do processo de treinamento GPT",
|
||||
"1C-推理": "1C-raciocínio",
|
||||
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。": "Selecione os modelos armazenados em Sovits_weights e GPT_WEIGHTS. O padrão é o modelo inferior, experiência para 5 segundos de Zero Shot TTS",
|
||||
"*GPT模型列表": "*Lista de modelos GPT",
|
||||
"*SoVITS模型列表": "*Lista de modelos Sovits",
|
||||
"GPU卡号,只能填1个整数": "Número da placa de vídeo, só é possível preencher com um número inteiro",
|
||||
"刷新模型路径": "Atualizar caminho do modelo",
|
||||
"是否开启TTS推理WebUI": "Se deseja ativar o webui de raciocínio TTS",
|
||||
"TTS推理WebUI进程输出信息": "Informações de saída do processo webui de raciocínio TTS",
|
||||
"2-GPT-SoVITS-变声": "2-gpt-sovits-mudança de voz",
|
||||
"施工中,请静候佳音": "Em construção, por favor, aguarde por um bom som",
|
||||
"TTS推理进程已开启": "O processo de inferência TTS foi iniciado",
|
||||
"TTS推理进程已关闭": "O processo de inferência TTS foi desativado",
|
||||
"打标工具WebUI已开启": "A ferramenta de marcação WebUI está ativada",
|
||||
"打标工具WebUI已关闭": "A ferramenta de marcação WebUI foi desativado"
|
||||
}
|
2
tools/damo_asr/models/.gitignore
vendored
Normal file
2
tools/damo_asr/models/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
@ -24,7 +24,7 @@ def make_padding(width, cropsize, offset):
|
||||
|
||||
def inference(X_spec, device, model, aggressiveness, data):
|
||||
"""
|
||||
data : dic configs
|
||||
data : dic configs
|
||||
"""
|
||||
|
||||
def _execute(
|
||||
|
174
webui.py
174
webui.py
@ -120,25 +120,25 @@ def change_label(if_label,path_list):
|
||||
global p_label
|
||||
if(if_label==True and p_label==None):
|
||||
cmd = '"%s" tools/subfix_webui.py --load_list "%s" --webui_port %s'%(python_exec,path_list,webui_port_subfix)
|
||||
yield "打标工具WebUI已开启"
|
||||
yield i18n("打标工具WebUI已开启")
|
||||
print(cmd)
|
||||
p_label = Popen(cmd, shell=True)
|
||||
elif(if_label==False and p_label!=None):
|
||||
kill_process(p_label.pid)
|
||||
p_label=None
|
||||
yield "打标工具WebUI已关闭"
|
||||
yield i18n("打标工具WebUI已关闭")
|
||||
|
||||
def change_uvr5(if_uvr5):
|
||||
global p_uvr5
|
||||
if(if_uvr5==True and p_uvr5==None):
|
||||
cmd = '"%s" tools/uvr5/webui.py "%s" %s %s'%(python_exec,infer_device,is_half,webui_port_uvr5)
|
||||
yield "UVR5已开启"
|
||||
yield i18n("UVR5已开启")
|
||||
print(cmd)
|
||||
p_uvr5 = Popen(cmd, shell=True)
|
||||
elif(if_uvr5==False and p_uvr5!=None):
|
||||
kill_process(p_uvr5.pid)
|
||||
p_uvr5=None
|
||||
yield "UVR5已关闭"
|
||||
yield i18n("UVR5已关闭")
|
||||
|
||||
def change_tts_inference(if_tts,bert_path,cnhubert_base_path,gpu_number,gpt_path,sovits_path):
|
||||
global p_tts_inference
|
||||
@ -151,13 +151,13 @@ def change_tts_inference(if_tts,bert_path,cnhubert_base_path,gpu_number,gpt_path
|
||||
os.environ["is_half"]=str(is_half)
|
||||
os.environ["infer_ttswebui"]=str(webui_port_infer_tts)
|
||||
cmd = '"%s" GPT_SoVITS/inference_webui.py'%(python_exec)
|
||||
yield "TTS推理进程已开启"
|
||||
yield i18n("TTS推理进程已开启")
|
||||
print(cmd)
|
||||
p_tts_inference = Popen(cmd, shell=True)
|
||||
elif(if_tts==False and p_tts_inference!=None):
|
||||
kill_process(p_tts_inference.pid)
|
||||
p_tts_inference=None
|
||||
yield "TTS推理进程已关闭"
|
||||
yield i18n("TTS推理进程已关闭")
|
||||
|
||||
|
||||
def open_asr(asr_inp_dir):
|
||||
@ -591,98 +591,98 @@ def close1abc():
|
||||
with gr.Blocks(title="GPT-SoVITS WebUI") as app:
|
||||
gr.Markdown(
|
||||
value=
|
||||
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>."
|
||||
i18n("本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.")
|
||||
)
|
||||
with gr.Tabs():
|
||||
with gr.TabItem("0-前置数据集获取工具"):#提前随机切片防止uvr5爆内存->uvr5->slicer->asr->打标
|
||||
gr.Markdown(value="0a-UVR5人声伴奏分离&去混响去延迟工具")
|
||||
with gr.TabItem(i18n("0-前置数据集获取工具")):#提前随机切片防止uvr5爆内存->uvr5->slicer->asr->打标
|
||||
gr.Markdown(value=i18n("0a-UVR5人声伴奏分离&去混响去延迟工具"))
|
||||
with gr.Row():
|
||||
if_uvr5 = gr.Checkbox(label="是否开启UVR5-WebUI",show_label=True)
|
||||
uvr5_info = gr.Textbox(label="UVR5进程输出信息")
|
||||
gr.Markdown(value="0b-语音切分工具")
|
||||
if_uvr5 = gr.Checkbox(label=i18n("是否开启UVR5-WebUI"),show_label=True)
|
||||
uvr5_info = gr.Textbox(label=i18n("UVR5进程输出信息"))
|
||||
gr.Markdown(value=i18n("0b-语音切分工具"))
|
||||
with gr.Row():
|
||||
with gr.Row():
|
||||
slice_inp_path=gr.Textbox(label="音频自动切分输入路径,可文件可文件夹",value="")
|
||||
slice_opt_root=gr.Textbox(label="切分后的子音频的输出根目录",value="output/slicer_opt")
|
||||
threshold=gr.Textbox(label="threshold:音量小于这个值视作静音的备选切割点",value="-34")
|
||||
min_length=gr.Textbox(label="min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值",value="4000")
|
||||
min_interval=gr.Textbox(label="min_interval:最短切割间隔",value="300")
|
||||
hop_size=gr.Textbox(label="hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)",value="10")
|
||||
max_sil_kept=gr.Textbox(label="max_sil_kept:切完后静音最多留多长",value="500")
|
||||
slice_inp_path=gr.Textbox(label=i18n("音频自动切分输入路径,可文件可文件夹"),value="")
|
||||
slice_opt_root=gr.Textbox(label=i18n("切分后的子音频的输出根目录"),value="output/slicer_opt")
|
||||
threshold=gr.Textbox(label=i18n("threshold:音量小于这个值视作静音的备选切割点"),value="-34")
|
||||
min_length=gr.Textbox(label=i18n("min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值"),value="4000")
|
||||
min_interval=gr.Textbox(label=i18n("min_interval:最短切割间隔"),value="300")
|
||||
hop_size=gr.Textbox(label=i18n("hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)"),value="10")
|
||||
max_sil_kept=gr.Textbox(label=i18n("max_sil_kept:切完后静音最多留多长"),value="500")
|
||||
with gr.Row():
|
||||
open_slicer_button=gr.Button("开启语音切割", variant="primary",visible=True)
|
||||
close_slicer_button=gr.Button("终止语音切割", variant="primary",visible=False)
|
||||
_max=gr.Slider(minimum=0,maximum=1,step=0.05,label="max:归一化后最大值多少",value=0.9,interactive=True)
|
||||
alpha=gr.Slider(minimum=0,maximum=1,step=0.05,label="alpha_mix:混多少比例归一化后音频进来",value=0.25,interactive=True)
|
||||
n_process=gr.Slider(minimum=1,maximum=n_cpu,step=1,label="切割使用的进程数",value=4,interactive=True)
|
||||
slicer_info = gr.Textbox(label="语音切割进程输出信息")
|
||||
gr.Markdown(value="0c-中文批量离线ASR工具")
|
||||
open_slicer_button=gr.Button(i18n("开启语音切割"), variant="primary",visible=True)
|
||||
close_slicer_button=gr.Button(i18n("终止语音切割"), variant="primary",visible=False)
|
||||
_max=gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("max:归一化后最大值多少"),value=0.9,interactive=True)
|
||||
alpha=gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("alpha_mix:混多少比例归一化后音频进来"),value=0.25,interactive=True)
|
||||
n_process=gr.Slider(minimum=1,maximum=n_cpu,step=1,label=i18n("切割使用的进程数"),value=4,interactive=True)
|
||||
slicer_info = gr.Textbox(label=i18n("语音切割进程输出信息"))
|
||||
gr.Markdown(value=i18n("0c-中文批量离线ASR工具"))
|
||||
with gr.Row():
|
||||
open_asr_button = gr.Button("开启离线批量ASR", variant="primary",visible=True)
|
||||
close_asr_button = gr.Button("终止ASR进程", variant="primary",visible=False)
|
||||
open_asr_button = gr.Button(i18n("开启离线批量ASR"), variant="primary",visible=True)
|
||||
close_asr_button = gr.Button(i18n("终止ASR进程"), variant="primary",visible=False)
|
||||
asr_inp_dir = gr.Textbox(
|
||||
label="批量ASR(中文only)输入文件夹路径",
|
||||
label=i18n("批量ASR(中文only)输入文件夹路径"),
|
||||
value="D:\\RVC1006\\GPT-SoVITS\\raw\\xxx",
|
||||
interactive=True,
|
||||
)
|
||||
asr_info = gr.Textbox(label="ASR进程输出信息")
|
||||
gr.Markdown(value="0d-语音文本校对标注工具")
|
||||
asr_info = gr.Textbox(label=i18n("ASR进程输出信息"))
|
||||
gr.Markdown(value=i18n("0d-语音文本校对标注工具"))
|
||||
with gr.Row():
|
||||
if_label = gr.Checkbox(label="是否开启打标WebUI",show_label=True)
|
||||
if_label = gr.Checkbox(label=i18n("是否开启打标WebUI"),show_label=True)
|
||||
path_list = gr.Textbox(
|
||||
label="打标数据标注文件路径",
|
||||
label=i18n("打标数据标注文件路径"),
|
||||
value="D:\\RVC1006\\GPT-SoVITS\\raw\\xxx.list",
|
||||
interactive=True,
|
||||
)
|
||||
label_info = gr.Textbox(label="打标工具进程输出信息")
|
||||
label_info = gr.Textbox(label=i18n("打标工具进程输出信息"))
|
||||
if_label.change(change_label, [if_label,path_list], [label_info])
|
||||
if_uvr5.change(change_uvr5, [if_uvr5], [uvr5_info])
|
||||
open_asr_button.click(open_asr, [asr_inp_dir], [asr_info,open_asr_button,close_asr_button])
|
||||
close_asr_button.click(close_asr, [], [asr_info,open_asr_button,close_asr_button])
|
||||
open_slicer_button.click(open_slice, [slice_inp_path,slice_opt_root,threshold,min_length,min_interval,hop_size,max_sil_kept,_max,alpha,n_process], [slicer_info,open_slicer_button,close_slicer_button])
|
||||
close_slicer_button.click(close_slice, [], [slicer_info,open_slicer_button,close_slicer_button])
|
||||
with gr.TabItem("1-GPT-SoVITS-TTS"):
|
||||
with gr.TabItem(i18n("1-GPT-SoVITS-TTS")):
|
||||
with gr.Row():
|
||||
exp_name = gr.Textbox(label="*实验/模型名", value="xxx", interactive=True)
|
||||
gpu_info = gr.Textbox(label="显卡信息", value=gpu_info, visible=True, interactive=False)
|
||||
pretrained_s2G = gr.Textbox(label="预训练的SoVITS-G模型路径", value="GPT_SoVITS/pretrained_models/s2G488k.pth", interactive=True)
|
||||
pretrained_s2D = gr.Textbox(label="预训练的SoVITS-D模型路径", value="GPT_SoVITS/pretrained_models/s2D488k.pth", interactive=True)
|
||||
pretrained_s1 = gr.Textbox(label="预训练的GPT模型路径", value="GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt", interactive=True)
|
||||
with gr.TabItem("1A-训练集格式化工具"):
|
||||
gr.Markdown(value="输出logs/实验名目录下应有23456开头的文件和文件夹")
|
||||
exp_name = gr.Textbox(label=i18n("*实验/模型名"), value="xxx", interactive=True)
|
||||
gpu_info = gr.Textbox(label=i18n("显卡信息"), value=gpu_info, visible=True, interactive=False)
|
||||
pretrained_s2G = gr.Textbox(label=i18n("预训练的SoVITS-G模型路径"), value="GPT_SoVITS/pretrained_models/s2G488k.pth", interactive=True)
|
||||
pretrained_s2D = gr.Textbox(label=i18n("预训练的SoVITS-D模型路径"), value="GPT_SoVITS/pretrained_models/s2D488k.pth", interactive=True)
|
||||
pretrained_s1 = gr.Textbox(label=i18n("预训练的GPT模型路径"), value="GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt", interactive=True)
|
||||
with gr.TabItem(i18n("1A-训练集格式化工具")):
|
||||
gr.Markdown(value=i18n("输出logs/实验名目录下应有23456开头的文件和文件夹"))
|
||||
with gr.Row():
|
||||
inp_text = gr.Textbox(label="*文本标注文件",value=r"D:\RVC1006\GPT-SoVITS\raw\xxx.list",interactive=True)
|
||||
inp_text = gr.Textbox(label=i18n("*文本标注文件"),value=r"D:\RVC1006\GPT-SoVITS\raw\xxx.list",interactive=True)
|
||||
inp_wav_dir = gr.Textbox(
|
||||
label="*训练集音频文件目录",
|
||||
label=i18n("*训练集音频文件目录"),
|
||||
# value=r"D:\RVC1006\GPT-SoVITS\raw\xxx",
|
||||
interactive=True,
|
||||
placeholder="训练集音频文件目录 拼接 list文件里波形对应的文件名。"
|
||||
placeholder=i18n("训练集音频文件目录 拼接 list文件里波形对应的文件名。")
|
||||
)
|
||||
gr.Markdown(value="1Aa-文本内容")
|
||||
gr.Markdown(value=i18n("1Aa-文本内容"))
|
||||
with gr.Row():
|
||||
gpu_numbers1a = gr.Textbox(label="GPU卡号以-分割,每个卡号一个进程",value="%s-%s"%(gpus,gpus),interactive=True)
|
||||
bert_pretrained_dir = gr.Textbox(label="预训练的中文BERT模型路径",value="GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large",interactive=False)
|
||||
button1a_open = gr.Button("开启文本获取", variant="primary",visible=True)
|
||||
button1a_close = gr.Button("终止文本获取进程", variant="primary",visible=False)
|
||||
info1a=gr.Textbox(label="文本进程输出信息")
|
||||
gr.Markdown(value="1Ab-SSL自监督特征提取")
|
||||
gpu_numbers1a = gr.Textbox(label=i18n("GPU卡号以-分割,每个卡号一个进程"),value="%s-%s"%(gpus,gpus),interactive=True)
|
||||
bert_pretrained_dir = gr.Textbox(label=i18n("预训练的中文BERT模型路径"),value="GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large",interactive=False)
|
||||
button1a_open = gr.Button(i18n("开启文本获取"), variant="primary",visible=True)
|
||||
button1a_close = gr.Button(i18n("终止文本获取进程"), variant="primary",visible=False)
|
||||
info1a=gr.Textbox(label=i18n("文本进程输出信息"))
|
||||
gr.Markdown(value=i18n("1Ab-SSL自监督特征提取"))
|
||||
with gr.Row():
|
||||
gpu_numbers1Ba = gr.Textbox(label="GPU卡号以-分割,每个卡号一个进程",value="%s-%s"%(gpus,gpus),interactive=True)
|
||||
cnhubert_base_dir = gr.Textbox(label="预训练的SSL模型路径",value="GPT_SoVITS/pretrained_models/chinese-hubert-base",interactive=False)
|
||||
button1b_open = gr.Button("开启SSL提取", variant="primary",visible=True)
|
||||
button1b_close = gr.Button("终止SSL提取进程", variant="primary",visible=False)
|
||||
info1b=gr.Textbox(label="SSL进程输出信息")
|
||||
gr.Markdown(value="1Ac-语义token提取")
|
||||
gpu_numbers1Ba = gr.Textbox(label=i18n("GPU卡号以-分割,每个卡号一个进程"),value="%s-%s"%(gpus,gpus),interactive=True)
|
||||
cnhubert_base_dir = gr.Textbox(label=i18n("预训练的SSL模型路径"),value="GPT_SoVITS/pretrained_models/chinese-hubert-base",interactive=False)
|
||||
button1b_open = gr.Button(i18n("开启SSL提取"), variant="primary",visible=True)
|
||||
button1b_close = gr.Button(i18n("终止SSL提取进程"), variant="primary",visible=False)
|
||||
info1b=gr.Textbox(label=i18n("SSL进程输出信息"))
|
||||
gr.Markdown(value=i18n("1Ac-语义token提取"))
|
||||
with gr.Row():
|
||||
gpu_numbers1c = gr.Textbox(label="GPU卡号以-分割,每个卡号一个进程",value="%s-%s"%(gpus,gpus),interactive=True)
|
||||
button1c_open = gr.Button("开启语义token提取", variant="primary",visible=True)
|
||||
button1c_close = gr.Button("终止语义token提取进程", variant="primary",visible=False)
|
||||
info1c=gr.Textbox(label="语义token提取进程输出信息")
|
||||
gr.Markdown(value="1Aabc-训练集格式化一键三连")
|
||||
gpu_numbers1c = gr.Textbox(label=i18n("GPU卡号以-分割,每个卡号一个进程"),value="%s-%s"%(gpus,gpus),interactive=True)
|
||||
button1c_open = gr.Button(i18n("开启语义token提取"), variant="primary",visible=True)
|
||||
button1c_close = gr.Button(i18n("终止语义token提取进程"), variant="primary",visible=False)
|
||||
info1c=gr.Textbox(label=i18n("语义token提取进程输出信息"))
|
||||
gr.Markdown(value=i18n("1Aabc-训练集格式化一键三连"))
|
||||
with gr.Row():
|
||||
button1abc_open = gr.Button("开启一键三连", variant="primary",visible=True)
|
||||
button1abc_close = gr.Button("终止一键三连", variant="primary",visible=False)
|
||||
info1abc=gr.Textbox(label="一键三连进程输出信息")
|
||||
button1abc_open = gr.Button(i18n("开启一键三连"), variant="primary",visible=True)
|
||||
button1abc_close = gr.Button(i18n("终止一键三连"), variant="primary",visible=False)
|
||||
info1abc=gr.Textbox(label=i18n("一键三连进程输出信息"))
|
||||
button1a_open.click(open1a, [inp_text,inp_wav_dir,exp_name,gpu_numbers1a,bert_pretrained_dir], [info1a,button1a_open,button1a_close])
|
||||
button1a_close.click(close1a, [], [info1a,button1a_open,button1a_close])
|
||||
button1b_open.click(open1b, [inp_text,inp_wav_dir,exp_name,gpu_numbers1Ba,cnhubert_base_dir], [info1b,button1b_open,button1b_close])
|
||||
@ -691,49 +691,49 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app:
|
||||
button1c_close.click(close1c, [], [info1c,button1c_open,button1c_close])
|
||||
button1abc_open.click(open1abc, [inp_text,inp_wav_dir,exp_name,gpu_numbers1a,gpu_numbers1Ba,gpu_numbers1c,bert_pretrained_dir,cnhubert_base_dir,pretrained_s2G], [info1abc,button1abc_open,button1abc_close])
|
||||
button1abc_close.click(close1abc, [], [info1abc,button1abc_open,button1abc_close])
|
||||
with gr.TabItem("1B-微调训练"):
|
||||
gr.Markdown(value="1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。")
|
||||
with gr.TabItem(i18n("1B-微调训练")):
|
||||
gr.Markdown(value=i18n("1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。"))
|
||||
with gr.Row():
|
||||
batch_size = gr.Slider(minimum=1,maximum=40,step=1,label=i18n("每张显卡的batch_size"),value=default_batch_size,interactive=True)
|
||||
total_epoch = gr.Slider(minimum=1,maximum=20,step=1,label=i18n("总训练轮数total_epoch,不建议太高"),value=8,interactive=True)
|
||||
text_low_lr_rate = gr.Slider(minimum=0.2,maximum=0.6,step=0.05,label="文本模块学习率权重",value=0.4,interactive=True)
|
||||
text_low_lr_rate = gr.Slider(minimum=0.2,maximum=0.6,step=0.05,label=i18n("文本模块学习率权重"),value=0.4,interactive=True)
|
||||
save_every_epoch = gr.Slider(minimum=1,maximum=50,step=1,label=i18n("保存频率save_every_epoch"),value=4,interactive=True)
|
||||
if_save_latest = gr.Checkbox(label=i18n("是否仅保存最新的ckpt文件以节省硬盘空间"), value=True, interactive=True, show_label=True)
|
||||
if_save_every_weights = gr.Checkbox(label=i18n("是否在每次保存时间点将最终小模型保存至weights文件夹"), value=True, interactive=True, show_label=True)
|
||||
gpu_numbers1Ba = gr.Textbox(label="GPU卡号以-分割,每个卡号一个进程", value="%s" % (gpus), interactive=True)
|
||||
gpu_numbers1Ba = gr.Textbox(label=i18n("GPU卡号以-分割,每个卡号一个进程"), value="%s" % (gpus), interactive=True)
|
||||
with gr.Row():
|
||||
button1Ba_open = gr.Button("开启SoVITS训练", variant="primary",visible=True)
|
||||
button1Ba_close = gr.Button("终止SoVITS训练", variant="primary",visible=False)
|
||||
info1Ba=gr.Textbox(label="SoVITS训练进程输出信息")
|
||||
gr.Markdown(value="1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。")
|
||||
button1Ba_open = gr.Button(i18n("开启SoVITS训练"), variant="primary",visible=True)
|
||||
button1Ba_close = gr.Button(i18n("终止SoVITS训练"), variant="primary",visible=False)
|
||||
info1Ba=gr.Textbox(label=i18n("SoVITS训练进程输出信息"))
|
||||
gr.Markdown(value=i18n("1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。"))
|
||||
with gr.Row():
|
||||
batch_size1Bb = gr.Slider(minimum=1,maximum=40,step=1,label=i18n("每张显卡的batch_size"),value=default_batch_size,interactive=True)
|
||||
total_epoch1Bb = gr.Slider(minimum=2,maximum=100,step=1,label=i18n("总训练轮数total_epoch"),value=15,interactive=True)
|
||||
if_save_latest1Bb = gr.Checkbox(label=i18n("是否仅保存最新的ckpt文件以节省硬盘空间"), value=True, interactive=True, show_label=True)
|
||||
if_save_every_weights1Bb = gr.Checkbox(label=i18n("是否在每次保存时间点将最终小模型保存至weights文件夹"), value=True, interactive=True, show_label=True)
|
||||
save_every_epoch1Bb = gr.Slider(minimum=1,maximum=50,step=1,label=i18n("保存频率save_every_epoch"),value=5,interactive=True)
|
||||
gpu_numbers1Bb = gr.Textbox(label="GPU卡号以-分割,每个卡号一个进程", value="%s" % (gpus), interactive=True)
|
||||
gpu_numbers1Bb = gr.Textbox(label=i18n("GPU卡号以-分割,每个卡号一个进程"), value="%s" % (gpus), interactive=True)
|
||||
with gr.Row():
|
||||
button1Bb_open = gr.Button("开启GPT训练", variant="primary",visible=True)
|
||||
button1Bb_close = gr.Button("终止GPT训练", variant="primary",visible=False)
|
||||
info1Bb=gr.Textbox(label="GPT训练进程输出信息")
|
||||
button1Bb_open = gr.Button(i18n("开启GPT训练"), variant="primary",visible=True)
|
||||
button1Bb_close = gr.Button(i18n("终止GPT训练"), variant="primary",visible=False)
|
||||
info1Bb=gr.Textbox(label=i18n("GPT训练进程输出信息"))
|
||||
button1Ba_open.click(open1Ba, [batch_size,total_epoch,exp_name,text_low_lr_rate,if_save_latest,if_save_every_weights,save_every_epoch,gpu_numbers1Ba,pretrained_s2G,pretrained_s2D], [info1Ba,button1Ba_open,button1Ba_close])
|
||||
button1Ba_close.click(close1Ba, [], [info1Ba,button1Ba_open,button1Ba_close])
|
||||
button1Bb_open.click(open1Bb, [batch_size1Bb,total_epoch1Bb,exp_name,if_save_latest1Bb,if_save_every_weights1Bb,save_every_epoch1Bb,gpu_numbers1Bb,pretrained_s1], [info1Bb,button1Bb_open,button1Bb_close])
|
||||
button1Bb_close.click(close1Bb, [], [info1Bb,button1Bb_open,button1Bb_close])
|
||||
with gr.TabItem("1C-推理"):
|
||||
gr.Markdown(value="选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。")
|
||||
with gr.TabItem(i18n("1C-推理")):
|
||||
gr.Markdown(value=i18n("选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。"))
|
||||
with gr.Row():
|
||||
GPT_dropdown = gr.Dropdown(label="*GPT模型列表", choices=sorted(GPT_names),value=pretrained_gpt_name)
|
||||
SoVITS_dropdown = gr.Dropdown(label="*SoVITS模型列表", choices=sorted(SoVITS_names),value=pretrained_sovits_name)
|
||||
gpu_number_1C=gr.Textbox(label="GPU卡号,只能填1个整数", value=gpus, interactive=True)
|
||||
refresh_button = gr.Button("刷新模型路径", variant="primary")
|
||||
GPT_dropdown = gr.Dropdown(label=i18n("*GPT模型列表"), choices=sorted(GPT_names),value=pretrained_gpt_name)
|
||||
SoVITS_dropdown = gr.Dropdown(label=i18n("*SoVITS模型列表"), choices=sorted(SoVITS_names),value=pretrained_sovits_name)
|
||||
gpu_number_1C=gr.Textbox(label=i18n("GPU卡号,只能填1个整数"), value=gpus, interactive=True)
|
||||
refresh_button = gr.Button(i18n("刷新模型路径"), variant="primary")
|
||||
refresh_button.click(fn=change_choices,inputs=[],outputs=[SoVITS_dropdown,GPT_dropdown])
|
||||
with gr.Row():
|
||||
if_tts = gr.Checkbox(label="是否开启TTS推理WebUI", show_label=True)
|
||||
tts_info = gr.Textbox(label="TTS推理WebUI进程输出信息")
|
||||
if_tts = gr.Checkbox(label=i18n("是否开启TTS推理WebUI"), show_label=True)
|
||||
tts_info = gr.Textbox(label=i18n("TTS推理WebUI进程输出信息"))
|
||||
if_tts.change(change_tts_inference, [if_tts,bert_pretrained_dir,cnhubert_base_dir,gpu_number_1C,GPT_dropdown,SoVITS_dropdown], [tts_info])
|
||||
with gr.TabItem("2-GPT-SoVITS-变声"):gr.Markdown(value="施工中,请静候佳音")
|
||||
with gr.TabItem(i18n("2-GPT-SoVITS-变声")):gr.Markdown(value=i18n("施工中,请静候佳音"))
|
||||
app.queue(concurrency_count=511, max_size=1022).launch(
|
||||
server_name="0.0.0.0",
|
||||
inbrowser=True,
|
||||
|
Loading…
x
Reference in New Issue
Block a user