mirror of
https://github.com/RVC-Boss/GPT-SoVITS.git
synced 2025-04-05 04:22:46 +08:00
parent
4e34814c70
commit
a3f5fb9614
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,4 +1,5 @@
|
||||
.DS_Store
|
||||
.vscode
|
||||
__pycache__
|
||||
*.pyc
|
||||
env
|
||||
@ -9,5 +10,7 @@ logs
|
||||
reference
|
||||
GPT_weights
|
||||
SoVITS_weights
|
||||
GPT_weights_v2
|
||||
SoVITS_weights_v2
|
||||
TEMP
|
||||
weight.json
|
||||
|
@ -15,6 +15,8 @@ from torch.utils.data import DataLoader
|
||||
from torch.utils.data import Dataset
|
||||
from transformers import AutoTokenizer
|
||||
|
||||
version = os.environ.get('version',None)
|
||||
|
||||
from text import cleaned_text_to_sequence
|
||||
|
||||
# from config import exp_dir
|
||||
@ -149,7 +151,7 @@ class Text2SemanticDataset(Dataset):
|
||||
phoneme = phoneme.split(" ")
|
||||
|
||||
try:
|
||||
phoneme_ids = cleaned_text_to_sequence(phoneme)
|
||||
phoneme_ids = cleaned_text_to_sequence(phoneme, version)
|
||||
except:
|
||||
traceback.print_exc()
|
||||
# print(f"{item_name} not in self.phoneme_data !")
|
||||
|
@ -18,14 +18,19 @@ import LangSegment, os, re, sys, json
|
||||
import pdb
|
||||
import torch
|
||||
|
||||
if len(sys.argv)==1:sys.argv.append('v1')
|
||||
version=os.environ.get("version","v1")
|
||||
version="v2"if sys.argv[1]=="v2" else version
|
||||
os.environ['version']=version
|
||||
language=os.environ.get("language","auto")
|
||||
language=sys.argv[-1] if len(sys.argv[-1])==5 else language
|
||||
pretrained_sovits_name="GPT_SoVITS/pretrained_models/s2G488k.pth"if version=="v1"else"GPT_SoVITS/pretrained_models/gsv-v2final-pretrained/s2G2333k.pth"
|
||||
pretrained_gpt_name="GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt"if version=="v1"else "GPT_SoVITS/pretrained_models/gsv-v2final-pretrained/s1bert25hz-5kh-longer-epoch=12-step=369668.ckpt"
|
||||
version=os.environ.get("version","v2")
|
||||
pretrained_sovits_name=["GPT_SoVITS/pretrained_models/gsv-v2final-pretrained/s2G2333k.pth", "GPT_SoVITS/pretrained_models/s2G488k.pth"]
|
||||
pretrained_gpt_name=["GPT_SoVITS/pretrained_models/gsv-v2final-pretrained/s1bert25hz-5kh-longer-epoch=12-step=369668.ckpt", "GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt"]
|
||||
|
||||
_ =[[],[]]
|
||||
for i in range(2):
|
||||
if os.path.exists(pretrained_gpt_name[i]):
|
||||
_[0].append(pretrained_gpt_name[i])
|
||||
if os.path.exists(pretrained_sovits_name[i]):
|
||||
_[-1].append(pretrained_sovits_name[i])
|
||||
pretrained_gpt_name,pretrained_sovits_name = _
|
||||
|
||||
|
||||
|
||||
if os.path.exists(f"./weight.json"):
|
||||
pass
|
||||
@ -39,7 +44,11 @@ with open(f"./weight.json", 'r', encoding="utf-8") as file:
|
||||
"gpt_path", weight_data.get('GPT',{}).get(version,pretrained_gpt_name))
|
||||
sovits_path = os.environ.get(
|
||||
"sovits_path", weight_data.get('SoVITS',{}).get(version,pretrained_sovits_name))
|
||||
|
||||
if isinstance(gpt_path,list):
|
||||
gpt_path = gpt_path[0]
|
||||
if isinstance(sovits_path,list):
|
||||
sovits_path = sovits_path[0]
|
||||
|
||||
# gpt_path = os.environ.get(
|
||||
# "gpt_path", pretrained_gpt_name
|
||||
# )
|
||||
@ -73,8 +82,10 @@ from text.cleaner import clean_text
|
||||
from time import time as ttime
|
||||
from module.mel_processing import spectrogram_torch
|
||||
from tools.my_utils import load_audio
|
||||
from tools.i18n.i18n import I18nAuto
|
||||
from tools.i18n.i18n import I18nAuto, scan_language_list
|
||||
|
||||
language=os.environ.get("language","auto")
|
||||
language=sys.argv[-1] if sys.argv[-1] in scan_language_list() else language
|
||||
if language != 'auto':
|
||||
i18n = I18nAuto(language=language)
|
||||
else:
|
||||
@ -87,6 +98,29 @@ if torch.cuda.is_available():
|
||||
else:
|
||||
device = "cpu"
|
||||
|
||||
dict_language_v1 = {
|
||||
i18n("中文"): "all_zh",#全部按中文识别
|
||||
i18n("英文"): "en",#全部按英文识别#######不变
|
||||
i18n("日文"): "all_ja",#全部按日文识别
|
||||
i18n("中英混合"): "zh",#按中英混合识别####不变
|
||||
i18n("日英混合"): "ja",#按日英混合识别####不变
|
||||
i18n("多语种混合"): "auto",#多语种启动切分识别语种
|
||||
}
|
||||
dict_language_v2 = {
|
||||
i18n("中文"): "all_zh",#全部按中文识别
|
||||
i18n("英文"): "en",#全部按英文识别#######不变
|
||||
i18n("日文"): "all_ja",#全部按日文识别
|
||||
i18n("粤语"): "all_yue",#全部按中文识别
|
||||
i18n("韩文"): "all_ko",#全部按韩文识别
|
||||
i18n("中英混合"): "zh",#按中英混合识别####不变
|
||||
i18n("日英混合"): "ja",#按日英混合识别####不变
|
||||
i18n("粤英混合"): "yue",#按粤英混合识别####不变
|
||||
i18n("韩英混合"): "ko",#按韩英混合识别####不变
|
||||
i18n("多语种混合"): "auto",#多语种启动切分识别语种
|
||||
i18n("多语种混合(粤语)"): "auto_yue",#多语种启动切分识别语种
|
||||
}
|
||||
dict_language = dict_language_v1 if version =='v1' else dict_language_v2
|
||||
|
||||
tokenizer = AutoTokenizer.from_pretrained(bert_path)
|
||||
bert_model = AutoModelForMaskedLM.from_pretrained(bert_path)
|
||||
if is_half == True:
|
||||
@ -146,8 +180,8 @@ else:
|
||||
ssl_model = ssl_model.to(device)
|
||||
|
||||
|
||||
def change_sovits_weights(sovits_path):
|
||||
global vq_model, hps
|
||||
def change_sovits_weights(sovits_path,prompt_language=None,text_language=None):
|
||||
global vq_model, hps, version, dict_language
|
||||
dict_s2 = torch.load(sovits_path, map_location="cpu")
|
||||
hps = dict_s2["config"]
|
||||
hps = DictToAttrRecursive(hps)
|
||||
@ -156,6 +190,7 @@ def change_sovits_weights(sovits_path):
|
||||
hps.model.version = "v1"
|
||||
else:
|
||||
hps.model.version = "v2"
|
||||
version = hps.model.version
|
||||
# print("sovits版本:",hps.model.version)
|
||||
vq_model = SynthesizerTrn(
|
||||
hps.data.filter_length // 2 + 1,
|
||||
@ -171,11 +206,25 @@ def change_sovits_weights(sovits_path):
|
||||
vq_model = vq_model.to(device)
|
||||
vq_model.eval()
|
||||
print(vq_model.load_state_dict(dict_s2["weight"], strict=False))
|
||||
dict_language = dict_language_v1 if version =='v1' else dict_language_v2
|
||||
with open("./weight.json")as f:
|
||||
data=f.read()
|
||||
data=json.loads(data)
|
||||
data["SoVITS"][version]=sovits_path
|
||||
data=f.read()
|
||||
data=json.loads(data)
|
||||
data["SoVITS"][version]=sovits_path
|
||||
with open("./weight.json","w")as f:f.write(json.dumps(data))
|
||||
if prompt_language is not None and text_language is not None:
|
||||
if prompt_language in list(dict_language.keys()):
|
||||
prompt_text_update, prompt_language_update = {'__type__':'update'}, {'__type__':'update', 'value':prompt_language}
|
||||
else:
|
||||
prompt_text_update = {'__type__':'update', 'value':''}
|
||||
prompt_language_update = {'__type__':'update', 'value':i18n("中文")}
|
||||
if text_language in list(dict_language.keys()):
|
||||
text_update, text_language_update = {'__type__':'update'}, {'__type__':'update', 'value':text_language}
|
||||
else:
|
||||
text_update = {'__type__':'update', 'value':''}
|
||||
text_language_update = {'__type__':'update', 'value':i18n("中文")}
|
||||
return {'__type__':'update', 'choices':list(dict_language.keys())}, {'__type__':'update', 'choices':list(dict_language.keys())}, prompt_text_update, prompt_language_update, text_update, text_language_update
|
||||
|
||||
|
||||
|
||||
change_sovits_weights(sovits_path)
|
||||
@ -196,9 +245,9 @@ def change_gpt_weights(gpt_path):
|
||||
total = sum([param.nelement() for param in t2s_model.parameters()])
|
||||
print("Number of parameter: %.2fM" % (total / 1e6))
|
||||
with open("./weight.json")as f:
|
||||
data=f.read()
|
||||
data=json.loads(data)
|
||||
data["GPT"][version]=gpt_path
|
||||
data=f.read()
|
||||
data=json.loads(data)
|
||||
data["GPT"][version]=gpt_path
|
||||
with open("./weight.json","w")as f:f.write(json.dumps(data))
|
||||
|
||||
|
||||
@ -220,22 +269,6 @@ def get_spepc(hps, filename):
|
||||
)
|
||||
return spec
|
||||
|
||||
|
||||
dict_language = {
|
||||
i18n("中文"): "all_zh",#全部按中文识别
|
||||
i18n("粤语"): "all_yue",#全部按中文识别
|
||||
i18n("英文"): "en",#全部按英文识别#######不变
|
||||
i18n("日文"): "all_ja",#全部按日文识别
|
||||
i18n("韩文"): "all_ko",#全部按韩文识别
|
||||
i18n("中英混合"): "zh",#按中英混合识别####不变
|
||||
i18n("粤英混合"): "yue",#按粤英混合识别####不变
|
||||
i18n("日英混合"): "ja",#按日英混合识别####不变
|
||||
i18n("韩英混合"): "ko",#按韩英混合识别####不变
|
||||
i18n("多语种混合"): "auto",#多语种启动切分识别语种
|
||||
i18n("多语种混合(粤语)"): "auto_yue",#多语种启动切分识别语种
|
||||
}
|
||||
|
||||
|
||||
def clean_text_inf(text, language, version):
|
||||
phones, word2ph, norm_text = clean_text(text, language, version)
|
||||
phones = cleaned_text_to_sequence(phones, version)
|
||||
@ -363,7 +396,6 @@ def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language,
|
||||
prompt_language = dict_language[prompt_language]
|
||||
text_language = dict_language[text_language]
|
||||
|
||||
version = vq_model.version
|
||||
|
||||
if not ref_free:
|
||||
prompt_text = prompt_text.strip("\n")
|
||||
@ -599,29 +631,29 @@ def process_text(texts):
|
||||
|
||||
|
||||
def change_choices():
|
||||
SoVITS_names, GPT_names = get_weights_names()
|
||||
SoVITS_names, GPT_names = get_weights_names(GPT_weight_root, SoVITS_weight_root)
|
||||
return {"choices": sorted(SoVITS_names, key=custom_sort_key), "__type__": "update"}, {"choices": sorted(GPT_names, key=custom_sort_key), "__type__": "update"}
|
||||
|
||||
|
||||
SoVITS_weight_root="SoVITS_weights_v2" if version=='v2' else "SoVITS_weights"
|
||||
GPT_weight_root="GPT_weights_v2" if version=='v2' else "GPT_weights"
|
||||
os.makedirs("SoVITS_weights",exist_ok=True)
|
||||
os.makedirs("GPT_weights",exist_ok=True)
|
||||
os.makedirs("SoVITS_weights_v2",exist_ok=True)
|
||||
os.makedirs("GPT_weights_v2",exist_ok=True)
|
||||
SoVITS_weight_root=["SoVITS_weights_v2","SoVITS_weights"]
|
||||
GPT_weight_root=["GPT_weights_v2","GPT_weights"]
|
||||
for path in SoVITS_weight_root+GPT_weight_root:
|
||||
os.makedirs(path,exist_ok=True)
|
||||
|
||||
|
||||
def get_weights_names():
|
||||
SoVITS_names = [pretrained_sovits_name]
|
||||
for name in os.listdir(SoVITS_weight_root):
|
||||
if name.endswith(".pth"): SoVITS_names.append("%s/%s" % (SoVITS_weight_root, name))
|
||||
GPT_names = [pretrained_gpt_name]
|
||||
for name in os.listdir(GPT_weight_root):
|
||||
if name.endswith(".ckpt"): GPT_names.append("%s/%s" % (GPT_weight_root, name))
|
||||
def get_weights_names(GPT_weight_root, SoVITS_weight_root):
|
||||
SoVITS_names = [i for i in pretrained_sovits_name]
|
||||
for path in SoVITS_weight_root:
|
||||
for name in os.listdir(path):
|
||||
if name.endswith(".pth"): SoVITS_names.append("%s/%s" % (path, name))
|
||||
GPT_names = [i for i in pretrained_gpt_name]
|
||||
for path in GPT_weight_root:
|
||||
for name in os.listdir(path):
|
||||
if name.endswith(".ckpt"): GPT_names.append("%s/%s" % (path, name))
|
||||
return SoVITS_names, GPT_names
|
||||
|
||||
|
||||
SoVITS_names, GPT_names = get_weights_names()
|
||||
SoVITS_names, GPT_names = get_weights_names(GPT_weight_root, SoVITS_weight_root)
|
||||
|
||||
def html_center(text, label='p'):
|
||||
return f"""<div style="text-align: center; margin: 100; padding: 50;">
|
||||
@ -633,6 +665,7 @@ def html_left(text, label='p'):
|
||||
<{label} style="margin: 0; padding: 0;">{text}</{label}>
|
||||
</div>"""
|
||||
|
||||
|
||||
with gr.Blocks(title="GPT-SoVITS WebUI") as app:
|
||||
gr.Markdown(
|
||||
value=i18n("本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.")
|
||||
@ -640,21 +673,19 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app:
|
||||
with gr.Group():
|
||||
gr.Markdown(html_center(i18n("模型切换"),'h3'))
|
||||
with gr.Row():
|
||||
GPT_dropdown = gr.Dropdown(label=i18n("GPT模型列表"), choices=sorted(GPT_names, key=custom_sort_key), value=gpt_path, interactive=True,scale=13)
|
||||
SoVITS_dropdown = gr.Dropdown(label=i18n("SoVITS模型列表"), choices=sorted(SoVITS_names, key=custom_sort_key), value=sovits_path, interactive=True,scale=13)
|
||||
refresh_button = gr.Button(i18n("刷新模型路径"), variant="primary",scale=13)
|
||||
GPT_dropdown = gr.Dropdown(label=i18n("GPT模型列表"), choices=sorted(GPT_names, key=custom_sort_key), value=gpt_path, interactive=True, scale=14)
|
||||
SoVITS_dropdown = gr.Dropdown(label=i18n("SoVITS模型列表"), choices=sorted(SoVITS_names, key=custom_sort_key), value=sovits_path, interactive=True, scale=14)
|
||||
refresh_button = gr.Button(i18n("刷新模型路径"), variant="primary", scale=14)
|
||||
refresh_button.click(fn=change_choices, inputs=[], outputs=[SoVITS_dropdown, GPT_dropdown])
|
||||
SoVITS_dropdown.change(change_sovits_weights, [SoVITS_dropdown], [])
|
||||
GPT_dropdown.change(change_gpt_weights, [GPT_dropdown], [])
|
||||
gr.Markdown(html_center(i18n("*请上传并填写参考信息"),'h3'))
|
||||
with gr.Row():
|
||||
inp_ref = gr.Audio(label=i18n("请上传3~10秒内参考音频,超过会报错!"), type="filepath",scale=13)
|
||||
inp_ref = gr.Audio(label=i18n("请上传3~10秒内参考音频,超过会报错!"), type="filepath", scale=13)
|
||||
with gr.Column(scale=13):
|
||||
ref_text_free = gr.Checkbox(label=i18n("开启无参考文本模式。不填参考文本亦相当于开启。"), value=False, interactive=True, show_label=True)
|
||||
gr.Markdown(html_left(i18n("使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。")))
|
||||
prompt_text = gr.Textbox(label=i18n("参考音频的文本"), value="", lines=3, max_lines=3)
|
||||
prompt_language = gr.Dropdown(
|
||||
label=i18n("参考音频的语种"), choices=list(dict_language.keys()), value=i18n("中文"),scale=14
|
||||
label=i18n("参考音频的语种"), choices=list(dict_language.keys()), value=i18n("中文"), scale=14
|
||||
)
|
||||
gr.Markdown(html_center(i18n("*请填写需要合成的目标文本和语种模式"),'h3'))
|
||||
with gr.Row():
|
||||
@ -683,13 +714,15 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app:
|
||||
# get_phoneme_button = gr.Button(i18n("目标文本转音素"), variant="primary")
|
||||
with gr.Row():
|
||||
inference_button = gr.Button(i18n("合成语音"), variant="primary", size='lg', scale=25)
|
||||
output = gr.Audio(label=i18n("输出的语音"),scale=14)
|
||||
output = gr.Audio(label=i18n("输出的语音"), scale=14)
|
||||
|
||||
inference_button.click(
|
||||
get_tts_wav,
|
||||
[inp_ref, prompt_text, prompt_language, text, text_language, how_to_cut, top_k, top_p, temperature, ref_text_free,speed,if_freeze],
|
||||
[output],
|
||||
)
|
||||
SoVITS_dropdown.change(change_sovits_weights, [SoVITS_dropdown,prompt_language,text_language], [prompt_language,text_language,prompt_text,prompt_language,text,text_language])
|
||||
GPT_dropdown.change(change_gpt_weights, [GPT_dropdown], [])
|
||||
|
||||
# gr.Markdown(value=i18n("文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。"))
|
||||
# with gr.Row():
|
||||
|
@ -18,7 +18,7 @@ import requests
|
||||
from scipy.io import wavfile
|
||||
from io import BytesIO
|
||||
from tools.my_utils import load_audio
|
||||
|
||||
version = os.environ.get('version',None)
|
||||
# ZeroDivisionError fixed by Tybost (https://github.com/RVC-Boss/GPT-SoVITS/issues/79)
|
||||
class TextAudioSpeakerLoader(torch.utils.data.Dataset):
|
||||
"""
|
||||
@ -77,7 +77,7 @@ class TextAudioSpeakerLoader(torch.utils.data.Dataset):
|
||||
try:
|
||||
phoneme = self.phoneme_data[audiopath][0]
|
||||
phoneme = phoneme.split(' ')
|
||||
phoneme_ids = cleaned_text_to_sequence(phoneme)
|
||||
phoneme_ids = cleaned_text_to_sequence(phoneme, version)
|
||||
except Exception:
|
||||
print(f"{audiopath} not in self.phoneme_data !")
|
||||
skipped_phone += 1
|
||||
|
@ -12,6 +12,7 @@ opt_dir = os.environ.get("opt_dir")
|
||||
bert_pretrained_dir = os.environ.get("bert_pretrained_dir")
|
||||
import torch
|
||||
is_half = eval(os.environ.get("is_half", "True")) and torch.cuda.is_available()
|
||||
version = os.environ.get('version', None)
|
||||
import sys, numpy as np, traceback, pdb
|
||||
import os.path
|
||||
from glob import glob
|
||||
@ -84,7 +85,7 @@ if os.path.exists(txt_path) == False:
|
||||
name = os.path.basename(name)
|
||||
print(name)
|
||||
phones, word2ph, norm_text = clean_text(
|
||||
text.replace("%", "-").replace("¥", ","), lan
|
||||
text.replace("%", "-").replace("¥", ","), lan, version
|
||||
)
|
||||
path_bert = "%s/%s.pt" % (bert_dir, name)
|
||||
if os.path.exists(path_bert) == False and lan == "zh":
|
||||
|
@ -8,6 +8,7 @@ os.environ["CUDA_VISIBLE_DEVICES"] = os.environ.get("_CUDA_VISIBLE_DEVICES")
|
||||
opt_dir = os.environ.get("opt_dir")
|
||||
pretrained_s2G = os.environ.get("pretrained_s2G")
|
||||
s2config_path = os.environ.get("s2config_path")
|
||||
version=os.environ.get("version","v2")
|
||||
import torch
|
||||
is_half = eval(os.environ.get("is_half", "True")) and torch.cuda.is_available()
|
||||
import math, traceback
|
||||
@ -50,6 +51,7 @@ if os.path.exists(semantic_path) == False:
|
||||
hps.data.filter_length // 2 + 1,
|
||||
hps.train.segment_size // hps.data.hop_length,
|
||||
n_speakers=hps.data.n_speakers,
|
||||
version=version,
|
||||
**hps.model
|
||||
)
|
||||
if is_half == True:
|
||||
|
3
GPT_SoVITS/text/.gitignore
vendored
3
GPT_SoVITS/text/.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
G2PWModel
|
||||
__pycache__
|
||||
__pycache__
|
||||
*.zip
|
@ -10,13 +10,14 @@ from text import symbols2 as symbols_v2
|
||||
_symbol_to_id_v1 = {s: i for i, s in enumerate(symbols_v1.symbols)}
|
||||
_symbol_to_id_v2 = {s: i for i, s in enumerate(symbols_v2.symbols)}
|
||||
|
||||
def cleaned_text_to_sequence(cleaned_text, version):
|
||||
def cleaned_text_to_sequence(cleaned_text, version=None):
|
||||
'''Converts a string of text to a sequence of IDs corresponding to the symbols in the text.
|
||||
Args:
|
||||
text: string to convert to a sequence
|
||||
Returns:
|
||||
List of integers corresponding to the symbols in the text
|
||||
'''
|
||||
if version is None:version=os.environ.get('version', 'v2')
|
||||
if version == "v1":
|
||||
phones = [_symbol_to_id_v1[symbol] for symbol in cleaned_text]
|
||||
else:
|
||||
|
@ -20,7 +20,8 @@ special = [
|
||||
]
|
||||
|
||||
|
||||
def clean_text(text, language, version):
|
||||
def clean_text(text, language, version=None):
|
||||
if version is None:version=os.environ.get('version', 'v2')
|
||||
if version == "v1":
|
||||
symbols = symbols_v1.symbols
|
||||
language_module_map = {"zh": chinese_v1, "ja": japanese, "en": english}
|
||||
@ -57,7 +58,8 @@ def clean_text(text, language, version):
|
||||
return phones, word2ph, norm_text
|
||||
|
||||
|
||||
def clean_special(text, language, special_s, target_symbol, version):
|
||||
def clean_special(text, language, special_s, target_symbol, version=None):
|
||||
if version is None:version=os.environ.get('version', 'v2')
|
||||
if version == "v1":
|
||||
symbols = symbols_v1.symbols
|
||||
language_module_map = {"zh": chinese_v1, "ja": japanese, "en": english}
|
||||
@ -82,9 +84,11 @@ def clean_special(text, language, special_s, target_symbol, version):
|
||||
return new_ph, phones[1], norm_text
|
||||
|
||||
|
||||
def text_to_sequence(text, language):
|
||||
def text_to_sequence(text, language, version=None):
|
||||
version = os.environ.get('version',version)
|
||||
if version is None:version='v2'
|
||||
phones = clean_text(text)
|
||||
return cleaned_text_to_sequence(phones)
|
||||
return cleaned_text_to_sequence(phones, version)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
1
api.py
1
api.py
@ -522,6 +522,7 @@ def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language,
|
||||
prompt_semantic = codes[0, 0]
|
||||
t1 = ttime()
|
||||
version = vq_model.version
|
||||
os.environ['version'] = version
|
||||
prompt_language = dict_language[prompt_language.lower()]
|
||||
text_language = dict_language[text_language.lower()]
|
||||
phones1, bert1, norm_text1 = get_phones_and_bert(prompt_text, prompt_language, version)
|
||||
|
@ -31,7 +31,7 @@ rotary_embedding_torch
|
||||
pyjyutping
|
||||
g2pk2
|
||||
ko_pron
|
||||
opencc; sys_platform == 'win32'
|
||||
opencc==1.1.1; sys_platform != 'win32'
|
||||
opencc; sys_platform != 'linux'
|
||||
opencc==1.1.1; sys_platform == 'linux'
|
||||
eunjeon; sys_platform == 'win32'
|
||||
python_mecab_ko; sys_platform != 'win32'
|
||||
|
@ -9,6 +9,12 @@ def load_language_list(language):
|
||||
language_list = json.load(f)
|
||||
return language_list
|
||||
|
||||
def scan_language_list():
|
||||
language_list = []
|
||||
for name in os.listdir(I18N_JSON_DIR):
|
||||
if name.endswith(".json"):language_list.append(name.split('.')[0])
|
||||
return language_list
|
||||
|
||||
class I18nAuto:
|
||||
def __init__(self, language=None):
|
||||
if language in ["Auto", None]:
|
||||
|
@ -34,11 +34,11 @@
|
||||
"3、去混响、去延迟模型(by FoxJoy):": "3. Reverberation and delay removal model(by FoxJoy):",
|
||||
"ASR 模型": "ASR model",
|
||||
"ASR 模型尺寸": "ASR model size",
|
||||
"数据类型精度": "Computing precision",
|
||||
"ASR 语言设置": "ASR language",
|
||||
"ASR进程输出信息": "ASR output log",
|
||||
"GPT模型列表": "GPT weight list",
|
||||
"GPT训练进程输出信息": "GPT training output log",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT sampling parameters (not too low when there's no reference text. Use default if unsure):",
|
||||
"GPU卡号,只能填1个整数": "GPU number, can only input ONE integer",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "GPU number is separated by -, each GPU will run one process ",
|
||||
"SSL进程输出信息": "SSL output log",
|
||||
@ -51,7 +51,6 @@
|
||||
"UVR5已开启": "UVR5 opened ",
|
||||
"UVR5进程输出信息": "UVR5 process output log",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: proportion of normalized audio merged into dataset",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT sampling parameters (not too low when there's no reference text. Use default if unsure):",
|
||||
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size: FO hop size, the smaller the value, the higher the accuracy)",
|
||||
"max:归一化后最大值多少": "Loudness multiplier after normalized",
|
||||
"max_sil_kept:切完后静音最多留多长": "Maximum length for silence to be kept",
|
||||
@ -69,12 +68,12 @@
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "Multiple audio files can also be imported. If a folder path exists, this input is ignored.",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。": "Batch processing for vocal and instrumental separation, using the UVR5 model.",
|
||||
"人声提取激进程度": "Vocal extraction aggressiveness",
|
||||
"以下模型不存在:": "No Such Model:",
|
||||
"伴奏人声分离&去混响&去回声": "Vocals/Accompaniment Separation & Reverberation Removal",
|
||||
"使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "When using the no-reference text mode, it is recommended to use a fine-tuned GPT. If the reference audio is unclear and you don't know what to write, you can enable this feature, which will ignore the reference text you've entered.",
|
||||
"保存频率save_every_epoch": "Save frequency (save_every_epoch):",
|
||||
"凑50字一切": "Slice per 50 characters",
|
||||
"凑四句一切": "Slice once every 4 sentences",
|
||||
"切分后文本": "Text after sliced",
|
||||
"切分后的子音频的输出根目录": "Audio slicer output folder",
|
||||
"切割使用的进程数": "CPU threads used for audio slicing",
|
||||
"刷新模型路径": "refreshing model paths",
|
||||
@ -85,9 +84,9 @@
|
||||
"参考音频的语种": "Language for reference audio",
|
||||
"合成语音": "Start inference",
|
||||
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "An example of a valid folder path format: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例 (simply copy the address from the file manager's address bar).",
|
||||
"后续将支持转音素、手工修改音素、语音合成分步执行。": " Step-to-step phoneme transformation and modification coming soon!",
|
||||
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。": "Please fill in the segmented audio files' directory! The full path of the audio file = the directory concatenated with the filename corresponding to the waveform in the list file (not the full path). If left blank, the absolute full path in the .list file will be used.",
|
||||
"多语种混合": "Multilingual Mixed",
|
||||
"多语种混合(粤语)": "Multilingual Mixed(Yue)",
|
||||
"实际输入的参考文本:": "Actual Input Reference Text:",
|
||||
"实际输入的目标文本(切句后):": "Actual Input Target Text (after sentence segmentation):",
|
||||
"实际输入的目标文本(每句):": "Actual Input Target Text (per sentence):",
|
||||
@ -114,7 +113,7 @@
|
||||
"按中文句号。切": "Slice by Chinese punct",
|
||||
"按标点符号切": "Slice by every punct",
|
||||
"按英文句号.切": "Slice by English punct",
|
||||
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "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.",
|
||||
"数据类型精度": "Computing precision",
|
||||
"文本模块学习率权重": "Text model learning rate weighting",
|
||||
"文本进程输出信息": "Text processing output",
|
||||
"施工中,请静候佳音": "In construction, please wait",
|
||||
@ -133,6 +132,9 @@
|
||||
"模型分为三类:": "Models are categorized into three types:",
|
||||
"模型切换": "Model switch",
|
||||
"每张显卡的batch_size": "Batch size per GPU:",
|
||||
"版本": "Version",
|
||||
"粤英混合": "Yue-English Mixed",
|
||||
"粤语": "Yue",
|
||||
"终止ASR进程": "Stop ASR task",
|
||||
"终止GPT训练": "Stop GPT training",
|
||||
"终止SSL提取进程": "Stop SSL extraction",
|
||||
@ -160,9 +162,10 @@
|
||||
"选择训练完存放在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.",
|
||||
"降噪结果输出文件夹": "Denoised Results Output Folder",
|
||||
"降噪音频文件输入文件夹": "Denoising Audio File Input Folder",
|
||||
"需要合成的切分前文本": "Inference text that needs to be sliced",
|
||||
"需要合成的文本": "Inference text",
|
||||
"需要合成的语种": "Inference text language",
|
||||
"韩文": "Korean",
|
||||
"韩英混合": "Korean-English Mixed",
|
||||
"音频自动切分输入路径,可文件可文件夹": "Audio slicer input (file or folder)",
|
||||
"预训练的GPT模型路径": "Pretrained GPT model path",
|
||||
"预训练的SSL模型路径": "Pretrained SSL model path",
|
||||
|
@ -34,11 +34,11 @@
|
||||
"3、去混响、去延迟模型(by FoxJoy):": "3. Modelos de eliminación de reverberación y retardo (por FoxJoy)",
|
||||
"ASR 模型": "Modelo ASR",
|
||||
"ASR 模型尺寸": "Tamaño del modelo ASR",
|
||||
"数据类型精度": "precisión del tipo de datos",
|
||||
"ASR 语言设置": "Configuración del idioma ASR",
|
||||
"ASR进程输出信息": "Información de salida del proceso ASR",
|
||||
"GPT模型列表": "Lista de modelos GPT",
|
||||
"GPT训练进程输出信息": "Información de salida del proceso de entrenamiento de GPT",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "Parámetros de muestreo de GPT (no demasiado bajos cuando no hay texto de referencia. Use los valores por defecto si no está seguro):",
|
||||
"GPU卡号,只能填1个整数": "Número de tarjeta GPU, solo se puede ingresar un número entero",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "Número de tarjeta GPU separado por '-', cada número de tarjeta es un proceso",
|
||||
"SSL进程输出信息": "Información de salida del proceso SSL",
|
||||
@ -51,7 +51,6 @@
|
||||
"UVR5已开启": "UVR5 está habilitado",
|
||||
"UVR5进程输出信息": "Información de salida del proceso UVR5",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: proporción de mezcla de audio normalizado que entra",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "Parámetros de muestreo de GPT (no demasiado bajos cuando no hay texto de referencia. Use los valores por defecto si no está seguro):",
|
||||
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size: cómo calcular la curva de volumen, cuanto más pequeño, mayor precisión pero mayor carga computacional (mayor precisión no significa mejor rendimiento)",
|
||||
"max:归一化后最大值多少": "max: valor máximo después de la normalización",
|
||||
"max_sil_kept:切完后静音最多留多长": "max_sil_kept: duración máxima del silencio después del corte",
|
||||
@ -69,12 +68,12 @@
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "También se pueden ingresar archivos de audio por lotes, seleccionar uno, prioridad para leer carpetas",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。": "Procesamiento por lotes de separación de voz y acompañamiento utilizando el modelo UVR5",
|
||||
"人声提取激进程度": "Nivel de agresividad en la extracción de voz",
|
||||
"以下模型不存在:": "No Existe tal Modelo:",
|
||||
"伴奏人声分离&去混响&去回声": "Separación de acompañamiento y voz principal y eliminación de reverberación y eco",
|
||||
"使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "Se recomienda usar un GPT ajustado en modo sin texto de referencia; habilítelo si no puede entender el audio de referencia (si no sabe qué escribir). Una vez habilitado, ignorará el texto de referencia ingresado.",
|
||||
"保存频率save_every_epoch": "Frecuencia de guardado (cada epoch)",
|
||||
"凑50字一切": "Todo para alcanzar las 50 palabras",
|
||||
"凑四句一切": "Completa cuatro oraciones para rellenar todo",
|
||||
"切分后文本": "Texto después de la división",
|
||||
"切分后的子音频的输出根目录": "Directorio raíz de salida de los sub-audios después de la división",
|
||||
"切割使用的进程数": "Número de procesos utilizados para la división",
|
||||
"刷新模型路径": "Actualizar la ruta del modelo",
|
||||
@ -85,9 +84,9 @@
|
||||
"参考音频的语种": "Idioma del audio de referencia",
|
||||
"合成语音": "Síntesis de voz",
|
||||
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "Ejemplo de formato de ruta de carpeta válida: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例 (simplemente copie desde la barra de direcciones del administrador de archivos).",
|
||||
"后续将支持转音素、手工修改音素、语音合成分步执行。": "En el futuro se admitirá la conversión de fonemas, la modificación manual de fonemas y la síntesis de voz paso a paso.",
|
||||
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。": "Ingrese el directorio donde se encuentran los audios después de la división. La ruta completa de los archivos de audio leídos = este directorio + nombre de archivo correspondiente en el archivo .list (no la ruta completa). Si se deja en blanco, se utilizará la ruta completa del archivo .list.",
|
||||
"多语种混合": "Mezcla de varios idiomas",
|
||||
"多语种混合(粤语)": "Mezcla Multilingüe (Cantonés)",
|
||||
"实际输入的参考文本:": "Texto de referencia realmente ingresado:",
|
||||
"实际输入的目标文本(切句后):": "Texto objetivo realmente ingresado (después de dividir en frases):",
|
||||
"实际输入的目标文本(每句):": "Texto objetivo realmente ingresado (por frase):",
|
||||
@ -114,7 +113,7 @@
|
||||
"按中文句号。切": "Cortar según puntos en chino",
|
||||
"按标点符号切": "Cortar según los signos de puntuación",
|
||||
"按英文句号.切": "Cortar por puntos en inglés.",
|
||||
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "Herramienta de división de texto. El resultado de la síntesis puede no ser bueno para textos demasiado largos, por lo que se recomienda dividirlos primero. La síntesis se realiza separando el texto según los saltos de línea y luego uniendo los fragmentos.",
|
||||
"数据类型精度": "precisión del tipo de datos",
|
||||
"文本模块学习率权重": "Peso de la tasa de aprendizaje del módulo de texto",
|
||||
"文本进程输出信息": "Información de salida del proceso de obtención de texto",
|
||||
"施工中,请静候佳音": "En construcción, por favor espere pacientemente",
|
||||
@ -133,6 +132,9 @@
|
||||
"模型分为三类:": "Los modelos se dividen en tres categorías:",
|
||||
"模型切换": "Cambio de modelo",
|
||||
"每张显卡的batch_size": "Tamaño de lote por tarjeta gráfica",
|
||||
"版本": "Versión",
|
||||
"粤英混合": "Mezcla Cantonés-Inglés",
|
||||
"粤语": "Cantonés",
|
||||
"终止ASR进程": "Terminar el proceso ASR",
|
||||
"终止GPT训练": "Detener entrenamiento de GPT",
|
||||
"终止SSL提取进程": "Terminar el proceso de extracción SSL",
|
||||
@ -160,9 +162,10 @@
|
||||
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。": "Seleccione el modelo almacenado en SoVITS_weights y GPT_weights después del entrenamiento. Uno de ellos es el modelo base, útil para experimentar con TTS de 5 segundos sin entrenamiento.",
|
||||
"降噪结果输出文件夹": "Carpeta de salida de los resultados de reducción de ruido",
|
||||
"降噪音频文件输入文件夹": "Carpeta de entrada de archivos de audio para reducción de ruido",
|
||||
"需要合成的切分前文本": "Texto a sintetizar antes de la división",
|
||||
"需要合成的文本": "Texto a sintetizar",
|
||||
"需要合成的语种": "Idioma para la síntesis",
|
||||
"韩文": "Coreano",
|
||||
"韩英混合": "Mezcla Coreano-Inglés",
|
||||
"音频自动切分输入路径,可文件可文件夹": "Ruta de entrada para la división automática de audio, puede ser un archivo o una carpeta",
|
||||
"预训练的GPT模型路径": "Ruta del modelo GPT preentrenado",
|
||||
"预训练的SSL模型路径": "Ruta del modelo SSL preentrenado",
|
||||
|
@ -34,11 +34,11 @@
|
||||
"3、去混响、去延迟模型(by FoxJoy):": "3. Modèle de suppression de réverbération et de retard (par FoxJoy) :",
|
||||
"ASR 模型": "Modèle ASR",
|
||||
"ASR 模型尺寸": "Taille du modèle ASR",
|
||||
"数据类型精度": "précision du type de données",
|
||||
"ASR 语言设置": "Paramètres de langue ASR",
|
||||
"ASR进程输出信息": "Informations de processus ASR",
|
||||
"GPT模型列表": "Liste des modèles GPT",
|
||||
"GPT训练进程输出信息": "Informations de processus d'entraînement GPT",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "Paramètres d'échantillonnage de GPT (ne pas mettre trop bas lorsqu'il n'y a pas de texte de référence. Utilisez les valeurs par défaut si vous n'êtes pas sûr):",
|
||||
"GPU卡号,只能填1个整数": "Numéro de carte GPU, ne peut contenir qu'un seul entier",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "Numéro de carte GPU séparé par des tirets, un processus par numéro de carte",
|
||||
"SSL进程输出信息": "Informations de processus SSL",
|
||||
@ -51,7 +51,6 @@
|
||||
"UVR5已开启": "UVR5 est activé",
|
||||
"UVR5进程输出信息": "Informations de processus UVR5",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: proportion d'audio normalisé mélangé",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "Paramètres d'échantillonnage de GPT (ne pas mettre trop bas lorsqu'il n'y a pas de texte de référence. Utilisez les valeurs par défaut si vous n'êtes pas sûr):",
|
||||
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size: comment calculer la courbe de volume, plus petit pour une précision plus élevée mais une charge de calcul plus élevée (ce n'est pas une meilleure précision)",
|
||||
"max:归一化后最大值多少": "max: valeur maximale après normalisation",
|
||||
"max_sil_kept:切完后静音最多留多长": "max_sil_kept: durée maximale de silence après la coupe",
|
||||
@ -69,12 +68,12 @@
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "Également possible d'entrer en lot des fichiers audio, au choix, privilégiez la lecture du dossier",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。": "Traitement par lot de séparation voix-accompagnement en utilisant le modèle UVR5.",
|
||||
"人声提取激进程度": "Degré d'extraction des voix",
|
||||
"以下模型不存在:": "Aucun Modèle de ce Type:",
|
||||
"伴奏人声分离&去混响&去回声": "Séparation de la voix et de l'accompagnement, suppression de la réverbération et de l'écho",
|
||||
"使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "Il est recommandé d'utiliser GPT finement ajusté en mode sans texte de référence. Si vous ne comprenez pas ce que dit l'audio de référence (vous ne savez pas quoi écrire), vous pouvez l'activer ; une fois activé, ignorez le texte de référence saisi.",
|
||||
"保存频率save_every_epoch": "Fréquence de sauvegarde (sauvegarder à chaque époque)",
|
||||
"凑50字一切": "Assembler 50 mots tout",
|
||||
"凑四句一切": "Composez quatre phrases pour tout remplir",
|
||||
"切分后文本": "Texte après découpage",
|
||||
"切分后的子音频的输出根目录": "Répertoire racine de sortie des sous-audios après découpage",
|
||||
"切割使用的进程数": "Nombre de processus utilisés pour le découpage",
|
||||
"刷新模型路径": "Actualiser le chemin du modèle",
|
||||
@ -85,9 +84,9 @@
|
||||
"参考音频的语种": "Langue de l'audio de référence",
|
||||
"合成语音": "Synthèse vocale",
|
||||
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "Exemple de format de chemin de dossier valide : E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例 (copiez-le depuis la barre d'adresse de l'explorateur de fichiers).",
|
||||
"后续将支持转音素、手工修改音素、语音合成分步执行。": "Des fonctionnalités futures incluront la conversion en phonèmes, la modification manuelle des phonèmes et l'exécution par étapes de la synthèse vocale.",
|
||||
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。": "Veuillez indiquer le répertoire contenant les audio découpés ! Le chemin complet du fichier audio à lire = ce répertoire - nom du fichier correspondant à l'onde dans le fichier .list (pas le chemin complet). Si laissé vide, le chemin absolu dans le fichier .list sera utilisé.",
|
||||
"多语种混合": "Mélange multilingue",
|
||||
"多语种混合(粤语)": "Mélange Multilingue (Cantonais)",
|
||||
"实际输入的参考文本:": "Texte de référence réellement saisi:",
|
||||
"实际输入的目标文本(切句后):": "Texte cible réellement saisi (après découpage):",
|
||||
"实际输入的目标文本(每句):": "Texte cible réellement saisi (par phrase):",
|
||||
@ -114,7 +113,7 @@
|
||||
"按中文句号。切": "Couper selon les points en chinois.",
|
||||
"按标点符号切": "Couper selon les signes de ponctuation",
|
||||
"按英文句号.切": "Découpez par des points en anglais",
|
||||
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "Outil de découpage de texte. Un texte trop long peut ne pas donner un bon résultat, donc il est recommandé de le couper d'abord s'il est trop long. La synthèse se fera en séparant le texte par les sauts de ligne puis en les assemblant.",
|
||||
"数据类型精度": "précision du type de données",
|
||||
"文本模块学习率权重": "Poids du taux d'apprentissage du module de texte",
|
||||
"文本进程输出信息": "Informations de processus de texte",
|
||||
"施工中,请静候佳音": "En construction, veuillez attendre patiemment",
|
||||
@ -133,6 +132,9 @@
|
||||
"模型分为三类:": "Les modèles sont classés en trois catégories:",
|
||||
"模型切换": "Changement de modèle",
|
||||
"每张显卡的batch_size": "Taille de lot par carte graphique",
|
||||
"版本": "Version",
|
||||
"粤英混合": "Mélange Cantonais-Anglais",
|
||||
"粤语": "Cantonais",
|
||||
"终止ASR进程": "Arrêter le processus ASR",
|
||||
"终止GPT训练": "Arrêter l'entraînement GPT",
|
||||
"终止SSL提取进程": "Arrêter le processus d'extraction SSL",
|
||||
@ -160,9 +162,10 @@
|
||||
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。": "Choisissez le modèle entraîné stocké sous SoVITS_weights et GPT_weights. Par défaut, l'un d'eux est un modèle de base pour l'expérience de TTS Zero Shot de 5 secondes.",
|
||||
"降噪结果输出文件夹": "Dossier de sortie des résultats de réduction du bruit",
|
||||
"降噪音频文件输入文件夹": "Dossier d'entrée des fichiers audio de réduction du bruit",
|
||||
"需要合成的切分前文本": "Texte préalable à la synthèse",
|
||||
"需要合成的文本": "Texte à synthétiser",
|
||||
"需要合成的语种": "Langue de synthèse requise",
|
||||
"韩文": "Coreano",
|
||||
"韩英混合": "Mezcla Coreano-Inglés",
|
||||
"音频自动切分输入路径,可文件可文件夹": "Chemin d'entrée automatique de découpage audio, peut être un fichier ou un dossier",
|
||||
"预训练的GPT模型路径": "Chemin du modèle GPT pré-entraîné",
|
||||
"预训练的SSL模型路径": "Chemin du modèle SSL pré-entraîné",
|
||||
|
@ -34,11 +34,11 @@
|
||||
"3、去混响、去延迟模型(by FoxJoy):": "3. Modello per rimuovere la riverberazione e il ritardo (by FoxJoy):",
|
||||
"ASR 模型": "Modello ASR",
|
||||
"ASR 模型尺寸": "Dimensioni del modello ASR",
|
||||
"数据类型精度": "precisione del tipo di dati",
|
||||
"ASR 语言设置": "Impostazioni linguistiche ASR",
|
||||
"ASR进程输出信息": "Informazioni sull'output del processo ASR",
|
||||
"GPT模型列表": "Elenco dei modelli GPT",
|
||||
"GPT训练进程输出信息": "Informazioni sull'output del processo di allenamento di GPT",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "Parametri di campionamento di GPT (non troppo bassi quando non c'è testo di riferimento. Utilizzare i valori predefiniti in caso di incertezza):",
|
||||
"GPU卡号,只能填1个整数": "Numero della scheda grafica, può essere inserito solo un numero intero",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "Numero di GPU separati da '-'; ogni numero corrisponde a un processo",
|
||||
"SSL进程输出信息": "Informazioni sull'output del processo SSL",
|
||||
@ -51,7 +51,6 @@
|
||||
"UVR5已开启": "UVR5 è attivato",
|
||||
"UVR5进程输出信息": "Informazioni sull'output del processo UVR5",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: Quanta proporzione dell'audio normalizzato deve essere miscelata",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "Parametri di campionamento di GPT (non troppo bassi quando non c'è testo di riferimento. Utilizzare i valori predefiniti in caso di incertezza):",
|
||||
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size: Come calcolare la curva del volume. Più piccolo è, maggiore è la precisione ma aumenta la complessità computazionale (non significa che una maggiore precisione dà risultati migliori)",
|
||||
"max:归一化后最大值多少": "max: Massimo valore dopo la normalizzazione",
|
||||
"max_sil_kept:切完后静音最多留多长": "max_sil_kept: Massima durata del silenzio dopo il taglio",
|
||||
@ -69,12 +68,12 @@
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "È possibile anche inserire file audio in batch, una delle due opzioni, con priorità alla lettura della cartella",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。": "Separazione voce-accompagnamento in batch, utilizza il modello UVR5.",
|
||||
"人声提取激进程度": "Grado di aggressività dell'estrazione vocale",
|
||||
"以下模型不存在:": "Nessun Modello del Genere:",
|
||||
"伴奏人声分离&去混响&去回声": "Separazione tra accompagnamento e voce & Rimozione dell'eco & Rimozione dell'eco",
|
||||
"使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "Si consiglia di utilizzare GPT fine-tuned quando si utilizza la modalità senza testo di riferimento. Se non si riesce a capire cosa dice l'audio di riferimento (e non si sa cosa scrivere), è possibile abilitare questa opzione, ignorando il testo di riferimento inserito.",
|
||||
"保存频率save_every_epoch": "Frequenza di salvataggio ogni epoca",
|
||||
"凑50字一切": "Riempire con 50 caratteri per tutto",
|
||||
"凑四句一切": "Riempire con quattro frasi per tutto",
|
||||
"切分后文本": "Testo dopo il taglio",
|
||||
"切分后的子音频的输出根目录": "Directory radice di output per gli audio segmentati",
|
||||
"切割使用的进程数": "Numero di processi utilizzati per il taglio",
|
||||
"刷新模型路径": "Aggiorna il percorso del modello",
|
||||
@ -85,9 +84,9 @@
|
||||
"参考音频的语种": "Lingua dell'audio di riferimento",
|
||||
"合成语音": "Sintesi vocale",
|
||||
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "Formato di percorso della cartella valido: E:\\codes\\py39\\vits_vc_gpu\\Esempio di test di BaiLuShuangHua (copiare direttamente dalla barra degli indirizzi del gestore file).",
|
||||
"后续将支持转音素、手工修改音素、语音合成分步执行。": "In futuro, sarà supportata la conversione in fonemi, la modifica manuale dei fonemi e l'esecuzione passo-passo della sintesi vocale.",
|
||||
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。": "Inserisci la directory dell'audio segmentato! Il percorso completo del file audio letto = questa directory - unione del nome del file corrispondente alle forme d'onda nel file .list (non il percorso completo). Se lasciato vuoto, verrà utilizzato il percorso assoluto nel file .list.",
|
||||
"多语种混合": "Mix multilingue",
|
||||
"多语种混合(粤语)": "Misto Multilingue (Cantonese)",
|
||||
"实际输入的参考文本:": "Testo di riferimento effettivamente inserito:",
|
||||
"实际输入的目标文本(切句后):": "Testo di destinazione effettivamente inserito (dopo il taglio delle frasi):",
|
||||
"实际输入的目标文本(每句):": "Testo di destinazione effettivamente inserito (per frase):",
|
||||
@ -114,7 +113,7 @@
|
||||
"按中文句号。切": "Taglia secondo il punto cinese.",
|
||||
"按标点符号切": "Taglia secondo i segni di punteggiatura",
|
||||
"按英文句号.切": "Taglia secondo il punto inglese",
|
||||
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "Strumento di divisione del testo. I testi troppo lunghi potrebbero non avere un buon effetto di sintesi, quindi è consigliabile dividerli prima della sintesi. La sintesi verrà separata in base ai ritorni a capo nel testo e successivamente ricomposta.",
|
||||
"数据类型精度": "precisione del tipo di dati",
|
||||
"文本模块学习率权重": "Peso del tasso di apprendimento del modulo di testo",
|
||||
"文本进程输出信息": "Informazioni sull'output del processo di estrazione del testo",
|
||||
"施工中,请静候佳音": "In costruzione, attendi pazientemente le buone notizie",
|
||||
@ -133,6 +132,9 @@
|
||||
"模型分为三类:": "I modelli sono divisi in tre categorie:",
|
||||
"模型切换": "Cambio del modello",
|
||||
"每张显卡的batch_size": "Batch size per ogni scheda grafica",
|
||||
"版本": "Versione",
|
||||
"粤英混合": "Misto Cantonese-Inglese",
|
||||
"粤语": "Cantonese",
|
||||
"终止ASR进程": "Terminare il processo ASR",
|
||||
"终止GPT训练": "Terminare l'allenamento di GPT",
|
||||
"终止SSL提取进程": "Terminare il processo di estrazione SSL",
|
||||
@ -160,9 +162,10 @@
|
||||
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。": "Scegli il modello salvato in SoVITS_weights e GPT_weights dopo l'addestramento. Uno di default è il modello di base, utilizzato per l'esperienza di Zero Shot TTS in 5 secondi.",
|
||||
"降噪结果输出文件夹": "Cartella di output dei risultati di riduzione del rumore",
|
||||
"降噪音频文件输入文件夹": "Cartella di input dei file audio per la riduzione del rumore",
|
||||
"需要合成的切分前文本": "Testo da sintetizzare prima del taglio",
|
||||
"需要合成的文本": "Testo da sintetizzare",
|
||||
"需要合成的语种": "Lingua da sintetizzare",
|
||||
"韩文": "Coreano",
|
||||
"韩英混合": "Misto Coreano-Inglese",
|
||||
"音频自动切分输入路径,可文件可文件夹": "Percorso di input per la segmentazione automatica dell'audio, può essere un file o una cartella",
|
||||
"预训练的GPT模型路径": "Percorso del modello preaddestrato GPT",
|
||||
"预训练的SSL模型路径": "Percorso del modello SSL preaddestrato",
|
||||
|
@ -34,11 +34,11 @@
|
||||
"3、去混响、去延迟模型(by FoxJoy):": "3、リバーブ除去と遅延除去モデル(by FoxJoy):",
|
||||
"ASR 模型": "ASR モデル",
|
||||
"ASR 模型尺寸": "ASRモデルサイズ",
|
||||
"数据类型精度": "データ型の精度",
|
||||
"ASR 语言设置": "ASR 言語設定",
|
||||
"ASR进程输出信息": "ASRプロセスの出力情報",
|
||||
"GPT模型列表": "GPTモデルリスト",
|
||||
"GPT训练进程输出信息": "GPTトレーニングプロセスの出力情報",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT サンプリングパラメーター(参照テキストがない場合はあまり低くしないでください。わからない場合はデフォルトを使用してください):",
|
||||
"GPU卡号,只能填1个整数": "GPU番号、1つの整数しか入力できません",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "GPUカード番号はハイフンで区切り、各カード番号ごとに1つのプロセスが実行されます",
|
||||
"SSL进程输出信息": "SSLプロセスの出力情報",
|
||||
@ -51,7 +51,6 @@
|
||||
"UVR5已开启": "UVR5がオンになっています",
|
||||
"UVR5进程输出信息": "UVR5プロセスの出力情報",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix:正規化後のオーディオが入る割合",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT サンプリングパラメーター(参照テキストがない場合はあまり低くしないでください。わからない場合はデフォルトを使用してください):",
|
||||
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size: 音量曲線の計算方法、小さいほど精度が高くなりますが、計算量が増加します(精度が高いほど必ずしも効果が良いわけではありません)",
|
||||
"max:归一化后最大值多少": "max:正規化後の最大値",
|
||||
"max_sil_kept:切完后静音最多留多长": "max_sil_kept:切り終えた後、最大でどれだけ静かにするか",
|
||||
@ -69,12 +68,12 @@
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "複数のオーディオファイルもインポートできます。フォルダパスが存在する場合、この入力は無視されます。",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。": "人声と伴奏の分離をバッチ処理で行い、UVR5モデルを使用します。",
|
||||
"人声提取激进程度": "人声抽出の積極性",
|
||||
"以下模型不存在:": "モデルが存在しません:",
|
||||
"伴奏人声分离&去混响&去回声": "ボーカル/伴奏の分離と残響の除去",
|
||||
"使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "参考テキストなしモードを使用する場合は、微調整されたGPTの使用をお勧めします。参考音声が聞き取れない場合(何を書けば良いかわからない場合)は、有効にすると、入力した参考テキストを無視します。",
|
||||
"保存频率save_every_epoch": "保存頻度save_every_epoch",
|
||||
"凑50字一切": "50文字ずつカット",
|
||||
"凑四句一切": "4つの文で埋める",
|
||||
"切分后文本": "分割後のテキスト",
|
||||
"切分后的子音频的输出根目录": "分割後のサブオーディオの出力ルートディレクトリ",
|
||||
"切割使用的进程数": "分割に使用されるプロセス数",
|
||||
"刷新模型路径": "モデルのパスを更新",
|
||||
@ -85,9 +84,9 @@
|
||||
"参考音频的语种": "参照オーディオの言語",
|
||||
"合成语音": "推論を開始",
|
||||
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "適切なフォルダパスの例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华テストサンプル(ファイルマネージャのアドレスバーからコピーしてください)。",
|
||||
"后续将支持转音素、手工修改音素、语音合成分步执行。": "今後、音素変換、手動音素修正、音声合成の段階的実行をサポートする予定です。",
|
||||
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。": "切断後の音声ファイルが格納されているディレクトリを入力してください!読み取り対象の音声ファイルの完全パス = このディレクトリ - 結合 - listファイル内の波形に対応するファイル名(完全パスではありません)。空白の場合、.listファイル内の絶対完全パスを使用します。",
|
||||
"多语种混合": "多言語混合",
|
||||
"多语种混合(粤语)": "多言語混合(粤語)",
|
||||
"实际输入的参考文本:": "実際に入力された参照テキスト:",
|
||||
"实际输入的目标文本(切句后):": "実際に入力された目標テキスト(文分割後):",
|
||||
"实际输入的目标文本(每句):": "実際に入力された目標テキスト(文ごと):",
|
||||
@ -114,7 +113,7 @@
|
||||
"按中文句号。切": "中国語の句点でカット",
|
||||
"按标点符号切": "句読点で分割",
|
||||
"按英文句号.切": "英文のピリオドで切ってください",
|
||||
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "テキストスライサーツール。長文を変換すると効果が不安定になる可能性があるため、長文の場合は事前に切り分けることをお勧めします。推論時には、テキストを個別に推論し、それを組み合わせて再構築します。",
|
||||
"数据类型精度": "データ型の精度",
|
||||
"文本模块学习率权重": "テキストモジュールの学習率の重み",
|
||||
"文本进程输出信息": "テキストプロセスの出力情報",
|
||||
"施工中,请静候佳音": "施工中、お待ちください",
|
||||
@ -133,6 +132,9 @@
|
||||
"模型分为三类:": "モデルは3種類に分かれています:",
|
||||
"模型切换": "モデル切り替え",
|
||||
"每张显卡的batch_size": "各グラフィックカードのバッチサイズ",
|
||||
"版本": "バージョン",
|
||||
"粤英混合": "粤英混合",
|
||||
"粤语": "粤語",
|
||||
"终止ASR进程": "ASRプロセスを停止",
|
||||
"终止GPT训练": "GPTトレーニングを停止",
|
||||
"终止SSL提取进程": "SSL抽出プロセスを停止",
|
||||
@ -160,9 +162,10 @@
|
||||
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。": "SoVITS_weightsおよびGPT_weightsに保存されたモデルを選択します。デフォルトのものはプレトレインであり、ゼロショットTTSを体験できます。",
|
||||
"降噪结果输出文件夹": "ノイズ除去結果出力フォルダ",
|
||||
"降噪音频文件输入文件夹": "ノイズ除去音声ファイル入力フォルダ",
|
||||
"需要合成的切分前文本": "推論が必要な分割前のテキスト",
|
||||
"需要合成的文本": "推論テキスト",
|
||||
"需要合成的语种": "推論テキストの言語",
|
||||
"韩文": "韓国語",
|
||||
"韩英混合": "韓英混合",
|
||||
"音频自动切分输入路径,可文件可文件夹": "オーディオの自動分割入力パス、ファイルまたはフォルダを指定できます",
|
||||
"预训练的GPT模型路径": "事前にトレーニングされたGPTモデルのパス",
|
||||
"预训练的SSL模型路径": "事前にトレーニングされたSSLモデルのパス",
|
||||
|
@ -34,11 +34,11 @@
|
||||
"3、去混响、去延迟模型(by FoxJoy):": "3. 잔향 제거 및 지연 제거 모델 (by FoxJoy):",
|
||||
"ASR 模型": "ASR 모델",
|
||||
"ASR 模型尺寸": "ASR 모델 크기",
|
||||
"数据类型精度": "데이터 유형 정밀도",
|
||||
"ASR 语言设置": "ASR 언어 설정",
|
||||
"ASR进程输出信息": "ASR 프로세스 출력 정보",
|
||||
"GPT模型列表": "GPT 모델 목록",
|
||||
"GPT训练进程输出信息": "GPT 훈련 프로세스 출력 정보",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT 샘플링 매개변수 (참조 텍스트가 없을 때 너무 낮게 설정하지 마십시오. 확실하지 않으면 기본값을 사용하십시오):",
|
||||
"GPU卡号,只能填1个整数": "GPU 카드 번호, 1개의 정수만 입력 가능",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "GPU 카드 번호는 -로 구분되며 각 카드 번호에 하나의 프로세스가 있어야 함",
|
||||
"SSL进程输出信息": "SSL 프로세스 출력 정보",
|
||||
@ -51,7 +51,6 @@
|
||||
"UVR5已开启": "UVR5가 활성화되었습니다",
|
||||
"UVR5进程输出信息": "UVR5 프로세스 출력 정보",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "알파 믹스: 정규화된 오디오가 들어오는 비율",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT 샘플링 매개변수 (참조 텍스트가 없을 때 너무 낮게 설정하지 마십시오. 확실하지 않으면 기본값을 사용하십시오):",
|
||||
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop 크기: 볼륨 곡선을 계산하는 방법. 작을수록 정확도가 높아지지만 계산량이 높아집니다 (정확도가 높다고 효과가 좋아지지 않음)",
|
||||
"max:归一化后最大值多少": "최대 값 (정규화 후)",
|
||||
"max_sil_kept:切完后静音最多留多长": "최대 유지되는 정적 길이 (분리 후)",
|
||||
@ -69,12 +68,12 @@
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "오디오 파일을 일괄로 입력할 수도 있습니다. 둘 중 하나를 선택하고 폴더를 읽기를 우선합니다.",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。": "보컬과 반주 분리 배치 처리, UVR5 모델 사용.",
|
||||
"人声提取激进程度": "보컬 추출의 공격성",
|
||||
"以下模型不存在:": "해당 모델이 존재하지 않습니다:",
|
||||
"伴奏人声分离&去混响&去回声": "반주 및 보컬 분리 & 리버브 제거 & 에코 제거",
|
||||
"使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "참고 텍스트가 없을 때는 미세 조정된 GPT를 사용하는 것이 좋습니다. 참고 오디오에서 무엇을 말하는지 잘 들리지 않으면 이 모드를 켜서 입력한 참고 텍스트를 무시할 수 있습니다.",
|
||||
"保存频率save_every_epoch": "저장 빈도 (각 라운드마다)",
|
||||
"凑50字一切": "50자를 채우십시오",
|
||||
"凑四句一切": "네 문장의 세트를 완성하세요.",
|
||||
"切分后文本": "분리된 텍스트",
|
||||
"切分后的子音频的输出根目录": "분리된 하위 오디오의 출력 기본 디렉터리",
|
||||
"切割使用的进程数": "사용되는 프로세스 수로 자르기",
|
||||
"刷新模型路径": "모델 경로 새로 고침",
|
||||
@ -85,9 +84,9 @@
|
||||
"参考音频的语种": "참고 오디오의 언어",
|
||||
"合成语音": "합성 음성",
|
||||
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "적절한 폴더 경로 형식 예: E:\\codes\\py39\\vits_vc_gpu\\백로서리 테스트 샘플 (파일 관리자 주소 표시줄에서 복사하면 됩니다).",
|
||||
"后续将支持转音素、手工修改音素、语音合成分步执行。": "앞으로 음소 변환, 음소 수동 수정, 음성 합성 단계별 실행을 지원할 예정입니다.",
|
||||
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。": "분리된 오디오가 위치한 디렉터리를 입력하세요! 읽어들인 오디오 파일의 전체 경로 = 이 디렉터리 - list 파일에서 파형에 해당하는 파일명(전체 경로가 아님). 비워 두면 .list 파일의 절대 전체 경로를 사용합니다.",
|
||||
"多语种混合": "다국어 혼합",
|
||||
"多语种混合(粤语)": "다국어 혼합(粤語)",
|
||||
"实际输入的参考文本:": "실제 입력된 참고 텍스트:",
|
||||
"实际输入的目标文本(切句后):": "실제 입력된 목표 텍스트(문장 분리 후):",
|
||||
"实际输入的目标文本(每句):": "실제 입력된 목표 텍스트(문장별):",
|
||||
@ -114,7 +113,7 @@
|
||||
"按中文句号。切": "중국어 문장으로 분리하십시오.",
|
||||
"按标点符号切": "구두점을 기준으로 자르기",
|
||||
"按英文句号.切": "영어 문장으로 분리하기",
|
||||
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "텍스트 분리 도구. 너무 긴 텍스트는 합성 결과가 항상 좋지 않을 수 있으므로 너무 길면 먼저 분리하는 것이 좋습니다. 합성은 텍스트 줄 바꿈을 기준으로 분리되어 다시 조합됩니다.",
|
||||
"数据类型精度": "데이터 유형 정밀도",
|
||||
"文本模块学习率权重": "텍스트 모듈 학습률 가중치",
|
||||
"文本进程输出信息": "텍스트 프로세스 출력 정보",
|
||||
"施工中,请静候佳音": "공사 중입니다. 기다려주십시오.",
|
||||
@ -133,6 +132,9 @@
|
||||
"模型分为三类:": "모델은 3가지로 나뉩니다:",
|
||||
"模型切换": "모델 전환",
|
||||
"每张显卡的batch_size": "각 그래픽 카드의 배치 크기",
|
||||
"版本": "버전",
|
||||
"粤英混合": "粤영 혼합",
|
||||
"粤语": "粤語",
|
||||
"终止ASR进程": "ASR 프로세스 종료",
|
||||
"终止GPT训练": "GPT 훈련 종료",
|
||||
"终止SSL提取进程": "SSL 추출 프로세스 종료",
|
||||
@ -160,9 +162,10 @@
|
||||
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。": "SoVITS_weights 및 GPT_weights에 저장된 훈련 완료된 모델 중 선택. 기본적으로 하나는 기본 모델이며 5초 Zero Shot TTS를 체험할 수 있습니다.",
|
||||
"降噪结果输出文件夹": "노이즈 제거 결과 출력 폴더",
|
||||
"降噪音频文件输入文件夹": "노이즈 제거 오디오 파일 입력 폴더",
|
||||
"需要合成的切分前文本": "합성해야 할 분할 전 텍스트",
|
||||
"需要合成的文本": "합성해야 할 텍스트",
|
||||
"需要合成的语种": "합성해야 할 언어",
|
||||
"韩文": "한국어",
|
||||
"韩英混合": "한영 혼합",
|
||||
"音频自动切分输入路径,可文件可文件夹": "오디오 자동 분리 입력 경로, 파일 또는 폴더 가능",
|
||||
"预训练的GPT模型路径": "사전 훈련된 GPT 모델 경로",
|
||||
"预训练的SSL模型路径": "사전 훈련된 SSL 모델 경로",
|
||||
|
@ -34,11 +34,11 @@
|
||||
"3、去混响、去延迟模型(by FoxJoy):": "3. Modelo de remoção de reverberação e atraso (por FoxJoy):",
|
||||
"ASR 模型": "Modelo ASR",
|
||||
"ASR 模型尺寸": "Tamanho do modelo ASR",
|
||||
"数据类型精度": "precisão do tipo de dado",
|
||||
"ASR 语言设置": "Configurações de idioma do ASR",
|
||||
"ASR进程输出信息": "Informações de saída do processo ASR",
|
||||
"GPT模型列表": "Lista de modelos GPT",
|
||||
"GPT训练进程输出信息": "Informações de saída do processo de treinamento GPT",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "Parâmetros de amostragem do GPT (não muito baixos quando não houver texto de referência. Use o padrão se não tiver certeza):",
|
||||
"GPU卡号,只能填1个整数": "Número da placa de vídeo, só é possível preencher com um número inteiro",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "Número da placa de vídeo dividido por-, cada número de placa é um processo",
|
||||
"SSL进程输出信息": "Informações de saída do processo SSL",
|
||||
@ -51,7 +51,6 @@
|
||||
"UVR5已开启": "UVR5 está ativado",
|
||||
"UVR5进程输出信息": "Informações de saída do processo UVR5",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: Em que proporção o áudio normalizado é misturado de volta",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "Parâmetros de amostragem do GPT (não muito baixos quando não houver texto de referência. Use o padrão se não tiver certeza):",
|
||||
"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:归一化后最大值多少": "MAX: Qual é o valor máximo após a normalização?",
|
||||
"max_sil_kept:切完后静音最多留多长": "max_sil_kept: Depois de cortar, por quanto tempo no máximo o silêncio é mantido",
|
||||
@ -69,12 +68,12 @@
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "Também é possível inserir arquivos de áudio em lote; escolha uma opção, preferencialmente leia a pasta.",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。": "Processamento em lote de separação de voz e acompanhamento, usando o modelo UVR5.",
|
||||
"人声提取激进程度": "Grau de agressividade da extração de voz",
|
||||
"以下模型不存在:": "Nenhum Modelo Tal:",
|
||||
"伴奏人声分离&去混响&去回声": "Separação de acompanhamento e voz & remoção de reverberação & remoção de eco",
|
||||
"使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "Ao usar o modo sem texto de referência, recomenda-se usar um GPT ajustado. Se não conseguir ouvir claramente o áudio de referência (não sabe o que escrever), você pode ativar o modo e ignorar o texto de referência fornecido.",
|
||||
"保存频率save_every_epoch": "Frequência de salvamento save_every_epoch",
|
||||
"凑50字一切": "Complete com 50 caracteres",
|
||||
"凑四句一切": "Complete com quatro frases",
|
||||
"切分后文本": "Texto após divisão",
|
||||
"切分后的子音频的输出根目录": "Diretório raiz de saída do sub-áudio após o corte",
|
||||
"切割使用的进程数": "Número de processos para corte",
|
||||
"刷新模型路径": "Atualizar caminho do modelo",
|
||||
@ -85,9 +84,9 @@
|
||||
"参考音频的语种": "Idioma do áudio de referência",
|
||||
"合成语音": "Voz sintetizada",
|
||||
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "Exemplo de formato de caminho de pasta válido: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例 (copie do endereço da barra do gerenciador de arquivos).",
|
||||
"后续将支持转音素、手工修改音素、语音合成分步执行。": "Futuramente, serão suportadas a conversão de fonemas, a modificação manual de fonemas e a execução em etapas da síntese de voz.",
|
||||
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。": "Preencha o diretório onde os áudios cortados estão localizados! O caminho completo dos arquivos de áudio lidos = este diretório - concatenação com o nome do arquivo de forma correspondente no arquivo .list (não o caminho completo). Se deixar em branco, use o caminho absoluto no arquivo .list.",
|
||||
"多语种混合": "Mistura de múltiplos idiomas",
|
||||
"多语种混合(粤语)": "Mistura Multilíngue (Yue)",
|
||||
"实际输入的参考文本:": "Texto de referência realmente inserido:",
|
||||
"实际输入的目标文本(切句后):": "Texto alvo realmente inserido (após divisão de frases):",
|
||||
"实际输入的目标文本(每句):": "Texto alvo realmente inserido (por frase):",
|
||||
@ -114,7 +113,7 @@
|
||||
"按中文句号。切": "Dividir por ponto final chinês",
|
||||
"按标点符号切": "Dividir por sinais de pontuação",
|
||||
"按英文句号.切": "Dividir por ponto final em inglês",
|
||||
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "Ferramenta de divisão de texto. Textos muito longos podem não ter bons resultados de síntese, então é recomendado dividir textos muito longos primeiro. A síntese será feita dividindo e recombinando com base nas quebras de linha do texto.",
|
||||
"数据类型精度": "precisão do tipo de dado",
|
||||
"文本模块学习率权重": "Weight da taxa de aprendizado do módulo de texto",
|
||||
"文本进程输出信息": "Informações de saída do processo de texto",
|
||||
"施工中,请静候佳音": "Em construção, por favor, aguarde por um bom som",
|
||||
@ -133,6 +132,9 @@
|
||||
"模型分为三类:": "Modelos dividem-se em três categorias:",
|
||||
"模型切换": "Troca de modelo",
|
||||
"每张显卡的batch_size": "Tamanho do lote de cada placa de vídeo",
|
||||
"版本": "Versão",
|
||||
"粤英混合": "Mistura Yue-Inglês",
|
||||
"粤语": "Yue",
|
||||
"终止ASR进程": "Encerrar processo ASR",
|
||||
"终止GPT训练": "Encerrar treinamento GPT",
|
||||
"终止SSL提取进程": "Encerrar processo de extração SSL",
|
||||
@ -160,9 +162,10 @@
|
||||
"选择训练完存放在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",
|
||||
"降噪结果输出文件夹": "Pasta de saída dos resultados de redução de ruído",
|
||||
"降噪音频文件输入文件夹": "Pasta de entrada dos arquivos de áudio para redução de ruído",
|
||||
"需要合成的切分前文本": "Texto a ser sintetizado antes da divisão",
|
||||
"需要合成的文本": "Texto a ser sintetizado",
|
||||
"需要合成的语种": "Idioma a ser sintetizado",
|
||||
"韩文": "Coreano",
|
||||
"韩英混合": "Mistura Coreano-Inglês",
|
||||
"音频自动切分输入路径,可文件可文件夹": "Caminho de entrada automático de corte de áudio, pode ser um arquivo ou uma pasta",
|
||||
"预训练的GPT模型路径": "Caminho do modelo GPT pre-train",
|
||||
"预训练的SSL模型路径": "Caminho do modelo SSL pre-train",
|
||||
|
@ -34,11 +34,11 @@
|
||||
"3、去混响、去延迟模型(by FoxJoy):": "3. Модель удаления реверберации и задержек (от FoxJoy):",
|
||||
"ASR 模型": "Модель ASR",
|
||||
"ASR 模型尺寸": "Размер модели ASR",
|
||||
"数据类型精度": "точность типа данных",
|
||||
"ASR 语言设置": "Настройки языка ASR",
|
||||
"ASR进程输出信息": "Информация о процессе ASR",
|
||||
"GPT模型列表": "Список моделей GPT",
|
||||
"GPT训练进程输出信息": "Информация о процессе обучения GPT",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "Параметры выборки GPT (не устанавливайте слишком низкие значения, если нет ссылочного текста. Используйте значения по умолчанию, если не уверены):",
|
||||
"GPU卡号,只能填1个整数": "Номер GPU, можно указать только одно целое число",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "Номера GPU разделяются дефисом, на каждый номер отдельный процесс",
|
||||
"SSL进程输出信息": "Информация о процессе SSL",
|
||||
@ -51,7 +51,6 @@
|
||||
"UVR5已开启": "UVR5 включен",
|
||||
"UVR5进程输出信息": "Вывод информации процесса UVR5",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix:Какая доля нормализованного аудио смешивается",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "Параметры выборки GPT (не устанавливайте слишком низкие значения, если нет ссылочного текста. Используйте значения по умолчанию, если не уверены):",
|
||||
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size:Как рассчитывается кривая громкости, чем меньше, тем выше точность и больше вычислительная нагрузка (большая точность не всегда означает лучший результат)",
|
||||
"max:归一化后最大值多少": "max:Максимальное значение после нормализации",
|
||||
"max_sil_kept:切完后静音最多留多长": "max_sil_kept:Максимальная длительность тишины после разреза",
|
||||
@ -69,12 +68,12 @@
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "Можно также импортировать несколько аудиофайлов. Если путь к папке существует, то этот ввод игнорируется.",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。": "Обработка разделения вокала и аккомпанемента пакетно с использованием модели UVR5.",
|
||||
"人声提取激进程度": "Степень агрессивности извлечения вокала",
|
||||
"以下模型不存在:": "Этот модель не существует",
|
||||
"伴奏人声分离&去混响&去回声": "Разделение вокала/аккомпанемента и удаление эхо",
|
||||
"使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "При использовании режима без референсного текста рекомендуется использовать настроенную модель GPT. Если не удается разобрать, что говорит референсное аудио (не знаете, что писать), можете включить этот режим, и он проигнорирует введенный референсный текст.",
|
||||
"保存频率save_every_epoch": "Частота сохранения save_every_epoch",
|
||||
"凑50字一切": "Соберите все в 50 символов",
|
||||
"凑四句一切": "Собрать четыре предложения и разрезать",
|
||||
"切分后文本": "Текст после разделения",
|
||||
"切分后的子音频的输出根目录": "Корневой каталог вывода для подаудио после разделения",
|
||||
"切割使用的进程数": "Количество процессов, используемых для разрезания",
|
||||
"刷新模型路径": "Обновить путь к модели",
|
||||
@ -85,9 +84,9 @@
|
||||
"参考音频的语种": "Язык референтного аудио",
|
||||
"合成语音": "Синтезированный голос",
|
||||
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "Пример допустимого формата пути к папке: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例 (просто скопируйте из адресной строки файлового менеджера).",
|
||||
"后续将支持转音素、手工修改音素、语音合成分步执行。": "В будущем будет поддерживаться преобразование в фонемы, ручная коррекция фонем, пошаговая синтезация речи.",
|
||||
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。": "Заполните каталог, где находятся аудиофайлы после разрезания! Полный путь к читаемым аудиофайлам = каталог - файл .list, имя файла соответствует волне (не полный путь). Если оставить пустым, будет использоваться абсолютный путь из файла .list.",
|
||||
"多语种混合": "Смешанные языки",
|
||||
"多语种混合(粤语)": "Многоязычная смесь (кантонский)",
|
||||
"实际输入的参考文本:": "Фактически введенный референсный текст:",
|
||||
"实际输入的目标文本(切句后):": "Фактически введенный целевой текст (после разбиения на предложения):",
|
||||
"实际输入的目标文本(每句):": "Фактически введенный целевой текст (каждое предложение):",
|
||||
@ -114,7 +113,7 @@
|
||||
"按中文句号。切": "Разделение по китайским точкам.",
|
||||
"按标点符号切": "Разрезать по пунктуационным знакам",
|
||||
"按英文句号.切": "Разрезать по английской точке.",
|
||||
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "Инструмент для разделения текста. Слишком длинные тексты могут не давать хороших результатов синтеза, поэтому рекомендуется сначала их разделить. Синтез будет выполняться отдельно для каждого абзаца, а затем результаты будут соединены вместе.",
|
||||
"数据类型精度": "точность типа данных",
|
||||
"文本模块学习率权重": "Веса скорости обучения текстового модуля",
|
||||
"文本进程输出信息": "Информация о процессе обработки текста",
|
||||
"施工中,请静候佳音": "В разработке, ожидайте хороших новостей",
|
||||
@ -133,6 +132,9 @@
|
||||
"模型分为三类:": "Модели делятся на три типа:",
|
||||
"模型切换": "Переключение модели",
|
||||
"每张显卡的batch_size": "Размер пакета для каждой видеокарты",
|
||||
"版本": "Версия",
|
||||
"粤英混合": "Кантоно-английская смесь",
|
||||
"粤语": "Кантонийский",
|
||||
"终止ASR进程": "Прекратить процесс ASR",
|
||||
"终止GPT训练": "Прекратить обучение GPT",
|
||||
"终止SSL提取进程": "Прекратить процесс извлечения SSL",
|
||||
@ -160,9 +162,10 @@
|
||||
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。": "Выберите модель, сохраненную в SoVITS_weights и GPT_weights после обучения. По умолчанию используется базовая модель для 5-секундного Zero Shot TTS.",
|
||||
"降噪结果输出文件夹": "Папка для вывода результатов шумоподавления",
|
||||
"降噪音频文件输入文件夹": "Папка для ввода аудиофайлов для шумоподавления",
|
||||
"需要合成的切分前文本": "Текст для синтеза до разделения",
|
||||
"需要合成的文本": "Текст для синтеза",
|
||||
"需要合成的语种": "Язык для синтеза",
|
||||
"韩文": "Корейский",
|
||||
"韩英混合": "Корейско-английская смесь",
|
||||
"音频自动切分输入路径,可文件可文件夹": "Путь ввода для автоматического разделения аудио, может быть файлом или папкой",
|
||||
"预训练的GPT模型路径": "Путь к предварительно обученной модели GPT",
|
||||
"预训练的SSL模型路径": "Путь к предварительно обученной модели SSL",
|
||||
|
@ -34,11 +34,11 @@
|
||||
"3、去混响、去延迟模型(by FoxJoy):": "3. Yankı ve gecikme giderme modeli (FoxJoy tarafından):",
|
||||
"ASR 模型": "ASR modeli",
|
||||
"ASR 模型尺寸": "ASR model boyutu",
|
||||
"数据类型精度": "veri türü doğruluğu",
|
||||
"ASR 语言设置": "ASR dil ayarları",
|
||||
"ASR进程输出信息": "ASR işlemi çıktı bilgisi",
|
||||
"GPT模型列表": "GPT model listesi",
|
||||
"GPT训练进程输出信息": "GPT eğitimi işlemi çıktı bilgisi",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT örnekleme parametreleri (referans metin olmadığında çok düşük olmamalıdır. Emin değilseniz varsayılanı kullanın):",
|
||||
"GPU卡号,只能填1个整数": "GPU kart numarası, sadece bir tamsayı girilebilir",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "GPU kart numaraları - ile ayrılır, her kart numarası için bir işlem",
|
||||
"SSL进程输出信息": "SSL işlemi çıktı bilgisi",
|
||||
@ -51,7 +51,6 @@
|
||||
"UVR5已开启": "UVR5 açıldı",
|
||||
"UVR5进程输出信息": "UVR5 işlem çıktı bilgisi",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix:Normalizasyondan sonraki sesin ne kadarlık bir oranı karıştırılsın",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT örnekleme parametreleri (referans metin olmadığında çok düşük olmamalıdır. Emin değilseniz varsayılanı kullanın):",
|
||||
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size:Ses seviyesi eğrisi nasıl hesaplanır, ne kadar küçükse hassasiyet o kadar yüksek ve hesaplama yükü o kadar artar (hassasiyet arttıkça etki mutlaka daha iyi olmaz)",
|
||||
"max:归一化后最大值多少": "max:Normalizasyondan sonra maksimum değer ne kadar",
|
||||
"max_sil_kept:切完后静音最多留多长": "max_sil_kept:Kesimden sonra en fazla ne kadar sessizlik bırakılır",
|
||||
@ -69,12 +68,12 @@
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "Ses dosyaları ayrıca toplu olarak, iki seçimle, öncelikli okuma klasörüyle içe aktarılabilir",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。": "Vokal ve akor ayırma toplu işleme, UVR5 modelini kullanarak.",
|
||||
"人声提取激进程度": "Vokal çıkarma agresiflik derecesi",
|
||||
"以下模型不存在:": "Böyle bir model yok:",
|
||||
"伴奏人声分离&去混响&去回声": "Vokal/Müzik Ayrıştırma ve Yankı Giderme",
|
||||
"使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "Referans metin modu olmadan kullanıldığında, referans sesi net duyulmadığında (ne yazılacağı bilinmiyorsa) açık bırakılması önerilir, bu durumda girilen referans metni göz ardı edilir.",
|
||||
"保存频率save_every_epoch": "Kayıt sıklığı save_every_epoch",
|
||||
"凑50字一切": "50 kelime birleştir ve kes",
|
||||
"凑四句一切": "Dört cümleyi bir araya getirip kes",
|
||||
"切分后文本": "Bölündükten sonra metin",
|
||||
"切分后的子音频的输出根目录": "Bölündükten sonra alt ses dosyalarının çıktı kök dizini",
|
||||
"切割使用的进程数": "Kesim için kullanılan işlem sayısı",
|
||||
"刷新模型路径": "Model yolu yenile",
|
||||
@ -85,9 +84,9 @@
|
||||
"参考音频的语种": "Referans ses dosyasının dili",
|
||||
"合成语音": "Ses sentezi",
|
||||
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "Geçerli klasör yolu formatı örneği: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例 (dosya yöneticisi adres çubuğundan kopyalayabilirsiniz).",
|
||||
"后续将支持转音素、手工修改音素、语音合成分步执行。": "İlerleyen zamanlarda fonem dönüştürme, manuel fonem düzenleme ve adım adım ses sentezi desteklenecek.",
|
||||
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。": "Kesmeye uygun ses dosyalarının bulunduğu dizini doldurun! Okunan ses dosyasının tam yolu = bu dizin + list dosyasındaki dalga biçimiyle eşleşen dosya adı (tam yol değil). Boş bırakılırsa, .list dosyasındaki tam yol kullanılır.",
|
||||
"多语种混合": "Çok dilli karışım",
|
||||
"多语种混合(粤语)": "Çok dilli karışık (Yue)",
|
||||
"实际输入的参考文本:": "Gerçekten girilen referans metin:",
|
||||
"实际输入的目标文本(切句后):": "Gerçekten girilen hedef metin (cümleler kesildikten sonra):",
|
||||
"实际输入的目标文本(每句):": "Gerçekten girilen hedef metin (her cümle):",
|
||||
@ -114,7 +113,7 @@
|
||||
"按中文句号。切": "Çince dönem işaretine göre kes",
|
||||
"按标点符号切": "Noktalama işaretlerine göre kes",
|
||||
"按英文句号.切": "İngilizce nokta işaretine göre kes",
|
||||
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "Metin bölme aracı. Çok uzun metinlerin sentezi her zaman iyi sonuçlar vermez, bu yüzden önerilen önce kesmektir. Sentez, metnin yeni satırlarına göre ayrı ayrı yapılır ve daha sonra birleştirilir.",
|
||||
"数据类型精度": "veri türü doğruluğu",
|
||||
"文本模块学习率权重": "Metin modülü öğrenme oranı ağırlığı",
|
||||
"文本进程输出信息": "Metin işlemi çıktı bilgisi",
|
||||
"施工中,请静候佳音": "Yapım aşamasında, lütfen iyi haberler için bekleyin",
|
||||
@ -133,6 +132,9 @@
|
||||
"模型分为三类:": "Modeller üç türdedir:",
|
||||
"模型切换": "Model değiştirme",
|
||||
"每张显卡的batch_size": "Her bir ekran kartı için batch_size",
|
||||
"版本": "Versiyon",
|
||||
"粤英混合": "Yue-İngilizce Karışık",
|
||||
"粤语": "Yue",
|
||||
"终止ASR进程": "ASR işlemini durdur",
|
||||
"终止GPT训练": "GPT eğitimini durdur",
|
||||
"终止SSL提取进程": "SSL çıkarma işlemini durdur",
|
||||
@ -160,9 +162,10 @@
|
||||
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。": "Eğitimi tamamlanmış ve SoVITS_weights ile GPT_weights altına kaydedilmiş modeli seçin. Varsayılan bir temel modeldir, 5 saniyelik Zero Shot TTS deneyimi için kullanılır.",
|
||||
"降噪结果输出文件夹": "Gürültü azaltma sonuçları çıktı klasörü",
|
||||
"降噪音频文件输入文件夹": "Gürültü azaltma ses dosyaları giriş klasörü",
|
||||
"需要合成的切分前文本": "Bölünmeden önce sentezlenmesi gereken metin",
|
||||
"需要合成的文本": "Sentezlenmesi gereken metin",
|
||||
"需要合成的语种": "Sentezlenmesi gereken dil",
|
||||
"韩文": "Korece",
|
||||
"韩英混合": "Korece-İngilizce Karışık",
|
||||
"音频自动切分输入路径,可文件可文件夹": "Ses otomatik bölme giriş yolu, dosya veya klasör olabilir",
|
||||
"预训练的GPT模型路径": "Ön eğitilmiş GPT model yolu",
|
||||
"预训练的SSL模型路径": "Ön eğitilmiş SSL model yolu",
|
||||
|
@ -34,11 +34,11 @@
|
||||
"3、去混响、去延迟模型(by FoxJoy):": "3、去混响、去延迟模型(by FoxJoy):",
|
||||
"ASR 模型": "ASR 模型",
|
||||
"ASR 模型尺寸": "ASR 模型尺寸",
|
||||
"数据类型精度": "数据类型精度",
|
||||
"ASR 语言设置": "ASR 语言设置",
|
||||
"ASR进程输出信息": "ASR进程输出信息",
|
||||
"GPT模型列表": "GPT模型列表",
|
||||
"GPT训练进程输出信息": "GPT训练进程输出信息",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT采样参数(无参考文本时不要太低。不懂就用默认):",
|
||||
"GPU卡号,只能填1个整数": "GPU卡号,只能填1个整数",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "GPU卡号以-分割,每个卡号一个进程",
|
||||
"SSL进程输出信息": "SSL进程输出信息",
|
||||
@ -51,7 +51,6 @@
|
||||
"UVR5已开启": "UVR5已开启",
|
||||
"UVR5进程输出信息": "UVR5进程输出信息",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix:混多少比例归一化后音频进来",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT采样参数(无参考文本时不要太低。不懂就用默认):",
|
||||
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)",
|
||||
"max:归一化后最大值多少": "max:归一化后最大值多少",
|
||||
"max_sil_kept:切完后静音最多留多长": "max_sil_kept:切完后静音最多留多长",
|
||||
@ -69,12 +68,12 @@
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。": "人声伴奏分离批量处理, 使用UVR5模型。",
|
||||
"人声提取激进程度": "人声提取激进程度",
|
||||
"以下模型不存在:": "以下模型不存在:",
|
||||
"伴奏人声分离&去混响&去回声": "伴奏人声分离&去混响&去回声",
|
||||
"使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。",
|
||||
"保存频率save_every_epoch": "保存频率save_every_epoch",
|
||||
"凑50字一切": "凑50字一切",
|
||||
"凑四句一切": "凑四句一切",
|
||||
"切分后文本": "切分后文本",
|
||||
"切分后的子音频的输出根目录": "切分后的子音频的输出根目录",
|
||||
"切割使用的进程数": "切割使用的进程数",
|
||||
"刷新模型路径": "刷新模型路径",
|
||||
@ -85,9 +84,9 @@
|
||||
"参考音频的语种": "参考音频的语种",
|
||||
"合成语音": "合成语音",
|
||||
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。",
|
||||
"后续将支持转音素、手工修改音素、语音合成分步执行。": "后续将支持转音素、手工修改音素、语音合成分步执行。",
|
||||
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。": "填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。",
|
||||
"多语种混合": "多语种混合",
|
||||
"多语种混合(粤语)": "多语种混合(粤语)",
|
||||
"实际输入的参考文本:": "实际输入的参考文本:",
|
||||
"实际输入的目标文本(切句后):": "实际输入的目标文本(切句后):",
|
||||
"实际输入的目标文本(每句):": "实际输入的目标文本(每句):",
|
||||
@ -114,7 +113,7 @@
|
||||
"按中文句号。切": "按中文句号。切",
|
||||
"按标点符号切": "按标点符号切",
|
||||
"按英文句号.切": "按英文句号.切",
|
||||
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。",
|
||||
"数据类型精度": "数据类型精度",
|
||||
"文本模块学习率权重": "文本模块学习率权重",
|
||||
"文本进程输出信息": "文本进程输出信息",
|
||||
"施工中,请静候佳音": "施工中,请静候佳音",
|
||||
@ -133,6 +132,9 @@
|
||||
"模型分为三类:": "模型分为三类:",
|
||||
"模型切换": "模型切换",
|
||||
"每张显卡的batch_size": "每张显卡的batch_size",
|
||||
"版本": "版本",
|
||||
"粤英混合": "粤英混合",
|
||||
"粤语": "粤语",
|
||||
"终止ASR进程": "终止ASR进程",
|
||||
"终止GPT训练": "终止GPT训练",
|
||||
"终止SSL提取进程": "终止SSL提取进程",
|
||||
@ -160,9 +162,10 @@
|
||||
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。": "选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。",
|
||||
"降噪结果输出文件夹": "降噪结果输出文件夹",
|
||||
"降噪音频文件输入文件夹": "降噪音频文件输入文件夹",
|
||||
"需要合成的切分前文本": "需要合成的切分前文本",
|
||||
"需要合成的文本": "需要合成的文本",
|
||||
"需要合成的语种": "需要合成的语种",
|
||||
"韩文": "韩文",
|
||||
"韩英混合": "韩英混合",
|
||||
"音频自动切分输入路径,可文件可文件夹": "音频自动切分输入路径,可文件可文件夹",
|
||||
"预训练的GPT模型路径": "预训练的GPT模型路径",
|
||||
"预训练的SSL模型路径": "预训练的SSL模型路径",
|
||||
|
@ -34,11 +34,11 @@
|
||||
"3、去混响、去延迟模型(by FoxJoy):": "3、去混響、去延遲模型(by FoxJoy):",
|
||||
"ASR 模型": "ASR 模型",
|
||||
"ASR 模型尺寸": "ASR 模型尺寸",
|
||||
"数据类型精度": "數據類型精度",
|
||||
"ASR 语言设置": "ASR 語言設置",
|
||||
"ASR进程输出信息": "ASR進程輸出信息",
|
||||
"GPT模型列表": "GPT模型列表",
|
||||
"GPT训练进程输出信息": "GPT訓練進程輸出信息",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT 采样参数(无参考文本时不要太低。不懂就用默认):",
|
||||
"GPU卡号,只能填1个整数": "GPU卡號,只能填1個整數",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "GPU卡號以-分割,每個卡號一個進程",
|
||||
"SSL进程输出信息": "SSL進程輸出信息",
|
||||
@ -51,7 +51,6 @@
|
||||
"UVR5已开启": "UVR5已開啟",
|
||||
"UVR5进程输出信息": "UVR5進程輸出信息",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix:混多少比例歸一化後音頻進來",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT 采样参数(无参考文本时不要太低。不懂就用默认):",
|
||||
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size:怎麼算音量曲線,越小精度越大計算量越高(不是精度越大效果越好)",
|
||||
"max:归一化后最大值多少": "max:歸一化後最大值多少",
|
||||
"max_sil_kept:切完后静音最多留多长": "max_sil_kept:切完後靜音最多留多長",
|
||||
@ -69,12 +68,12 @@
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。": "人聲伴奏分離批量處理, 使用UVR5模型。",
|
||||
"人声提取激进程度": "人聲提取激進程度",
|
||||
"以下模型不存在:": "以下模型不存在:",
|
||||
"伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲",
|
||||
"使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "使用無參考文本模式時建議使用微調的GPT,聽不清參考音頻說的是啥(不知道寫啥)可以開啟,開啟後無視填寫的參考文本。",
|
||||
"保存频率save_every_epoch": "保存頻率save_every_epoch",
|
||||
"凑50字一切": "湊50字一切",
|
||||
"凑四句一切": "湊四句一切",
|
||||
"切分后文本": "切分後文本",
|
||||
"切分后的子音频的输出根目录": "切分後的子音頻的輸出根目錄",
|
||||
"切割使用的进程数": "切割使用的進程數",
|
||||
"刷新模型路径": "刷新模型路徑",
|
||||
@ -85,9 +84,9 @@
|
||||
"参考音频的语种": "參考音頻的語種",
|
||||
"合成语音": "合成語音",
|
||||
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "合格的文件夾路徑格式舉例: E:\\codes\\py39\\vits_vc_gpu\\白鷺霜華測試樣例(去文件管理器地址欄拷就行了)。",
|
||||
"后续将支持转音素、手工修改音素、语音合成分步执行。": "後續將支持轉音素、手工修改音素、語音合成分步執行。",
|
||||
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。": "填切割後音頻所在目錄!讀取的音頻文件完整路徑=該目錄-拼接-list文件裡波形對應的文件名(不是全路徑)。如果留空則使用.list文件裡的絕對全路徑。",
|
||||
"多语种混合": "多語種混合",
|
||||
"多语种混合(粤语)": "多語種混合 (粵語)",
|
||||
"实际输入的参考文本:": "實際輸入的參考文本:",
|
||||
"实际输入的目标文本(切句后):": "實際輸入的目標文本(切句後):",
|
||||
"实际输入的目标文本(每句):": "實際輸入的目標文本(每句):",
|
||||
@ -114,7 +113,7 @@
|
||||
"按中文句号。切": "按中文句號。切",
|
||||
"按标点符号切": "按標點符號切",
|
||||
"按英文句号.切": "按英文句號.切",
|
||||
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "文本切分工具。太長的文本合成出來效果不一定好,所以太長建議先切。合成會根據文本的換行分開合成再拼起來。",
|
||||
"数据类型精度": "數據類型精度",
|
||||
"文本模块学习率权重": "文本模塊學習率權重",
|
||||
"文本进程输出信息": "文本進程輸出信息",
|
||||
"施工中,请静候佳音": "施工中,請靜候佳音",
|
||||
@ -133,6 +132,9 @@
|
||||
"模型分为三类:": "模型分為三類:",
|
||||
"模型切换": "模型切換",
|
||||
"每张显卡的batch_size": "每張顯卡的batch_size",
|
||||
"版本": "版本",
|
||||
"粤英混合": "粵英混合",
|
||||
"粤语": "粵語",
|
||||
"终止ASR进程": "終止ASR進程",
|
||||
"终止GPT训练": "終止GPT訓練",
|
||||
"终止SSL提取进程": "終止SSL提取進程",
|
||||
@ -160,9 +162,10 @@
|
||||
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。": "選擇訓練完存放在SoVITS_weights和GPT_weights下的模型。默認的一個是底模,體驗5秒Zero Shot TTS用。",
|
||||
"降噪结果输出文件夹": "降噪結果輸出文件夾",
|
||||
"降噪音频文件输入文件夹": "降噪音頻文件輸入文件夾",
|
||||
"需要合成的切分前文本": "需要合成的切分前文本",
|
||||
"需要合成的文本": "需要合成的文本",
|
||||
"需要合成的语种": "需要合成的語種",
|
||||
"韩文": "韓文",
|
||||
"韩英混合": "韓英混合",
|
||||
"音频自动切分输入路径,可文件可文件夹": "音頻自動切分輸入路徑,可文件可文件夾",
|
||||
"预训练的GPT模型路径": "預訓練的GPT模型路徑",
|
||||
"预训练的SSL模型路径": "預訓練的SSL模型路徑",
|
||||
|
@ -34,11 +34,11 @@
|
||||
"3、去混响、去延迟模型(by FoxJoy):": "3、去混響、去延遲模型(by FoxJoy):",
|
||||
"ASR 模型": "ASR 模型",
|
||||
"ASR 模型尺寸": "ASR 模型尺寸",
|
||||
"数据类型精度": "數據類型精度",
|
||||
"ASR 语言设置": "ASR 語言設定",
|
||||
"ASR进程输出信息": "ASR進程輸出資訊",
|
||||
"GPT模型列表": "GPT模型列表",
|
||||
"GPT训练进程输出信息": "GPT訓練進程輸出資訊",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT 采样参数(无参考文本时不要太低。不懂就用默认):",
|
||||
"GPU卡号,只能填1个整数": "GPU卡號,只能填1個整數",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "GPU卡號以-分割,每個卡號一個進程",
|
||||
"SSL进程输出信息": "SSL進程輸出資訊",
|
||||
@ -51,7 +51,6 @@
|
||||
"UVR5已开启": "UVR5已開啟",
|
||||
"UVR5进程输出信息": "UVR5進程輸出資訊",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix:混多少比例歸一化後音頻進來",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT 采样参数(无参考文本时不要太低。不懂就用默认):",
|
||||
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size:怎麼算音量曲線,越小精度越大計算量越高(不是精度越大效果越好)",
|
||||
"max:归一化后最大值多少": "max:歸一化後最大值多少",
|
||||
"max_sil_kept:切完后静音最多留多长": "max_sil_kept:切完後靜音最多留多長",
|
||||
@ -69,12 +68,12 @@
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。": "人聲伴奏分離批量處理, 使用UVR5模型。",
|
||||
"人声提取激进程度": "人聲提取激進程度",
|
||||
"以下模型不存在:": "以下模型不存在",
|
||||
"伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲",
|
||||
"使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "使用無參考文本模式時建議使用微調的GPT,聽不清參考音頻說的啥(不曉得寫啥)可以開,開啟後無視填寫的參考文本。",
|
||||
"保存频率save_every_epoch": "保存頻率save_every_epoch",
|
||||
"凑50字一切": "湊50字一切",
|
||||
"凑四句一切": "湊四句一切",
|
||||
"切分后文本": "切分後文本",
|
||||
"切分后的子音频的输出根目录": "切分後的子音頻的輸出根目錄",
|
||||
"切割使用的进程数": "切割使用的進程數",
|
||||
"刷新模型路径": "刷新模型路徑",
|
||||
@ -85,9 +84,9 @@
|
||||
"参考音频的语种": "參考音頻的語種",
|
||||
"合成语音": "合成語音",
|
||||
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "合格的資料夾路徑格式舉例: E:\\codes\\py39\\vits_vc_gpu\\白鷺霜華測試範例(去文件管理器地址欄拷就行了)。",
|
||||
"后续将支持转音素、手工修改音素、语音合成分步执行。": "後續將支持轉音素、手工修改音素、語音合成分步執行。",
|
||||
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。": "填切割後音頻所在目錄!讀取的音頻檔案完整路徑=該目錄-拼接-list檔案裡波形對應的檔案名(不是全路徑)。如果留空則使用.list檔案裡的絕對全路徑。",
|
||||
"多语种混合": "多語種混合",
|
||||
"多语种混合(粤语)": "多語種混合 (粵語)",
|
||||
"实际输入的参考文本:": "實際輸入的參考文本:",
|
||||
"实际输入的目标文本(切句后):": "實際輸入的目標文本(切句後):",
|
||||
"实际输入的目标文本(每句):": "實際輸入的目標文本(每句):",
|
||||
@ -114,7 +113,7 @@
|
||||
"按中文句号。切": "按中文句號。切",
|
||||
"按标点符号切": "按標點符號切",
|
||||
"按英文句号.切": "按英文句號.切",
|
||||
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "文本切分工具。太長的文本合成出來效果不一定好,所以太長建議先切。合成會根據文本的換行分開合成再拼起來。",
|
||||
"数据类型精度": "數據類型精度",
|
||||
"文本模块学习率权重": "文本模塊學習率權重",
|
||||
"文本进程输出信息": "文本進程輸出資訊",
|
||||
"施工中,请静候佳音": "施工中,請靜候佳音",
|
||||
@ -133,6 +132,9 @@
|
||||
"模型分为三类:": "模型分為三類:",
|
||||
"模型切换": "模型切換",
|
||||
"每张显卡的batch_size": "每張顯卡的batch_size",
|
||||
"版本": "版本",
|
||||
"粤英混合": "粵英混合",
|
||||
"粤语": "粵語",
|
||||
"终止ASR进程": "終止ASR進程",
|
||||
"终止GPT训练": "終止GPT訓練",
|
||||
"终止SSL提取进程": "終止SSL提取進程",
|
||||
@ -160,9 +162,10 @@
|
||||
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。": "選擇訓練完存放在SoVITS_weights和GPT_weights下的模型。默認的一個是底模,體驗5秒Zero Shot TTS用。",
|
||||
"降噪结果输出文件夹": "降噪結果輸出文件夾",
|
||||
"降噪音频文件输入文件夹": "降噪音頻文件輸入文件夾",
|
||||
"需要合成的切分前文本": "需要合成的切分前文本",
|
||||
"需要合成的文本": "需要合成的文本",
|
||||
"需要合成的语种": "需要合成的語種",
|
||||
"韩文": "韓文",
|
||||
"韩英混合": "韓英混合",
|
||||
"音频自动切分输入路径,可文件可文件夹": "音頻自動切分輸入路徑,可文件可文件夾",
|
||||
"预训练的GPT模型路径": "預訓練的GPT模型路徑",
|
||||
"预训练的SSL模型路径": "預訓練的SSL模型路徑",
|
||||
|
@ -34,11 +34,11 @@
|
||||
"3、去混响、去延迟模型(by FoxJoy):": "3、去混響、去延遲模型(by FoxJoy):",
|
||||
"ASR 模型": "ASR 模型",
|
||||
"ASR 模型尺寸": "ASR 模型尺寸",
|
||||
"数据类型精度": "數據類型精度",
|
||||
"ASR 语言设置": "ASR 語言設置",
|
||||
"ASR进程输出信息": "ASR進程輸出資訊",
|
||||
"GPT模型列表": "GPT模型列表",
|
||||
"GPT训练进程输出信息": "GPT訓練進程輸出資訊",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT 采样参数(无参考文本时不要太低。不懂就用默认):",
|
||||
"GPU卡号,只能填1个整数": "GPU卡號,只能填1個整數",
|
||||
"GPU卡号以-分割,每个卡号一个进程": "GPU卡號以-分割,每個卡號一個進程",
|
||||
"SSL进程输出信息": "SSL進程輸出資訊",
|
||||
@ -51,7 +51,6 @@
|
||||
"UVR5已开启": "UVR5已開啟",
|
||||
"UVR5进程输出信息": "UVR5進程輸出資訊",
|
||||
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix:混多少比例歸一化後音頻進來",
|
||||
"GPT采样参数(无参考文本时不要太低。不懂就用默认):": "GPT 采样参数(无参考文本时不要太低。不懂就用默认):",
|
||||
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size:怎麼算音量曲線,越小精度越大計算量越高(不是精度越大效果越好)",
|
||||
"max:归一化后最大值多少": "max:歸一化後最大值多少",
|
||||
"max_sil_kept:切完后静音最多留多长": "max_sil_kept:切完後靜音最多留多長",
|
||||
@ -69,12 +68,12 @@
|
||||
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
|
||||
"人声伴奏分离批量处理, 使用UVR5模型。": "人聲伴奏分離批量處理, 使用UVR5模型。",
|
||||
"人声提取激进程度": "人聲提取激進程度",
|
||||
"以下模型不存在:": "#以下模型不存在",
|
||||
"伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲",
|
||||
"使用无参考文本模式时建议使用微调的GPT,听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "使用無參考文本模式時建議使用微調的GPT,聽不清參考音頻說的啥(不曉得寫啥)可以開,開啟後無視填寫的參考文本。",
|
||||
"保存频率save_every_epoch": "保存頻率save_every_epoch",
|
||||
"凑50字一切": "湊50字一切",
|
||||
"凑四句一切": "湊四句一切",
|
||||
"切分后文本": "切分後文本",
|
||||
"切分后的子音频的输出根目录": "切分後的子音頻的輸出根目錄",
|
||||
"切割使用的进程数": "切割使用的進程數",
|
||||
"刷新模型路径": "刷新模型路徑",
|
||||
@ -85,9 +84,9 @@
|
||||
"参考音频的语种": "參考音頻的語種",
|
||||
"合成语音": "合成語音",
|
||||
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "合格的資料夾路徑格式舉例: E:\\codes\\py39\\vits_vc_gpu\\白鷺霜華測試範例(去文件管理器地址欄拷就行了)。",
|
||||
"后续将支持转音素、手工修改音素、语音合成分步执行。": "後續將支持轉音素、手工修改音素、語音合成分步執行。",
|
||||
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名(不是全路径)。如果留空则使用.list文件里的绝对全路径。": "填切割後音頻所在目錄!讀取的音頻檔案完整路徑=該目錄-拼接-list檔案裡波形對應的檔案名(不是全路徑)。如果留空則使用.list檔案裡的絕對全路徑。",
|
||||
"多语种混合": "多語種混合",
|
||||
"多语种混合(粤语)": "多語種混合 (粵語)",
|
||||
"实际输入的参考文本:": "實際輸入的參考文本:",
|
||||
"实际输入的目标文本(切句后):": "實際輸入的目標文本(切句後):",
|
||||
"实际输入的目标文本(每句):": "實際輸入的目標文本(每句):",
|
||||
@ -114,7 +113,7 @@
|
||||
"按中文句号。切": "按中文句號。切",
|
||||
"按标点符号切": "按標點符號切",
|
||||
"按英文句号.切": "按英文句號.切",
|
||||
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "文本切分工具。太長的文本合成出來效果不一定好,所以太長建議先切。合成會根據文本的換行分開合成再拼起來。",
|
||||
"数据类型精度": "數據類型精度",
|
||||
"文本模块学习率权重": "文本模塊學習率權重",
|
||||
"文本进程输出信息": "文本進程輸出資訊",
|
||||
"施工中,请静候佳音": "施工中,請靜候佳音",
|
||||
@ -133,6 +132,9 @@
|
||||
"模型分为三类:": "模型分為三類:",
|
||||
"模型切换": "模型切換",
|
||||
"每张显卡的batch_size": "每張顯卡的batch_size",
|
||||
"版本": "版本",
|
||||
"粤英混合": "粵英混合",
|
||||
"粤语": "粵語",
|
||||
"终止ASR进程": "終止ASR進程",
|
||||
"终止GPT训练": "終止GPT訓練",
|
||||
"终止SSL提取进程": "終止SSL提取進程",
|
||||
@ -160,9 +162,10 @@
|
||||
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模,体验5秒Zero Shot TTS用。": "選擇訓練完存放在SoVITS_weights和GPT_weights下的模型。默認的一個是底模,體驗5秒Zero Shot TTS用。",
|
||||
"降噪结果输出文件夹": "降噪結果輸出文件夾",
|
||||
"降噪音频文件输入文件夹": "降噪音頻文件輸入文件夾",
|
||||
"需要合成的切分前文本": "需要合成的切分前文本",
|
||||
"需要合成的文本": "需要合成的文本",
|
||||
"需要合成的语种": "需要合成的語種",
|
||||
"韩文": "韓文",
|
||||
"韩英混合": "韓英混合",
|
||||
"音频自动切分输入路径,可文件可文件夹": "音頻自動切分輸入路徑,可文件可文件夾",
|
||||
"预训练的GPT模型路径": "預訓練的GPT模型路徑",
|
||||
"预训练的SSL模型路径": "預訓練的SSL模型路徑",
|
||||
|
95
webui.py
95
webui.py
@ -1,9 +1,7 @@
|
||||
import os,shutil,sys,pdb,re
|
||||
if len(sys.argv)==1:sys.argv.append('v1')
|
||||
version="v2"if sys.argv[1]=="v2" else"v1"
|
||||
language=sys.argv[-1] if len(sys.argv[-1])==5 else "auto"
|
||||
if len(sys.argv)==1:sys.argv.append('v2')
|
||||
version="v1"if sys.argv[1]=="v1" else"v2"
|
||||
os.environ["version"]=version
|
||||
os.environ["language"]=language
|
||||
now_dir = os.getcwd()
|
||||
sys.path.insert(0, now_dir)
|
||||
import json,yaml,warnings,torch
|
||||
@ -54,7 +52,9 @@ import gradio as gr
|
||||
from subprocess import Popen
|
||||
import signal
|
||||
from config import python_exec,infer_device,is_half,exp_root,webui_port_main,webui_port_infer_tts,webui_port_uvr5,webui_port_subfix,is_share
|
||||
from tools.i18n.i18n import I18nAuto
|
||||
from tools.i18n.i18n import I18nAuto, scan_language_list
|
||||
language=sys.argv[-1] if sys.argv[-1] in scan_language_list() else "auto"
|
||||
os.environ["language"]=language
|
||||
if language != 'auto':
|
||||
i18n = I18nAuto(language=language)
|
||||
else:
|
||||
@ -62,7 +62,6 @@ else:
|
||||
from scipy.io import wavfile
|
||||
from tools.my_utils import load_audio
|
||||
from multiprocessing import cpu_count
|
||||
|
||||
# os.environ['PYTORCH_ENABLE_MPS_FALLBACK'] = '1' # 当遇到mps不支持的步骤时使用cpu
|
||||
|
||||
n_cpu=cpu_count()
|
||||
@ -112,23 +111,43 @@ def fix_gpu_numbers(inputs):
|
||||
return ",".join(output)
|
||||
except:
|
||||
return inputs
|
||||
pretrained_sovits_name="GPT_SoVITS/pretrained_models/s2G488k.pth"if version=="v1"else"GPT_SoVITS/pretrained_models/gsv-v2final-pretrained/s2G2333k.pth"
|
||||
pretrained_gpt_name="GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt"if version=="v1"else "GPT_SoVITS/pretrained_models/gsv-v2final-pretrained/s1bert25hz-5kh-longer-epoch=12-step=369668.ckpt"
|
||||
def get_weights_names():
|
||||
SoVITS_names = [pretrained_sovits_name]
|
||||
for name in os.listdir(SoVITS_weight_root):
|
||||
if name.endswith(".pth"):SoVITS_names.append(name)
|
||||
GPT_names = [pretrained_gpt_name]
|
||||
for name in os.listdir(GPT_weight_root):
|
||||
if name.endswith(".ckpt"): GPT_names.append(name)
|
||||
return SoVITS_names,GPT_names
|
||||
SoVITS_weight_root="SoVITS_weights_v2" if version=='v2' else "SoVITS_weights"
|
||||
GPT_weight_root="GPT_weights_v2" if version=='v2' else "GPT_weights"
|
||||
os.makedirs("SoVITS_weights",exist_ok=True)
|
||||
os.makedirs("GPT_weights",exist_ok=True)
|
||||
os.makedirs("SoVITS_weights_v2",exist_ok=True)
|
||||
os.makedirs("GPT_weights_v2",exist_ok=True)
|
||||
SoVITS_names,GPT_names = get_weights_names()
|
||||
|
||||
def get_weights_names(GPT_weight_root, SoVITS_weight_root):
|
||||
SoVITS_names = [i for i in pretrained_sovits_name]
|
||||
for path in SoVITS_weight_root:
|
||||
for name in os.listdir(path):
|
||||
if name.endswith(".pth"): SoVITS_names.append("%s/%s" % (path, name))
|
||||
GPT_names = [i for i in pretrained_gpt_name]
|
||||
for path in GPT_weight_root:
|
||||
for name in os.listdir(path):
|
||||
if name.endswith(".ckpt"): GPT_names.append("%s/%s" % (path, name))
|
||||
return SoVITS_names, GPT_names
|
||||
|
||||
pretrained_sovits_name=["GPT_SoVITS/pretrained_models/gsv-v2final-pretrained/s2G2333k.pth", "GPT_SoVITS/pretrained_models/s2G488k.pth"]
|
||||
pretrained_gpt_name=["GPT_SoVITS/pretrained_models/gsv-v2final-pretrained/s1bert25hz-5kh-longer-epoch=12-step=369668.ckpt", "GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt"]
|
||||
|
||||
pretrained_model_list = (pretrained_sovits_name[-int(version[-1])+2],pretrained_sovits_name[-int(version[-1])+2].replace("s2G","s2D"),pretrained_gpt_name[-int(version[-1])+2],"GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large","GPT_SoVITS/pretrained_models/chinese-hubert-base")
|
||||
|
||||
_=''
|
||||
for i in pretrained_model_list:
|
||||
if os.path.exists(i):...
|
||||
else:_+=f'\n {i}'
|
||||
if _:raise FileExistsError(i18n('以下模型不存在:')+_)
|
||||
|
||||
_ =[[],[]]
|
||||
for i in range(2):
|
||||
if os.path.exists(pretrained_gpt_name[i]):
|
||||
_[0].append(pretrained_gpt_name[i])
|
||||
if os.path.exists(pretrained_sovits_name[i]):
|
||||
_[-1].append(pretrained_sovits_name[i])
|
||||
pretrained_gpt_name,pretrained_sovits_name = _
|
||||
|
||||
SoVITS_weight_root=["SoVITS_weights_v2","SoVITS_weights"]
|
||||
GPT_weight_root=["GPT_weights_v2","GPT_weights"]
|
||||
SoVITS_names,GPT_names = get_weights_names(GPT_weight_root, SoVITS_weight_root)
|
||||
for path in SoVITS_weight_root+GPT_weight_root:
|
||||
os.makedirs(path,exist_ok=True)
|
||||
|
||||
|
||||
def custom_sort_key(s):
|
||||
# 使用正则表达式提取字符串中的数字部分和非数字部分
|
||||
@ -299,6 +318,7 @@ def open1Ba(batch_size,total_epoch,exp_name,text_low_lr_rate,if_save_latest,if_s
|
||||
data["data"]["exp_dir"]=data["s2_ckpt_dir"]=s2_dir
|
||||
data["save_weight_dir"]=SoVITS_weight_root
|
||||
data["name"]=exp_name
|
||||
data["version"]=version
|
||||
tmp_config_path="%s/tmp_s2.json"%tmp
|
||||
with open(tmp_config_path,"w")as f:f.write(json.dumps(data))
|
||||
|
||||
@ -343,6 +363,7 @@ def open1Bb(batch_size,total_epoch,exp_name,if_dpo,if_save_latest,if_save_every_
|
||||
data["train_semantic_path"]="%s/6-name2semantic.tsv"%s1_dir
|
||||
data["train_phoneme_path"]="%s/2-name2text.txt"%s1_dir
|
||||
data["output_dir"]="%s/logs_s1"%s1_dir
|
||||
data["version"]=version
|
||||
|
||||
os.environ["_CUDA_VISIBLE_DEVICES"]=fix_gpu_numbers(gpu_numbers.replace("-",","))
|
||||
os.environ["hz"]="25hz"
|
||||
@ -702,6 +723,20 @@ def close1abc():
|
||||
ps1abc=[]
|
||||
return "已终止所有一键三连进程", {"__type__": "update", "visible": True}, {"__type__": "update", "visible": False}
|
||||
|
||||
def switch_version(version_):
|
||||
os.environ['version']=version_
|
||||
global version
|
||||
version = version_
|
||||
|
||||
if len(pretrained_gpt_name) > 1 and len(pretrained_sovits_name) > 1:
|
||||
return {'__type__':'update', 'value':pretrained_sovits_name[-int(version[-1])+2]}, {'__type__':'update', 'value':pretrained_sovits_name[-int(version[-1])+2].replace("s2G","s2D")}, {'__type__':'update', 'value':pretrained_gpt_name[-int(version[-1])+2]}, {'__type__':'update', 'value':pretrained_gpt_name[-int(version[-1])+2]}, {'__type__':'update', 'value':pretrained_sovits_name[-int(version[-1])+2]}
|
||||
else:
|
||||
raise gr.Error(i18n(f'未下载{version.upper()}模型'))
|
||||
|
||||
|
||||
from text.g2pw import G2PWPinyin
|
||||
g2pw = G2PWPinyin(model_dir="GPT_SoVITS/text/G2PWModel",model_source="GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large",v_to_u=False, neutral_tone_with_five=True)
|
||||
|
||||
with gr.Blocks(title="GPT-SoVITS WebUI") as app:
|
||||
gr.Markdown(
|
||||
value=
|
||||
@ -831,9 +866,10 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app:
|
||||
with gr.Row():
|
||||
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=pretrained_sovits_name, interactive=True)
|
||||
pretrained_s2D = gr.Textbox(label=i18n("预训练的SoVITS-D模型路径"), value=pretrained_sovits_name.replace("s2G","s2D"), interactive=True)
|
||||
pretrained_s1 = gr.Textbox(label=i18n("预训练的GPT模型路径"), value=pretrained_gpt_name, interactive=True)
|
||||
version_checkbox = gr.Radio(label=i18n("版本"),value='v2',choices=['v1','v2'])
|
||||
pretrained_s2G = gr.Textbox(label=i18n("预训练的SoVITS-G模型路径"), value=pretrained_sovits_name[0], interactive=True)
|
||||
pretrained_s2D = gr.Textbox(label=i18n("预训练的SoVITS-D模型路径"), value=pretrained_sovits_name[0].replace("s2G","s2D"), interactive=True)
|
||||
pretrained_s1 = gr.Textbox(label=i18n("预训练的GPT模型路径"), value=pretrained_gpt_name[0], interactive=True)
|
||||
with gr.TabItem(i18n("1A-训练集格式化工具")):
|
||||
gr.Markdown(value=i18n("输出logs/实验名目录下应有23456开头的文件和文件夹"))
|
||||
with gr.Row():
|
||||
@ -876,7 +912,7 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app:
|
||||
close_slicer_button.click(close_slice, [], [slicer_info,open_slicer_button,close_slicer_button])
|
||||
open_denoise_button.click(open_denoise, [denoise_input_dir,denoise_output_dir], [denoise_info,open_denoise_button,close_denoise_button,asr_inp_dir,inp_wav_dir])
|
||||
close_denoise_button.click(close_denoise, [], [denoise_info,open_denoise_button,close_denoise_button])
|
||||
|
||||
|
||||
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])
|
||||
@ -919,8 +955,8 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app:
|
||||
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=i18n("*GPT模型列表"), choices=sorted(GPT_names,key=custom_sort_key),value=pretrained_gpt_name,interactive=True)
|
||||
SoVITS_dropdown = gr.Dropdown(label=i18n("*SoVITS模型列表"), choices=sorted(SoVITS_names,key=custom_sort_key),value=pretrained_sovits_name,interactive=True)
|
||||
GPT_dropdown = gr.Dropdown(label=i18n("*GPT模型列表"), choices=sorted(GPT_names,key=custom_sort_key),value=pretrained_gpt_name[0],interactive=True)
|
||||
SoVITS_dropdown = gr.Dropdown(label=i18n("*SoVITS模型列表"), choices=sorted(SoVITS_names,key=custom_sort_key),value=pretrained_sovits_name[0],interactive=True)
|
||||
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])
|
||||
@ -928,6 +964,7 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app:
|
||||
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])
|
||||
version_checkbox.change(switch_version,[version_checkbox],[pretrained_s2G,pretrained_s2D,pretrained_s1,GPT_dropdown,SoVITS_dropdown])
|
||||
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",
|
||||
|
Loading…
x
Reference in New Issue
Block a user