更新到gsv官方最新版本

This commit is contained in:
Downupanddownup 2024-09-15 19:25:58 +08:00
commit 50a88a596d
107 changed files with 56135 additions and 5546 deletions

6
.gitignore vendored
View File

@ -1,4 +1,5 @@
.DS_Store
.vscode
__pycache__
*.pyc
env
@ -9,4 +10,9 @@ logs
reference
GPT_weights
SoVITS_weights
GPT_weights_v2
SoVITS_weights_v2
TEMP
weight.json
ffmpeg*
ffprobe*

View File

@ -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 !")

View File

@ -1,5 +1,7 @@
# modified from https://github.com/yangdongchao/SoundStorm/blob/master/soundstorm/s1/AR/models/t2s_model.py
# reference: https://github.com/lifeiteng/vall-e
import math
from typing import List, Optional
import torch
from tqdm import tqdm
@ -34,6 +36,225 @@ default_config = {
"EOS": 1024,
}
# @torch.jit.script ## 使用的话首次推理会非常慢,而且推理速度不稳定
# Efficient implementation equivalent to the following:
def scaled_dot_product_attention(query:torch.Tensor, key:torch.Tensor, value:torch.Tensor, attn_mask:Optional[torch.Tensor]=None, scale:Optional[torch.Tensor]=None) -> torch.Tensor:
B, H, L, S =query.size(0), query.size(1), query.size(-2), key.size(-2)
if scale is None:
scale_factor = torch.tensor(1 / math.sqrt(query.size(-1)))
else:
scale_factor = scale
attn_bias = torch.zeros(B, H, L, S, dtype=query.dtype, device=query.device)
if attn_mask is not None:
if attn_mask.dtype == torch.bool:
attn_bias.masked_fill_(attn_mask, float("-inf"))
else:
attn_bias += attn_mask
attn_weight = query @ key.transpose(-2, -1) * scale_factor
attn_weight += attn_bias
attn_weight = torch.softmax(attn_weight, dim=-1)
if attn_mask is not None:
if attn_mask.dtype == torch.bool:
attn_weight.masked_fill_(attn_mask, 0)
else:
attn_mask[attn_mask!=float("-inf")] =0
attn_mask[attn_mask==float("-inf")] =1
attn_weight.masked_fill_(attn_mask, 0)
return attn_weight @ value
@torch.jit.script
class T2SMLP:
def __init__(self, w1, b1, w2, b2):
self.w1 = w1
self.b1 = b1
self.w2 = w2
self.b2 = b2
def forward(self, x):
x = F.relu(F.linear(x, self.w1, self.b1))
x = F.linear(x, self.w2, self.b2)
return x
@torch.jit.script
class T2SBlock:
def __init__(
self,
num_heads,
hidden_dim: int,
mlp: T2SMLP,
qkv_w,
qkv_b,
out_w,
out_b,
norm_w1,
norm_b1,
norm_eps1,
norm_w2,
norm_b2,
norm_eps2,
):
self.num_heads = num_heads
self.mlp = mlp
self.hidden_dim: int = hidden_dim
self.qkv_w = qkv_w
self.qkv_b = qkv_b
self.out_w = out_w
self.out_b = out_b
self.norm_w1 = norm_w1
self.norm_b1 = norm_b1
self.norm_eps1 = norm_eps1
self.norm_w2 = norm_w2
self.norm_b2 = norm_b2
self.norm_eps2 = norm_eps2
self.false = torch.tensor(False, dtype=torch.bool)
@torch.jit.ignore
def to_mask(self, x:torch.Tensor, padding_mask:Optional[torch.Tensor]):
if padding_mask is None:
return x
if padding_mask.dtype == torch.bool:
return x.masked_fill(padding_mask, 0)
else:
return x * padding_mask
def process_prompt(self, x:torch.Tensor, attn_mask : torch.Tensor, padding_mask:Optional[torch.Tensor]=None, torch_sdpa:bool=True):
q, k, v = F.linear(self.to_mask(x, padding_mask), self.qkv_w, self.qkv_b).chunk(3, dim=-1)
batch_size = q.shape[0]
q_len = q.shape[1]
kv_len = k.shape[1]
q = self.to_mask(q, padding_mask)
k_cache = self.to_mask(k, padding_mask)
v_cache = self.to_mask(v, padding_mask)
q = q.view(batch_size, q_len, self.num_heads, -1).transpose(1, 2)
k = k_cache.view(batch_size, kv_len, self.num_heads, -1).transpose(1, 2)
v = v_cache.view(batch_size, kv_len, self.num_heads, -1).transpose(1, 2)
if torch_sdpa:
attn = F.scaled_dot_product_attention(q, k, v, ~attn_mask)
else:
attn = scaled_dot_product_attention(q, k, v, attn_mask)
attn = attn.permute(2, 0, 1, 3).reshape(batch_size*q_len, self.hidden_dim)
attn = attn.view(q_len, batch_size, self.hidden_dim).transpose(1, 0)
attn = F.linear(self.to_mask(attn, padding_mask), self.out_w, self.out_b)
if padding_mask is not None:
for i in range(batch_size):
# mask = padding_mask[i,:,0]
if self.false.device!= padding_mask.device:
self.false = self.false.to(padding_mask.device)
idx = torch.where(padding_mask[i,:,0]==self.false)[0]
x_item = x[i,idx,:].unsqueeze(0)
attn_item = attn[i,idx,:].unsqueeze(0)
x_item = x_item + attn_item
x_item = F.layer_norm(
x_item, [self.hidden_dim], self.norm_w1, self.norm_b1, self.norm_eps1
)
x_item = x_item + self.mlp.forward(x_item)
x_item = F.layer_norm(
x_item,
[self.hidden_dim],
self.norm_w2,
self.norm_b2,
self.norm_eps2,
)
x[i,idx,:] = x_item.squeeze(0)
x = self.to_mask(x, padding_mask)
else:
x = x + attn
x = F.layer_norm(
x, [self.hidden_dim], self.norm_w1, self.norm_b1, self.norm_eps1
)
x = x + self.mlp.forward(x)
x = F.layer_norm(
x,
[self.hidden_dim],
self.norm_w2,
self.norm_b2,
self.norm_eps2,
)
return x, k_cache, v_cache
def decode_next_token(self, x:torch.Tensor, k_cache:torch.Tensor, v_cache:torch.Tensor, attn_mask:Optional[torch.Tensor]=None, torch_sdpa:bool=True):
q, k, v = F.linear(x, self.qkv_w, self.qkv_b).chunk(3, dim=-1)
k_cache = torch.cat([k_cache, k], dim=1)
v_cache = torch.cat([v_cache, v], dim=1)
batch_size = q.shape[0]
q_len = q.shape[1]
kv_len = k_cache.shape[1]
q = q.view(batch_size, q_len, self.num_heads, -1).transpose(1, 2)
k = k_cache.view(batch_size, kv_len, self.num_heads, -1).transpose(1, 2)
v = v_cache.view(batch_size, kv_len, self.num_heads, -1).transpose(1, 2)
if torch_sdpa:
attn = F.scaled_dot_product_attention(q, k, v)
else:
attn = scaled_dot_product_attention(q, k, v, attn_mask)
attn = attn.permute(2, 0, 1, 3).reshape(batch_size*q_len, self.hidden_dim)
attn = attn.view(q_len, batch_size, self.hidden_dim).transpose(1, 0)
attn = F.linear(attn, self.out_w, self.out_b)
x = x + attn
x = F.layer_norm(
x, [self.hidden_dim], self.norm_w1, self.norm_b1, self.norm_eps1
)
x = x + self.mlp.forward(x)
x = F.layer_norm(
x,
[self.hidden_dim],
self.norm_w2,
self.norm_b2,
self.norm_eps2,
)
return x, k_cache, v_cache
@torch.jit.script
class T2STransformer:
def __init__(self, num_blocks : int, blocks: List[T2SBlock]):
self.num_blocks : int = num_blocks
self.blocks = blocks
def process_prompt(
self, x:torch.Tensor, attn_mask : torch.Tensor,
padding_mask : Optional[torch.Tensor]=None,
torch_sdpa:bool=True
):
k_cache : List[torch.Tensor] = []
v_cache : List[torch.Tensor] = []
for i in range(self.num_blocks):
x, k_cache_, v_cache_ = self.blocks[i].process_prompt(x, attn_mask, padding_mask, torch_sdpa)
k_cache.append(k_cache_)
v_cache.append(v_cache_)
return x, k_cache, v_cache
def decode_next_token(
self, x:torch.Tensor,
k_cache: List[torch.Tensor],
v_cache: List[torch.Tensor],
attn_mask : Optional[torch.Tensor]=None,
torch_sdpa:bool=True
):
for i in range(self.num_blocks):
x, k_cache[i], v_cache[i] = self.blocks[i].decode_next_token(x, k_cache[i], v_cache[i], attn_mask, torch_sdpa)
return x, k_cache, v_cache
class Text2SemanticDecoder(nn.Module):
def __init__(self, config, norm_first=False, top_k=3):
@ -89,6 +310,37 @@ class Text2SemanticDecoder(nn.Module):
ignore_index=self.EOS,
)
blocks = []
for i in range(self.num_layers):
layer = self.h.layers[i]
t2smlp = T2SMLP(
layer.linear1.weight,
layer.linear1.bias,
layer.linear2.weight,
layer.linear2.bias
)
block = T2SBlock(
self.num_head,
self.model_dim,
t2smlp,
layer.self_attn.in_proj_weight,
layer.self_attn.in_proj_bias,
layer.self_attn.out_proj.weight,
layer.self_attn.out_proj.bias,
layer.norm1.weight,
layer.norm1.bias,
layer.norm1.eps,
layer.norm2.weight,
layer.norm2.bias,
layer.norm2.eps
)
blocks.append(block)
self.t2s_transformer = T2STransformer(self.num_layers, blocks)
def make_input_data(self, x, x_lens, y, y_lens, bert_feature):
x = self.ar_text_embedding(x)
x = x + self.bert_proj(bert_feature.transpose(1, 2))
@ -116,7 +368,7 @@ class Text2SemanticDecoder(nn.Module):
(0, y_len),
value=True,
)
# x_attn_mask[:, x_len]=False
y_attn_mask = F.pad(
torch.triu(
torch.ones(y_len, y_len, dtype=torch.bool, device=x.device),
@ -246,14 +498,14 @@ class Text2SemanticDecoder(nn.Module):
# 需要看下这个函数和 forward 的区别以及没有 semantic 的时候 prompts 输入什么
def infer(
self,
x,
x_lens,
prompts,
bert_feature,
top_k: int = -100,
early_stop_num: int = -1,
temperature: float = 1.0,
self,
x,
x_lens,
prompts,
bert_feature,
top_k: int = -100,
early_stop_num: int = -1,
temperature: float = 1.0,
):
x = self.ar_text_embedding(x)
x = x + self.bert_proj(bert_feature.transpose(1, 2))
@ -321,16 +573,225 @@ class Text2SemanticDecoder(nn.Module):
# 错位
return targets[:, :-1], targets[:, 1:]
def infer_panel(
def infer_panel_batch_infer(
self,
x, #####全部文本token
x_lens,
prompts, ####参考音频token
bert_feature,
x:List[torch.LongTensor], #####全部文本token
x_lens:torch.LongTensor,
prompts:torch.LongTensor, ####参考音频token
bert_feature:List[torch.LongTensor],
top_k: int = -100,
top_p: int = 100,
early_stop_num: int = -1,
temperature: float = 1.0,
repetition_penalty: float = 1.35,
**kwargs,
):
if prompts is None:
print("Warning: Prompt free is not supported batch_infer! switch to naive_infer")
return self.infer_panel_naive_batched(x, x_lens, prompts, bert_feature, top_k=top_k, top_p=top_p, early_stop_num=early_stop_num, temperature=temperature, **kwargs)
max_len = kwargs.get("max_len",x_lens.max())
x_list = []
for x_item, bert_item in zip(x, bert_feature):
# max_len = max(max_len, x_item.shape[0], bert_item.shape[1])
x_item = self.ar_text_embedding(x_item.unsqueeze(0))
x_item = x_item + self.bert_proj(bert_item.transpose(0, 1).unsqueeze(0))
x_item = self.ar_text_position(x_item).squeeze(0)
x_item = F.pad(x_item,(0,0,0,max_len-x_item.shape[0]),value=0) if x_item.shape[0]<max_len else x_item
x_list.append(x_item)
x = torch.stack(x_list, dim=0)
# AR Decoder
y = prompts
x_len = x.shape[1]
x_attn_mask = torch.zeros((x_len, x_len), dtype=torch.bool)
stop = False
k_cache = None
v_cache = None
################### first step ##########################
if y is not None:
y_emb = self.ar_audio_embedding(y)
y_len = y_emb.shape[1]
prefix_len = y.shape[1]
y_lens = torch.LongTensor([y_emb.shape[1]]*y_emb.shape[0]).to(x.device)
y_pos = self.ar_audio_position(y_emb)
xy_pos = torch.concat([x, y_pos], dim=1)
ref_free = False
else:
y_emb = None
y_len = 0
prefix_len = 0
y_lens = torch.LongTensor([y_len]*x.shape[0]).to(x.device)
y_pos = None
xy_pos = x
y = torch.zeros(x.shape[0], 0, dtype=torch.int, device=x.device)
ref_free = True
##### create mask #####
bsz = x.shape[0]
src_len = x_len + y_len
y_paddind_mask = make_pad_mask(y_lens, y_len)
x_paddind_mask = make_pad_mask(x_lens, max_len)
# (bsz, x_len + y_len)
xy_padding_mask = torch.concat([x_paddind_mask, y_paddind_mask], dim=1)
x_mask = F.pad(
x_attn_mask,
(0, y_len), ###xx的纯0扩展到xx纯0+xy纯1(x,x+y)
value=True,
)
y_mask = F.pad( ###yy的右上1扩展到左边xy的0,(y,x+y)
torch.triu(torch.ones(y_len, y_len, dtype=torch.bool), diagonal=1),
(x_len, 0),
value=False,
)
xy_mask = torch.concat([x_mask, y_mask], dim=0).view(1 , src_len, src_len).repeat(bsz, 1, 1).to(x.device)
_xy_padding_mask = xy_padding_mask.view(bsz, 1, src_len).repeat(1, src_len, 1)
for i in range(bsz):
l = x_lens[i]
_xy_padding_mask[i,l:max_len,:]=True
xy_attn_mask = xy_mask.logical_or(_xy_padding_mask)
xy_attn_mask = xy_attn_mask.unsqueeze(1).expand(-1, self.num_head, -1, -1)
xy_attn_mask = xy_attn_mask.bool()
xy_padding_mask = xy_padding_mask.view(bsz, src_len, 1).expand(-1, -1, self.model_dim)
###### decode #####
y_list = [None]*y.shape[0]
batch_idx_map = list(range(y.shape[0]))
idx_list = [None]*y.shape[0]
for idx in tqdm(range(1500)):
if idx == 0:
xy_dec, k_cache, v_cache = self.t2s_transformer.process_prompt(xy_pos, xy_attn_mask, xy_padding_mask, False)
else:
xy_dec, k_cache, v_cache = self.t2s_transformer.decode_next_token(xy_pos, k_cache, v_cache, xy_attn_mask, False)
logits = self.ar_predict_layer(
xy_dec[:, -1]
)
if idx == 0:
xy_attn_mask = F.pad(xy_attn_mask[:,:,-1].unsqueeze(-2),(0,1),value=False)
logits = logits[:, :-1]
else:
xy_attn_mask = F.pad(xy_attn_mask,(0,1),value=False)
samples = sample(
logits, y, top_k=top_k, top_p=top_p, repetition_penalty=repetition_penalty, temperature=temperature
)[0]
y = torch.concat([y, samples], dim=1)
####### 移除batch中已经生成完毕的序列,进一步优化计算量
tokens = torch.argmax(logits, dim=-1)
reserved_idx_of_batch_for_y = None
if (self.EOS in samples[:, 0]) or \
(self.EOS in tokens): ###如果生成到EOS则停止
l1 = samples[:, 0]==self.EOS
l2 = tokens==self.EOS
l = l1.logical_or(l2)
removed_idx_of_batch_for_y = torch.where(l==True)[0].tolist()
reserved_idx_of_batch_for_y = torch.where(l==False)[0]
# batch_indexs = torch.tensor(batch_idx_map, device=y.device)[removed_idx_of_batch_for_y]
for i in removed_idx_of_batch_for_y:
batch_index = batch_idx_map[i]
idx_list[batch_index] = idx - 1
y_list[batch_index] = y[i, :-1]
batch_idx_map = [batch_idx_map[i] for i in reserved_idx_of_batch_for_y.tolist()]
# 只保留batch中未生成完毕的序列
if reserved_idx_of_batch_for_y is not None:
# index = torch.LongTensor(batch_idx_map).to(y.device)
y = torch.index_select(y, dim=0, index=reserved_idx_of_batch_for_y)
xy_attn_mask = torch.index_select(xy_attn_mask, dim=0, index=reserved_idx_of_batch_for_y)
if k_cache is not None :
for i in range(len(k_cache)):
k_cache[i] = torch.index_select(k_cache[i], dim=0, index=reserved_idx_of_batch_for_y)
v_cache[i] = torch.index_select(v_cache[i], dim=0, index=reserved_idx_of_batch_for_y)
if (early_stop_num != -1 and (y.shape[1] - prefix_len) > early_stop_num) or idx==1499:
print("use early stop num:", early_stop_num)
stop = True
for i, batch_index in enumerate(batch_idx_map):
batch_index = batch_idx_map[i]
idx_list[batch_index] = idx
y_list[batch_index] = y[i, :-1]
if not (None in idx_list):
stop = True
if stop:
if y.shape[1]==0:
y = torch.concat([y, torch.zeros_like(samples)], dim=1)
print("bad zero prediction")
print(f"T2S Decoding EOS [{prefix_len} -> {y.shape[1]}]")
break
####################### update next step ###################################
y_emb = self.ar_audio_embedding(y[:, -1:])
xy_pos = y_emb * self.ar_audio_position.x_scale + self.ar_audio_position.alpha * self.ar_audio_position.pe[:, y_len + idx].to( dtype= y_emb.dtype,device=y_emb.device)
if (None in idx_list):
for i in range(x.shape[0]):
if idx_list[i] is None:
idx_list[i] = 1500-1 ###如果没有生成到EOS就用最大长度代替
if ref_free:
return y_list, [0]*x.shape[0]
# print(idx_list)
return y_list, idx_list
def infer_panel_naive_batched(self,
x:List[torch.LongTensor], #####全部文本token
x_lens:torch.LongTensor,
prompts:torch.LongTensor, ####参考音频token
bert_feature:List[torch.LongTensor],
top_k: int = -100,
top_p: int = 100,
early_stop_num: int = -1,
temperature: float = 1.0,
repetition_penalty: float = 1.35,
**kwargs
):
y_list = []
idx_list = []
for i in range(len(x)):
y, idx = self.infer_panel_naive(x[i].unsqueeze(0),
x_lens[i],
prompts[i].unsqueeze(0) if prompts is not None else None,
bert_feature[i].unsqueeze(0),
top_k,
top_p,
early_stop_num,
temperature,
repetition_penalty,
**kwargs)
y_list.append(y[0])
idx_list.append(idx)
return y_list, idx_list
def infer_panel_naive(
self,
x:torch.LongTensor, #####全部文本token
x_lens:torch.LongTensor,
prompts:torch.LongTensor, ####参考音频token
bert_feature:torch.LongTensor,
top_k: int = -100,
top_p: int = 100,
early_stop_num: int = -1,
temperature: float = 1.0,
repetition_penalty: float = 1.35,
**kwargs
):
x = self.ar_text_embedding(x)
x = x + self.bert_proj(bert_feature.transpose(1, 2))
@ -343,17 +804,9 @@ class Text2SemanticDecoder(nn.Module):
x_attn_mask = torch.zeros((x_len, x_len), dtype=torch.bool)
stop = False
# print(1111111,self.num_layers)
cache = {
"all_stage": self.num_layers,
"k": [None] * self.num_layers, ###根据配置自己手写
"v": [None] * self.num_layers,
# "xy_pos":None,##y_pos位置编码每次都不一样的没法缓存每次都要重新拼xy_pos.主要还是写法原因,其实是可以历史统一一样的,但也没啥计算量就不管了
"y_emb": None, ##只需要对最新的samples求emb再拼历史的就行
# "logits":None,###原版就已经只对结尾求再拼接了,不用管
# "xy_dec":None,###不需要本来只需要最后一个做logits
"first_infer": 1,
"stage": 0,
}
k_cache = None
v_cache = None
################### first step ##########################
if y is not None:
y_emb = self.ar_audio_embedding(y)
@ -361,7 +814,6 @@ class Text2SemanticDecoder(nn.Module):
prefix_len = y.shape[1]
y_pos = self.ar_audio_position(y_emb)
xy_pos = torch.concat([x, y_pos], dim=1)
cache["y_emb"] = y_emb
ref_free = False
else:
y_emb = None
@ -372,35 +824,43 @@ class Text2SemanticDecoder(nn.Module):
y = torch.zeros(x.shape[0], 0, dtype=torch.int, device=x.device)
ref_free = True
bsz = x.shape[0]
src_len = x_len + y_len
x_attn_mask_pad = F.pad(
x_attn_mask,
(0, y_len), ###xx的纯0扩展到xx纯0+xy纯1(x,x+y)
value=True,
)
x_attn_mask,
(0, y_len), ###xx的纯0扩展到xx纯0+xy纯1(x,x+y)
value=True,
)
y_attn_mask = F.pad( ###yy的右上1扩展到左边xy的0,(y,x+y)
torch.triu(torch.ones(y_len, y_len, dtype=torch.bool), diagonal=1),
(x_len, 0),
value=False,
)
xy_attn_mask = torch.concat([x_attn_mask_pad, y_attn_mask], dim=0).to(
x.device
)
xy_attn_mask = torch.concat([x_attn_mask_pad, y_attn_mask], dim=0)\
.unsqueeze(0)\
.expand(bsz*self.num_head, -1, -1)\
.view(bsz, self.num_head, src_len, src_len)\
.to(device=x.device, dtype=torch.bool)
for idx in tqdm(range(1500)):
if xy_attn_mask is not None:
xy_dec, k_cache, v_cache = self.t2s_transformer.process_prompt(xy_pos, xy_attn_mask, None)
else:
xy_dec, k_cache, v_cache = self.t2s_transformer.decode_next_token(xy_pos, k_cache, v_cache)
xy_dec, _ = self.h((xy_pos, None), mask=xy_attn_mask, cache=cache)
logits = self.ar_predict_layer(
xy_dec[:, -1]
) ##不用改如果用了cache的默认就是只有一帧取最后一帧一样的
# samples = topk_sampling(logits, top_k=top_k, top_p=1.0, temperature=temperature)
if(idx==0):###第一次跑不能EOS否则没有了
logits = logits[:, :-1] ###刨除1024终止符号的概率
)
if idx == 0:
xy_attn_mask = None
if(idx<11):###至少预测出10个token不然不给停止0.4s
logits = logits[:, :-1]
samples = sample(
logits[0], y, top_k=top_k, top_p=top_p, repetition_penalty=1.35, temperature=temperature
)[0].unsqueeze(0)
# 本次生成的 semantic_ids 和之前的 y 构成新的 y
# print(samples.shape)#[1,1]#第一个1是bs
logits, y, top_k=top_k, top_p=top_p, repetition_penalty=repetition_penalty, temperature=temperature
)[0]
y = torch.concat([y, samples], dim=1)
if early_stop_num != -1 and (y.shape[1] - prefix_len) > early_stop_num:
@ -408,41 +868,34 @@ class Text2SemanticDecoder(nn.Module):
stop = True
if torch.argmax(logits, dim=-1)[0] == self.EOS or samples[0, 0] == self.EOS:
# print(torch.argmax(logits, dim=-1)[0] == self.EOS, samples[0, 0] == self.EOS)
stop = True
if stop:
# if prompts.shape[1] == y.shape[1]:
# y = torch.concat([y, torch.zeros_like(samples)], dim=1)
# print("bad zero prediction")
if y.shape[1]==0:
if y.shape[1] == 0:
y = torch.concat([y, torch.zeros_like(samples)], dim=1)
print("bad zero prediction")
print(f"T2S Decoding EOS [{prefix_len} -> {y.shape[1]}]")
break
####################### update next step ###################################
cache["first_infer"] = 0
if cache["y_emb"] is not None:
y_emb = torch.cat(
[cache["y_emb"], self.ar_audio_embedding(y[:, -1:])], dim = 1
)
cache["y_emb"] = y_emb
y_pos = self.ar_audio_position(y_emb)
xy_pos = y_pos[:, -1:]
else:
y_emb = self.ar_audio_embedding(y[:, -1:])
cache["y_emb"] = y_emb
y_pos = self.ar_audio_position(y_emb)
xy_pos = y_pos
y_len = y_pos.shape[1]
y_emb = self.ar_audio_embedding(y[:, -1:])
xy_pos = y_emb * self.ar_audio_position.x_scale + self.ar_audio_position.alpha * self.ar_audio_position.pe[:, y_len + idx].to(dtype=y_emb.dtype,device=y_emb.device)
###最右边一列(是错的)
# xy_attn_mask=torch.ones((1, x_len+y_len), dtype=torch.bool,device=xy_pos.device)
# xy_attn_mask[:,-1]=False
###最下面一行(是对的)
xy_attn_mask = torch.zeros(
(1, x_len + y_len), dtype=torch.bool, device=xy_pos.device
)
if ref_free:
return y[:, :-1], 0
return y[:, :-1], idx-1
return y[:, :-1], idx - 1
def infer_panel(
self,
x:torch.LongTensor, #####全部文本token
x_lens:torch.LongTensor,
prompts:torch.LongTensor, ####参考音频token
bert_feature:torch.LongTensor,
top_k: int = -100,
top_p: int = 100,
early_stop_num: int = -1,
temperature: float = 1.0,
repetition_penalty: float = 1.35,
**kwargs
):
return self.infer_panel_naive(x, x_lens, prompts, bert_feature, top_k, top_p, early_stop_num, temperature, repetition_penalty, **kwargs)

View File

@ -115,17 +115,17 @@ def logits_to_probs(
top_p: Optional[int] = None,
repetition_penalty: float = 1.0,
):
if previous_tokens is not None:
previous_tokens = previous_tokens.squeeze()
# if previous_tokens is not None:
# previous_tokens = previous_tokens.squeeze()
# print(logits.shape,previous_tokens.shape)
# pdb.set_trace()
if previous_tokens is not None and repetition_penalty != 1.0:
previous_tokens = previous_tokens.long()
score = torch.gather(logits, dim=0, index=previous_tokens)
score = torch.gather(logits, dim=1, index=previous_tokens)
score = torch.where(
score < 0, score * repetition_penalty, score / repetition_penalty
)
logits.scatter_(dim=0, index=previous_tokens, src=score)
logits.scatter_(dim=1, index=previous_tokens, src=score)
if top_p is not None and top_p < 1.0:
sorted_logits, sorted_indices = torch.sort(logits, descending=True)
@ -133,9 +133,9 @@ def logits_to_probs(
torch.nn.functional.softmax(sorted_logits, dim=-1), dim=-1
)
sorted_indices_to_remove = cum_probs > top_p
sorted_indices_to_remove[0] = False # keep at least one option
sorted_indices_to_remove[:, 0] = False # keep at least one option
indices_to_remove = sorted_indices_to_remove.scatter(
dim=0, index=sorted_indices, src=sorted_indices_to_remove
dim=1, index=sorted_indices, src=sorted_indices_to_remove
)
logits = logits.masked_fill(indices_to_remove, -float("Inf"))
@ -143,7 +143,7 @@ def logits_to_probs(
if top_k is not None:
v, _ = torch.topk(logits, min(top_k, logits.size(-1)))
pivot = v.select(-1, -1).unsqueeze(-1)
pivot = v[: , -1].unsqueeze(-1)
logits = torch.where(logits < pivot, -float("Inf"), logits)
probs = torch.nn.functional.softmax(logits, dim=-1)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,244 @@
import os, sys
from tqdm import tqdm
now_dir = os.getcwd()
sys.path.append(now_dir)
import re
import torch
import LangSegment
from text import chinese
from typing import Dict, List, Tuple
from text.cleaner import clean_text
from text import cleaned_text_to_sequence
from transformers import AutoModelForMaskedLM, AutoTokenizer
from TTS_infer_pack.text_segmentation_method import split_big_text, splits, get_method as get_seg_method
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
i18n = I18nAuto(language=language)
punctuation = set(['!', '?', '', ',', '.', '-'," "])
def get_first(text:str) -> str:
pattern = "[" + "".join(re.escape(sep) for sep in splits) + "]"
text = re.split(pattern, text)[0].strip()
return text
def merge_short_text_in_array(texts:str, threshold:int) -> list:
if (len(texts)) < 2:
return texts
result = []
text = ""
for ele in texts:
text += ele
if len(text) >= threshold:
result.append(text)
text = ""
if (len(text) > 0):
if len(result) == 0:
result.append(text)
else:
result[len(result) - 1] += text
return result
class TextPreprocessor:
def __init__(self, bert_model:AutoModelForMaskedLM,
tokenizer:AutoTokenizer, device:torch.device):
self.bert_model = bert_model
self.tokenizer = tokenizer
self.device = device
def preprocess(self, text:str, lang:str, text_split_method:str, version:str="v2")->List[Dict]:
print(i18n("############ 切分文本 ############"))
text = self.replace_consecutive_punctuation(text)
texts = self.pre_seg_text(text, lang, text_split_method)
result = []
print(i18n("############ 提取文本Bert特征 ############"))
for text in tqdm(texts):
phones, bert_features, norm_text = self.segment_and_extract_feature_for_text(text, lang, version)
if phones is None or norm_text=="":
continue
res={
"phones": phones,
"bert_features": bert_features,
"norm_text": norm_text,
}
result.append(res)
return result
def pre_seg_text(self, text:str, lang:str, text_split_method:str):
text = text.strip("\n")
if len(text) == 0:
return []
if (text[0] not in splits and len(get_first(text)) < 4):
text = "" + text if lang != "en" else "." + text
print(i18n("实际输入的目标文本:"))
print(text)
seg_method = get_seg_method(text_split_method)
text = seg_method(text)
while "\n\n" in text:
text = text.replace("\n\n", "\n")
_texts = text.split("\n")
_texts = self.filter_text(_texts)
_texts = merge_short_text_in_array(_texts, 5)
texts = []
for text in _texts:
# 解决输入目标文本的空行导致报错的问题
if (len(text.strip()) == 0):
continue
if not re.sub("\W+", "", text):
# 检测一下,如果是纯符号,就跳过。
continue
if (text[-1] not in splits): text += "" if lang != "en" else "."
# 解决句子过长导致Bert报错的问题
if (len(text) > 510):
texts.extend(split_big_text(text))
else:
texts.append(text)
print(i18n("实际输入的目标文本(切句后):"))
print(texts)
return texts
def segment_and_extract_feature_for_text(self, text:str, language:str, version:str="v1")->Tuple[list, torch.Tensor, str]:
return self.get_phones_and_bert(text, language, version)
def get_phones_and_bert(self, text:str, language:str, version:str, final:bool=False):
if language in {"en", "all_zh", "all_ja", "all_ko", "all_yue"}:
language = language.replace("all_","")
if language == "en":
LangSegment.setfilters(["en"])
formattext = " ".join(tmp["text"] for tmp in LangSegment.getTexts(text))
else:
# 因无法区别中日韩文汉字,以用户输入为准
formattext = text
while " " in formattext:
formattext = formattext.replace(" ", " ")
if language == "zh":
if re.search(r'[A-Za-z]', formattext):
formattext = re.sub(r'[a-z]', lambda x: x.group(0).upper(), formattext)
formattext = chinese.mix_text_normalize(formattext)
return self.get_phones_and_bert(formattext,"zh",version)
else:
phones, word2ph, norm_text = self.clean_text_inf(formattext, language, version)
bert = self.get_bert_feature(norm_text, word2ph).to(self.device)
elif language == "yue" and re.search(r'[A-Za-z]', formattext):
formattext = re.sub(r'[a-z]', lambda x: x.group(0).upper(), formattext)
formattext = chinese.mix_text_normalize(formattext)
return self.get_phones_and_bert(formattext,"yue",version)
else:
phones, word2ph, norm_text = self.clean_text_inf(formattext, language, version)
bert = torch.zeros(
(1024, len(phones)),
dtype=torch.float32,
).to(self.device)
elif language in {"zh", "ja", "ko", "yue", "auto", "auto_yue"}:
textlist=[]
langlist=[]
LangSegment.setfilters(["zh","ja","en","ko"])
if language == "auto":
for tmp in LangSegment.getTexts(text):
langlist.append(tmp["lang"])
textlist.append(tmp["text"])
elif language == "auto_yue":
for tmp in LangSegment.getTexts(text):
if tmp["lang"] == "zh":
tmp["lang"] = "yue"
langlist.append(tmp["lang"])
textlist.append(tmp["text"])
else:
for tmp in LangSegment.getTexts(text):
if tmp["lang"] == "en":
langlist.append(tmp["lang"])
else:
# 因无法区别中日韩文汉字,以用户输入为准
langlist.append(language)
textlist.append(tmp["text"])
# print(textlist)
# print(langlist)
phones_list = []
bert_list = []
norm_text_list = []
for i in range(len(textlist)):
lang = langlist[i]
phones, word2ph, norm_text = self.clean_text_inf(textlist[i], lang, version)
bert = self.get_bert_inf(phones, word2ph, norm_text, lang)
phones_list.append(phones)
norm_text_list.append(norm_text)
bert_list.append(bert)
bert = torch.cat(bert_list, dim=1)
phones = sum(phones_list, [])
norm_text = ''.join(norm_text_list)
if not final and len(phones) < 6:
return self.get_phones_and_bert("." + text,language,version,final=True)
return phones, bert, norm_text
def get_bert_feature(self, text:str, word2ph:list)->torch.Tensor:
with torch.no_grad():
inputs = self.tokenizer(text, return_tensors="pt")
for i in inputs:
inputs[i] = inputs[i].to(self.device)
res = self.bert_model(**inputs, output_hidden_states=True)
res = torch.cat(res["hidden_states"][-3:-2], -1)[0].cpu()[1:-1]
assert len(word2ph) == len(text)
phone_level_feature = []
for i in range(len(word2ph)):
repeat_feature = res[i].repeat(word2ph[i], 1)
phone_level_feature.append(repeat_feature)
phone_level_feature = torch.cat(phone_level_feature, dim=0)
return phone_level_feature.T
def clean_text_inf(self, text:str, language:str, version:str="v2"):
phones, word2ph, norm_text = clean_text(text, language, version)
phones = cleaned_text_to_sequence(phones, version)
return phones, word2ph, norm_text
def get_bert_inf(self, phones:list, word2ph:list, norm_text:str, language:str):
language=language.replace("all_","")
if language == "zh":
feature = self.get_bert_feature(norm_text, word2ph).to(self.device)
else:
feature = torch.zeros(
(1024, len(phones)),
dtype=torch.float32,
).to(self.device)
return feature
def filter_text(self,texts):
_text=[]
if all(text in [None, " ", "\n",""] for text in texts):
raise ValueError(i18n("请输入有效文本"))
for text in texts:
if text in [None, " ", ""]:
pass
else:
_text.append(text)
return _text
def replace_consecutive_punctuation(self,text):
punctuations = ''.join(re.escape(p) for p in punctuation)
pattern = f'([{punctuations}])([{punctuations}])+'
result = re.sub(pattern, r'\1', text)
return result

View File

@ -0,0 +1 @@
from . import TTS, text_segmentation_method

View File

@ -0,0 +1,173 @@
import re
from typing import Callable
punctuation = set(['!', '?', '', ',', '.', '-'," "])
METHODS = dict()
def get_method(name:str)->Callable:
method = METHODS.get(name, None)
if method is None:
raise ValueError(f"Method {name} not found")
return method
def get_method_names()->list:
return list(METHODS.keys())
def register_method(name):
def decorator(func):
METHODS[name] = func
return func
return decorator
splits = {"", "", "", "", ",", ".", "?", "!", "~", ":", "", "", "", }
def split_big_text(text, max_len=510):
# 定义全角和半角标点符号
punctuation = "".join(splits)
# 切割文本
segments = re.split('([' + punctuation + '])', text)
# 初始化结果列表和当前片段
result = []
current_segment = ''
for segment in segments:
# 如果当前片段加上新的片段长度超过max_len就将当前片段加入结果列表并重置当前片段
if len(current_segment + segment) > max_len:
result.append(current_segment)
current_segment = segment
else:
current_segment += segment
# 将最后一个片段加入结果列表
if current_segment:
result.append(current_segment)
return result
def split(todo_text):
todo_text = todo_text.replace("……", "").replace("——", "")
if todo_text[-1] not in splits:
todo_text += ""
i_split_head = i_split_tail = 0
len_text = len(todo_text)
todo_texts = []
while 1:
if i_split_head >= len_text:
break # 结尾一定有标点,所以直接跳出即可,最后一段在上次已加入
if todo_text[i_split_head] in splits:
i_split_head += 1
todo_texts.append(todo_text[i_split_tail:i_split_head])
i_split_tail = i_split_head
else:
i_split_head += 1
return todo_texts
# 不切
@register_method("cut0")
def cut0(inp):
if not set(inp).issubset(punctuation):
return inp
else:
return "/n"
# 凑四句一切
@register_method("cut1")
def cut1(inp):
inp = inp.strip("\n")
inps = split(inp)
split_idx = list(range(0, len(inps), 4))
split_idx[-1] = None
if len(split_idx) > 1:
opts = []
for idx in range(len(split_idx) - 1):
opts.append("".join(inps[split_idx[idx]: split_idx[idx + 1]]))
else:
opts = [inp]
opts = [item for item in opts if not set(item).issubset(punctuation)]
return "\n".join(opts)
# 凑50字一切
@register_method("cut2")
def cut2(inp):
inp = inp.strip("\n")
inps = split(inp)
if len(inps) < 2:
return inp
opts = []
summ = 0
tmp_str = ""
for i in range(len(inps)):
summ += len(inps[i])
tmp_str += inps[i]
if summ > 50:
summ = 0
opts.append(tmp_str)
tmp_str = ""
if tmp_str != "":
opts.append(tmp_str)
# print(opts)
if len(opts) > 1 and len(opts[-1]) < 50: ##如果最后一个太短了,和前一个合一起
opts[-2] = opts[-2] + opts[-1]
opts = opts[:-1]
opts = [item for item in opts if not set(item).issubset(punctuation)]
return "\n".join(opts)
# 按中文句号。切
@register_method("cut3")
def cut3(inp):
inp = inp.strip("\n")
opts = ["%s" % item for item in inp.strip("").split("")]
opts = [item for item in opts if not set(item).issubset(punctuation)]
return "\n".join(opts)
#按英文句号.切
@register_method("cut4")
def cut4(inp):
inp = inp.strip("\n")
opts = ["%s" % item for item in inp.strip(".").split(".")]
opts = [item for item in opts if not set(item).issubset(punctuation)]
return "\n".join(opts)
# 按标点符号切
# contributed by https://github.com/AI-Hobbyist/GPT-SoVITS/blob/main/GPT_SoVITS/inference_webui.py
@register_method("cut5")
def cut5(inp):
inp = inp.strip("\n")
punds = {',', '.', ';', '?', '!', '', '', '', '', '', ';', '', ''}
mergeitems = []
items = []
for i, char in enumerate(inp):
if char in punds:
if char == '.' and i > 0 and i < len(inp) - 1 and inp[i - 1].isdigit() and inp[i + 1].isdigit():
items.append(char)
else:
items.append(char)
mergeitems.append("".join(items))
items = []
else:
items.append(char)
if items:
mergeitems.append("".join(items))
opt = [item for item in mergeitems if not set(item).issubset(punds)]
return "\n".join(opt)
if __name__ == '__main__':
method = get_method("cut5")
print(method("你好,我是小明。你好,我是小红。你好,我是小刚。你好,我是小张。"))

1
GPT_SoVITS/configs/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*.yaml

View File

@ -0,0 +1,31 @@
train:
seed: 1234
epochs: 20
batch_size: 8
save_every_n_epoch: 1
precision: 16-mixed
gradient_clip: 1.0
optimizer:
lr: 0.01
lr_init: 0.00001
lr_end: 0.0001
warmup_steps: 2000
decay_steps: 40000
data:
max_eval_sample: 8
max_sec: 54
num_workers: 4
pad_val: 1024 # same with EOS in model
model:
vocab_size: 1025
phoneme_vocab_size: 732
embedding_dim: 512
hidden_dim: 512
head: 16
linear_units: 2048
n_layer: 24
dropout: 0
EOS: 1024
random_bert: 0
inference:
top_k: 15

View File

@ -0,0 +1,24 @@
custom:
bert_base_path: GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large
cnhuhbert_base_path: GPT_SoVITS/pretrained_models/chinese-hubert-base
device: cuda
is_half: true
t2s_weights_path: GPT_SoVITS/pretrained_models/gsv-v2final-pretrained/s1bert25hz-5kh-longer-epoch=12-step=369668.ckpt
version: v2
vits_weights_path: GPT_SoVITS/pretrained_models/gsv-v2final-pretrained/s2G2333k.pth
default:
bert_base_path: GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large
cnhuhbert_base_path: GPT_SoVITS/pretrained_models/chinese-hubert-base
device: cpu
is_half: false
t2s_weights_path: GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt
version: v1
vits_weights_path: GPT_SoVITS/pretrained_models/s2G488k.pth
default_v2:
bert_base_path: GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large
cnhuhbert_base_path: GPT_SoVITS/pretrained_models/chinese-hubert-base
device: cpu
is_half: false
t2s_weights_path: GPT_SoVITS/pretrained_models/gsv-v2final-pretrained/s1bert25hz-5kh-longer-epoch=12-step=369668.ckpt
version: v2
vits_weights_path: GPT_SoVITS/pretrained_models/gsv-v2final-pretrained/s2G2333k.pth

5
GPT_SoVITS/download.py Normal file
View File

@ -0,0 +1,5 @@
import os, sys
now_dir = os.getcwd()
sys.path.insert(0, now_dir)
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)

View File

@ -4,8 +4,11 @@ import librosa
import torch
import torch.nn.functional as F
import soundfile as sf
import logging
import os
from transformers import logging as tf_logging
tf_logging.set_verbosity_error()
import logging
logging.getLogger("numba").setLevel(logging.WARNING)
from transformers import (
@ -20,11 +23,15 @@ cnhubert_base_path = None
class CNHubert(nn.Module):
def __init__(self):
def __init__(self, base_path:str=None):
super().__init__()
self.model = HubertModel.from_pretrained(cnhubert_base_path)
if base_path is None:
base_path = cnhubert_base_path
if os.path.exists(base_path):...
else:raise FileNotFoundError(base_path)
self.model = HubertModel.from_pretrained(base_path, local_files_only=True)
self.feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained(
cnhubert_base_path
base_path, local_files_only=True
)
def forward(self, x):

View File

@ -0,0 +1,55 @@
import argparse
import os
import soundfile as sf
from tools.i18n.i18n import I18nAuto
from GPT_SoVITS.inference_webui import change_gpt_weights, change_sovits_weights, get_tts_wav
i18n = I18nAuto()
def synthesize(GPT_model_path, SoVITS_model_path, ref_audio_path, ref_text_path, ref_language, target_text_path, target_language, output_path):
# Read reference text
with open(ref_text_path, 'r', encoding='utf-8') as file:
ref_text = file.read()
# Read target text
with open(target_text_path, 'r', encoding='utf-8') as file:
target_text = file.read()
# Change model weights
change_gpt_weights(gpt_path=GPT_model_path)
change_sovits_weights(sovits_path=SoVITS_model_path)
# Synthesize audio
synthesis_result = get_tts_wav(ref_wav_path=ref_audio_path,
prompt_text=ref_text,
prompt_language=i18n(ref_language),
text=target_text,
text_language=i18n(target_language), top_p=1, temperature=1)
result_list = list(synthesis_result)
if result_list:
last_sampling_rate, last_audio_data = result_list[-1]
output_wav_path = os.path.join(output_path, "output.wav")
sf.write(output_wav_path, last_audio_data, last_sampling_rate)
print(f"Audio saved to {output_wav_path}")
def main():
parser = argparse.ArgumentParser(description="GPT-SoVITS Command Line Tool")
parser.add_argument('--gpt_model', required=True, help="Path to the GPT model file")
parser.add_argument('--sovits_model', required=True, help="Path to the SoVITS model file")
parser.add_argument('--ref_audio', required=True, help="Path to the reference audio file")
parser.add_argument('--ref_text', required=True, help="Path to the reference text file")
parser.add_argument('--ref_language', required=True, choices=["中文", "英文", "日文"], help="Language of the reference audio")
parser.add_argument('--target_text', required=True, help="Path to the target text file")
parser.add_argument('--target_language', required=True, choices=["中文", "英文", "日文", "中英混合", "日英混合", "多语种混合"], help="Language of the target text")
parser.add_argument('--output_path', required=True, help="Path to the output directory")
args = parser.parse_args()
synthesize(args.gpt_model, args.sovits_model, args.ref_audio, args.ref_text, args.ref_language, args.target_text, args.target_language, args.output_path)
if __name__ == '__main__':
main()

View File

@ -6,8 +6,9 @@
全部按英文识别
全部按日文识别
'''
import os, re, logging
import LangSegment
import logging
import traceback
logging.getLogger("markdown_it").setLevel(logging.ERROR)
logging.getLogger("urllib3").setLevel(logging.ERROR)
logging.getLogger("httpcore").setLevel(logging.ERROR)
@ -15,28 +16,51 @@ logging.getLogger("httpx").setLevel(logging.ERROR)
logging.getLogger("asyncio").setLevel(logging.ERROR)
logging.getLogger("charset_normalizer").setLevel(logging.ERROR)
logging.getLogger("torchaudio._extension").setLevel(logging.ERROR)
logging.getLogger("multipart.multipart").setLevel(logging.ERROR)
import LangSegment, os, re, sys, json
import pdb
import torch
if os.path.exists("./gweight.txt"):
with open("./gweight.txt", 'r', encoding="utf-8") as file:
gweight_data = file.read()
gpt_path = os.environ.get(
"gpt_path", gweight_data)
else:
gpt_path = os.environ.get(
"gpt_path", "GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt")
try:
import gradio.analytics as analytics
analytics.version_check = lambda:None
except:...
if os.path.exists("./sweight.txt"):
with open("./sweight.txt", 'r', encoding="utf-8") as file:
sweight_data = file.read()
sovits_path = os.environ.get("sovits_path", sweight_data)
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
else:
sovits_path = os.environ.get("sovits_path", "GPT_SoVITS/pretrained_models/s2G488k.pth")
with open(f"./weight.json", 'w', encoding="utf-8") as file:json.dump({'GPT':{},'SoVITS':{}},file)
with open(f"./weight.json", 'r', encoding="utf-8") as file:
weight_data = file.read()
weight_data=json.loads(weight_data)
gpt_path = os.environ.get(
"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_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt"
# "gpt_path", pretrained_gpt_name
# )
# sovits_path = os.environ.get("sovits_path", "pretrained_models/s2G488k.pth")
# sovits_path = os.environ.get("sovits_path", pretrained_sovits_name)
cnhubert_base_path = os.environ.get(
"cnhubert_base_path", "GPT_SoVITS/pretrained_models/chinese-hubert-base"
)
@ -65,10 +89,12 @@ from text import cleaned_text_to_sequence
from text.cleaner import clean_text
from time import time as ttime
from module.mel_processing import spectrogram_torch
from my_utils import load_audio
from tools.i18n.i18n import I18nAuto
from tools.my_utils import load_audio
from tools.i18n.i18n import I18nAuto, scan_language_list
i18n = I18nAuto()
language=os.environ.get("language","Auto")
language=sys.argv[-1] if sys.argv[-1] in scan_language_list() else language
i18n = I18nAuto(language=language)
# os.environ['PYTORCH_ENABLE_MPS_FALLBACK'] = '1' # 确保直接启动推理UI时也能够设置。
@ -77,6 +103,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:
@ -136,12 +185,18 @@ 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)
hps.model.semantic_frame_rate = "25hz"
if dict_s2['weight']['enc_p.text_embedding.weight'].shape[0] == 322:
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,
hps.train.segment_size // hps.data.hop_length,
@ -156,8 +211,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))
with open("./sweight.txt", "w", encoding="utf-8") as f:
f.write(sovits_path)
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
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)
@ -177,7 +249,11 @@ def change_gpt_weights(gpt_path):
t2s_model.eval()
total = sum([param.nelement() for param in t2s_model.parameters()])
print("Number of parameter: %.2fM" % (total / 1e6))
with open("./gweight.txt", "w", encoding="utf-8") as f: f.write(gpt_path)
with open("./weight.json")as f:
data=f.read()
data=json.loads(data)
data["GPT"][version]=gpt_path
with open("./weight.json","w")as f:f.write(json.dumps(data))
change_gpt_weights(gpt_path)
@ -186,6 +262,8 @@ change_gpt_weights(gpt_path)
def get_spepc(hps, filename):
audio = load_audio(filename, int(hps.data.sampling_rate))
audio = torch.FloatTensor(audio)
maxx=audio.abs().max()
if(maxx>1):audio/=min(2,maxx)
audio_norm = audio
audio_norm = audio_norm.unsqueeze(0)
spec = spectrogram_torch(
@ -198,20 +276,9 @@ def get_spepc(hps, filename):
)
return spec
dict_language = {
i18n("中文"): "all_zh",#全部按中文识别
i18n("英文"): "en",#全部按英文识别#######不变
i18n("日文"): "all_ja",#全部按日文识别
i18n("中英混合"): "zh",#按中英混合识别####不变
i18n("日英混合"): "ja",#按日英混合识别####不变
i18n("多语种混合"): "auto",#多语种启动切分识别语种
}
def clean_text_inf(text, language):
phones, word2ph, norm_text = clean_text(text, language)
phones = cleaned_text_to_sequence(phones)
def clean_text_inf(text, language, version):
phones, word2ph, norm_text = clean_text(text, language, version)
phones = cleaned_text_to_sequence(phones, version)
return phones, word2ph, norm_text
dtype=torch.float16 if is_half == True else torch.float32
@ -236,44 +303,56 @@ def get_first(text):
text = re.split(pattern, text)[0].strip()
return text
def get_phones_and_bert(text,language):
if language in {"en","all_zh","all_ja"}:
from text import chinese
def get_phones_and_bert(text,language,version,final=False):
if language in {"en", "all_zh", "all_ja", "all_ko", "all_yue"}:
language = language.replace("all_","")
if language == "en":
LangSegment.setfilters(["en"])
formattext = " ".join(tmp["text"] for tmp in LangSegment.getTexts(text))
else:
# 因无法区别中日文汉字,以用户输入为准
# 因无法区别中日文汉字,以用户输入为准
formattext = text
while " " in formattext:
formattext = formattext.replace(" ", " ")
phones, word2ph, norm_text = clean_text_inf(formattext, language)
if language == "zh":
bert = get_bert_feature(norm_text, word2ph).to(device)
if re.search(r'[A-Za-z]', formattext):
formattext = re.sub(r'[a-z]', lambda x: x.group(0).upper(), formattext)
formattext = chinese.mix_text_normalize(formattext)
return get_phones_and_bert(formattext,"zh",version)
else:
phones, word2ph, norm_text = clean_text_inf(formattext, language, version)
bert = get_bert_feature(norm_text, word2ph).to(device)
elif language == "yue" and re.search(r'[A-Za-z]', formattext):
formattext = re.sub(r'[a-z]', lambda x: x.group(0).upper(), formattext)
formattext = chinese.mix_text_normalize(formattext)
return get_phones_and_bert(formattext,"yue",version)
else:
phones, word2ph, norm_text = clean_text_inf(formattext, language, version)
bert = torch.zeros(
(1024, len(phones)),
dtype=torch.float16 if is_half == True else torch.float32,
).to(device)
elif language in {"zh", "ja","auto"}:
elif language in {"zh", "ja", "ko", "yue", "auto", "auto_yue"}:
textlist=[]
langlist=[]
LangSegment.setfilters(["zh","ja","en","ko"])
if language == "auto":
for tmp in LangSegment.getTexts(text):
if tmp["lang"] == "ko":
langlist.append("zh")
textlist.append(tmp["text"])
else:
langlist.append(tmp["lang"])
textlist.append(tmp["text"])
langlist.append(tmp["lang"])
textlist.append(tmp["text"])
elif language == "auto_yue":
for tmp in LangSegment.getTexts(text):
if tmp["lang"] == "zh":
tmp["lang"] = "yue"
langlist.append(tmp["lang"])
textlist.append(tmp["text"])
else:
for tmp in LangSegment.getTexts(text):
if tmp["lang"] == "en":
langlist.append(tmp["lang"])
else:
# 因无法区别中日文汉字,以用户输入为准
# 因无法区别中日文汉字,以用户输入为准
langlist.append(language)
textlist.append(tmp["text"])
print(textlist)
@ -283,7 +362,7 @@ def get_phones_and_bert(text,language):
norm_text_list = []
for i in range(len(textlist)):
lang = langlist[i]
phones, word2ph, norm_text = clean_text_inf(textlist[i], lang)
phones, word2ph, norm_text = clean_text_inf(textlist[i], lang, version)
bert = get_bert_inf(phones, word2ph, norm_text, lang)
phones_list.append(phones)
norm_text_list.append(norm_text)
@ -292,6 +371,9 @@ def get_phones_and_bert(text,language):
phones = sum(phones_list, [])
norm_text = ''.join(norm_text_list)
if not final and len(phones) < 6:
return get_phones_and_bert("." + text,language,version,final=True)
return phones,bert.to(dtype),norm_text
@ -312,47 +394,62 @@ def merge_short_text_in_array(texts, threshold):
result[len(result) - 1] += text
return result
def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language, how_to_cut=i18n("不切"), top_k=20, top_p=0.6, temperature=0.6, ref_free = False):
##ref_wav_path+prompt_text+prompt_language+text(单个)+text_language+top_k+top_p+temperature
# cache_tokens={}#暂未实现清理机制
cache= {}
def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language, how_to_cut=i18n("不切"), top_k=20, top_p=0.6, temperature=0.6, ref_free
=False,speed=1,if_freeze=False,inp_refs=None):
global cache
if ref_wav_path:pass
else:gr.Warning(i18n('请上传参考音频'))
if text:pass
else:gr.Warning(i18n('请填入推理文本'))
t = []
if prompt_text is None or len(prompt_text) == 0:
ref_free = True
t0 = ttime()
prompt_language = dict_language[prompt_language]
text_language = dict_language[text_language]
if not ref_free:
prompt_text = prompt_text.strip("\n")
if (prompt_text[-1] not in splits): prompt_text += "" if prompt_language != "en" else "."
print(i18n("实际输入的参考文本:"), prompt_text)
text = text.strip("\n")
text = replace_consecutive_punctuation(text)
if (text[0] not in splits and len(get_first(text)) < 4): text = "" + text if text_language != "en" else "." + text
# if (text[0] not in splits and len(get_first(text)) < 4): text = "。" + text if text_language != "en" else "." + text
print(i18n("实际输入的目标文本:"), text)
zero_wav = np.zeros(
int(hps.data.sampling_rate * 0.3),
dtype=np.float16 if is_half == True else np.float32,
)
with torch.no_grad():
wav16k, sr = librosa.load(ref_wav_path, sr=16000)
if (wav16k.shape[0] > 160000 or wav16k.shape[0] < 48000):
raise OSError(i18n("参考音频在3~10秒范围外请更换"))
wav16k = torch.from_numpy(wav16k)
zero_wav_torch = torch.from_numpy(zero_wav)
if is_half == True:
wav16k = wav16k.half().to(device)
zero_wav_torch = zero_wav_torch.half().to(device)
else:
wav16k = wav16k.to(device)
zero_wav_torch = zero_wav_torch.to(device)
wav16k = torch.cat([wav16k, zero_wav_torch])
ssl_content = ssl_model.model(wav16k.unsqueeze(0))[
"last_hidden_state"
].transpose(
1, 2
) # .float()
codes = vq_model.extract_latent(ssl_content)
if not ref_free:
with torch.no_grad():
wav16k, sr = librosa.load(ref_wav_path, sr=16000)
if (wav16k.shape[0] > 160000 or wav16k.shape[0] < 48000):
gr.Warning(i18n("参考音频在3~10秒范围外请更换"))
raise OSError(i18n("参考音频在3~10秒范围外请更换"))
wav16k = torch.from_numpy(wav16k)
zero_wav_torch = torch.from_numpy(zero_wav)
if is_half == True:
wav16k = wav16k.half().to(device)
zero_wav_torch = zero_wav_torch.half().to(device)
else:
wav16k = wav16k.to(device)
zero_wav_torch = zero_wav_torch.to(device)
wav16k = torch.cat([wav16k, zero_wav_torch])
ssl_content = ssl_model.model(wav16k.unsqueeze(0))[
"last_hidden_state"
].transpose(
1, 2
) # .float()
codes = vq_model.extract_latent(ssl_content)
prompt_semantic = codes[0, 0]
prompt = prompt_semantic.unsqueeze(0).to(device)
prompt_semantic = codes[0, 0]
t1 = ttime()
t.append(t1-t0)
if (how_to_cut == i18n("凑四句一切")):
text = cut1(text)
@ -372,15 +469,15 @@ def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language,
texts = merge_short_text_in_array(texts, 5)
audio_opt = []
if not ref_free:
phones1,bert1,norm_text1=get_phones_and_bert(prompt_text, prompt_language)
phones1,bert1,norm_text1=get_phones_and_bert(prompt_text, prompt_language, version)
for text in texts:
for i_text,text in enumerate(texts):
# 解决输入目标文本的空行导致报错的问题
if (len(text.strip()) == 0):
continue
if (text[-1] not in splits): text += "" if text_language != "en" else "."
print(i18n("实际输入的目标文本(每句):"), text)
phones2,bert2,norm_text2=get_phones_and_bert(text, text_language)
phones2,bert2,norm_text2=get_phones_and_bert(text, text_language, version)
print(i18n("前端处理后的文本(每句):"), norm_text2)
if not ref_free:
bert = torch.cat([bert1, bert2], 1)
@ -391,46 +488,47 @@ def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language,
bert = bert.to(device).unsqueeze(0)
all_phoneme_len = torch.tensor([all_phoneme_ids.shape[-1]]).to(device)
prompt = prompt_semantic.unsqueeze(0).to(device)
t2 = ttime()
with torch.no_grad():
# pred_semantic = t2s_model.model.infer(
pred_semantic, idx = t2s_model.model.infer_panel(
all_phoneme_ids,
all_phoneme_len,
None if ref_free else prompt,
bert,
# prompt_phone_len=ph_offset,
top_k=top_k,
top_p=top_p,
temperature=temperature,
early_stop_num=hz * max_sec,
)
t3 = ttime()
# print(pred_semantic.shape,idx)
pred_semantic = pred_semantic[:, -idx:].unsqueeze(
0
) # .unsqueeze(0)#mq要多unsqueeze一次
refer = get_spepc(hps, ref_wav_path) # .to(device)
if is_half == True:
refer = refer.half().to(device)
# cache_key="%s-%s-%s-%s-%s-%s-%s-%s"%(ref_wav_path,prompt_text,prompt_language,text,text_language,top_k,top_p,temperature)
# print(cache.keys(),if_freeze)
if(i_text in cache and if_freeze==True):pred_semantic=cache[i_text]
else:
refer = refer.to(device)
# audio = vq_model.decode(pred_semantic, all_phoneme_ids, refer).detach().cpu().numpy()[0, 0]
audio = (
vq_model.decode(
pred_semantic, torch.LongTensor(phones2).to(device).unsqueeze(0), refer
)
.detach()
.cpu()
.numpy()[0, 0]
) ###试试重建不带上prompt部分
with torch.no_grad():
pred_semantic, idx = t2s_model.model.infer_panel(
all_phoneme_ids,
all_phoneme_len,
None if ref_free else prompt,
bert,
# prompt_phone_len=ph_offset,
top_k=top_k,
top_p=top_p,
temperature=temperature,
early_stop_num=hz * max_sec,
)
pred_semantic = pred_semantic[:, -idx:].unsqueeze(0)
cache[i_text]=pred_semantic
t3 = ttime()
refers=[]
if(inp_refs):
for path in inp_refs:
try:
refer = get_spepc(hps, path.name).to(dtype).to(device)
refers.append(refer)
except:
traceback.print_exc()
if(len(refers)==0):refers = [get_spepc(hps, ref_wav_path).to(dtype).to(device)]
audio = (vq_model.decode(pred_semantic, torch.LongTensor(phones2).to(device).unsqueeze(0), refers,speed=speed).detach().cpu().numpy()[0, 0])
max_audio=np.abs(audio).max()#简单防止16bit爆音
if max_audio>1:audio/=max_audio
audio_opt.append(audio)
audio_opt.append(zero_wav)
t4 = ttime()
print("%.3f\t%.3f\t%.3f\t%.3f" % (t1 - t0, t2 - t1, t3 - t2, t4 - t3))
t.extend([t2 - t1,t3 - t2, t4 - t3])
t1 = ttime()
print("%.3f\t%.3f\t%.3f\t%.3f" %
(t[0], sum(t[1::3]), sum(t[2::3]), sum(t[3::3]))
)
yield hps.data.sampling_rate, (np.concatenate(audio_opt, 0) * 32768).astype(
np.int16
)
@ -510,16 +608,26 @@ def cut4(inp):
# contributed by https://github.com/AI-Hobbyist/GPT-SoVITS/blob/main/GPT_SoVITS/inference_webui.py
def cut5(inp):
# if not re.search(r'[^\w\s]', inp[-1]):
# inp += '。'
inp = inp.strip("\n")
punds = r'[,.;?!、,。?!;:…]'
items = re.split(f'({punds})', inp)
mergeitems = ["".join(group) for group in zip(items[::2], items[1::2])]
# 在句子不存在符号或句尾无符号的时候保证文本完整
if len(items)%2 == 1:
mergeitems.append(items[-1])
opt = [item for item in mergeitems if not set(item).issubset(punctuation)]
punds = {',', '.', ';', '?', '!', '', '', '', '', '', ';', '', ''}
mergeitems = []
items = []
for i, char in enumerate(inp):
if char in punds:
if char == '.' and i > 0 and i < len(inp) - 1 and inp[i - 1].isdigit() and inp[i + 1].isdigit():
items.append(char)
else:
items.append(char)
mergeitems.append("".join(items))
items = []
else:
items.append(char)
if items:
mergeitems.append("".join(items))
opt = [item for item in mergeitems if not set(item).issubset(punds)]
return "\n".join(opt)
@ -542,106 +650,120 @@ def process_text(texts):
return _text
def replace_consecutive_punctuation(text):
punctuations = ''.join(re.escape(p) for p in punctuation)
pattern = f'([{punctuations}])([{punctuations}])+'
result = re.sub(pattern, r'\1', text)
return result
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"}
pretrained_sovits_name = "GPT_SoVITS/pretrained_models/s2G488k.pth"
pretrained_gpt_name = "GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt"
SoVITS_weight_root = "SoVITS_weights"
GPT_weight_root = "GPT_weights"
os.makedirs(SoVITS_weight_root, exist_ok=True)
os.makedirs(GPT_weight_root, 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;">
<{label} style="margin: 0; padding: 0;">{text}</{label}>
</div>"""
def html_left(text, label='p'):
return f"""<div style="text-align: left; margin: 0; padding: 0;">
<{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>.")
)
with gr.Group():
gr.Markdown(value=i18n("模型切换"))
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)
SoVITS_dropdown = gr.Dropdown(label=i18n("SoVITS模型列表"), choices=sorted(SoVITS_names, key=custom_sort_key), value=sovits_path, interactive=True)
refresh_button = gr.Button(i18n("刷新模型路径"), variant="primary")
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(value=i18n("*请上传并填写参考信息"))
gr.Markdown(html_center(i18n("*请上传并填写参考信息"),'h3'))
with gr.Row():
inp_ref = gr.Audio(label=i18n("请上传3~10秒内参考音频超过会报错"), type="filepath")
with gr.Column():
ref_text_free = gr.Checkbox(label=i18n("开启无参考文本模式。不填参考文本亦相当于开启。"), value=False, interactive=True, show_label=True)
gr.Markdown(i18n("使用无参考文本模式时建议使用微调的GPT听不清参考音频说的啥(不晓得写啥)可以开,开启后无视填写的参考文本。"))
prompt_text = gr.Textbox(label=i18n("参考音频的文本"), value="")
prompt_language = gr.Dropdown(
label=i18n("参考音频的语种"), choices=[i18n("中文"), i18n("英文"), i18n("日文"), i18n("中英混合"), i18n("日英混合"), i18n("多语种混合")], value=i18n("中文")
)
gr.Markdown(value=i18n("*请填写需要合成的目标文本和语种模式"))
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,scale=1)
gr.Markdown(html_left(i18n("使用无参考文本模式时建议使用微调的GPT听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。")))
prompt_text = gr.Textbox(label=i18n("参考音频的文本"), value="", lines=5, max_lines=5,scale=1)
with gr.Column(scale=14):
prompt_language = gr.Dropdown(
label=i18n("参考音频的语种"), choices=list(dict_language.keys()), value=i18n("中文"),
)
inp_refs = gr.File(label=i18n("可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。"),file_count="multiple")
gr.Markdown(html_center(i18n("*请填写需要合成的目标文本和语种模式"),'h3'))
with gr.Row():
text = gr.Textbox(label=i18n("需要合成的文本"), value="")
text_language = gr.Dropdown(
label=i18n("需要合成的语种"), choices=[i18n("中文"), i18n("英文"), i18n("日文"), i18n("中英混合"), i18n("日英混合"), i18n("多语种混合")], value=i18n("中文")
)
how_to_cut = gr.Radio(
label=i18n("怎么切"),
choices=[i18n("不切"), i18n("凑四句一切"), i18n("凑50字一切"), i18n("按中文句号。切"), i18n("按英文句号.切"), i18n("按标点符号切"), ],
value=i18n("凑四句一切"),
interactive=True,
)
with gr.Row():
gr.Markdown(value=i18n("gpt采样参数(无参考文本时不要太低)"))
top_k = gr.Slider(minimum=1,maximum=100,step=1,label=i18n("top_k"),value=5,interactive=True)
top_p = gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("top_p"),value=1,interactive=True)
temperature = gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("temperature"),value=1,interactive=True)
inference_button = gr.Button(i18n("合成语音"), variant="primary")
output = gr.Audio(label=i18n("输出的语音"))
with gr.Column(scale=13):
text = gr.Textbox(label=i18n("需要合成的文本"), value="", lines=26, max_lines=26)
with gr.Column(scale=7):
text_language = gr.Dropdown(
label=i18n("需要合成的语种")+i18n(".限制范围越小判别效果越好。"), choices=list(dict_language.keys()), value=i18n("中文"), scale=1
)
how_to_cut = gr.Dropdown(
label=i18n("怎么切"),
choices=[i18n("不切"), i18n("凑四句一切"), i18n("凑50字一切"), i18n("按中文句号。切"), i18n("按英文句号.切"), i18n("按标点符号切"), ],
value=i18n("凑四句一切"),
interactive=True, scale=1
)
gr.Markdown(value=html_center(i18n("语速调整,高为更快")))
if_freeze=gr.Checkbox(label=i18n("是否直接对上次合成结果调整语速和音色。防止随机性。"), value=False, interactive=True,show_label=True, scale=1)
speed = gr.Slider(minimum=0.6,maximum=1.65,step=0.05,label=i18n("语速"),value=1,interactive=True, scale=1)
gr.Markdown(html_center(i18n("GPT采样参数(无参考文本时不要太低。不懂就用默认)")))
top_k = gr.Slider(minimum=1,maximum=100,step=1,label=i18n("top_k"),value=15,interactive=True, scale=1)
top_p = gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("top_p"),value=1,interactive=True, scale=1)
temperature = gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("temperature"),value=1,interactive=True, scale=1)
# with gr.Column():
# gr.Markdown(value=i18n("手工调整音素。当音素框不为空时使用手工音素输入推理,无视目标文本框。"))
# phoneme=gr.Textbox(label=i18n("音素框"), value="")
# 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)
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],
[inp_ref, prompt_text, prompt_language, text, text_language, how_to_cut, top_k, top_p, temperature, ref_text_free,speed,if_freeze,inp_refs],
[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():
text_inp = gr.Textbox(label=i18n("需要合成的切分前文本"), value="")
button1 = gr.Button(i18n("凑四句一切"), variant="primary")
button2 = gr.Button(i18n("凑50字一切"), variant="primary")
button3 = gr.Button(i18n("按中文句号。切"), variant="primary")
button4 = gr.Button(i18n("按英文句号.切"), variant="primary")
button5 = gr.Button(i18n("按标点符号切"), variant="primary")
text_opt = gr.Textbox(label=i18n("切分后文本"), value="")
button1.click(cut1, [text_inp], [text_opt])
button2.click(cut2, [text_inp], [text_opt])
button3.click(cut3, [text_inp], [text_opt])
button4.click(cut4, [text_inp], [text_opt])
button5.click(cut5, [text_inp], [text_opt])
gr.Markdown(value=i18n("后续将支持转音素、手工修改音素、语音合成分步执行。"))
# gr.Markdown(value=i18n("文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。"))
# with gr.Row():
# text_inp = gr.Textbox(label=i18n("需要合成的切分前文本"), value="")
# button1 = gr.Button(i18n("凑四句一切"), variant="primary")
# button2 = gr.Button(i18n("凑50字一切"), variant="primary")
# button3 = gr.Button(i18n("按中文句号。切"), variant="primary")
# button4 = gr.Button(i18n("按英文句号.切"), variant="primary")
# button5 = gr.Button(i18n("按标点符号切"), variant="primary")
# text_opt = gr.Textbox(label=i18n("切分后文本"), value="")
# button1.click(cut1, [text_inp], [text_opt])
# button2.click(cut2, [text_inp], [text_opt])
# button3.click(cut3, [text_inp], [text_opt])
# button4.click(cut4, [text_inp], [text_opt])
# button5.click(cut5, [text_inp], [text_opt])
# gr.Markdown(html_center(i18n("后续将支持转音素、手工修改音素、语音合成分步执行。")))
if __name__ == '__main__':
app.queue(concurrency_count=511, max_size=1022).launch(
app.queue().launch(#concurrency_count=511, max_size=1022
server_name="0.0.0.0",
inbrowser=True,
share=is_share,

View File

@ -0,0 +1,336 @@
'''
按中英混合识别
按日英混合识别
多语种启动切分识别语种
全部按中文识别
全部按英文识别
全部按日文识别
'''
import random
import os, re, logging
import sys
now_dir = os.getcwd()
sys.path.append(now_dir)
sys.path.append("%s/GPT_SoVITS" % (now_dir))
logging.getLogger("markdown_it").setLevel(logging.ERROR)
logging.getLogger("urllib3").setLevel(logging.ERROR)
logging.getLogger("httpcore").setLevel(logging.ERROR)
logging.getLogger("httpx").setLevel(logging.ERROR)
logging.getLogger("asyncio").setLevel(logging.ERROR)
logging.getLogger("charset_normalizer").setLevel(logging.ERROR)
logging.getLogger("torchaudio._extension").setLevel(logging.ERROR)
import pdb
import torch
try:
import gradio.analytics as analytics
analytics.version_check = lambda:None
except:...
infer_ttswebui = os.environ.get("infer_ttswebui", 9872)
infer_ttswebui = int(infer_ttswebui)
is_share = os.environ.get("is_share", "False")
is_share = eval(is_share)
if "_CUDA_VISIBLE_DEVICES" in os.environ:
os.environ["CUDA_VISIBLE_DEVICES"] = os.environ["_CUDA_VISIBLE_DEVICES"]
is_half = eval(os.environ.get("is_half", "True")) and torch.cuda.is_available()
gpt_path = os.environ.get("gpt_path", None)
sovits_path = os.environ.get("sovits_path", None)
cnhubert_base_path = os.environ.get("cnhubert_base_path", None)
bert_path = os.environ.get("bert_path", None)
version=os.environ.get("version","v2")
import gradio as gr
from TTS_infer_pack.TTS import TTS, TTS_Config
from TTS_infer_pack.text_segmentation_method import get_method
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
i18n = I18nAuto(language=language)
# os.environ['PYTORCH_ENABLE_MPS_FALLBACK'] = '1' # 确保直接启动推理UI时也能够设置。
if torch.cuda.is_available():
device = "cuda"
# elif torch.backends.mps.is_available():
# device = "mps"
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
cut_method = {
i18n("不切"):"cut0",
i18n("凑四句一切"): "cut1",
i18n("凑50字一切"): "cut2",
i18n("按中文句号。切"): "cut3",
i18n("按英文句号.切"): "cut4",
i18n("按标点符号切"): "cut5",
}
tts_config = TTS_Config("GPT_SoVITS/configs/tts_infer.yaml")
tts_config.device = device
tts_config.is_half = is_half
tts_config.version = version
if gpt_path is not None:
tts_config.t2s_weights_path = gpt_path
if sovits_path is not None:
tts_config.vits_weights_path = sovits_path
if cnhubert_base_path is not None:
tts_config.cnhuhbert_base_path = cnhubert_base_path
if bert_path is not None:
tts_config.bert_base_path = bert_path
print(tts_config)
tts_pipeline = TTS(tts_config)
gpt_path = tts_config.t2s_weights_path
sovits_path = tts_config.vits_weights_path
version = tts_config.version
def inference(text, text_lang,
ref_audio_path,
aux_ref_audio_paths,
prompt_text,
prompt_lang, top_k,
top_p, temperature,
text_split_method, batch_size,
speed_factor, ref_text_free,
split_bucket,fragment_interval,
seed, keep_random, parallel_infer,
repetition_penalty
):
seed = -1 if keep_random else seed
actual_seed = seed if seed not in [-1, "", None] else random.randrange(1 << 32)
inputs={
"text": text,
"text_lang": dict_language[text_lang],
"ref_audio_path": ref_audio_path,
"aux_ref_audio_paths": [item.name for item in aux_ref_audio_paths] if aux_ref_audio_paths is not None else [],
"prompt_text": prompt_text if not ref_text_free else "",
"prompt_lang": dict_language[prompt_lang],
"top_k": top_k,
"top_p": top_p,
"temperature": temperature,
"text_split_method": cut_method[text_split_method],
"batch_size":int(batch_size),
"speed_factor":float(speed_factor),
"split_bucket":split_bucket,
"return_fragment":False,
"fragment_interval":fragment_interval,
"seed":actual_seed,
"parallel_infer": parallel_infer,
"repetition_penalty": repetition_penalty,
}
for item in tts_pipeline.run(inputs):
yield item, actual_seed
def custom_sort_key(s):
# 使用正则表达式提取字符串中的数字部分和非数字部分
parts = re.split('(\d+)', s)
# 将数字部分转换为整数,非数字部分保持不变
parts = [int(part) if part.isdigit() else part for part in parts]
return parts
def change_choices():
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"}
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 = _
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(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(GPT_weight_root, SoVITS_weight_root)
def change_sovits_weights(sovits_path,prompt_language=None,text_language=None):
tts_pipeline.init_vits_weights(sovits_path)
global version, dict_language
dict_language = dict_language_v1 if tts_pipeline.configs.version =='v1' else dict_language_v2
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
with gr.Blocks(title="GPT-SoVITS WebUI") as app:
gr.Markdown(
value=i18n("本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.")
)
with gr.Column():
# with gr.Group():
gr.Markdown(value=i18n("模型切换"))
with gr.Row():
GPT_dropdown = gr.Dropdown(label=i18n("GPT模型列表"), choices=sorted(GPT_names, key=custom_sort_key), value=gpt_path, interactive=True)
SoVITS_dropdown = gr.Dropdown(label=i18n("SoVITS模型列表"), choices=sorted(SoVITS_names, key=custom_sort_key), value=sovits_path, interactive=True)
refresh_button = gr.Button(i18n("刷新模型路径"), variant="primary")
refresh_button.click(fn=change_choices, inputs=[], outputs=[SoVITS_dropdown, GPT_dropdown])
with gr.Row():
with gr.Column():
gr.Markdown(value=i18n("*请上传并填写参考信息"))
with gr.Row():
inp_ref = gr.Audio(label=i18n("主参考音频(请上传3~10秒内参考音频超过会报错)"), type="filepath")
inp_refs = gr.File(label=i18n("辅参考音频(可选多个,或不选)"),file_count="multiple")
prompt_text = gr.Textbox(label=i18n("主参考音频的文本"), value="", lines=2)
with gr.Row():
prompt_language = gr.Dropdown(
label=i18n("主参考音频的语种"), choices=list(dict_language.keys()), value=i18n("中文")
)
with gr.Column():
ref_text_free = gr.Checkbox(label=i18n("开启无参考文本模式。不填参考文本亦相当于开启。"), value=False, interactive=True, show_label=True)
gr.Markdown(i18n("使用无参考文本模式时建议使用微调的GPT听不清参考音频说的啥(不晓得写啥)可以开,开启后无视填写的参考文本。"))
with gr.Column():
gr.Markdown(value=i18n("*请填写需要合成的目标文本和语种模式"))
text = gr.Textbox(label=i18n("需要合成的文本"), value="", lines=20, max_lines=20)
text_language = gr.Dropdown(
label=i18n("需要合成的文本的语种"), choices=list(dict_language.keys()), value=i18n("中文")
)
with gr.Group():
gr.Markdown(value=i18n("推理设置"))
with gr.Row():
with gr.Column():
batch_size = gr.Slider(minimum=1,maximum=200,step=1,label=i18n("batch_size"),value=20,interactive=True)
fragment_interval = gr.Slider(minimum=0.01,maximum=1,step=0.01,label=i18n("分段间隔(秒)"),value=0.3,interactive=True)
speed_factor = gr.Slider(minimum=0.6,maximum=1.65,step=0.05,label="speed_factor",value=1.0,interactive=True)
top_k = gr.Slider(minimum=1,maximum=100,step=1,label=i18n("top_k"),value=5,interactive=True)
top_p = gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("top_p"),value=1,interactive=True)
temperature = gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("temperature"),value=1,interactive=True)
repetition_penalty = gr.Slider(minimum=0,maximum=2,step=0.05,label=i18n("重复惩罚"),value=1.35,interactive=True)
with gr.Column():
with gr.Row():
how_to_cut = gr.Dropdown(
label=i18n("怎么切"),
choices=[i18n("不切"), i18n("凑四句一切"), i18n("凑50字一切"), i18n("按中文句号。切"), i18n("按英文句号.切"), i18n("按标点符号切"), ],
value=i18n("凑四句一切"),
interactive=True, scale=1
)
parallel_infer = gr.Checkbox(label=i18n("并行推理"), value=True, interactive=True, show_label=True)
split_bucket = gr.Checkbox(label=i18n("数据分桶(并行推理时会降低一点计算量)"), value=True, interactive=True, show_label=True)
with gr.Row():
seed = gr.Number(label=i18n("随机种子"),value=-1)
keep_random = gr.Checkbox(label=i18n("保持随机"), value=True, interactive=True, show_label=True)
output = gr.Audio(label=i18n("输出的语音"))
with gr.Row():
inference_button = gr.Button(i18n("合成语音"), variant="primary")
stop_infer = gr.Button(i18n("终止合成"), variant="primary")
inference_button.click(
inference,
[
text,text_language, inp_ref, inp_refs,
prompt_text, prompt_language,
top_k, top_p, temperature,
how_to_cut, batch_size,
speed_factor, ref_text_free,
split_bucket,fragment_interval,
seed, keep_random, parallel_infer,
repetition_penalty
],
[output, seed],
)
stop_infer.click(tts_pipeline.stop, [], [])
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(tts_pipeline.init_t2s_weights, [GPT_dropdown], [])
with gr.Group():
gr.Markdown(value=i18n("文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。"))
with gr.Row():
text_inp = gr.Textbox(label=i18n("需要合成的切分前文本"), value="", lines=4)
with gr.Column():
_how_to_cut = gr.Radio(
label=i18n("怎么切"),
choices=[i18n("不切"), i18n("凑四句一切"), i18n("凑50字一切"), i18n("按中文句号。切"), i18n("按英文句号.切"), i18n("按标点符号切"), ],
value=i18n("凑四句一切"),
interactive=True,
)
cut_text= gr.Button(i18n("切分"), variant="primary")
def to_cut(text_inp, how_to_cut):
if len(text_inp.strip()) == 0 or text_inp==[]:
return ""
method = get_method(cut_method[how_to_cut])
return method(text_inp)
text_opt = gr.Textbox(label=i18n("切分后文本"), value="", lines=4)
cut_text.click(to_cut, [text_inp, _how_to_cut], [text_opt])
gr.Markdown(value=i18n("后续将支持转音素、手工修改音素、语音合成分步执行。"))
if __name__ == '__main__':
app.queue().launch(#concurrency_count=511, max_size=1022
server_name="0.0.0.0",
inbrowser=True,
share=is_share,
server_port=infer_ttswebui,
quiet=True,
)

View File

@ -17,8 +17,8 @@ from functools import lru_cache
import requests
from scipy.io import wavfile
from io import BytesIO
from my_utils import load_audio
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

View File

@ -1,5 +1,10 @@
import warnings
warnings.filterwarnings("ignore")
import copy
import math
import os
import pdb
import torch
from torch import nn
from torch.nn import functional as F
@ -13,7 +18,9 @@ from torch.nn.utils import weight_norm, remove_weight_norm, spectral_norm
from module.commons import init_weights, get_padding
from module.mrte_model import MRTE
from module.quantize import ResidualVectorQuantizer
from text import symbols
# from text import symbols
from text import symbols as symbols_v1
from text import symbols2 as symbols_v2
from torch.cuda.amp import autocast
import contextlib
@ -183,6 +190,7 @@ class TextEncoder(nn.Module):
kernel_size,
p_dropout,
latent_channels=192,
version = "v2",
):
super().__init__()
self.out_channels = out_channels
@ -193,6 +201,7 @@ class TextEncoder(nn.Module):
self.kernel_size = kernel_size
self.p_dropout = p_dropout
self.latent_channels = latent_channels
self.version = version
self.ssl_proj = nn.Conv1d(768, hidden_channels, 1)
@ -208,6 +217,11 @@ class TextEncoder(nn.Module):
self.encoder_text = attentions.Encoder(
hidden_channels, filter_channels, n_heads, n_layers, kernel_size, p_dropout
)
if self.version == "v1":
symbols = symbols_v1.symbols
else:
symbols = symbols_v2.symbols
self.text_embedding = nn.Embedding(len(symbols), hidden_channels)
self.mrte = MRTE()
@ -223,7 +237,7 @@ class TextEncoder(nn.Module):
self.proj = nn.Conv1d(hidden_channels, out_channels * 2, 1)
def forward(self, y, y_lengths, text, text_lengths, ge, test=None):
def forward(self, y, y_lengths, text, text_lengths, ge, speed=1,test=None):
y_mask = torch.unsqueeze(commons.sequence_mask(y_lengths, y.size(2)), 1).to(
y.dtype
)
@ -240,9 +254,10 @@ class TextEncoder(nn.Module):
text = self.text_embedding(text).transpose(1, 2)
text = self.encoder_text(text * text_mask, text_mask)
y = self.mrte(y, y_mask, text, text_mask, ge)
y = self.encoder2(y * y_mask, y_mask)
if(speed!=1):
y = F.interpolate(y, size=int(y.shape[-1] / speed)+1, mode="linear")
y_mask = F.interpolate(y_mask, size=y.shape[-1], mode="nearest")
stats = self.proj(y) * y_mask
m, logs = torch.split(stats, self.out_channels, dim=1)
return y, m, logs, y_mask
@ -824,6 +839,7 @@ class SynthesizerTrn(nn.Module):
use_sdp=True,
semantic_frame_rate=None,
freeze_quantizer=None,
version = "v2",
**kwargs
):
super().__init__()
@ -844,6 +860,7 @@ class SynthesizerTrn(nn.Module):
self.segment_size = segment_size
self.n_speakers = n_speakers
self.gin_channels = gin_channels
self.version = version
self.use_sdp = use_sdp
self.enc_p = TextEncoder(
@ -854,6 +871,7 @@ class SynthesizerTrn(nn.Module):
n_layers,
kernel_size,
p_dropout,
version = version,
)
self.dec = Generator(
inter_channels,
@ -878,9 +896,11 @@ class SynthesizerTrn(nn.Module):
inter_channels, hidden_channels, 5, 1, 4, gin_channels=gin_channels
)
self.ref_enc = modules.MelStyleEncoder(
spec_channels, style_vector_dim=gin_channels
)
# self.version=os.environ.get("version","v1")
if(self.version=="v1"):
self.ref_enc = modules.MelStyleEncoder(spec_channels, style_vector_dim=gin_channels)
else:
self.ref_enc = modules.MelStyleEncoder(704, style_vector_dim=gin_channels)
ssl_dim = 768
assert semantic_frame_rate in ["25hz", "50hz"]
@ -892,20 +912,15 @@ class SynthesizerTrn(nn.Module):
self.quantizer = ResidualVectorQuantizer(dimension=ssl_dim, n_q=1, bins=1024)
self.freeze_quantizer = freeze_quantizer
# if freeze_quantizer:
# self.ssl_proj.requires_grad_(False)
# self.quantizer.requires_grad_(False)
#self.quantizer.eval()
# self.enc_p.text_embedding.requires_grad_(False)
# self.enc_p.encoder_text.requires_grad_(False)
# self.enc_p.mrte.requires_grad_(False)
def forward(self, ssl, y, y_lengths, text, text_lengths):
y_mask = torch.unsqueeze(commons.sequence_mask(y_lengths, y.size(2)), 1).to(
y.dtype
)
ge = self.ref_enc(y * y_mask, y_mask)
if(self.version=="v1"):
ge = self.ref_enc(y * y_mask, y_mask)
else:
ge = self.ref_enc(y[:,:704] * y_mask, y_mask)
with autocast(enabled=False):
maybe_no_grad = torch.no_grad() if self.freeze_quantizer else contextlib.nullcontext()
with maybe_no_grad:
@ -946,7 +961,10 @@ class SynthesizerTrn(nn.Module):
y_mask = torch.unsqueeze(commons.sequence_mask(y_lengths, y.size(2)), 1).to(
y.dtype
)
ge = self.ref_enc(y * y_mask, y_mask)
if(self.version=="v1"):
ge = self.ref_enc(y * y_mask, y_mask)
else:
ge = self.ref_enc(y[:,:704] * y_mask, y_mask)
ssl = self.ssl_proj(ssl)
quantized, codes, commit_loss, _ = self.quantizer(ssl, layers=[0])
@ -966,14 +984,27 @@ class SynthesizerTrn(nn.Module):
return o, y_mask, (z, z_p, m_p, logs_p)
@torch.no_grad()
def decode(self, codes, text, refer, noise_scale=0.5):
ge = None
if refer is not None:
refer_lengths = torch.LongTensor([refer.size(2)]).to(refer.device)
refer_mask = torch.unsqueeze(
commons.sequence_mask(refer_lengths, refer.size(2)), 1
).to(refer.dtype)
ge = self.ref_enc(refer * refer_mask, refer_mask)
def decode(self, codes, text, refer, noise_scale=0.5,speed=1):
def get_ge(refer):
ge = None
if refer is not None:
refer_lengths = torch.LongTensor([refer.size(2)]).to(refer.device)
refer_mask = torch.unsqueeze(
commons.sequence_mask(refer_lengths, refer.size(2)), 1
).to(refer.dtype)
if (self.version == "v1"):
ge = self.ref_enc(refer * refer_mask, refer_mask)
else:
ge = self.ref_enc(refer[:, :704] * refer_mask, refer_mask)
return ge
if(type(refer)==list):
ges=[]
for _refer in refer:
ge=get_ge(_refer)
ges.append(ge)
ge=torch.stack(ges,0).mean(0)
else:
ge=get_ge(refer)
y_lengths = torch.LongTensor([codes.size(2) * 2]).to(codes.device)
text_lengths = torch.LongTensor([text.size(-1)]).to(text.device)
@ -983,9 +1014,8 @@ class SynthesizerTrn(nn.Module):
quantized = F.interpolate(
quantized, size=int(quantized.shape[-1] * 2), mode="nearest"
)
x, m_p, logs_p, y_mask = self.enc_p(
quantized, y_lengths, text, text_lengths, ge
quantized, y_lengths, text, text_lengths, ge,speed
)
z_p = m_p + torch.randn_like(m_p) * torch.exp(logs_p) * noise_scale

View File

@ -13,7 +13,9 @@ from torch.nn.utils import weight_norm, remove_weight_norm, spectral_norm
from module.commons import init_weights, get_padding
from module.mrte_model import MRTE
from module.quantize import ResidualVectorQuantizer
from text import symbols
# from text import symbols
from text import symbols as symbols_v1
from text import symbols2 as symbols_v2
from torch.cuda.amp import autocast
@ -182,6 +184,7 @@ class TextEncoder(nn.Module):
kernel_size,
p_dropout,
latent_channels=192,
version="v2",
):
super().__init__()
self.out_channels = out_channels
@ -192,6 +195,7 @@ class TextEncoder(nn.Module):
self.kernel_size = kernel_size
self.p_dropout = p_dropout
self.latent_channels = latent_channels
self.version = version
self.ssl_proj = nn.Conv1d(768, hidden_channels, 1)
@ -207,6 +211,11 @@ class TextEncoder(nn.Module):
self.encoder_text = attentions.Encoder(
hidden_channels, filter_channels, n_heads, n_layers, kernel_size, p_dropout
)
if self.version == "v1":
symbols = symbols_v1.symbols
else:
symbols = symbols_v2.symbols
self.text_embedding = nn.Embedding(len(symbols), hidden_channels)
self.mrte = MRTE()
@ -817,6 +826,7 @@ class SynthesizerTrn(nn.Module):
use_sdp=True,
semantic_frame_rate=None,
freeze_quantizer=None,
version="v2",
**kwargs
):
super().__init__()
@ -837,6 +847,7 @@ class SynthesizerTrn(nn.Module):
self.segment_size = segment_size
self.n_speakers = n_speakers
self.gin_channels = gin_channels
self.version = version
self.use_sdp = use_sdp
self.enc_p = TextEncoder(
@ -847,6 +858,7 @@ class SynthesizerTrn(nn.Module):
n_layers,
kernel_size,
p_dropout,
version=version,
)
self.dec = Generator(
inter_channels,
@ -871,9 +883,11 @@ class SynthesizerTrn(nn.Module):
inter_channels, hidden_channels, 5, 1, 4, gin_channels=gin_channels
)
self.ref_enc = modules.MelStyleEncoder(
spec_channels, style_vector_dim=gin_channels
)
# self.version=os.environ.get("version","v1")
if self.version == "v1":
self.ref_enc = modules.MelStyleEncoder(spec_channels, style_vector_dim=gin_channels)
else:
self.ref_enc = modules.MelStyleEncoder(704, style_vector_dim=gin_channels)
ssl_dim = 768
self.ssl_dim = ssl_dim
@ -894,7 +908,10 @@ class SynthesizerTrn(nn.Module):
def forward(self, codes, text, refer):
refer_mask = torch.ones_like(refer[:1,:1,:])
ge = self.ref_enc(refer * refer_mask, refer_mask)
if (self.version == "v1"):
ge = self.ref_enc(refer * refer_mask, refer_mask)
else:
ge = self.ref_enc(refer[:, :704] * refer_mask, refer_mask)
quantized = self.quantizer.decode(codes)
if self.semantic_frame_rate == "25hz":

View File

@ -1,21 +0,0 @@
import ffmpeg
import numpy as np
def load_audio(file, sr):
try:
# https://github.com/openai/whisper/blob/main/whisper/audio.py#L26
# This launches a subprocess to decode audio while down-mixing and resampling as necessary.
# Requires the ffmpeg CLI and `ffmpeg-python` package to be installed.
file = (
file.strip(" ").strip('"').strip("\n").strip('"').strip(" ")
) # 防止小白拷路径头尾带了空格和"和回车
out, _ = (
ffmpeg.input(file, threads=0)
.output("-", format="f32le", acodec="pcm_f32le", ac=1, ar=sr)
.run(cmd=["ffmpeg", "-nostdin"], capture_stdout=True, capture_stderr=True)
)
except Exception as e:
raise RuntimeError(f"Failed to load audio: {e}")
return np.frombuffer(out, np.float32).flatten()

View File

@ -1,15 +1,16 @@
from module.models_onnx import SynthesizerTrn, symbols
from module.models_onnx import SynthesizerTrn, symbols_v1, symbols_v2
from AR.models.t2s_lightning_module_onnx import Text2SemanticLightningModule
import torch
import torchaudio
from torch import nn
from feature_extractor import cnhubert
cnhubert_base_path = "pretrained_models/chinese-hubert-base"
cnhubert.cnhubert_base_path=cnhubert_base_path
cnhubert_base_path = "GPT_SoVITS/pretrained_models/chinese-hubert-base"
cnhubert.cnhubert_base_path = cnhubert_base_path
ssl_model = cnhubert.get_model()
from text import cleaned_text_to_sequence
import soundfile
from my_utils import load_audio
from tools.my_utils import load_audio
import os
import json
@ -196,6 +197,11 @@ class VitsModel(nn.Module):
super().__init__()
dict_s2 = torch.load(vits_path,map_location="cpu")
self.hps = dict_s2["config"]
if dict_s2['weight']['enc_p.text_embedding.weight'].shape[0] == 322:
self.hps["model"]["version"] = "v1"
else:
self.hps["model"]["version"] = "v2"
self.hps = DictToAttrRecursive(self.hps)
self.hps.model.semantic_frame_rate = "25hz"
self.vq_model = SynthesizerTrn(
@ -267,13 +273,13 @@ class SSLModel(nn.Module):
return self.ssl.model(ref_audio_16k)["last_hidden_state"].transpose(1, 2)
def export(vits_path, gpt_path, project_name):
def export(vits_path, gpt_path, project_name, vits_model="v2"):
vits = VitsModel(vits_path)
gpt = T2SModel(gpt_path, vits)
gpt_sovits = GptSoVits(vits, gpt)
ssl = SSLModel()
ref_seq = torch.LongTensor([cleaned_text_to_sequence(["n", "i2", "h", "ao3", ",", "w", "o3", "sh", "i4", "b", "ai2", "y", "e4"])])
text_seq = torch.LongTensor([cleaned_text_to_sequence(["w", "o3", "sh", "i4", "b", "ai2", "y", "e4", "w", "o3", "sh", "i4", "b", "ai2", "y", "e4", "w", "o3", "sh", "i4", "b", "ai2", "y", "e4"])])
ref_seq = torch.LongTensor([cleaned_text_to_sequence(["n", "i2", "h", "ao3", ",", "w", "o3", "sh", "i4", "b", "ai2", "y", "e4"],version=vits_model)])
text_seq = torch.LongTensor([cleaned_text_to_sequence(["w", "o3", "sh", "i4", "b", "ai2", "y", "e4", "w", "o3", "sh", "i4", "b", "ai2", "y", "e4", "w", "o3", "sh", "i4", "b", "ai2", "y", "e4"],version=vits_model)])
ref_bert = torch.randn((ref_seq.shape[1], 1024)).float()
text_bert = torch.randn((text_seq.shape[1], 1024)).float()
ref_audio = torch.randn((1, 48000 * 5)).float()
@ -288,32 +294,36 @@ def export(vits_path, gpt_path, project_name):
ssl_content = ssl(ref_audio_16k).float()
debug = False
# debug = False
debug = True
# gpt_sovits.export(ref_seq, text_seq, ref_bert, text_bert, ref_audio_sr, ssl_content, project_name)
if debug:
a, b = gpt_sovits(ref_seq, text_seq, ref_bert, text_bert, ref_audio_sr, ssl_content, debug=debug)
soundfile.write("out1.wav", a.cpu().detach().numpy(), vits.hps.data.sampling_rate)
soundfile.write("out2.wav", b[0], vits.hps.data.sampling_rate)
return
else:
a = gpt_sovits(ref_seq, text_seq, ref_bert, text_bert, ref_audio_sr, ssl_content).detach().cpu().numpy()
soundfile.write("out.wav", a, vits.hps.data.sampling_rate)
a = gpt_sovits(ref_seq, text_seq, ref_bert, text_bert, ref_audio_sr, ssl_content).detach().cpu().numpy()
soundfile.write("out.wav", a, vits.hps.data.sampling_rate)
gpt_sovits.export(ref_seq, text_seq, ref_bert, text_bert, ref_audio_sr, ssl_content, project_name)
if vits_model == "v1":
symbols = symbols_v1
else:
symbols = symbols_v2
MoeVSConf = {
"Folder" : f"{project_name}",
"Name" : f"{project_name}",
"Type" : "GPT-SoVits",
"Rate" : vits.hps.data.sampling_rate,
"NumLayers": gpt.t2s_model.num_layers,
"EmbeddingDim": gpt.t2s_model.embedding_dim,
"Dict": "BasicDict",
"BertPath": "chinese-roberta-wwm-ext-large",
"Symbol": symbols,
"AddBlank": False
}
"Folder": f"{project_name}",
"Name": f"{project_name}",
"Type": "GPT-SoVits",
"Rate": vits.hps.data.sampling_rate,
"NumLayers": gpt.t2s_model.num_layers,
"EmbeddingDim": gpt.t2s_model.embedding_dim,
"Dict": "BasicDict",
"BertPath": "chinese-roberta-wwm-ext-large",
# "Symbol": symbols,
"AddBlank": False,
}
MoeVSConfJson = json.dumps(MoeVSConf)
with open(f"onnx/{project_name}.json", 'w') as MoeVsConfFile:

View File

@ -7,18 +7,21 @@ inp_wav_dir = os.environ.get("inp_wav_dir")
exp_name = os.environ.get("exp_name")
i_part = os.environ.get("i_part")
all_parts = os.environ.get("all_parts")
os.environ["CUDA_VISIBLE_DEVICES"] = os.environ.get("_CUDA_VISIBLE_DEVICES")
if "_CUDA_VISIBLE_DEVICES" in os.environ:
os.environ["CUDA_VISIBLE_DEVICES"] = os.environ["_CUDA_VISIBLE_DEVICES"]
opt_dir = os.environ.get("opt_dir")
bert_pretrained_dir = os.environ.get("bert_pretrained_dir")
is_half = eval(os.environ.get("is_half", "True"))
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
from tqdm import tqdm
from text.cleaner import clean_text
import torch
from transformers import AutoModelForMaskedLM, AutoTokenizer
import numpy as np
from tools.my_utils import clean_path
# inp_text=sys.argv[1]
# inp_wav_dir=sys.argv[2]
@ -53,6 +56,8 @@ if os.path.exists(txt_path) == False:
# device = "mps"
else:
device = "cpu"
if os.path.exists(bert_pretrained_dir):...
else:raise FileNotFoundError(bert_pretrained_dir)
tokenizer = AutoTokenizer.from_pretrained(bert_pretrained_dir)
bert_model = AutoModelForMaskedLM.from_pretrained(bert_pretrained_dir)
if is_half == True:
@ -81,9 +86,11 @@ if os.path.exists(txt_path) == False:
def process(data, res):
for name, text, lan in data:
try:
name=clean_path(name)
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":
@ -112,6 +119,12 @@ if os.path.exists(txt_path) == False:
"EN": "en",
"en": "en",
"En": "en",
"KO": "ko",
"Ko": "ko",
"ko": "ko",
"yue": "yue",
"YUE": "yue",
"Yue": "yue",
}
for line in lines[int(i_part) :: int(all_parts)]:
try:

View File

@ -6,18 +6,20 @@ inp_wav_dir= os.environ.get("inp_wav_dir")
exp_name= os.environ.get("exp_name")
i_part= os.environ.get("i_part")
all_parts= os.environ.get("all_parts")
os.environ["CUDA_VISIBLE_DEVICES"]= os.environ.get("_CUDA_VISIBLE_DEVICES")
if "_CUDA_VISIBLE_DEVICES" in os.environ:
os.environ["CUDA_VISIBLE_DEVICES"] = os.environ["_CUDA_VISIBLE_DEVICES"]
from feature_extractor import cnhubert
opt_dir= os.environ.get("opt_dir")
cnhubert.cnhubert_base_path= os.environ.get("cnhubert_base_dir")
is_half=eval(os.environ.get("is_half","True"))
import torch
is_half = eval(os.environ.get("is_half", "True")) and torch.cuda.is_available()
import pdb,traceback,numpy as np,logging
from scipy.io import wavfile
import librosa,torch
import librosa
now_dir = os.getcwd()
sys.path.append(now_dir)
from my_utils import load_audio
from tools.my_utils import load_audio,clean_path
# from config import cnhubert_base_path
# cnhubert.cnhubert_base_path=cnhubert_base_path
@ -99,6 +101,7 @@ for line in lines[int(i_part)::int(all_parts)]:
try:
# wav_name,text=line.split("\t")
wav_name, spk_name, language, text = line.split("|")
wav_name=clean_path(wav_name)
if (inp_wav_dir != "" and inp_wav_dir != None):
wav_name = os.path.basename(wav_name)
wav_path = "%s/%s"%(inp_wav_dir, wav_name)

View File

@ -4,11 +4,14 @@ inp_text = os.environ.get("inp_text")
exp_name = os.environ.get("exp_name")
i_part = os.environ.get("i_part")
all_parts = os.environ.get("all_parts")
os.environ["CUDA_VISIBLE_DEVICES"] = os.environ.get("_CUDA_VISIBLE_DEVICES")
if "_CUDA_VISIBLE_DEVICES" in os.environ:
os.environ["CUDA_VISIBLE_DEVICES"] = os.environ["_CUDA_VISIBLE_DEVICES"]
opt_dir = os.environ.get("opt_dir")
pretrained_s2G = os.environ.get("pretrained_s2G")
s2config_path = os.environ.get("s2config_path")
is_half = eval(os.environ.get("is_half", "True"))
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
import multiprocessing
import sys, pdb
@ -19,9 +22,9 @@ from random import shuffle
import torch.multiprocessing as mp
from glob import glob
from tqdm import tqdm
import logging, librosa, utils, torch
import logging, librosa, utils
from module.models import SynthesizerTrn
from tools.my_utils import clean_path
logging.getLogger("numba").setLevel(logging.WARNING)
# from config import pretrained_s2G
@ -32,6 +35,8 @@ logging.getLogger("numba").setLevel(logging.WARNING)
# os.environ["CUDA_VISIBLE_DEVICES"]=sys.argv[5]
# opt_dir="/data/docker/liujing04/gpt-vits/fine_tune_dataset/%s"%exp_name
if os.path.exists(pretrained_s2G):...
else:raise FileNotFoundError(pretrained_s2G)
hubert_dir = "%s/4-cnhubert" % (opt_dir)
semantic_path = "%s/6-name2semantic-%s.tsv" % (opt_dir, i_part)
@ -49,6 +54,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:
@ -86,6 +92,7 @@ if os.path.exists(semantic_path) == False:
try:
# wav_name,text=line.split("\t")
wav_name, spk_name, language, text = line.split("|")
wav_name=clean_path(wav_name)
wav_name = os.path.basename(wav_name)
# name2go(name,lines1)
name2go(wav_name, lines1)

View File

@ -79,15 +79,17 @@ class my_model_ckpt(ModelCheckpoint):
to_save_od["config"] = self.config
to_save_od["info"] = "GPT-e%s" % (trainer.current_epoch + 1)
# torch.save(
my_save(
to_save_od,
"%s/%s-e%s.ckpt"
% (
self.half_weights_save_dir,
self.exp_name,
trainer.current_epoch + 1,
),
)
# print(os.environ)
if(os.environ.get("LOCAL_RANK","0")=="0"):
my_save(
to_save_od,
"%s/%s-e%s.ckpt"
% (
self.half_weights_save_dir,
self.exp_name,
trainer.current_epoch + 1,
),
)
self._save_last_checkpoint(trainer, monitor_candidates)
@ -132,6 +134,7 @@ def main(args):
logger=logger,
num_sanity_val_steps=0,
callbacks=[ckpt_callback],
use_distributed_sampler=False, # 非常简单的修改,但解决了采用自定义的 bucket_sampler 下训练步数不一致的问题!
)
model: Text2SemanticLightningModule = Text2SemanticLightningModule(

View File

@ -1,5 +1,6 @@
import warnings
warnings.filterwarnings("ignore")
import utils, os
hps = utils.get_hparams(stage=2)
os.environ["CUDA_VISIBLE_DEVICES"] = hps.train.gpu_numbers.replace("-", ",")
import torch
@ -119,7 +120,7 @@ def run(rank, n_gpus, hps):
collate_fn=collate_fn,
batch_sampler=train_sampler,
persistent_workers=True,
prefetch_factor=16,
prefetch_factor=4,
)
# if rank == 0:
# eval_dataset = TextAudioSpeakerLoader(hps.data.validation_files, hps.data, val=True)
@ -211,7 +212,7 @@ def run(rank, n_gpus, hps):
# traceback.print_exc()
epoch_str = 1
global_step = 0
if hps.train.pretrained_s2G != "":
if hps.train.pretrained_s2G != ""and hps.train.pretrained_s2G != None and os.path.exists(hps.train.pretrained_s2G):
if rank == 0:
logger.info("loaded pretrained %s" % hps.train.pretrained_s2G)
print(
@ -223,7 +224,7 @@ def run(rank, n_gpus, hps):
strict=False,
)
) ##测试不加载优化器
if hps.train.pretrained_s2D != "":
if hps.train.pretrained_s2D != ""and hps.train.pretrained_s2D != None and os.path.exists(hps.train.pretrained_s2D):
if rank == 0:
logger.info("loaded pretrained %s" % hps.train.pretrained_s2D)
print(

3
GPT_SoVITS/text/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
G2PWModel
__pycache__
*.zip

View File

@ -1,15 +1,27 @@
from text.symbols import *
import os
# if os.environ.get("version","v1")=="v1":
# from text.symbols import symbols
# else:
# from text.symbols2 import symbols
from text import symbols as symbols_v1
from text import symbols2 as symbols_v2
_symbol_to_id = {s: i for i, s in enumerate(symbols)}
_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):
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
'''
phones = [_symbol_to_id[symbol] for symbol in cleaned_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:
phones = [_symbol_to_id_v2[symbol] for symbol in cleaned_text]
return phones

View File

@ -0,0 +1,209 @@
# reference: https://huggingface.co/spaces/Naozumi0512/Bert-VITS2-Cantonese-Yue/blob/main/text/chinese.py
import sys
import re
import cn2an
from pyjyutping import jyutping
from text.symbols import punctuation
from text.zh_normalization.text_normlization import TextNormalizer
normalizer = lambda x: cn2an.transform(x, "an2cn")
INITIALS = [
"aa",
"aai",
"aak",
"aap",
"aat",
"aau",
"ai",
"au",
"ap",
"at",
"ak",
"a",
"p",
"b",
"e",
"ts",
"t",
"dz",
"d",
"kw",
"k",
"gw",
"g",
"f",
"h",
"l",
"m",
"ng",
"n",
"s",
"y",
"w",
"c",
"z",
"j",
"ong",
"on",
"ou",
"oi",
"ok",
"o",
"uk",
"ung",
]
INITIALS += ["sp", "spl", "spn", "sil"]
rep_map = {
"": ",",
"": ",",
"": ",",
"": ".",
"": "!",
"": "?",
"\n": ".",
"·": ",",
"": ",",
"...": "",
"$": ".",
"": "'",
"": "'",
'"': "'",
"": "'",
"": "'",
"": "'",
"": "'",
"(": "'",
")": "'",
"": "'",
"": "'",
"": "'",
"": "'",
"[": "'",
"]": "'",
"": "-",
"": "-",
"~": "-",
"": "'",
"": "'",
}
def replace_punctuation(text):
# text = text.replace("嗯", "恩").replace("呣", "母")
pattern = re.compile("|".join(re.escape(p) for p in rep_map.keys()))
replaced_text = pattern.sub(lambda x: rep_map[x.group()], text)
replaced_text = re.sub(
r"[^\u4e00-\u9fa5" + "".join(punctuation) + r"]+", "", replaced_text
)
return replaced_text
def text_normalize(text):
tx = TextNormalizer()
sentences = tx.normalize(text)
dest_text = ""
for sentence in sentences:
dest_text += replace_punctuation(sentence)
return dest_text
punctuation_set=set(punctuation)
def jyuping_to_initials_finals_tones(jyuping_syllables):
initials_finals = []
tones = []
word2ph = []
for syllable in jyuping_syllables:
if syllable in punctuation:
initials_finals.append(syllable)
tones.append(0)
word2ph.append(1) # Add 1 for punctuation
elif syllable == "_":
initials_finals.append(syllable)
tones.append(0)
word2ph.append(1) # Add 1 for underscore
else:
try:
tone = int(syllable[-1])
syllable_without_tone = syllable[:-1]
except ValueError:
tone = 0
syllable_without_tone = syllable
for initial in INITIALS:
if syllable_without_tone.startswith(initial):
if syllable_without_tone.startswith("nga"):
initials_finals.extend(
[
syllable_without_tone[:2],
syllable_without_tone[2:] or syllable_without_tone[-1],
]
)
# tones.extend([tone, tone])
tones.extend([-1, tone])
word2ph.append(2)
else:
final = syllable_without_tone[len(initial) :] or initial[-1]
initials_finals.extend([initial, final])
# tones.extend([tone, tone])
tones.extend([-1, tone])
word2ph.append(2)
break
assert len(initials_finals) == len(tones)
###魔改为辅音+带音调的元音
phones=[]
for a,b in zip(initials_finals,tones):
if(b not in [-1,0]):###防止粤语和普通话重合开头加Y如果是标点不加。
todo="%s%s"%(a,b)
else:todo=a
if(todo not in punctuation_set):todo="Y%s"%todo
phones.append(todo)
# return initials_finals, tones, word2ph
return phones, word2ph
def get_jyutping(text):
jp = jyutping.convert(text)
# print(1111111,jp)
for symbol in punctuation:
jp = jp.replace(symbol, " " + symbol + " ")
jp_array = jp.split()
return jp_array
def get_bert_feature(text, word2ph):
from text import chinese_bert
return chinese_bert.get_bert_feature(text, word2ph)
def g2p(text):
# word2ph = []
jyuping = get_jyutping(text)
# print(jyuping)
# phones, tones, word2ph = jyuping_to_initials_finals_tones(jyuping)
phones, word2ph = jyuping_to_initials_finals_tones(jyuping)
# phones = ["_"] + phones + ["_"]
# tones = [0] + tones + [0]
# word2ph = [1] + word2ph + [1]
return phones, word2ph
if __name__ == "__main__":
# text = "啊!但是《原神》是由,米哈\游自主, [研发]的一款全.新开放世界.冒险游戏"
text = "佢個鋤頭太短啦。"
text = text_normalize(text)
# phones, tones, word2ph = g2p(text)
phones, word2ph = g2p(text)
# print(phones, tones, word2ph)
print(phones, word2ph)

View File

@ -54,6 +54,26 @@ def replace_punctuation(text):
return replaced_text
def replace_punctuation_with_en(text):
text = text.replace("", "").replace("", "")
pattern = re.compile("|".join(re.escape(p) for p in rep_map.keys()))
replaced_text = pattern.sub(lambda x: rep_map[x.group()], text)
replaced_text = re.sub(
r"[^\u4e00-\u9fa5A-Za-z" + "".join(punctuation) + r"]+", "", replaced_text
)
return replaced_text
def replace_consecutive_punctuation(text):
punctuations = ''.join(re.escape(p) for p in punctuation)
pattern = f'([{punctuations}])([{punctuations}])+'
result = re.sub(pattern, r'\1', text)
return result
def g2p(text):
pattern = r"(?<=[{0}])\s*".format("".join(punctuation))
sentences = [i for i in re.split(pattern, text) if i.strip() != ""]
@ -158,6 +178,23 @@ def text_normalize(text):
dest_text = ""
for sentence in sentences:
dest_text += replace_punctuation(sentence)
# 避免重复标点引起的参考泄露
dest_text = replace_consecutive_punctuation(dest_text)
return dest_text
# 不排除英文的文本格式化
def mix_text_normalize(text):
# https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/paddlespeech/t2s/frontend/zh_normalization
tx = TextNormalizer()
sentences = tx.normalize(text)
dest_text = ""
for sentence in sentences:
dest_text += replace_punctuation_with_en(sentence)
# 避免重复标点引起的参考泄露
dest_text = replace_consecutive_punctuation(dest_text)
return dest_text

308
GPT_SoVITS/text/chinese2.py Normal file
View File

@ -0,0 +1,308 @@
import os
import pdb
import re
import cn2an
from pypinyin import lazy_pinyin, Style
from pypinyin.contrib.tone_convert import to_normal, to_finals_tone3, to_initials, to_finals
from text.symbols import punctuation
from text.tone_sandhi import ToneSandhi
from text.zh_normalization.text_normlization import TextNormalizer
normalizer = lambda x: cn2an.transform(x, "an2cn")
current_file_path = os.path.dirname(__file__)
pinyin_to_symbol_map = {
line.split("\t")[0]: line.strip().split("\t")[1]
for line in open(os.path.join(current_file_path, "opencpop-strict.txt")).readlines()
}
import jieba_fast.posseg as psg
# is_g2pw_str = os.environ.get("is_g2pw", "True")##默认开启
# is_g2pw = False#True if is_g2pw_str.lower() == 'true' else False
is_g2pw = True#True if is_g2pw_str.lower() == 'true' else False
if is_g2pw:
print("当前使用g2pw进行拼音推理")
from text.g2pw import G2PWPinyin, correct_pronunciation
parent_directory = os.path.dirname(current_file_path)
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)
rep_map = {
"": ",",
"": ",",
"": ",",
"": ".",
"": "!",
"": "?",
"\n": ".",
"·": ",",
"": ",",
"...": "",
"$": ".",
"/": ",",
"": "-",
"~": "",
"":"",
}
tone_modifier = ToneSandhi()
def replace_punctuation(text):
text = text.replace("", "").replace("", "")
pattern = re.compile("|".join(re.escape(p) for p in rep_map.keys()))
replaced_text = pattern.sub(lambda x: rep_map[x.group()], text)
replaced_text = re.sub(
r"[^\u4e00-\u9fa5" + "".join(punctuation) + r"]+", "", replaced_text
)
return replaced_text
def g2p(text):
pattern = r"(?<=[{0}])\s*".format("".join(punctuation))
sentences = [i for i in re.split(pattern, text) if i.strip() != ""]
phones, word2ph = _g2p(sentences)
return phones, word2ph
def _get_initials_finals(word):
initials = []
finals = []
orig_initials = lazy_pinyin(word, neutral_tone_with_five=True, style=Style.INITIALS)
orig_finals = lazy_pinyin(
word, neutral_tone_with_five=True, style=Style.FINALS_TONE3
)
for c, v in zip(orig_initials, orig_finals):
initials.append(c)
finals.append(v)
return initials, finals
must_erhua = {
"小院儿", "胡同儿", "范儿", "老汉儿", "撒欢儿", "寻老礼儿", "妥妥儿", "媳妇儿"
}
not_erhua = {
"虐儿", "为儿", "护儿", "瞒儿", "救儿", "替儿", "有儿", "一儿", "我儿", "俺儿", "妻儿",
"拐儿", "聋儿", "乞儿", "患儿", "幼儿", "孤儿", "婴儿", "婴幼儿", "连体儿", "脑瘫儿",
"流浪儿", "体弱儿", "混血儿", "蜜雪儿", "舫儿", "祖儿", "美儿", "应采儿", "可儿", "侄儿",
"孙儿", "侄孙儿", "女儿", "男儿", "红孩儿", "花儿", "虫儿", "马儿", "鸟儿", "猪儿", "猫儿",
"狗儿", "少儿"
}
def _merge_erhua(initials: list[str],
finals: list[str],
word: str,
pos: str) -> list[list[str]]:
"""
Do erhub.
"""
# fix er1
for i, phn in enumerate(finals):
if i == len(finals) - 1 and word[i] == "" and phn == 'er1':
finals[i] = 'er2'
# 发音
if word not in must_erhua and (word in not_erhua or
pos in {"a", "j", "nr"}):
return initials, finals
# "……" 等情况直接返回
if len(finals) != len(word):
return initials, finals
assert len(finals) == len(word)
# 与前一个字发同音
new_initials = []
new_finals = []
for i, phn in enumerate(finals):
if i == len(finals) - 1 and word[i] == "" and phn in {
"er2", "er5"
} and word[-2:] not in not_erhua and new_finals:
phn = "er" + new_finals[-1][-1]
new_initials.append(initials[i])
new_finals.append(phn)
return new_initials, new_finals
def _g2p(segments):
phones_list = []
word2ph = []
for seg in segments:
pinyins = []
# Replace all English words in the sentence
seg = re.sub("[a-zA-Z]+", "", seg)
seg_cut = psg.lcut(seg)
seg_cut = tone_modifier.pre_merge_for_modify(seg_cut)
initials = []
finals = []
if not is_g2pw:
for word, pos in seg_cut:
if pos == "eng":
continue
sub_initials, sub_finals = _get_initials_finals(word)
sub_finals = tone_modifier.modified_tone(word, pos, sub_finals)
# 儿化
sub_initials, sub_finals = _merge_erhua(sub_initials, sub_finals, word, pos)
initials.append(sub_initials)
finals.append(sub_finals)
# assert len(sub_initials) == len(sub_finals) == len(word)
initials = sum(initials, [])
finals = sum(finals, [])
print("pypinyin结果",initials,finals)
else:
# g2pw采用整句推理
pinyins = g2pw.lazy_pinyin(seg, neutral_tone_with_five=True, style=Style.TONE3)
pre_word_length = 0
for word, pos in seg_cut:
sub_initials = []
sub_finals = []
now_word_length = pre_word_length + len(word)
if pos == 'eng':
pre_word_length = now_word_length
continue
word_pinyins = pinyins[pre_word_length:now_word_length]
# 多音字消歧
word_pinyins = correct_pronunciation(word,word_pinyins)
for pinyin in word_pinyins:
if pinyin[0].isalpha():
sub_initials.append(to_initials(pinyin))
sub_finals.append(to_finals_tone3(pinyin,neutral_tone_with_five=True))
else:
sub_initials.append(pinyin)
sub_finals.append(pinyin)
pre_word_length = now_word_length
sub_finals = tone_modifier.modified_tone(word, pos, sub_finals)
# 儿化
sub_initials, sub_finals = _merge_erhua(sub_initials, sub_finals, word, pos)
initials.append(sub_initials)
finals.append(sub_finals)
initials = sum(initials, [])
finals = sum(finals, [])
# print("g2pw结果",initials,finals)
for c, v in zip(initials, finals):
raw_pinyin = c + v
# NOTE: post process for pypinyin outputs
# we discriminate i, ii and iii
if c == v:
assert c in punctuation
phone = [c]
word2ph.append(1)
else:
v_without_tone = v[:-1]
tone = v[-1]
pinyin = c + v_without_tone
assert tone in "12345"
if c:
# 多音节
v_rep_map = {
"uei": "ui",
"iou": "iu",
"uen": "un",
}
if v_without_tone in v_rep_map.keys():
pinyin = c + v_rep_map[v_without_tone]
else:
# 单音节
pinyin_rep_map = {
"ing": "ying",
"i": "yi",
"in": "yin",
"u": "wu",
}
if pinyin in pinyin_rep_map.keys():
pinyin = pinyin_rep_map[pinyin]
else:
single_rep_map = {
"v": "yu",
"e": "e",
"i": "y",
"u": "w",
}
if pinyin[0] in single_rep_map.keys():
pinyin = single_rep_map[pinyin[0]] + pinyin[1:]
assert pinyin in pinyin_to_symbol_map.keys(), (pinyin, seg, raw_pinyin)
new_c, new_v = pinyin_to_symbol_map[pinyin].split(" ")
new_v = new_v + tone
phone = [new_c, new_v]
word2ph.append(len(phone))
phones_list += phone
return phones_list, word2ph
def replace_punctuation_with_en(text):
text = text.replace("", "").replace("", "")
pattern = re.compile("|".join(re.escape(p) for p in rep_map.keys()))
replaced_text = pattern.sub(lambda x: rep_map[x.group()], text)
replaced_text = re.sub(
r"[^\u4e00-\u9fa5A-Za-z" + "".join(punctuation) + r"]+", "", replaced_text
)
return replaced_text
def replace_consecutive_punctuation(text):
punctuations = ''.join(re.escape(p) for p in punctuation)
pattern = f'([{punctuations}])([{punctuations}])+'
result = re.sub(pattern, r'\1', text)
return result
def text_normalize(text):
# https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/paddlespeech/t2s/frontend/zh_normalization
tx = TextNormalizer()
sentences = tx.normalize(text)
dest_text = ""
for sentence in sentences:
dest_text += replace_punctuation(sentence)
# 避免重复标点引起的参考泄露
dest_text = replace_consecutive_punctuation(dest_text)
return dest_text
# 不排除英文的文本格式化
def mix_text_normalize(text):
# https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/paddlespeech/t2s/frontend/zh_normalization
tx = TextNormalizer()
sentences = tx.normalize(text)
dest_text = ""
for sentence in sentences:
dest_text += replace_punctuation_with_en(sentence)
# 避免重复标点引起的参考泄露
dest_text = replace_consecutive_punctuation(dest_text)
return dest_text
if __name__ == "__main__":
text = "啊——但是《原神》是由,米哈\游自主,研发的一款全.新开放世界.冒险游戏"
text = "呣呣呣~就是…大人的鼹鼠党吧?"
text = "你好"
text = text_normalize(text)
print(g2p(text))
# # 示例用法
# text = "这是一个示例文本:,你好!这是一个测试..."
# print(g2p_paddle(text)) # 输出: 这是一个示例文本你好这是一个测试

View File

@ -1,6 +1,15 @@
from text import chinese, japanese, cleaned_text_to_sequence, symbols, english
from text import cleaned_text_to_sequence
import os
# if os.environ.get("version","v1")=="v1":
# from text import chinese
# from text.symbols import symbols
# else:
# from text import chinese2 as chinese
# from text.symbols2 import symbols
from text import symbols as symbols_v1
from text import symbols2 as symbols_v2
language_module_map = {"zh": chinese, "ja": japanese, "en": english}
special = [
# ("%", "zh", "SP"),
("", "zh", "SP2"),
@ -9,34 +18,56 @@ special = [
]
def clean_text(text, language):
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", "ja": "japanese", "en": "english"}
else:
symbols = symbols_v2.symbols
language_module_map = {"zh": "chinese2", "ja": "japanese", "en": "english", "ko": "korean","yue":"cantonese"}
if(language not in language_module_map):
language="en"
text=" "
for special_s, special_l, target_symbol in special:
if special_s in text and language == special_l:
return clean_special(text, language, special_s, target_symbol)
language_module = language_module_map[language]
norm_text = language_module.text_normalize(text)
if language == "zh":
return clean_special(text, language, special_s, target_symbol, version)
language_module = __import__("text."+language_module_map[language],fromlist=[language_module_map[language]])
if hasattr(language_module,"text_normalize"):
norm_text = language_module.text_normalize(text)
else:
norm_text=text
if language == "zh" or language=="yue":##########
phones, word2ph = language_module.g2p(norm_text)
assert len(phones) == sum(word2ph)
assert len(norm_text) == len(word2ph)
elif language == "en":
phones = language_module.g2p(norm_text)
if len(phones) < 4:
phones = [','] + phones
word2ph = None
else:
phones = language_module.g2p(norm_text)
word2ph = None
for ph in phones:
assert ph in symbols
phones = ['UNK' if ph not in symbols else ph for ph in phones]
return phones, word2ph, norm_text
def clean_special(text, language, special_s, target_symbol):
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", "ja": "japanese", "en": "english"}
else:
symbols = symbols_v2.symbols
language_module_map = {"zh": "chinese2", "ja": "japanese", "en": "english", "ko": "korean","yue":"cantonese"}
"""
特殊静音段sp符号处理
"""
text = text.replace(special_s, ",")
language_module = language_module_map[language]
language_module = __import__("text."+language_module_map[language],fromlist=[language_module_map[language]])
norm_text = language_module.text_normalize(text)
phones = language_module.g2p(norm_text)
new_ph = []
@ -49,9 +80,11 @@ def clean_special(text, language, special_s, target_symbol):
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__":

View File

@ -1,2 +1,3 @@
CHATGPT CH AE1 T JH IY1 P IY1 T IY1
JSON JH EY1 S AH0 N
CONDA K AA1 N D AH0

View File

@ -4,9 +4,9 @@ import re
import wordsegment
from g2p_en import G2p
from string import punctuation
from text.symbols import punctuation
from text import symbols
from text.symbols2 import symbols
import unicodedata
from builtins import str as unicode
@ -110,6 +110,13 @@ def replace_phs(phs):
return phs_new
def replace_consecutive_punctuation(text):
punctuations = ''.join(re.escape(p) for p in punctuation)
pattern = f'([{punctuations}])([{punctuations}])+'
result = re.sub(pattern, r'\1', text)
return result
def read_dict():
g2p_dict = {}
start_line = 49
@ -234,6 +241,9 @@ def text_normalize(text):
text = re.sub(r"(?i)i\.e\.", "that is", text)
text = re.sub(r"(?i)e\.g\.", "for example", text)
# 避免重复标点引起的参考泄露
text = replace_consecutive_punctuation(text)
return text
@ -314,6 +324,8 @@ class en_G2p(G2p):
# 单读 A 发音修正, 此处不存在大写的情况
if w == "a":
phones.extend(['EY1'])
elif not w.isalpha():
phones.extend([w])
else:
phones.extend(self.cmu[w][0])
return phones

View File

@ -0,0 +1 @@
from text.g2pw.g2pw import *

View File

@ -0,0 +1,166 @@
# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
Credits
This code is modified from https://github.com/GitYCC/g2pW
"""
from typing import Dict
from typing import List
from typing import Tuple
import numpy as np
from .utils import tokenize_and_map
ANCHOR_CHAR = ''
def prepare_onnx_input(tokenizer,
labels: List[str],
char2phonemes: Dict[str, List[int]],
chars: List[str],
texts: List[str],
query_ids: List[int],
use_mask: bool=False,
window_size: int=None,
max_len: int=512) -> Dict[str, np.array]:
if window_size is not None:
truncated_texts, truncated_query_ids = _truncate_texts(
window_size=window_size, texts=texts, query_ids=query_ids)
input_ids = []
token_type_ids = []
attention_masks = []
phoneme_masks = []
char_ids = []
position_ids = []
for idx in range(len(texts)):
text = (truncated_texts if window_size else texts)[idx].lower()
query_id = (truncated_query_ids if window_size else query_ids)[idx]
try:
tokens, text2token, token2text = tokenize_and_map(
tokenizer=tokenizer, text=text)
except Exception:
print(f'warning: text "{text}" is invalid')
return {}
text, query_id, tokens, text2token, token2text = _truncate(
max_len=max_len,
text=text,
query_id=query_id,
tokens=tokens,
text2token=text2token,
token2text=token2text)
processed_tokens = ['[CLS]'] + tokens + ['[SEP]']
input_id = list(
np.array(tokenizer.convert_tokens_to_ids(processed_tokens)))
token_type_id = list(np.zeros((len(processed_tokens), ), dtype=int))
attention_mask = list(np.ones((len(processed_tokens), ), dtype=int))
query_char = text[query_id]
phoneme_mask = [1 if i in char2phonemes[query_char] else 0 for i in range(len(labels))] \
if use_mask else [1] * len(labels)
char_id = chars.index(query_char)
position_id = text2token[
query_id] + 1 # [CLS] token locate at first place
input_ids.append(input_id)
token_type_ids.append(token_type_id)
attention_masks.append(attention_mask)
phoneme_masks.append(phoneme_mask)
char_ids.append(char_id)
position_ids.append(position_id)
outputs = {
'input_ids': np.array(input_ids).astype(np.int64),
'token_type_ids': np.array(token_type_ids).astype(np.int64),
'attention_masks': np.array(attention_masks).astype(np.int64),
'phoneme_masks': np.array(phoneme_masks).astype(np.float32),
'char_ids': np.array(char_ids).astype(np.int64),
'position_ids': np.array(position_ids).astype(np.int64),
}
return outputs
def _truncate_texts(window_size: int, texts: List[str],
query_ids: List[int]) -> Tuple[List[str], List[int]]:
truncated_texts = []
truncated_query_ids = []
for text, query_id in zip(texts, query_ids):
start = max(0, query_id - window_size // 2)
end = min(len(text), query_id + window_size // 2)
truncated_text = text[start:end]
truncated_texts.append(truncated_text)
truncated_query_id = query_id - start
truncated_query_ids.append(truncated_query_id)
return truncated_texts, truncated_query_ids
def _truncate(max_len: int,
text: str,
query_id: int,
tokens: List[str],
text2token: List[int],
token2text: List[Tuple[int]]):
truncate_len = max_len - 2
if len(tokens) <= truncate_len:
return (text, query_id, tokens, text2token, token2text)
token_position = text2token[query_id]
token_start = token_position - truncate_len // 2
token_end = token_start + truncate_len
font_exceed_dist = -token_start
back_exceed_dist = token_end - len(tokens)
if font_exceed_dist > 0:
token_start += font_exceed_dist
token_end += font_exceed_dist
elif back_exceed_dist > 0:
token_start -= back_exceed_dist
token_end -= back_exceed_dist
start = token2text[token_start][0]
end = token2text[token_end - 1][1]
return (text[start:end], query_id - start, tokens[token_start:token_end], [
i - token_start if i is not None else None
for i in text2token[start:end]
], [(s - start, e - start) for s, e in token2text[token_start:token_end]])
def get_phoneme_labels(polyphonic_chars: List[List[str]]
) -> Tuple[List[str], Dict[str, List[int]]]:
labels = sorted(list(set([phoneme for char, phoneme in polyphonic_chars])))
char2phonemes = {}
for char, phoneme in polyphonic_chars:
if char not in char2phonemes:
char2phonemes[char] = []
char2phonemes[char].append(labels.index(phoneme))
return labels, char2phonemes
def get_char_phoneme_labels(polyphonic_chars: List[List[str]]
) -> Tuple[List[str], Dict[str, List[int]]]:
labels = sorted(
list(set([f'{char} {phoneme}' for char, phoneme in polyphonic_chars])))
char2phonemes = {}
for char, phoneme in polyphonic_chars:
if char not in char2phonemes:
char2phonemes[char] = []
char2phonemes[char].append(labels.index(f'{char} {phoneme}'))
return labels, char2phonemes

View File

@ -0,0 +1,154 @@
# This code is modified from https://github.com/mozillazg/pypinyin-g2pW
import pickle
import os
from pypinyin.constants import RE_HANS
from pypinyin.core import Pinyin, Style
from pypinyin.seg.simpleseg import simple_seg
from pypinyin.converter import UltimateConverter
from pypinyin.contrib.tone_convert import to_tone
from .onnx_api import G2PWOnnxConverter
current_file_path = os.path.dirname(__file__)
CACHE_PATH = os.path.join(current_file_path, "polyphonic.pickle")
PP_DICT_PATH = os.path.join(current_file_path, "polyphonic.rep")
PP_FIX_DICT_PATH = os.path.join(current_file_path, "polyphonic-fix.rep")
class G2PWPinyin(Pinyin):
def __init__(self, model_dir='G2PWModel/', model_source=None,
enable_non_tradional_chinese=True,
v_to_u=False, neutral_tone_with_five=False, tone_sandhi=False, **kwargs):
self._g2pw = G2PWOnnxConverter(
model_dir=model_dir,
style='pinyin',
model_source=model_source,
enable_non_tradional_chinese=enable_non_tradional_chinese,
)
self._converter = Converter(
self._g2pw, v_to_u=v_to_u,
neutral_tone_with_five=neutral_tone_with_five,
tone_sandhi=tone_sandhi,
)
def get_seg(self, **kwargs):
return simple_seg
class Converter(UltimateConverter):
def __init__(self, g2pw_instance, v_to_u=False,
neutral_tone_with_five=False,
tone_sandhi=False, **kwargs):
super(Converter, self).__init__(
v_to_u=v_to_u,
neutral_tone_with_five=neutral_tone_with_five,
tone_sandhi=tone_sandhi, **kwargs)
self._g2pw = g2pw_instance
def convert(self, words, style, heteronym, errors, strict, **kwargs):
pys = []
if RE_HANS.match(words):
pys = self._to_pinyin(words, style=style, heteronym=heteronym,
errors=errors, strict=strict)
post_data = self.post_pinyin(words, heteronym, pys)
if post_data is not None:
pys = post_data
pys = self.convert_styles(
pys, words, style, heteronym, errors, strict)
else:
py = self.handle_nopinyin(words, style=style, errors=errors,
heteronym=heteronym, strict=strict)
if py:
pys.extend(py)
return _remove_dup_and_empty(pys)
def _to_pinyin(self, han, style, heteronym, errors, strict, **kwargs):
pinyins = []
g2pw_pinyin = self._g2pw(han)
if not g2pw_pinyin: # g2pw 不支持的汉字改为使用 pypinyin 原有逻辑
return super(Converter, self).convert(
han, Style.TONE, heteronym, errors, strict, **kwargs)
for i, item in enumerate(g2pw_pinyin[0]):
if item is None: # g2pw 不支持的汉字改为使用 pypinyin 原有逻辑
py = super(Converter, self).convert(
han[i], Style.TONE, heteronym, errors, strict, **kwargs)
pinyins.extend(py)
else:
pinyins.append([to_tone(item)])
return pinyins
def _remove_dup_items(lst, remove_empty=False):
new_lst = []
for item in lst:
if remove_empty and not item:
continue
if item not in new_lst:
new_lst.append(item)
return new_lst
def _remove_dup_and_empty(lst_list):
new_lst_list = []
for lst in lst_list:
lst = _remove_dup_items(lst, remove_empty=True)
if lst:
new_lst_list.append(lst)
else:
new_lst_list.append([''])
return new_lst_list
def cache_dict(polyphonic_dict, file_path):
with open(file_path, "wb") as pickle_file:
pickle.dump(polyphonic_dict, pickle_file)
def get_dict():
if os.path.exists(CACHE_PATH):
with open(CACHE_PATH, "rb") as pickle_file:
polyphonic_dict = pickle.load(pickle_file)
else:
polyphonic_dict = read_dict()
cache_dict(polyphonic_dict, CACHE_PATH)
return polyphonic_dict
def read_dict():
polyphonic_dict = {}
with open(PP_DICT_PATH) as f:
line = f.readline()
while line:
key, value_str = line.split(':')
value = eval(value_str.strip())
polyphonic_dict[key.strip()] = value
line = f.readline()
with open(PP_FIX_DICT_PATH) as f:
line = f.readline()
while line:
key, value_str = line.split(':')
value = eval(value_str.strip())
polyphonic_dict[key.strip()] = value
line = f.readline()
return polyphonic_dict
def correct_pronunciation(word,word_pinyins):
if word in pp_dict:
word_pinyins = pp_dict[word]
return word_pinyins
pp_dict = get_dict()

View File

@ -0,0 +1,241 @@
# This code is modified from https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/paddlespeech/t2s/frontend/g2pw
# This code is modified from https://github.com/GitYCC/g2pW
import warnings
warnings.filterwarnings("ignore")
import json
import os
import zipfile,requests
from typing import Any
from typing import Dict
from typing import List
from typing import Tuple
import numpy as np
import onnxruntime
onnxruntime.set_default_logger_severity(3)
from opencc import OpenCC
from transformers import AutoTokenizer
from pypinyin import pinyin
from pypinyin import Style
from .dataset import get_char_phoneme_labels
from .dataset import get_phoneme_labels
from .dataset import prepare_onnx_input
from .utils import load_config
from ..zh_normalization.char_convert import tranditional_to_simplified
model_version = '1.1'
def predict(session, onnx_input: Dict[str, Any],
labels: List[str]) -> Tuple[List[str], List[float]]:
all_preds = []
all_confidences = []
probs = session.run([], {
"input_ids": onnx_input['input_ids'],
"token_type_ids": onnx_input['token_type_ids'],
"attention_mask": onnx_input['attention_masks'],
"phoneme_mask": onnx_input['phoneme_masks'],
"char_ids": onnx_input['char_ids'],
"position_ids": onnx_input['position_ids']
})[0]
preds = np.argmax(probs, axis=1).tolist()
max_probs = []
for index, arr in zip(preds, probs.tolist()):
max_probs.append(arr[index])
all_preds += [labels[pred] for pred in preds]
all_confidences += max_probs
return all_preds, all_confidences
def download_and_decompress(model_dir: str='G2PWModel/'):
if not os.path.exists(model_dir):
parent_directory = os.path.dirname(model_dir)
zip_dir = os.path.join(parent_directory,"G2PWModel_1.1.zip")
extract_dir = os.path.join(parent_directory,"G2PWModel_1.1")
extract_dir_new = os.path.join(parent_directory,"G2PWModel")
print("Downloading g2pw model...")
modelscope_url = "https://paddlespeech.bj.bcebos.com/Parakeet/released_models/g2p/G2PWModel_1.1.zip"
with requests.get(modelscope_url, stream=True) as r:
r.raise_for_status()
with open(zip_dir, 'wb') as f:
for chunk in r.iter_content(chunk_size=8192):
if chunk:
f.write(chunk)
print("Extracting g2pw model...")
with zipfile.ZipFile(zip_dir, "r") as zip_ref:
zip_ref.extractall(parent_directory)
os.rename(extract_dir, extract_dir_new)
return model_dir
class G2PWOnnxConverter:
def __init__(self,
model_dir: str='G2PWModel/',
style: str='bopomofo',
model_source: str=None,
enable_non_tradional_chinese: bool=False):
uncompress_path = download_and_decompress(model_dir)
sess_options = onnxruntime.SessionOptions()
sess_options.graph_optimization_level = onnxruntime.GraphOptimizationLevel.ORT_ENABLE_ALL
sess_options.execution_mode = onnxruntime.ExecutionMode.ORT_SEQUENTIAL
sess_options.intra_op_num_threads = 2
try:
self.session_g2pW = onnxruntime.InferenceSession(os.path.join(uncompress_path, 'g2pW.onnx'),sess_options=sess_options, providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])
except:
self.session_g2pW = onnxruntime.InferenceSession(os.path.join(uncompress_path, 'g2pW.onnx'),sess_options=sess_options, providers=['CPUExecutionProvider'])
self.config = load_config(
config_path=os.path.join(uncompress_path, 'config.py'),
use_default=True)
self.model_source = model_source if model_source else self.config.model_source
self.enable_opencc = enable_non_tradional_chinese
self.tokenizer = AutoTokenizer.from_pretrained(self.model_source)
polyphonic_chars_path = os.path.join(uncompress_path,
'POLYPHONIC_CHARS.txt')
monophonic_chars_path = os.path.join(uncompress_path,
'MONOPHONIC_CHARS.txt')
self.polyphonic_chars = [
line.split('\t')
for line in open(polyphonic_chars_path, encoding='utf-8').read()
.strip().split('\n')
]
self.non_polyphonic = {
'', '', '', '', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', ''
}
self.non_monophonic = {'', ''}
self.monophonic_chars = [
line.split('\t')
for line in open(monophonic_chars_path, encoding='utf-8').read()
.strip().split('\n')
]
self.labels, self.char2phonemes = get_char_phoneme_labels(
polyphonic_chars=self.polyphonic_chars
) if self.config.use_char_phoneme else get_phoneme_labels(
polyphonic_chars=self.polyphonic_chars)
self.chars = sorted(list(self.char2phonemes.keys()))
self.polyphonic_chars_new = set(self.chars)
for char in self.non_polyphonic:
if char in self.polyphonic_chars_new:
self.polyphonic_chars_new.remove(char)
self.monophonic_chars_dict = {
char: phoneme
for char, phoneme in self.monophonic_chars
}
for char in self.non_monophonic:
if char in self.monophonic_chars_dict:
self.monophonic_chars_dict.pop(char)
self.pos_tags = [
'UNK', 'A', 'C', 'D', 'I', 'N', 'P', 'T', 'V', 'DE', 'SHI'
]
with open(
os.path.join(uncompress_path,
'bopomofo_to_pinyin_wo_tune_dict.json'),
'r',
encoding='utf-8') as fr:
self.bopomofo_convert_dict = json.load(fr)
self.style_convert_func = {
'bopomofo': lambda x: x,
'pinyin': self._convert_bopomofo_to_pinyin,
}[style]
with open(
os.path.join(uncompress_path, 'char_bopomofo_dict.json'),
'r',
encoding='utf-8') as fr:
self.char_bopomofo_dict = json.load(fr)
if self.enable_opencc:
self.cc = OpenCC('s2tw')
def _convert_bopomofo_to_pinyin(self, bopomofo: str) -> str:
tone = bopomofo[-1]
assert tone in '12345'
component = self.bopomofo_convert_dict.get(bopomofo[:-1])
if component:
return component + tone
else:
print(f'Warning: "{bopomofo}" cannot convert to pinyin')
return None
def __call__(self, sentences: List[str]) -> List[List[str]]:
if isinstance(sentences, str):
sentences = [sentences]
if self.enable_opencc:
translated_sentences = []
for sent in sentences:
translated_sent = self.cc.convert(sent)
assert len(translated_sent) == len(sent)
translated_sentences.append(translated_sent)
sentences = translated_sentences
texts, query_ids, sent_ids, partial_results = self._prepare_data(
sentences=sentences)
if len(texts) == 0:
# sentences no polyphonic words
return partial_results
onnx_input = prepare_onnx_input(
tokenizer=self.tokenizer,
labels=self.labels,
char2phonemes=self.char2phonemes,
chars=self.chars,
texts=texts,
query_ids=query_ids,
use_mask=self.config.use_mask,
window_size=None)
preds, confidences = predict(
session=self.session_g2pW,
onnx_input=onnx_input,
labels=self.labels)
if self.config.use_char_phoneme:
preds = [pred.split(' ')[1] for pred in preds]
results = partial_results
for sent_id, query_id, pred in zip(sent_ids, query_ids, preds):
results[sent_id][query_id] = self.style_convert_func(pred)
return results
def _prepare_data(
self, sentences: List[str]
) -> Tuple[List[str], List[int], List[int], List[List[str]]]:
texts, query_ids, sent_ids, partial_results = [], [], [], []
for sent_id, sent in enumerate(sentences):
# pypinyin works well for Simplified Chinese than Traditional Chinese
sent_s = tranditional_to_simplified(sent)
pypinyin_result = pinyin(
sent_s, neutral_tone_with_five=True, style=Style.TONE3)
partial_result = [None] * len(sent)
for i, char in enumerate(sent):
if char in self.polyphonic_chars_new:
texts.append(sent)
query_ids.append(i)
sent_ids.append(sent_id)
elif char in self.monophonic_chars_dict:
partial_result[i] = self.style_convert_func(
self.monophonic_chars_dict[char])
elif char in self.char_bopomofo_dict:
partial_result[i] = pypinyin_result[i][0]
# partial_result[i] = self.style_convert_func(self.char_bopomofo_dict[char][0])
else:
partial_result[i] = pypinyin_result[i][0]
partial_results.append(partial_result)
return texts, query_ids, sent_ids, partial_results

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,53 @@
湖泊: ['hu2','po1']
地壳: ['di4','qiao4']
柏树: ['bai3','shu4']
曝光: ['bao4','guang1']
弹力: ['tan2','li4']
字帖: ['zi4','tie4']
口吃: ['kou3','chi1']
包扎: ['bao1','za1']
哪吒: ['ne2','zha1']
说服: ['shuo1','fu2']
识字: ['shi2','zi4']
骨头: ['gu3','tou5']
对称: ['dui4','chen4']
口供: ['kou3','gong4']
抹布: ['ma1','bu4']
露背: ['lu4','bei4']
圈养: ['juan4', 'yang3']
眼眶: ['yan3', 'kuang4']
品行: ['pin3','xing2']
颤抖: ['chan4','dou3']
差不多: ['cha4','bu5','duo1']
鸭绿江: ['ya1','lu4','jiang1']
撒切尔: ['sa4','qie4','er3']
比比皆是: ['bi3','bi3','jie1','shi4']
身无长物: ['shen1','wu2','chang2','wu4']
手里: ['shou2','li3']
关卡: ['guan1','qia3']
怀揣: ['huai2','chuai1']
挑剔: ['tiao1','ti4']
供称: ['gong4','cheng1']
作坊: ['zuo1', 'fang5']
中医: ['zhong1','yi1']
嚷嚷: ['rang1','rang5']
商厦: ['shang1','sha4']
大厦: ['da4','sha4']
刹车: ['sha1','che1']
嘚瑟: ['de4','se5']
朝鲜: ['chao2','xian3']
阿房宫: ['e1','pang2','gong1']
阿胶: ['e1','jiao1']
咖喱: ['ga1','li5']
时分: ['shi2','fen1']
蚌埠: ['beng4','bu4']
驯服: ['xun4','fu2']
幸免于难: ['xing4','mian3','yu2','nan4']
恶行: ['e4','xing2']
唉: ['ai4']
扎实: ['zha1','shi2']
干将: ['gan4','jiang4']
陈威行: ['chen2', 'wei1', 'hang2']
郭晟: ['guo1', 'sheng4']
中标: ['zhong4', 'biao1']
抗住: ['kang2', 'zhu4']

View File

@ -0,0 +1,145 @@
# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
Credits
This code is modified from https://github.com/GitYCC/g2pW
"""
import os
import re
def wordize_and_map(text: str):
words = []
index_map_from_text_to_word = []
index_map_from_word_to_text = []
while len(text) > 0:
match_space = re.match(r'^ +', text)
if match_space:
space_str = match_space.group(0)
index_map_from_text_to_word += [None] * len(space_str)
text = text[len(space_str):]
continue
match_en = re.match(r'^[a-zA-Z0-9]+', text)
if match_en:
en_word = match_en.group(0)
word_start_pos = len(index_map_from_text_to_word)
word_end_pos = word_start_pos + len(en_word)
index_map_from_word_to_text.append((word_start_pos, word_end_pos))
index_map_from_text_to_word += [len(words)] * len(en_word)
words.append(en_word)
text = text[len(en_word):]
else:
word_start_pos = len(index_map_from_text_to_word)
word_end_pos = word_start_pos + 1
index_map_from_word_to_text.append((word_start_pos, word_end_pos))
index_map_from_text_to_word += [len(words)]
words.append(text[0])
text = text[1:]
return words, index_map_from_text_to_word, index_map_from_word_to_text
def tokenize_and_map(tokenizer, text: str):
words, text2word, word2text = wordize_and_map(text=text)
tokens = []
index_map_from_token_to_text = []
for word, (word_start, word_end) in zip(words, word2text):
word_tokens = tokenizer.tokenize(word)
if len(word_tokens) == 0 or word_tokens == ['[UNK]']:
index_map_from_token_to_text.append((word_start, word_end))
tokens.append('[UNK]')
else:
current_word_start = word_start
for word_token in word_tokens:
word_token_len = len(re.sub(r'^##', '', word_token))
index_map_from_token_to_text.append(
(current_word_start, current_word_start + word_token_len))
current_word_start = current_word_start + word_token_len
tokens.append(word_token)
index_map_from_text_to_token = text2word
for i, (token_start, token_end) in enumerate(index_map_from_token_to_text):
for token_pos in range(token_start, token_end):
index_map_from_text_to_token[token_pos] = i
return tokens, index_map_from_text_to_token, index_map_from_token_to_text
def _load_config(config_path: os.PathLike):
import importlib.util
spec = importlib.util.spec_from_file_location('__init__', config_path)
config = importlib.util.module_from_spec(spec)
spec.loader.exec_module(config)
return config
default_config_dict = {
'manual_seed': 1313,
'model_source': 'bert-base-chinese',
'window_size': 32,
'num_workers': 2,
'use_mask': True,
'use_char_phoneme': False,
'use_conditional': True,
'param_conditional': {
'affect_location': 'softmax',
'bias': True,
'char-linear': True,
'pos-linear': False,
'char+pos-second': True,
'char+pos-second_lowrank': False,
'lowrank_size': 0,
'char+pos-second_fm': False,
'fm_size': 0,
'fix_mode': None,
'count_json': 'train.count.json'
},
'lr': 5e-5,
'val_interval': 200,
'num_iter': 10000,
'use_focal': False,
'param_focal': {
'alpha': 0.0,
'gamma': 0.7
},
'use_pos': True,
'param_pos ': {
'weight': 0.1,
'pos_joint_training': True,
'train_pos_path': 'train.pos',
'valid_pos_path': 'dev.pos',
'test_pos_path': 'test.pos'
}
}
def load_config(config_path: os.PathLike, use_default: bool=False):
config = _load_config(config_path)
if use_default:
for attr, val in default_config_dict.items():
if not hasattr(config, attr):
setattr(config, attr, val)
elif isinstance(val, dict):
d = getattr(config, attr)
for dict_k, dict_v in val.items():
if dict_k not in d:
d[dict_k] = dict_v
return config

View File

@ -0,0 +1 @@
主殿,*,*,-32767,名詞,固有名詞,一般,*,*,*,アルジドノ,アルジドノ,アルジドノ,3/5,*
1 主殿 * * -32767 名詞 固有名詞 一般 * * * アルジドノ アルジドノ アルジドノ 3/5 *

View File

@ -1,11 +1,32 @@
# modified from https://github.com/CjangCjengh/vits/blob/main/text/japanese.py
import re
import sys
import pyopenjtalk
import os
import hashlib
current_file_path = os.path.dirname(__file__)
def get_hash(fp: str) -> str:
hash_md5 = hashlib.md5()
with open(fp, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
hash_md5.update(chunk)
return hash_md5.hexdigest()
USERDIC_CSV_PATH = os.path.join(current_file_path, "ja_userdic", "userdict.csv")
USERDIC_BIN_PATH = os.path.join(current_file_path, "ja_userdic", "user.dict")
USERDIC_HASH_PATH = os.path.join(current_file_path, "ja_userdic", "userdict.md5")
# 如果没有用户词典就生成一个如果有就检查md5如果不一样就重新生成
if os.path.exists(USERDIC_CSV_PATH):
if not os.path.exists(USERDIC_BIN_PATH) or get_hash(USERDIC_CSV_PATH) != open(USERDIC_HASH_PATH, "r",encoding='utf-8').read():
pyopenjtalk.mecab_dict_index(USERDIC_CSV_PATH, USERDIC_BIN_PATH)
with open(USERDIC_HASH_PATH, "w", encoding='utf-8') as f:
f.write(get_hash(USERDIC_CSV_PATH))
if os.path.exists(USERDIC_BIN_PATH):
pyopenjtalk.update_global_jtalk_with_user_dict(USERDIC_BIN_PATH)
from text import symbols
from text.symbols import punctuation
# Regular expression matching Japanese without punctuation marks:
_japanese_characters = re.compile(
r"[A-Za-z\d\u3005\u3040-\u30ff\u4e00-\u9fff\uff11-\uff19\uff21-\uff3a\uff41-\uff5a\uff66-\uff9d]"
@ -56,15 +77,23 @@ def post_replace_ph(ph):
"": ",",
"...": "",
}
if ph in rep_map.keys():
ph = rep_map[ph]
if ph in symbols:
return ph
if ph not in symbols:
ph = "UNK"
# if ph in symbols:
# return ph
# if ph not in symbols:
# ph = "UNK"
return ph
def replace_consecutive_punctuation(text):
punctuations = ''.join(re.escape(p) for p in punctuation)
pattern = f'([{punctuations}])([{punctuations}])+'
result = re.sub(pattern, r'\1', text)
return result
def symbols_to_japanese(text):
for regex, replacement in _symbols_to_japanese:
text = re.sub(regex, replacement, text)
@ -94,6 +123,9 @@ def preprocess_jap(text, with_prosody=False):
def text_normalize(text):
# todo: jap text normalize
# 避免重复标点引起的参考泄露
text = replace_consecutive_punctuation(text)
return text
# Copied from espnet https://github.com/espnet/espnet/blob/master/espnet2/text/phoneme_tokenizer.py
@ -179,7 +211,7 @@ def _numeric_feature_by_regex(regex, s):
return -50
return int(match.group(1))
def g2p(norm_text, with_prosody=False):
def g2p(norm_text, with_prosody=True):
phones = preprocess_jap(norm_text, with_prosody)
phones = [post_replace_ph(i) for i in phones]
# todo: implement tones and word2ph

265
GPT_SoVITS/text/korean.py Normal file
View File

@ -0,0 +1,265 @@
# reference: https://github.com/ORI-Muchim/MB-iSTFT-VITS-Korean/blob/main/text/korean.py
import re
from jamo import h2j, j2hcj
import ko_pron
from g2pk2 import G2p
from text.symbols2 import symbols
# This is a list of Korean classifiers preceded by pure Korean numerals.
_korean_classifiers = '군데 권 개 그루 닢 대 두 마리 모 모금 뭇 발 발짝 방 번 벌 보루 살 수 술 시 쌈 움큼 정 짝 채 척 첩 축 켤레 톨 통'
# List of (hangul, hangul divided) pairs:
_hangul_divided = [(re.compile('%s' % x[0]), x[1]) for x in [
# ('ㄳ', 'ㄱㅅ'), # g2pk2, A Syllable-ending Rule
# ('ㄵ', 'ㄴㅈ'),
# ('ㄶ', 'ㄴㅎ'),
# ('ㄺ', 'ㄹㄱ'),
# ('ㄻ', 'ㄹㅁ'),
# ('ㄼ', 'ㄹㅂ'),
# ('ㄽ', 'ㄹㅅ'),
# ('ㄾ', 'ㄹㅌ'),
# ('ㄿ', 'ㄹㅍ'),
# ('ㅀ', 'ㄹㅎ'),
# ('ㅄ', 'ㅂㅅ'),
('', 'ㅗㅏ'),
('', 'ㅗㅐ'),
('', 'ㅗㅣ'),
('', 'ㅜㅓ'),
('', 'ㅜㅔ'),
('', 'ㅜㅣ'),
('', 'ㅡㅣ'),
('', 'ㅣㅏ'),
('', 'ㅣㅐ'),
('', 'ㅣㅓ'),
('', 'ㅣㅔ'),
('', 'ㅣㅗ'),
('', 'ㅣㅜ')
]]
# List of (Latin alphabet, hangul) pairs:
_latin_to_hangul = [(re.compile('%s' % x[0], re.IGNORECASE), x[1]) for x in [
('a', '에이'),
('b', ''),
('c', ''),
('d', ''),
('e', ''),
('f', '에프'),
('g', ''),
('h', '에이치'),
('i', '아이'),
('j', '제이'),
('k', '케이'),
('l', ''),
('m', ''),
('n', ''),
('o', ''),
('p', ''),
('q', ''),
('r', '아르'),
('s', '에스'),
('t', ''),
('u', ''),
('v', '브이'),
('w', '더블유'),
('x', '엑스'),
('y', '와이'),
('z', '제트')
]]
# List of (ipa, lazy ipa) pairs:
_ipa_to_lazy_ipa = [(re.compile('%s' % x[0], re.IGNORECASE), x[1]) for x in [
('t͡ɕ','ʧ'),
('d͡ʑ','ʥ'),
('ɲ','n^'),
('ɕ','ʃ'),
('ʷ','w'),
('ɭ','l`'),
('ʎ','ɾ'),
('ɣ','ŋ'),
('ɰ','ɯ'),
('ʝ','j'),
('ʌ','ə'),
('ɡ','g'),
('\u031a','#'),
('\u0348','='),
('\u031e',''),
('\u0320',''),
('\u0339','')
]]
def fix_g2pk2_error(text):
new_text = ""
i = 0
while i < len(text) - 4:
if (text[i:i+3] == 'ㅇㅡㄹ' or text[i:i+3] == 'ㄹㅡㄹ') and text[i+3] == ' ' and text[i+4] == '':
new_text += text[i:i+3] + ' ' + ''
i += 5
else:
new_text += text[i]
i += 1
new_text += text[i:]
return new_text
def latin_to_hangul(text):
for regex, replacement in _latin_to_hangul:
text = re.sub(regex, replacement, text)
return text
def divide_hangul(text):
text = j2hcj(h2j(text))
for regex, replacement in _hangul_divided:
text = re.sub(regex, replacement, text)
return text
def hangul_number(num, sino=True):
'''Reference https://github.com/Kyubyong/g2pK'''
num = re.sub(',', '', num)
if num == '0':
return ''
if not sino and num == '20':
return '스무'
digits = '123456789'
names = '일이삼사오육칠팔구'
digit2name = {d: n for d, n in zip(digits, names)}
modifiers = '한 두 세 네 다섯 여섯 일곱 여덟 아홉'
decimals = '열 스물 서른 마흔 쉰 예순 일흔 여든 아흔'
digit2mod = {d: mod for d, mod in zip(digits, modifiers.split())}
digit2dec = {d: dec for d, dec in zip(digits, decimals.split())}
spelledout = []
for i, digit in enumerate(num):
i = len(num) - i - 1
if sino:
if i == 0:
name = digit2name.get(digit, '')
elif i == 1:
name = digit2name.get(digit, '') + ''
name = name.replace('일십', '')
else:
if i == 0:
name = digit2mod.get(digit, '')
elif i == 1:
name = digit2dec.get(digit, '')
if digit == '0':
if i % 4 == 0:
last_three = spelledout[-min(3, len(spelledout)):]
if ''.join(last_three) == '':
spelledout.append('')
continue
else:
spelledout.append('')
continue
if i == 2:
name = digit2name.get(digit, '') + ''
name = name.replace('일백', '')
elif i == 3:
name = digit2name.get(digit, '') + ''
name = name.replace('일천', '')
elif i == 4:
name = digit2name.get(digit, '') + ''
name = name.replace('일만', '')
elif i == 5:
name = digit2name.get(digit, '') + ''
name = name.replace('일십', '')
elif i == 6:
name = digit2name.get(digit, '') + ''
name = name.replace('일백', '')
elif i == 7:
name = digit2name.get(digit, '') + ''
name = name.replace('일천', '')
elif i == 8:
name = digit2name.get(digit, '') + ''
elif i == 9:
name = digit2name.get(digit, '') + ''
elif i == 10:
name = digit2name.get(digit, '') + ''
elif i == 11:
name = digit2name.get(digit, '') + ''
elif i == 12:
name = digit2name.get(digit, '') + ''
elif i == 13:
name = digit2name.get(digit, '') + ''
elif i == 14:
name = digit2name.get(digit, '') + ''
elif i == 15:
name = digit2name.get(digit, '') + ''
spelledout.append(name)
return ''.join(elem for elem in spelledout)
def number_to_hangul(text):
'''Reference https://github.com/Kyubyong/g2pK'''
tokens = set(re.findall(r'(\d[\d,]*)([\uac00-\ud71f]+)', text))
for token in tokens:
num, classifier = token
if classifier[:2] in _korean_classifiers or classifier[0] in _korean_classifiers:
spelledout = hangul_number(num, sino=False)
else:
spelledout = hangul_number(num, sino=True)
text = text.replace(f'{num}{classifier}', f'{spelledout}{classifier}')
# digit by digit for remaining digits
digits = '0123456789'
names = '영일이삼사오육칠팔구'
for d, n in zip(digits, names):
text = text.replace(d, n)
return text
def korean_to_lazy_ipa(text):
text = latin_to_hangul(text)
text = number_to_hangul(text)
text=re.sub('[\uac00-\ud7af]+',lambda x:ko_pron.romanise(x.group(0),'ipa').split('] ~ [')[0],text)
for regex, replacement in _ipa_to_lazy_ipa:
text = re.sub(regex, replacement, text)
return text
_g2p=G2p()
def korean_to_ipa(text):
text = latin_to_hangul(text)
text = number_to_hangul(text)
text = _g2p(text)
text = fix_g2pk2_error(text)
text = korean_to_lazy_ipa(text)
return text.replace('ʧ','').replace('ʥ','')
def post_replace_ph(ph):
rep_map = {
"": ",",
"": ",",
"": ",",
"": ".",
"": "!",
"": "?",
"\n": ".",
"·": ",",
"": ",",
"...": "",
" ": "",
}
if ph in rep_map.keys():
ph = rep_map[ph]
if ph in symbols:
return ph
if ph not in symbols:
ph = ""
return ph
def g2p(text):
text = latin_to_hangul(text)
text = _g2p(text)
text = divide_hangul(text)
text = fix_g2pk2_error(text)
text = re.sub(r'([\u3131-\u3163])$', r'\1.', text)
# text = "".join([post_replace_ph(i) for i in text])
text = [post_replace_ph(i) for i in text]
return text

419
GPT_SoVITS/text/symbols2.py Normal file
View File

@ -0,0 +1,419 @@
import os
# punctuation = ['!', '?', '…', ",", ".","@"]#@是SP停顿
punctuation = ["!", "?", "", ",", "."] # @是SP停顿
punctuation.append("-")
pu_symbols = punctuation + ["SP", "SP2", "SP3", "UNK"]
# pu_symbols = punctuation + ["SP", 'SP2', 'SP3','SP4', "UNK"]
pad = "_"
c = [
"AA",
"EE",
"OO",
"b",
"c",
"ch",
"d",
"f",
"g",
"h",
"j",
"k",
"l",
"m",
"n",
"p",
"q",
"r",
"s",
"sh",
"t",
"w",
"x",
"y",
"z",
"zh",
]
v = [
"E1",
"En1",
"a1",
"ai1",
"an1",
"ang1",
"ao1",
"e1",
"ei1",
"en1",
"eng1",
"er1",
"i1",
"i01",
"ia1",
"ian1",
"iang1",
"iao1",
"ie1",
"in1",
"ing1",
"iong1",
"ir1",
"iu1",
"o1",
"ong1",
"ou1",
"u1",
"ua1",
"uai1",
"uan1",
"uang1",
"ui1",
"un1",
"uo1",
"v1",
"van1",
"ve1",
"vn1",
"E2",
"En2",
"a2",
"ai2",
"an2",
"ang2",
"ao2",
"e2",
"ei2",
"en2",
"eng2",
"er2",
"i2",
"i02",
"ia2",
"ian2",
"iang2",
"iao2",
"ie2",
"in2",
"ing2",
"iong2",
"ir2",
"iu2",
"o2",
"ong2",
"ou2",
"u2",
"ua2",
"uai2",
"uan2",
"uang2",
"ui2",
"un2",
"uo2",
"v2",
"van2",
"ve2",
"vn2",
"E3",
"En3",
"a3",
"ai3",
"an3",
"ang3",
"ao3",
"e3",
"ei3",
"en3",
"eng3",
"er3",
"i3",
"i03",
"ia3",
"ian3",
"iang3",
"iao3",
"ie3",
"in3",
"ing3",
"iong3",
"ir3",
"iu3",
"o3",
"ong3",
"ou3",
"u3",
"ua3",
"uai3",
"uan3",
"uang3",
"ui3",
"un3",
"uo3",
"v3",
"van3",
"ve3",
"vn3",
"E4",
"En4",
"a4",
"ai4",
"an4",
"ang4",
"ao4",
"e4",
"ei4",
"en4",
"eng4",
"er4",
"i4",
"i04",
"ia4",
"ian4",
"iang4",
"iao4",
"ie4",
"in4",
"ing4",
"iong4",
"ir4",
"iu4",
"o4",
"ong4",
"ou4",
"u4",
"ua4",
"uai4",
"uan4",
"uang4",
"ui4",
"un4",
"uo4",
"v4",
"van4",
"ve4",
"vn4",
"E5",
"En5",
"a5",
"ai5",
"an5",
"ang5",
"ao5",
"e5",
"ei5",
"en5",
"eng5",
"er5",
"i5",
"i05",
"ia5",
"ian5",
"iang5",
"iao5",
"ie5",
"in5",
"ing5",
"iong5",
"ir5",
"iu5",
"o5",
"ong5",
"ou5",
"u5",
"ua5",
"uai5",
"uan5",
"uang5",
"ui5",
"un5",
"uo5",
"v5",
"van5",
"ve5",
"vn5",
]
v_without_tone = [
"E",
"En",
"a",
"ai",
"an",
"ang",
"ao",
"e",
"ei",
"en",
"eng",
"er",
"i",
"i0",
"ia",
"ian",
"iang",
"iao",
"ie",
"in",
"ing",
"iong",
"ir",
"iu",
"o",
"ong",
"ou",
"u",
"ua",
"uai",
"uan",
"uang",
"ui",
"un",
"uo",
"v",
"van",
"ve",
"vn",
]
# japanese
ja_symbols = [
"I",
"N",
"U",
"a",
"b",
"by",
"ch",
"cl",
"d",
"dy",
"e",
"f",
"g",
"gy",
"h",
"hy",
"i",
"j",
"k",
"ky",
"m",
"my",
"n",
"ny",
"o",
"p",
"py",
"r",
"ry",
"s",
"sh",
"t",
"ts",
"u",
"v",
"w",
"y",
"z",
###楼下2个留到后面加
# "[", #上升调型
# "]", #下降调型
# "$", #结束符
# "^", #开始符
]
arpa = {
"AH0",
"S",
"AH1",
"EY2",
"AE2",
"EH0",
"OW2",
"UH0",
"NG",
"B",
"G",
"AY0",
"M",
"AA0",
"F",
"AO0",
"ER2",
"UH1",
"IY1",
"AH2",
"DH",
"IY0",
"EY1",
"IH0",
"K",
"N",
"W",
"IY2",
"T",
"AA1",
"ER1",
"EH2",
"OY0",
"UH2",
"UW1",
"Z",
"AW2",
"AW1",
"V",
"UW2",
"AA2",
"ER",
"AW0",
"UW0",
"R",
"OW1",
"EH1",
"ZH",
"AE0",
"IH2",
"IH",
"Y",
"JH",
"P",
"AY1",
"EY0",
"OY2",
"TH",
"HH",
"D",
"ER0",
"CH",
"AO1",
"AE1",
"AO2",
"OY1",
"AY2",
"IH1",
"OW0",
"L",
"SH",
}
ko_symbols='ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎㄲㄸㅃㅆㅉㅏㅓㅗㅜㅡㅣㅐㅔ空停'
# ko_symbols='ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎㄲㄸㅃㅆㅉㅏㅓㅗㅜㅡㅣㅐㅔ '
yue_symbols={'Yeot3', 'Yip1', 'Yyu3', 'Yeng4', 'Yut5', 'Yaan5', 'Ym5', 'Yaan6', 'Yang1', 'Yun4', 'Yon2', 'Yui5', 'Yun2', 'Yat3', 'Ye', 'Yeot1', 'Yoeng5', 'Yoek2', 'Yam2', 'Yeon6', 'Yu6', 'Yiu3', 'Yaang6', 'Yp5', 'Yai4', 'Yoek4', 'Yit6', 'Yam5', 'Yoeng6', 'Yg1', 'Yk3', 'Yoe4', 'Yam3', 'Yc', 'Yyu4', 'Yyut1', 'Yiu4', 'Ying3', 'Yip3', 'Yaap3', 'Yau3', 'Yan4', 'Yau1', 'Yap4', 'Yk6', 'Yok3', 'Yai1', 'Yeot6', 'Yan2', 'Yoek6', 'Yt1', 'Yoi1', 'Yit5', 'Yn4', 'Yaau3', 'Yau4', 'Yuk6', 'Ys', 'Yuk', 'Yin6', 'Yung6', 'Ya', 'You', 'Yaai5', 'Yau5', 'Yoi3', 'Yaak3', 'Yaat3', 'Ying2', 'Yok5', 'Yeng2', 'Yyut3', 'Yam1', 'Yip5', 'You1', 'Yam6', 'Yaa5', 'Yi6', 'Yek4', 'Yyu2', 'Yuk5', 'Yaam1', 'Yang2', 'Yai', 'Yiu6', 'Yin4', 'Yok4', 'Yot3', 'Yui2', 'Yeoi5', 'Yyun6', 'Yyu5', 'Yoi5', 'Yeot2', 'Yim4', 'Yeoi2', 'Yaan1', 'Yang6', 'Yong1', 'Yaang4', 'Yung5', 'Yeon1', 'Yin2', 'Ya3', 'Yaang3', 'Yg', 'Yk2', 'Yaau5', 'Yut1', 'Yt5', 'Yip4', 'Yung4', 'Yj', 'Yong3', 'Ya1', 'Yg6', 'Yaau6', 'Yit3', 'Yun3', 'Ying1', 'Yn2', 'Yg4', 'Yl', 'Yp3', 'Yn3', 'Yak1', 'Yang5', 'Yoe6', 'You2', 'Yap2', 'Yak2', 'Yt3', 'Yot5', 'Yim2', 'Yi1', 'Yn6', 'Yaat5', 'Yaam3', 'Yoek5', 'Ye3', 'Yeon4', 'Yaa2', 'Yu3', 'Yim6', 'Ym', 'Yoe3', 'Yaai2', 'Ym2', 'Ya6', 'Yeng6', 'Yik4', 'Yot4', 'Yaai4', 'Yyun3', 'Yu1', 'Yoeng1', 'Yaap2', 'Yuk3', 'Yoek3', 'Yeng5', 'Yeoi1', 'Yiu2', 'Yok1', 'Yo1', 'Yoek1', 'Yoeng2', 'Yeon5', 'Yiu1', 'Yoeng4', 'Yuk2', 'Yat4', 'Yg5', 'Yut4', 'Yan6', 'Yin3', 'Yaa6', 'Yap1', 'Yg2', 'Yoe5', 'Yt4', 'Ya5', 'Yo4', 'Yyu1', 'Yak3', 'Yeon2', 'Yong4', 'Ym1', 'Ye2', 'Yaang5', 'Yoi2', 'Yeng3', 'Yn', 'Yyut4', 'Yau', 'Yaak2', 'Yaan4', 'Yek2', 'Yin1', 'Yi5', 'Yoe2', 'Yei5', 'Yaat6', 'Yak5', 'Yp6', 'Yok6', 'Yei2', 'Yaap1', 'Yyut5', 'Yi4', 'Yim1', 'Yk5', 'Ye4', 'Yok2', 'Yaam6', 'Yat2', 'Yon6', 'Yei3', 'Yyu6', 'Yeot5', 'Yk4', 'Yai6', 'Yd', 'Yg3', 'Yei6', 'Yau2', 'Yok', 'Yau6', 'Yung3', 'Yim5', 'Yut6', 'Yit1', 'Yon3', 'Yat1', 'Yaam2', 'Yyut2', 'Yui6', 'Yt2', 'Yek6', 'Yt', 'Ye6', 'Yang3', 'Ying6', 'Yaau1', 'Yeon3', 'Yng', 'Yh', 'Yang4', 'Ying5', 'Yaap6', 'Yoeng3', 'Yyun4', 'You3', 'Yan5', 'Yat5', 'Yot1', 'Yun1', 'Yi3', 'Yaa1', 'Yaap4', 'You6', 'Yaang2', 'Yaap5', 'Yaa3', 'Yaak6', 'Yeng1', 'Yaak1', 'Yo5', 'Yoi4', 'Yam4', 'Yik1', 'Ye1', 'Yai5', 'Yung1', 'Yp2', 'Yui4', 'Yaak4', 'Yung2', 'Yak4', 'Yaat4', 'Yeoi4', 'Yut2', 'Yin5', 'Yaau4', 'Yap6', 'Yb', 'Yaam4', 'Yw', 'Yut3', 'Yong2', 'Yt6', 'Yaai6', 'Yap5', 'Yik5', 'Yun6', 'Yaam5', 'Yun5', 'Yik3', 'Ya2', 'Yyut6', 'Yon4', 'Yk1', 'Yit4', 'Yak6', 'Yaan2', 'Yuk1', 'Yai2', 'Yik2', 'Yaat2', 'Yo3', 'Ykw', 'Yn5', 'Yaa', 'Ye5', 'Yu4', 'Yei1', 'Yai3', 'Yyun5', 'Yip2', 'Yaau2', 'Yiu5', 'Ym4', 'Yeoi6', 'Yk', 'Ym6', 'Yoe1', 'Yeoi3', 'Yon', 'Yuk4', 'Yaai3', 'Yaa4', 'Yot6', 'Yaang1', 'Yei4', 'Yek1', 'Yo', 'Yp', 'Yo6', 'Yp4', 'Yan3', 'Yoi', 'Yap3', 'Yek3', 'Yim3', 'Yz', 'Yot2', 'Yoi6', 'Yit2', 'Yu5', 'Yaan3', 'Yan1', 'Yon5', 'Yp1', 'Yong5', 'Ygw', 'Yak', 'Yat6', 'Ying4', 'Yu2', 'Yf', 'Ya4', 'Yon1', 'You4', 'Yik6', 'Yui1', 'Yaat1', 'Yeot4', 'Yi2', 'Yaai1', 'Yek5', 'Ym3', 'Yong6', 'You5', 'Yyun1', 'Yn1', 'Yo2', 'Yip6', 'Yui3', 'Yaak5', 'Yyun2'}
# symbols = [pad] + c + v + ja_symbols + pu_symbols + list(arpa)+list(ko_symbols)#+list(yue_symbols)###直接这么加yue顺序乱了
symbols = [pad] + c + v + ja_symbols + pu_symbols + list(arpa)
symbols = sorted(set(symbols))
# print(len(symbols))
symbols+=["[","]"]##日文新增上升下降调型
symbols+=sorted(list(ko_symbols))
symbols+=sorted(list(yue_symbols))##新加的yue统一摆在后头#已查过开头加Y后没有重复韩文显然不会重复
# print(len(symbols))
if __name__ == "__main__":
print(len(symbols))
'''
粤语
732-353=379
韩文+粤语
732-322=410
'''

View File

@ -681,6 +681,7 @@ class ToneSandhi:
and seg[i - 1][0] == ""
and seg[i - 2][0] == word
and pos == "v"
and seg[i - 2][1] == "v"
):
continue
else:

View File

@ -28,7 +28,7 @@ UNITS = OrderedDict({
8: '亿',
})
COM_QUANTIFIERS = '(封|艘|把|目|套|段|人|所|朵|匹|张|座|回|场|尾|条|个|首|阙|阵|网|炮|顶|丘|棵|只|支|袭|辆|挑|担|颗|壳|窠|曲|墙|群|腔|砣|座|客|贯|扎|捆|刀|令|打|手|罗|坡|山|岭|江|溪|钟|队|单|双|对|出|口|头|脚|板|跳|枝|件|贴|针|线|管|名|位|身|堂|课|本|页|家|户|层|丝|毫|厘|分|钱|两|斤|担|铢|石|钧|锱|忽|(千|毫|微)克|毫|厘|(公)分|分|寸|尺|丈|里|寻|常|铺|程|(千|分|厘|毫|微)米|米|撮|勺|合|升|斗|石|盘|碗|碟|叠|桶|笼|盆|盒|杯|钟|斛|锅|簋|篮|盘|桶|罐|瓶|壶|卮|盏|箩|箱|煲|啖|袋|钵|年|月|日|季|刻|时|周|天|秒|分|小时|旬|纪|岁|世|更|夜|春|夏|秋|冬|代|伏|辈|丸|泡|粒|颗|幢|堆|条|根|支|道|面|片|张|颗|块|元|(亿|千万|百万|万|千|百)|(亿|千万|百万|万|千|百|美|)元|(亿|千万|百万|万|千|百|十|)吨|(亿|千万|百万|万|千|百|)块|角|毛|分)'
COM_QUANTIFIERS = '(处|台|架|枚|趟|幅|平|方|堵|间|床|株|批|项|例|列|篇|栋|注|亩|封|艘|把|目|套|段|人|所|朵|匹|张|座|回|场|尾|条|个|首|阙|阵|网|炮|顶|丘|棵|只|支|袭|辆|挑|担|颗|壳|窠|曲|墙|群|腔|砣|座|客|贯|扎|捆|刀|令|打|手|罗|坡|山|岭|江|溪|钟|队|单|双|对|出|口|头|脚|板|跳|枝|件|贴|针|线|管|名|位|身|堂|课|本|页|家|户|层|丝|毫|厘|分|钱|两|斤|担|铢|石|钧|锱|忽|(千|毫|微)克|毫|厘|(公)分|分|寸|尺|丈|里|寻|常|铺|程|(千|分|厘|毫|微)米|米|撮|勺|合|升|斗|石|盘|碗|碟|叠|桶|笼|盆|盒|杯|钟|斛|锅|簋|篮|盘|桶|罐|瓶|壶|卮|盏|箩|箱|煲|啖|袋|钵|年|月|日|季|刻|时|周|天|秒|分|小时|旬|纪|岁|世|更|夜|春|夏|秋|冬|代|伏|辈|丸|泡|粒|颗|幢|堆|条|根|支|道|面|片|张|颗|块|元|(亿|千万|百万|万|千|百)|(亿|千万|百万|万|千|百|美|)元|(亿|千万|百万|万|千|百|十|)吨|(亿|千万|百万|万|千|百|)块|角|毛|分)'
# 分数表达式
RE_FRAC = re.compile(r'(-?)(\d+)/(\d+)')
@ -107,8 +107,11 @@ def replace_default_num(match):
# 加减乘除
# RE_ASMD = re.compile(
# r'((-?)((\d+)(\.\d+)?)|(\.(\d+)))([\+\-\×÷=])((-?)((\d+)(\.\d+)?)|(\.(\d+)))')
RE_ASMD = re.compile(
r'((-?)((\d+)(\.\d+)?)|(\.(\d+)))([\+\-\×÷=])((-?)((\d+)(\.\d+)?)|(\.(\d+)))')
r'((-?)((\d+)(\.\d+)?[⁰¹²³⁴⁵⁶⁷⁸⁹ˣʸⁿ]*)|(\.\d+[⁰¹²³⁴⁵⁶⁷⁸⁹ˣʸⁿ]*)|([A-Za-z][⁰¹²³⁴⁵⁶⁷⁸⁹ˣʸⁿ]*))([\+\-\×÷=])((-?)((\d+)(\.\d+)?[⁰¹²³⁴⁵⁶⁷⁸⁹ˣʸⁿ]*)|(\.\d+[⁰¹²³⁴⁵⁶⁷⁸⁹ˣʸⁿ]*)|([A-Za-z][⁰¹²³⁴⁵⁶⁷⁸⁹ˣʸⁿ]*))')
asmd_map = {
'+': '',
'-': '',
@ -117,7 +120,6 @@ asmd_map = {
'=': '等于'
}
def replace_asmd(match) -> str:
"""
Args:
@ -129,6 +131,39 @@ def replace_asmd(match) -> str:
return result
# 次方专项
RE_POWER = re.compile(r'[⁰¹²³⁴⁵⁶⁷⁸⁹ˣʸⁿ]+')
power_map = {
'': '0',
'¹': '1',
'²': '2',
'³': '3',
'': '4',
'': '5',
'': '6',
'': '7',
'': '8',
'': '9',
'ˣ': 'x',
'ʸ': 'y',
'': 'n'
}
def replace_power(match) -> str:
"""
Args:
match (re.Match)
Returns:
str
"""
power_num = ""
for m in match.group(0):
power_num += power_map[m]
result = "" + power_num + "次方"
return result
# 数字表达式
# 纯小数
RE_DECIMAL_NUM = re.compile(r'(-?)((\d+)(\.\d+))' r'|(\.(\d+))')

View File

@ -35,6 +35,7 @@ from .num import RE_POSITIVE_QUANTIFIERS
from .num import RE_RANGE
from .num import RE_TO_RANGE
from .num import RE_ASMD
from .num import RE_POWER
from .num import replace_default_num
from .num import replace_frac
from .num import replace_negative_num
@ -44,6 +45,7 @@ from .num import replace_positive_quantifier
from .num import replace_range
from .num import replace_to_range
from .num import replace_asmd
from .num import replace_power
from .phonecode import RE_MOBILE_PHONE
from .phonecode import RE_NATIONAL_UNIFORM_NUMBER
from .phonecode import RE_TELEPHONE
@ -114,6 +116,12 @@ class TextNormalizer():
sentence = sentence.replace('χ', '')
sentence = sentence.replace('ψ', '普赛').replace('Ψ', '普赛')
sentence = sentence.replace('ω', '欧米伽').replace('Ω', '欧米伽')
# 兜底数学运算,顺便兼容懒人用语
sentence = sentence.replace('+', '')
sentence = sentence.replace('-', '')
sentence = sentence.replace('×', '')
sentence = sentence.replace('÷', '')
sentence = sentence.replace('=', '')
# re filter special characters, have one more character "-" than line 68
sentence = re.sub(r'[-——《》【】<=>{}()#&@“”^_|\\]', '', sentence)
return sentence
@ -136,6 +144,12 @@ class TextNormalizer():
sentence = RE_TO_RANGE.sub(replace_to_range, sentence)
sentence = RE_TEMPERATURE.sub(replace_temperature, sentence)
sentence = replace_measure(sentence)
# 处理数学运算
while RE_ASMD.search(sentence):
sentence = RE_ASMD.sub(replace_asmd, sentence)
sentence = RE_POWER.sub(replace_power, sentence)
sentence = RE_FRAC.sub(replace_frac, sentence)
sentence = RE_PERCENTAGE.sub(replace_percentage, sentence)
sentence = RE_MOBILE_PHONE.sub(replace_mobile, sentence)
@ -145,10 +159,6 @@ class TextNormalizer():
sentence = RE_RANGE.sub(replace_range, sentence)
# 处理加减乘除
while RE_ASMD.search(sentence):
sentence = RE_ASMD.sub(replace_asmd, sentence)
sentence = RE_INTEGER.sub(replace_negative_num, sentence)
sentence = RE_DECIMAL_NUM.sub(replace_number, sentence)
sentence = RE_POSITIVE_QUANTIFIERS.sub(replace_positive_quantifier,

View File

@ -18,7 +18,7 @@ logging.getLogger("matplotlib").setLevel(logging.ERROR)
MATPLOTLIB_FLAG = False
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
logging.basicConfig(stream=sys.stdout, level=logging.ERROR)
logger = logging
@ -319,13 +319,13 @@ def check_git_hash(model_dir):
def get_logger(model_dir, filename="train.log"):
global logger
logger = logging.getLogger(os.path.basename(model_dir))
logger.setLevel(logging.DEBUG)
logger.setLevel(logging.ERROR)
formatter = logging.Formatter("%(asctime)s\t%(name)s\t%(levelname)s\t%(message)s")
if not os.path.exists(model_dir):
os.makedirs(model_dir)
h = logging.FileHandler(os.path.join(model_dir, filename))
h.setLevel(logging.DEBUG)
h.setLevel(logging.ERROR)
h.setFormatter(formatter)
logger.addHandler(h)
return logger

168
README.md
View File

@ -1,15 +1,18 @@
<div align="center">
<h1>GPT-SoVITS-WebUI</h1>
A Powerful Few-shot Voice Conversion and Text-to-Speech WebUI.<br><br>
[![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange)](https://github.com/RVC-Boss/GPT-SoVITS)
<img src="https://counter.seku.su/cmoe?name=gptsovits&theme=r34" /><br>
<a href="https://trendshift.io/repositories/7033" target="_blank"><img src="https://trendshift.io/api/badge/repositories/7033" alt="RVC-Boss%2FGPT-SoVITS | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
<!-- img src="https://counter.seku.su/cmoe?name=gptsovits&theme=r34" /><br> -->
[![Open In Colab](https://img.shields.io/badge/Colab-F9AB00?style=for-the-badge&logo=googlecolab&color=525252)](https://colab.research.google.com/github/RVC-Boss/GPT-SoVITS/blob/main/colab_webui.ipynb)
[![License](https://img.shields.io/badge/LICENSE-MIT-green.svg?style=for-the-badge)](https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE)
[![Huggingface](https://img.shields.io/badge/🤗%20-Models%20Repo-yellow.svg?style=for-the-badge)](https://huggingface.co/lj1995/GPT-SoVITS/tree/main)
[![Huggingface](https://img.shields.io/badge/🤗%20-online%20demo-yellow.svg?style=for-the-badge)](https://huggingface.co/spaces/lj1995/GPT-SoVITS-v2)
[![Discord](https://img.shields.io/discord/1198701940511617164?color=%23738ADB&label=Discord&style=for-the-badge)](https://discord.gg/dnrgs5GHfG)
**English** | [**中文简体**](./docs/cn/README.md) | [**日本語**](./docs/ja/README.md) | [**한국어**](./docs/ko/README.md) | [**Türkçe**](./docs/tr/README.md)
@ -24,7 +27,7 @@ A Powerful Few-shot Voice Conversion and Text-to-Speech WebUI.<br><br>
2. **Few-shot TTS:** Fine-tune the model with just 1 minute of training data for improved voice similarity and realism.
3. **Cross-lingual Support:** Inference in languages different from the training dataset, currently supporting English, Japanese, and Chinese.
3. **Cross-lingual Support:** Inference in languages different from the training dataset, currently supporting English, Japanese, Korean, Cantonese and Chinese.
4. **WebUI Tools:** Integrated tools include voice accompaniment separation, automatic training set segmentation, Chinese ASR, and text labeling, assisting beginners in creating training datasets and GPT/SoVITS models.
@ -38,7 +41,7 @@ https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-
## Installation
For users in China region, you can [click here](https://www.codewithgpu.com/i/RVC-Boss/GPT-SoVITS/GPT-SoVITS-Official) to use AutoDL Cloud Docker to experience the full functionality online.
For users in China, you can [click here](https://www.codewithgpu.com/i/RVC-Boss/GPT-SoVITS/GPT-SoVITS-Official) to use AutoDL Cloud Docker to experience the full functionality online.
### Tested Environments
@ -51,11 +54,9 @@ _Note: numba==0.56.4 requires py<3.11_
### Windows
If you are a Windows user (tested with win>=10), you can download [the 0206fix3 packedge](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta-fast-inference-branch.7z?download=true) or [the 0217fix2 packedge](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta0217fix2.7z?download=true) and double-click on _go-webui.bat_ to start GPT-SoVITS-WebUI.
If you are a Windows user (tested with win>=10), you can [download the integrated package](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta.7z?download=true) and double-click on _go-webui.bat_ to start GPT-SoVITS-WebUI.
Users in China region can download [the 0206fix3 package](https://www.icloud.com.cn/iclouddrive/075NNKIRC2zqnWn-9rhD63WGA#GPT-SoVITS-beta0206fix3) or [the 0217fix2 package](https://www.icloud.com.cn/iclouddrive/091QHaIbZMDZYQg7IX3g2kCqg#GPT-SoVITS-beta0217fix2) by clicking the links and then selecting "Download a copy." (Log out if you encounter errors while downloading.)
_Note: The inference speed of version 0206 is faster, while the inference quality of the new 0217 version is better. You can choose according to your needs._
**Users in China can [download the package here](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/dkxgpiy9zb96hob4#KTvnO).**
### Linux
@ -69,25 +70,18 @@ bash install.sh
**Note: The models trained with GPUs on Macs result in significantly lower quality compared to those trained on other devices, so we are temporarily using CPUs instead.**
1. Install Xcode command-line tools by running `xcode-select --install`
2. Install FFmpeg by running `brew install ffmpeg` or `conda install ffmpeg`.
1. Install Xcode command-line tools by running `xcode-select --install`.
2. Install FFmpeg by running `brew install ffmpeg`.
3. Install the program by running the following commands:
```bash
conda create -n GPTSoVits python=3.9
conda activate GPTSoVits
pip install -r requirements.txt
```
### Install Manually
#### Install Dependences
```bash
pip install -r requirements.txt
```
#### Install FFmpeg
##### Conda Users
@ -108,6 +102,19 @@ conda install -c conda-forge 'ffmpeg<7'
Download and place [ffmpeg.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe) and [ffprobe.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe) in the GPT-SoVITS root.
Install [Visual Studio 2017](https://aka.ms/vs/17/release/vc_redist.x86.exe) (Korean TTS Only)
##### MacOS Users
```bash
brew install ffmpeg
```
#### Install Dependences
```bash
pip install -r requirements.txt
```
### Using Docker
#### docker-compose.yaml configuration
@ -137,25 +144,17 @@ docker run --rm -it --gpus=all --env=is_half=False --volume=G:\GPT-SoVITS-Docker
## Pretrained Models
Download pretrained models from [GPT-SoVITS Models](https://huggingface.co/lj1995/GPT-SoVITS) and place them in `GPT_SoVITS/pretrained_models`.
**Users in China can [download all these models here](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/dkxgpiy9zb96hob4#nVNhX).**
For UVR5 (Vocals/Accompaniment Separation & Reverberation Removal, additionally), download models from [UVR5 Weights](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights) and place them in `tools/uvr5/uvr5_weights`.
1. Download pretrained models from [GPT-SoVITS Models](https://huggingface.co/lj1995/GPT-SoVITS) and place them in `GPT_SoVITS/pretrained_models`.
Users in China region can download these two models by entering the links below and clicking "Download a copy"
2. Download G2PW models from [G2PWModel_1.1.zip](https://paddlespeech.bj.bcebos.com/Parakeet/released_models/g2p/G2PWModel_1.1.zip), unzip and rename to `G2PWModel`, and then place them in `GPT_SoVITS/text`.(Chinese TTS Only)
- [GPT-SoVITS Models](https://www.icloud.com.cn/iclouddrive/056y_Xog_HXpALuVUjscIwTtg#GPT-SoVITS_Models)
3. For UVR5 (Vocals/Accompaniment Separation & Reverberation Removal, additionally), download models from [UVR5 Weights](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights) and place them in `tools/uvr5/uvr5_weights`.
- [UVR5 Weights](https://www.icloud.com.cn/iclouddrive/0bekRKDiJXboFhbfm3lM2fVbA#UVR5_Weights)
4. For Chinese ASR (additionally), download models from [Damo ASR Model](https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/files), [Damo VAD Model](https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/files), and [Damo Punc Model](https://modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files) and place them in `tools/asr/models`.
For Chinese ASR (additionally), download models from [Damo ASR Model](https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/files), [Damo VAD Model](https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/files), and [Damo Punc Model](https://modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files) and place them in `tools/asr/models`.
For English or Japanese ASR (additionally), download models from [Faster Whisper Large V3](https://huggingface.co/Systran/faster-whisper-large-v3) and place them in `tools/asr/models`. Also, [other models](https://huggingface.co/Systran) may have the similar effect with smaller disk footprint.
Users in China region can download this model by entering the links below
- [Faster Whisper Large V3](https://www.icloud.com/iclouddrive/0c4pQxFs7oWyVU1iMTq2DbmLA#faster-whisper-large-v3) (clicking "Download a copy")
- [Faster Whisper Large V3](https://hf-mirror.com/Systran/faster-whisper-large-v3) (HuggingFace mirror site)
5. For English or Japanese ASR (additionally), download models from [Faster Whisper Large V3](https://huggingface.co/Systran/faster-whisper-large-v3) and place them in `tools/asr/models`. Also, [other models](https://huggingface.co/Systran) may have the similar effect with smaller disk footprint.
## Dataset Format
@ -170,6 +169,8 @@ Language dictionary:
- 'zh': Chinese
- 'ja': Japanese
- 'en': English
- 'ko': Korean
- 'yue': Cantonese
Example:
@ -177,24 +178,104 @@ Example:
D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.
```
## Finetune and inference
### Open WebUI
#### Integrated Package Users
Double-click `go-webui.bat`or use `go-webui.ps1`
if you want to switch to V1,then double-click`go-webui-v1.bat` or use `go-webui-v1.ps1`
#### Others
```bash
python webui.py <language(optional)>
```
if you want to switch to V1,then
```bash
python webui.py v1 <language(optional)>
```
Or maunally switch version in WebUI
### Finetune
#### Path Auto-filling is now supported
1.Fill in the audio path
2.Slice the audio into small chunks
3.Denoise(optinal)
4.ASR
5.Proofreading ASR transcriptions
6.Go to the next Tab, then finetune the model
### Open Inference WebUI
#### Integrated Package Users
Double-click `go-webui-v2.bat` or use `go-webui-v2.ps1` ,then open the inference webui at `1-GPT-SoVITS-TTS/1C-inference`
#### Others
```bash
python GPT_SoVITS/inference_webui.py <language(optional)>
```
OR
```bash
python webui.py
```
then open the inference webui at `1-GPT-SoVITS-TTS/1C-inference`
## V2 Release Notes
New Features:
1. Support Korean and Cantonese
2. An optimized text frontend
3. Pre-trained model extended from 2k hours to 5k hours
4. Improved synthesis quality for low-quality reference audio
[more details](https://github.com/RVC-Boss/GPT-SoVITS/wiki/GPT%E2%80%90SoVITS%E2%80%90v2%E2%80%90features-(%E6%96%B0%E7%89%B9%E6%80%A7) )
Use v2 from v1 environment:
1. `pip install -r requirements.txt` to update some packages
2. Clone the latest codes from github.
3. Download v2 pretrained models from [huggingface](https://huggingface.co/lj1995/GPT-SoVITS/tree/main/gsv-v2final-pretrained) and put them into `GPT_SoVITS\pretrained_models\gsv-v2final-pretrained`.
Chinese v2 additional: [G2PWModel_1.1.zip](https://paddlespeech.bj.bcebos.com/Parakeet/released_models/g2p/G2PWModel_1.1.zip)Download G2PW models, unzip and rename to `G2PWModel`, and then place them in `GPT_SoVITS/text`.
## Todo List
- [ ] **High Priority:**
- [x] **High Priority:**
- [x] Localization in Japanese and English.
- [x] User guide.
- [x] Japanese and English dataset fine tune training.
- [ ] **Features:**
- [ ] Zero-shot voice conversion (5s) / few-shot voice conversion (1min).
- [ ] TTS speaking speed control.
- [ ] Enhanced TTS emotion control.
- [ ] Experiment with changing SoVITS token inputs to probability distribution of vocabs.
- [ ] Improve English and Japanese text frontend.
- [x] Zero-shot voice conversion (5s) / few-shot voice conversion (1min).
- [x] TTS speaking speed control.
- [ ] ~~Enhanced TTS emotion control.~~
- [ ] Experiment with changing SoVITS token inputs to probability distribution of GPT vocabs (transformer latent).
- [x] Improve English and Japanese text frontend.
- [ ] Develop tiny and larger-sized TTS models.
- [x] Colab scripts.
- [ ] Try expand training dataset (2k hours -> 10k hours).
- [ ] better sovits base model (enhanced audio quality)
- [x] better sovits base model (enhanced audio quality)
- [ ] model mix
## (Additional) Method for running from the command line
@ -202,10 +283,10 @@ Use the command line to open the WebUI for UVR5
```
python tools/uvr5/webui.py "<infer_device>" <is_half> <webui_port_uvr5>
```
If you can't open a browser, follow the format below for UVR processing,This is using mdxnet for audio processing
<!-- If you can't open a browser, follow the format below for UVR processing,This is using mdxnet for audio processing
```
python mdxnet.py --model --input_root --output_vocal --output_ins --agg_level --format --device --is_half_precision
```
``` -->
This is how the audio segmentation of the dataset is done using the command line
```
python audio_slicer.py \
@ -224,7 +305,7 @@ ASR processing is performed through Faster_Whisper(ASR marking except Chinese)
(No progress bars, GPU performance may cause time delays)
```
python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language>
python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language> -p <precision>
```
A custom list save path is enabled
@ -246,6 +327,9 @@ Special thanks to the following projects and contributors:
### Text Frontend for Inference
- [paddlespeech zh_normalization](https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/paddlespeech/t2s/frontend/zh_normalization)
- [LangSegment](https://github.com/juntaosun/LangSegment)
- [g2pW](https://github.com/GitYCC/g2pW)
- [pypinyin-g2pW](https://github.com/mozillazg/pypinyin-g2pW)
- [paddlespeech g2pw](https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/paddlespeech/t2s/frontend/g2pw)
### WebUI Tools
- [ultimatevocalremovergui](https://github.com/Anjok07/ultimatevocalremovergui)
- [audio-slicer](https://github.com/openvpi/audio-slicer)
@ -255,6 +339,8 @@ Special thanks to the following projects and contributors:
- [faster-whisper](https://github.com/SYSTRAN/faster-whisper)
- [FunASR](https://github.com/alibaba-damo-academy/FunASR)
Thankful to @Naozumi520 for providing the Cantonese training set and for the guidance on Cantonese-related knowledge.
## Thanks to all contributors for their efforts
<a href="https://github.com/RVC-Boss/GPT-SoVITS/graphs/contributors" target="_blank">

348
api.py
View File

@ -11,7 +11,7 @@
调用请求缺少参考音频时使用
`-dr` - `默认参考音频路径`
`-dt` - `默认参考音频文本`
`-dl` - `默认参考音频语种, "中文","英文","日文","zh","en","ja"`
`-dl` - `默认参考音频语种, "中文","英文","日文","韩文","粤语,"zh","en","ja","ko","yue"`
`-d` - `推理设备, "cuda","cpu"`
`-a` - `绑定地址, 默认"127.0.0.1"`
@ -20,6 +20,7 @@
`-hp` - `覆盖 config.py 使用半精度`
`-sm` - `流式返回模式, 默认不启用, "close","c", "normal","n", "keepalive","k"`
·-mt` - `返回的音频编码格式, 流式默认ogg, 非流式默认wav, "wav", "ogg", "aac"`
·-st` - `返回的音频数据类型, 默认int16, "int16", "int32"`
·-cp` - `文本切分符号设定, 默认为空, ",.,。"字符串的方式传入`
`-hb` - `cnhubert路径`
@ -72,6 +73,29 @@ RESP:
成功: 直接返回 wav 音频流 http code 200
失败: 返回包含错误信息的 json, http code 400
手动指定当次推理所使用的参考音频并提供参数:
GET:
`http://127.0.0.1:9880?refer_wav_path=123.wav&prompt_text=一二三&prompt_language=zh&text=先帝创业未半而中道崩殂今天下三分益州疲弊此诚危急存亡之秋也&text_language=zh&top_k=20&top_p=0.6&temperature=0.6&speed=1&inp_refs="456.wav"&inp_refs="789.wav"`
POST:
```json
{
"refer_wav_path": "123.wav",
"prompt_text": "一二三。",
"prompt_language": "zh",
"text": "先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。",
"text_language": "zh",
"top_k": 20,
"top_p": 0.6,
"temperature": 0.6,
"speed": 1,
"inp_refs": ["456.wav","789.wav"]
}
```
RESP:
成功: 直接返回 wav 音频流 http code 200
失败: 返回包含错误信息的 json, http code 400
### 更换默认参考音频
@ -131,7 +155,7 @@ from time import time as ttime
import torch
import librosa
import soundfile as sf
from fastapi import FastAPI, Request, HTTPException
from fastapi import FastAPI, Request, Query, HTTPException
from fastapi.responses import StreamingResponse, JSONResponse
import uvicorn
from transformers import AutoModelForMaskedLM, AutoTokenizer
@ -143,7 +167,7 @@ from AR.models.t2s_lightning_module import Text2SemanticLightningModule
from text import cleaned_text_to_sequence
from text.cleaner import clean_text
from module.mel_processing import spectrogram_torch
from my_utils import load_audio
from tools.my_utils import load_audio
import config as global_config
import logging
import subprocess
@ -173,12 +197,33 @@ def is_full(*items): # 任意一项为空返回False
return True
def change_sovits_weights(sovits_path):
global vq_model, hps
class Speaker:
def __init__(self, name, gpt, sovits, phones = None, bert = None, prompt = None):
self.name = name
self.sovits = sovits
self.gpt = gpt
self.phones = phones
self.bert = bert
self.prompt = prompt
speaker_list = {}
class Sovits:
def __init__(self, vq_model, hps):
self.vq_model = vq_model
self.hps = hps
def get_sovits_weights(sovits_path):
dict_s2 = torch.load(sovits_path, map_location="cpu")
hps = dict_s2["config"]
hps = DictToAttrRecursive(hps)
hps.model.semantic_frame_rate = "25hz"
if dict_s2['weight']['enc_p.text_embedding.weight'].shape[0] == 322:
hps.model.version = "v1"
else:
hps.model.version = "v2"
logger.info(f"模型版本: {hps.model.version}")
model_params_dict = vars(hps.model)
vq_model = SynthesizerTrn(
hps.data.filter_length // 2 + 1,
@ -195,10 +240,17 @@ def change_sovits_weights(sovits_path):
vq_model.eval()
vq_model.load_state_dict(dict_s2["weight"], strict=False)
sovits = Sovits(vq_model, hps)
return sovits
def change_gpt_weights(gpt_path):
global hz, max_sec, t2s_model, config
hz = 50
class Gpt:
def __init__(self, max_sec, t2s_model):
self.max_sec = max_sec
self.t2s_model = t2s_model
global hz
hz = 50
def get_gpt_weights(gpt_path):
dict_s1 = torch.load(gpt_path, map_location="cpu")
config = dict_s1["config"]
max_sec = config["data"]["max_sec"]
@ -211,6 +263,19 @@ def change_gpt_weights(gpt_path):
total = sum([param.nelement() for param in t2s_model.parameters()])
logger.info("Number of parameter: %.2fM" % (total / 1e6))
gpt = Gpt(max_sec, t2s_model)
return gpt
def change_gpt_sovits_weights(gpt_path,sovits_path):
try:
gpt = get_gpt_weights(gpt_path)
sovits = get_sovits_weights(sovits_path)
except Exception as e:
return JSONResponse({"code": 400, "message": str(e)}, status_code=400)
speaker_list["default"] = Speaker(name="default", gpt=gpt, sovits=sovits)
return JSONResponse({"code": 0, "message": "Success"}, status_code=200)
def get_bert_feature(text, word2ph):
with torch.no_grad():
@ -229,9 +294,9 @@ def get_bert_feature(text, word2ph):
return phone_level_feature.T
def clean_text_inf(text, language):
phones, word2ph, norm_text = clean_text(text, language)
phones = cleaned_text_to_sequence(phones)
def clean_text_inf(text, language, version):
phones, word2ph, norm_text = clean_text(text, language, version)
phones = cleaned_text_to_sequence(phones, version)
return phones, word2ph, norm_text
@ -247,54 +312,64 @@ def get_bert_inf(phones, word2ph, norm_text, language):
return bert
def get_phones_and_bert(text,language):
if language in {"en","all_zh","all_ja"}:
from text import chinese
def get_phones_and_bert(text,language,version,final=False):
if language in {"en", "all_zh", "all_ja", "all_ko", "all_yue"}:
language = language.replace("all_","")
if language == "en":
LangSegment.setfilters(["en"])
formattext = " ".join(tmp["text"] for tmp in LangSegment.getTexts(text))
else:
# 因无法区别中日文汉字,以用户输入为准
# 因无法区别中日文汉字,以用户输入为准
formattext = text
while " " in formattext:
formattext = formattext.replace(" ", " ")
phones, word2ph, norm_text = clean_text_inf(formattext, language)
if language == "zh":
bert = get_bert_feature(norm_text, word2ph).to(device)
if re.search(r'[A-Za-z]', formattext):
formattext = re.sub(r'[a-z]', lambda x: x.group(0).upper(), formattext)
formattext = chinese.mix_text_normalize(formattext)
return get_phones_and_bert(formattext,"zh",version)
else:
phones, word2ph, norm_text = clean_text_inf(formattext, language, version)
bert = get_bert_feature(norm_text, word2ph).to(device)
elif language == "yue" and re.search(r'[A-Za-z]', formattext):
formattext = re.sub(r'[a-z]', lambda x: x.group(0).upper(), formattext)
formattext = chinese.mix_text_normalize(formattext)
return get_phones_and_bert(formattext,"yue",version)
else:
phones, word2ph, norm_text = clean_text_inf(formattext, language, version)
bert = torch.zeros(
(1024, len(phones)),
dtype=torch.float16 if is_half == True else torch.float32,
).to(device)
elif language in {"zh", "ja","auto"}:
elif language in {"zh", "ja", "ko", "yue", "auto", "auto_yue"}:
textlist=[]
langlist=[]
LangSegment.setfilters(["zh","ja","en","ko"])
if language == "auto":
for tmp in LangSegment.getTexts(text):
if tmp["lang"] == "ko":
langlist.append("zh")
textlist.append(tmp["text"])
else:
langlist.append(tmp["lang"])
textlist.append(tmp["text"])
langlist.append(tmp["lang"])
textlist.append(tmp["text"])
elif language == "auto_yue":
for tmp in LangSegment.getTexts(text):
if tmp["lang"] == "zh":
tmp["lang"] = "yue"
langlist.append(tmp["lang"])
textlist.append(tmp["text"])
else:
for tmp in LangSegment.getTexts(text):
if tmp["lang"] == "en":
langlist.append(tmp["lang"])
else:
# 因无法区别中日文汉字,以用户输入为准
# 因无法区别中日文汉字,以用户输入为准
langlist.append(language)
textlist.append(tmp["text"])
# logger.info(textlist)
# logger.info(langlist)
phones_list = []
bert_list = []
norm_text_list = []
for i in range(len(textlist)):
lang = langlist[i]
phones, word2ph, norm_text = clean_text_inf(textlist[i], lang)
phones, word2ph, norm_text = clean_text_inf(textlist[i], lang, version)
bert = get_bert_inf(phones, word2ph, norm_text, lang)
phones_list.append(phones)
norm_text_list.append(norm_text)
@ -303,22 +378,46 @@ def get_phones_and_bert(text,language):
phones = sum(phones_list, [])
norm_text = ''.join(norm_text_list)
if not final and len(phones) < 6:
return get_phones_and_bert("." + text,language,version,final=True)
return phones,bert.to(torch.float16 if is_half == True else torch.float32),norm_text
class DictToAttrRecursive:
class DictToAttrRecursive(dict):
def __init__(self, input_dict):
super().__init__(input_dict)
for key, value in input_dict.items():
if isinstance(value, dict):
# 如果值是字典,递归调用构造函数
setattr(self, key, DictToAttrRecursive(value))
else:
setattr(self, key, value)
value = DictToAttrRecursive(value)
self[key] = value
setattr(self, key, value)
def __getattr__(self, item):
try:
return self[item]
except KeyError:
raise AttributeError(f"Attribute {item} not found")
def __setattr__(self, key, value):
if isinstance(value, dict):
value = DictToAttrRecursive(value)
super(DictToAttrRecursive, self).__setitem__(key, value)
super().__setattr__(key, value)
def __delattr__(self, item):
try:
del self[item]
except KeyError:
raise AttributeError(f"Attribute {item} not found")
def get_spepc(hps, filename):
audio = load_audio(filename, int(hps.data.sampling_rate))
audio,_ = librosa.load(filename, int(hps.data.sampling_rate))
audio = torch.FloatTensor(audio)
maxx=audio.abs().max()
if(maxx>1):
audio/=min(2,maxx)
audio_norm = audio
audio_norm = audio_norm.unsqueeze(0)
spec = spectrogram_torch(audio_norm, hps.data.filter_length, hps.data.sampling_rate, hps.data.hop_length,
@ -339,8 +438,46 @@ def pack_audio(audio_bytes, data, rate):
def pack_ogg(audio_bytes, data, rate):
with sf.SoundFile(audio_bytes, mode='w', samplerate=rate, channels=1, format='ogg') as audio_file:
audio_file.write(data)
# Author: AkagawaTsurunaki
# Issue:
# Stack overflow probabilistically occurs
# when the function `sf_writef_short` of `libsndfile_64bit.dll` is called
# using the Python library `soundfile`
# Note:
# This is an issue related to `libsndfile`, not this project itself.
# It happens when you generate a large audio tensor (about 499804 frames in my PC)
# and try to convert it to an ogg file.
# Related:
# https://github.com/RVC-Boss/GPT-SoVITS/issues/1199
# https://github.com/libsndfile/libsndfile/issues/1023
# https://github.com/bastibe/python-soundfile/issues/396
# Suggestion:
# Or split the whole audio data into smaller audio segment to avoid stack overflow?
def handle_pack_ogg():
with sf.SoundFile(audio_bytes, mode='w', samplerate=rate, channels=1, format='ogg') as audio_file:
audio_file.write(data)
import threading
# See: https://docs.python.org/3/library/threading.html
# The stack size of this thread is at least 32768
# If stack overflow error still occurs, just modify the `stack_size`.
# stack_size = n * 4096, where n should be a positive integer.
# Here we chose n = 4096.
stack_size = 4096 * 4096
try:
threading.stack_size(stack_size)
pack_ogg_thread = threading.Thread(target=handle_pack_ogg)
pack_ogg_thread.start()
pack_ogg_thread.join()
except RuntimeError as e:
# If changing the thread stack size is unsupported, a RuntimeError is raised.
print("RuntimeError: {}".format(e))
print("Changing the thread stack size is unsupported.")
except ValueError as e:
# If the specified stack size is invalid, a ValueError is raised and the stack size is unmodified.
print("ValueError: {}".format(e))
print("The specified stack size is invalid.")
return audio_bytes
@ -352,22 +489,32 @@ def pack_raw(audio_bytes, data, rate):
def pack_wav(audio_bytes, rate):
data = np.frombuffer(audio_bytes.getvalue(),dtype=np.int16)
wav_bytes = BytesIO()
sf.write(wav_bytes, data, rate, format='wav')
if is_int32:
data = np.frombuffer(audio_bytes.getvalue(),dtype=np.int32)
wav_bytes = BytesIO()
sf.write(wav_bytes, data, rate, format='WAV', subtype='PCM_32')
else:
data = np.frombuffer(audio_bytes.getvalue(),dtype=np.int16)
wav_bytes = BytesIO()
sf.write(wav_bytes, data, rate, format='WAV')
return wav_bytes
def pack_aac(audio_bytes, data, rate):
if is_int32:
pcm = 's32le'
bit_rate = '256k'
else:
pcm = 's16le'
bit_rate = '128k'
process = subprocess.Popen([
'ffmpeg',
'-f', 's16le', # 输入16位有符号小端整数PCM
'-f', pcm, # 输入16位有符号小端整数PCM
'-ar', str(rate), # 设置采样率
'-ac', '1', # 单声道
'-i', 'pipe:0', # 从管道读取输入
'-c:a', 'aac', # 音频编码器为AAC
'-b:a', '192k', # 比特率
'-b:a', bit_rate, # 比特率
'-vn', # 不包含视频
'-f', 'adts', # 输出AAC数据流格式
'pipe:1' # 将输出写入管道
@ -408,10 +555,21 @@ def only_punc(text):
return not any(t.isalnum() or t.isalpha() for t in text)
def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language):
splits = {"", "", "", "", ",", ".", "?", "!", "~", ":", "", "", "", }
def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language, top_k= 15, top_p = 0.6, temperature = 0.6, speed = 1, inp_refs = None, spk = "default"):
infer_sovits = speaker_list[spk].sovits
vq_model = infer_sovits.vq_model
hps = infer_sovits.hps
infer_gpt = speaker_list[spk].gpt
t2s_model = infer_gpt.t2s_model
max_sec = infer_gpt.max_sec
t0 = ttime()
prompt_text = prompt_text.strip("\n")
if (prompt_text[-1] not in splits): prompt_text += "" if prompt_language != "en" else "."
prompt_language, text = prompt_language, text.strip("\n")
dtype = torch.float16 if is_half == True else torch.float32
zero_wav = np.zeros(int(hps.data.sampling_rate * 0.3), dtype=np.float16 if is_half == True else np.float32)
with torch.no_grad():
wav16k, sr = librosa.load(ref_wav_path, sr=16000)
@ -427,10 +585,25 @@ def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language)
ssl_content = ssl_model.model(wav16k.unsqueeze(0))["last_hidden_state"].transpose(1, 2) # .float()
codes = vq_model.extract_latent(ssl_content)
prompt_semantic = codes[0, 0]
prompt = prompt_semantic.unsqueeze(0).to(device)
refers=[]
if(inp_refs):
for path in inp_refs:
try:
refer = get_spepc(hps, path).to(dtype).to(device)
refers.append(refer)
except Exception as e:
logger.error(e)
if(len(refers)==0):
refers = [get_spepc(hps, ref_wav_path).to(dtype).to(device)]
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)
phones1, bert1, norm_text1 = get_phones_and_bert(prompt_text, prompt_language, version)
texts = text.split("\n")
audio_bytes = BytesIO()
@ -440,41 +613,41 @@ def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language)
continue
audio_opt = []
phones2, bert2, norm_text2 = get_phones_and_bert(text, text_language)
if (text[-1] not in splits): text += "" if text_language != "en" else "."
phones2, bert2, norm_text2 = get_phones_and_bert(text, text_language, version)
bert = torch.cat([bert1, bert2], 1)
all_phoneme_ids = torch.LongTensor(phones1 + phones2).to(device).unsqueeze(0)
bert = bert.to(device).unsqueeze(0)
all_phoneme_len = torch.tensor([all_phoneme_ids.shape[-1]]).to(device)
prompt = prompt_semantic.unsqueeze(0).to(device)
t2 = ttime()
with torch.no_grad():
# pred_semantic = t2s_model.model.infer(
pred_semantic, idx = t2s_model.model.infer_panel(
all_phoneme_ids,
all_phoneme_len,
prompt,
bert,
# prompt_phone_len=ph_offset,
top_k=config['inference']['top_k'],
top_k = top_k,
top_p = top_p,
temperature = temperature,
early_stop_num=hz * max_sec)
pred_semantic = pred_semantic[:, -idx:].unsqueeze(0)
t3 = ttime()
# print(pred_semantic.shape,idx)
pred_semantic = pred_semantic[:, -idx:].unsqueeze(0) # .unsqueeze(0)#mq要多unsqueeze一次
refer = get_spepc(hps, ref_wav_path) # .to(device)
if (is_half == True):
refer = refer.half().to(device)
else:
refer = refer.to(device)
# audio = vq_model.decode(pred_semantic, all_phoneme_ids, refer).detach().cpu().numpy()[0, 0]
audio = \
vq_model.decode(pred_semantic, torch.LongTensor(phones2).to(device).unsqueeze(0),
refer).detach().cpu().numpy()[
refers,speed=speed).detach().cpu().numpy()[
0, 0] ###试试重建不带上prompt部分
max_audio=np.abs(audio).max()
if max_audio>1:
audio/=max_audio
audio_opt.append(audio)
audio_opt.append(zero_wav)
t4 = ttime()
audio_bytes = pack_audio(audio_bytes,(np.concatenate(audio_opt, 0) * 32768).astype(np.int16),hps.data.sampling_rate)
if is_int32:
audio_bytes = pack_audio(audio_bytes,(np.concatenate(audio_opt, 0) * 2147483647).astype(np.int32),hps.data.sampling_rate)
else:
audio_bytes = pack_audio(audio_bytes,(np.concatenate(audio_opt, 0) * 32768).astype(np.int16),hps.data.sampling_rate)
# logger.info("%.3f\t%.3f\t%.3f\t%.3f" % (t1 - t0, t2 - t1, t3 - t2, t4 - t3))
if stream_mode == "normal":
audio_bytes, audio_chunk = read_clean_buffer(audio_bytes)
@ -515,7 +688,7 @@ def handle_change(path, text, language):
return JSONResponse({"code": 0, "message": "Success"}, status_code=200)
def handle(refer_wav_path, prompt_text, prompt_language, text, text_language, cut_punc):
def handle(refer_wav_path, prompt_text, prompt_language, text, text_language, cut_punc, top_k, top_p, temperature, speed, inp_refs):
if (
refer_wav_path == "" or refer_wav_path is None
or prompt_text == "" or prompt_text is None
@ -534,7 +707,7 @@ def handle(refer_wav_path, prompt_text, prompt_language, text, text_language, cu
else:
text = cut_text(text,cut_punc)
return StreamingResponse(get_tts_wav(refer_wav_path, prompt_text, prompt_language, text, text_language), media_type="audio/"+media_type)
return StreamingResponse(get_tts_wav(refer_wav_path, prompt_text, prompt_language, text, text_language, top_k, top_p, temperature, speed, inp_refs), media_type="audio/"+media_type)
@ -544,17 +717,27 @@ def handle(refer_wav_path, prompt_text, prompt_language, text, text_language, cu
# --------------------------------
dict_language = {
"中文": "all_zh",
"粤语": "all_yue",
"英文": "en",
"日文": "all_ja",
"韩文": "all_ko",
"中英混合": "zh",
"粤英混合": "yue",
"日英混合": "ja",
"韩英混合": "ko",
"多语种混合": "auto", #多语种启动切分识别语种
"多语种混合(粤语)": "auto_yue",
"all_zh": "all_zh",
"all_yue": "all_yue",
"en": "en",
"all_ja": "all_ja",
"all_ko": "all_ko",
"zh": "zh",
"yue": "yue",
"ja": "ja",
"ko": "ko",
"auto": "auto",
"auto_yue": "auto_yue",
}
# logger
@ -581,6 +764,7 @@ parser.add_argument("-hp", "--half_precision", action="store_true", default=Fals
# 此时 full_precision==True, half_precision==False
parser.add_argument("-sm", "--stream_mode", type=str, default="close", help="流式返回模式, close / normal / keepalive")
parser.add_argument("-mt", "--media_type", type=str, default="wav", help="音频编码格式, wav / ogg / aac")
parser.add_argument("-st", "--sub_type", type=str, default="int16", help="音频数据类型, int16 / int32")
parser.add_argument("-cp", "--cut_punc", type=str, default="", help="文本切分符号设定, 符号范围,.;?!、,。?!;:…")
# 切割常用分句符为 `python ./api.py -cp ".?!。?!"`
parser.add_argument("-hb", "--hubert_path", type=str, default=g_config.cnhubert_path, help="覆盖config.cnhubert_path")
@ -642,6 +826,14 @@ else:
media_type = "ogg"
logger.info(f"编码格式: {media_type}")
# 音频数据类型
if args.sub_type.lower() == 'int32':
is_int32 = True
logger.info(f"数据类型: int32")
else:
is_int32 = False
logger.info(f"数据类型: int16")
# 初始化模型
cnhubert.cnhubert_base_path = cnhubert_base_path
tokenizer = AutoTokenizer.from_pretrained(bert_path)
@ -653,9 +845,7 @@ if is_half:
else:
bert_model = bert_model.to(device)
ssl_model = ssl_model.to(device)
change_sovits_weights(sovits_path)
change_gpt_weights(gpt_path)
change_gpt_sovits_weights(gpt_path = gpt_path, sovits_path = sovits_path)
@ -667,14 +857,18 @@ app = FastAPI()
@app.post("/set_model")
async def set_model(request: Request):
json_post_raw = await request.json()
global gpt_path
gpt_path=json_post_raw.get("gpt_model_path")
global sovits_path
sovits_path=json_post_raw.get("sovits_model_path")
logger.info("gptpath"+gpt_path+";vitspath"+sovits_path)
change_sovits_weights(sovits_path)
change_gpt_weights(gpt_path)
return "ok"
return change_gpt_sovits_weights(
gpt_path = json_post_raw.get("gpt_model_path"),
sovits_path = json_post_raw.get("sovits_model_path")
)
@app.get("/set_model")
async def set_model(
gpt_model_path: str = None,
sovits_model_path: str = None,
):
return change_gpt_sovits_weights(gpt_path = gpt_model_path, sovits_path = sovits_model_path)
@app.post("/control")
@ -717,6 +911,11 @@ async def tts_endpoint(request: Request):
json_post_raw.get("text"),
json_post_raw.get("text_language"),
json_post_raw.get("cut_punc"),
json_post_raw.get("top_k", 15),
json_post_raw.get("top_p", 1.0),
json_post_raw.get("temperature", 1.0),
json_post_raw.get("speed", 1.0),
json_post_raw.get("inp_refs", [])
)
@ -728,8 +927,13 @@ async def tts_endpoint(
text: str = None,
text_language: str = None,
cut_punc: str = None,
top_k: int = 15,
top_p: float = 1.0,
temperature: float = 1.0,
speed: float = 1.0,
inp_refs: list = Query(default=[])
):
return handle(refer_wav_path, prompt_text, prompt_language, text, text_language, cut_punc)
return handle(refer_wav_path, prompt_text, prompt_language, text, text_language, cut_punc, top_k, top_p, temperature, speed, inp_refs)
if __name__ == "__main__":

458
api_v2.py Normal file
View File

@ -0,0 +1,458 @@
"""
# WebAPI文档
` python api_v2.py -a 127.0.0.1 -p 9880 -c GPT_SoVITS/configs/tts_infer.yaml `
## 执行参数:
`-a` - `绑定地址, 默认"127.0.0.1"`
`-p` - `绑定端口, 默认9880`
`-c` - `TTS配置文件路径, 默认"GPT_SoVITS/configs/tts_infer.yaml"`
## 调用:
### 推理
endpoint: `/tts`
GET:
```
http://127.0.0.1:9880/tts?text=先帝创业未半而中道崩殂今天下三分益州疲弊此诚危急存亡之秋也&text_lang=zh&ref_audio_path=archive_jingyuan_1.wav&prompt_lang=zh&prompt_text=我是罗浮云骑将军景元不必拘谨将军只是一时的身份你称呼我景元便可&text_split_method=cut5&batch_size=1&media_type=wav&streaming_mode=true
```
POST:
```json
{
"text": "", # str.(required) text to be synthesized
"text_lang: "", # str.(required) language of the text to be synthesized
"ref_audio_path": "", # str.(required) reference audio path
"aux_ref_audio_paths": [], # list.(optional) auxiliary reference audio paths for multi-speaker tone fusion
"prompt_text": "", # str.(optional) prompt text for the reference audio
"prompt_lang": "", # str.(required) language of the prompt text for the reference audio
"top_k": 5, # int. top k sampling
"top_p": 1, # float. top p sampling
"temperature": 1, # float. temperature for sampling
"text_split_method": "cut0", # str. text split method, see text_segmentation_method.py for details.
"batch_size": 1, # int. batch size for inference
"batch_threshold": 0.75, # float. threshold for batch splitting.
"split_bucket: True, # bool. whether to split the batch into multiple buckets.
"speed_factor":1.0, # float. control the speed of the synthesized audio.
"streaming_mode": False, # bool. whether to return a streaming response.
"seed": -1, # int. random seed for reproducibility.
"parallel_infer": True, # bool. whether to use parallel inference.
"repetition_penalty": 1.35 # float. repetition penalty for T2S model.
}
```
RESP:
成功: 直接返回 wav 音频流 http code 200
失败: 返回包含错误信息的 json, http code 400
### 命令控制
endpoint: `/control`
command:
"restart": 重新运行
"exit": 结束运行
GET:
```
http://127.0.0.1:9880/control?command=restart
```
POST:
```json
{
"command": "restart"
}
```
RESP:
### 切换GPT模型
endpoint: `/set_gpt_weights`
GET:
```
http://127.0.0.1:9880/set_gpt_weights?weights_path=GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt
```
RESP:
成功: 返回"success", http code 200
失败: 返回包含错误信息的 json, http code 400
### 切换Sovits模型
endpoint: `/set_sovits_weights`
GET:
```
http://127.0.0.1:9880/set_sovits_weights?weights_path=GPT_SoVITS/pretrained_models/s2G488k.pth
```
RESP:
成功: 返回"success", http code 200
失败: 返回包含错误信息的 json, http code 400
"""
import os
import sys
import traceback
from typing import Generator
now_dir = os.getcwd()
sys.path.append(now_dir)
sys.path.append("%s/GPT_SoVITS" % (now_dir))
import argparse
import subprocess
import wave
import signal
import numpy as np
import soundfile as sf
from fastapi import FastAPI, Request, HTTPException, Response
from fastapi.responses import StreamingResponse, JSONResponse
from fastapi import FastAPI, UploadFile, File
import uvicorn
from io import BytesIO
from tools.i18n.i18n import I18nAuto
from GPT_SoVITS.TTS_infer_pack.TTS import TTS, TTS_Config
from GPT_SoVITS.TTS_infer_pack.text_segmentation_method import get_method_names as get_cut_method_names
from fastapi.responses import StreamingResponse
from pydantic import BaseModel
# print(sys.path)
i18n = I18nAuto()
cut_method_names = get_cut_method_names()
parser = argparse.ArgumentParser(description="GPT-SoVITS api")
parser.add_argument("-c", "--tts_config", type=str, default="GPT_SoVITS/configs/tts_infer.yaml", help="tts_infer路径")
parser.add_argument("-a", "--bind_addr", type=str, default="127.0.0.1", help="default: 127.0.0.1")
parser.add_argument("-p", "--port", type=int, default="9880", help="default: 9880")
args = parser.parse_args()
config_path = args.tts_config
# device = args.device
port = args.port
host = args.bind_addr
argv = sys.argv
if config_path in [None, ""]:
config_path = "GPT-SoVITS/configs/tts_infer.yaml"
tts_config = TTS_Config(config_path)
print(tts_config)
tts_pipeline = TTS(tts_config)
APP = FastAPI()
class TTS_Request(BaseModel):
text: str = None
text_lang: str = None
ref_audio_path: str = None
aux_ref_audio_paths: list = None
prompt_lang: str = None
prompt_text: str = ""
top_k:int = 5
top_p:float = 1
temperature:float = 1
text_split_method:str = "cut5"
batch_size:int = 1
batch_threshold:float = 0.75
split_bucket:bool = True
speed_factor:float = 1.0
fragment_interval:float = 0.3
seed:int = -1
media_type:str = "wav"
streaming_mode:bool = False
parallel_infer:bool = True
repetition_penalty:float = 1.35
### modify from https://github.com/RVC-Boss/GPT-SoVITS/pull/894/files
def pack_ogg(io_buffer:BytesIO, data:np.ndarray, rate:int):
with sf.SoundFile(io_buffer, mode='w', samplerate=rate, channels=1, format='ogg') as audio_file:
audio_file.write(data)
return io_buffer
def pack_raw(io_buffer:BytesIO, data:np.ndarray, rate:int):
io_buffer.write(data.tobytes())
return io_buffer
def pack_wav(io_buffer:BytesIO, data:np.ndarray, rate:int):
io_buffer = BytesIO()
sf.write(io_buffer, data, rate, format='wav')
return io_buffer
def pack_aac(io_buffer:BytesIO, data:np.ndarray, rate:int):
process = subprocess.Popen([
'ffmpeg',
'-f', 's16le', # 输入16位有符号小端整数PCM
'-ar', str(rate), # 设置采样率
'-ac', '1', # 单声道
'-i', 'pipe:0', # 从管道读取输入
'-c:a', 'aac', # 音频编码器为AAC
'-b:a', '192k', # 比特率
'-vn', # 不包含视频
'-f', 'adts', # 输出AAC数据流格式
'pipe:1' # 将输出写入管道
], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, _ = process.communicate(input=data.tobytes())
io_buffer.write(out)
return io_buffer
def pack_audio(io_buffer:BytesIO, data:np.ndarray, rate:int, media_type:str):
if media_type == "ogg":
io_buffer = pack_ogg(io_buffer, data, rate)
elif media_type == "aac":
io_buffer = pack_aac(io_buffer, data, rate)
elif media_type == "wav":
io_buffer = pack_wav(io_buffer, data, rate)
else:
io_buffer = pack_raw(io_buffer, data, rate)
io_buffer.seek(0)
return io_buffer
# from https://huggingface.co/spaces/coqui/voice-chat-with-mistral/blob/main/app.py
def wave_header_chunk(frame_input=b"", channels=1, sample_width=2, sample_rate=32000):
# This will create a wave header then append the frame input
# It should be first on a streaming wav file
# Other frames better should not have it (else you will hear some artifacts each chunk start)
wav_buf = BytesIO()
with wave.open(wav_buf, "wb") as vfout:
vfout.setnchannels(channels)
vfout.setsampwidth(sample_width)
vfout.setframerate(sample_rate)
vfout.writeframes(frame_input)
wav_buf.seek(0)
return wav_buf.read()
def handle_control(command:str):
if command == "restart":
os.execl(sys.executable, sys.executable, *argv)
elif command == "exit":
os.kill(os.getpid(), signal.SIGTERM)
exit(0)
def check_params(req:dict):
text:str = req.get("text", "")
text_lang:str = req.get("text_lang", "")
ref_audio_path:str = req.get("ref_audio_path", "")
streaming_mode:bool = req.get("streaming_mode", False)
media_type:str = req.get("media_type", "wav")
prompt_lang:str = req.get("prompt_lang", "")
text_split_method:str = req.get("text_split_method", "cut5")
if ref_audio_path in [None, ""]:
return JSONResponse(status_code=400, content={"message": "ref_audio_path is required"})
if text in [None, ""]:
return JSONResponse(status_code=400, content={"message": "text is required"})
if (text_lang in [None, ""]) :
return JSONResponse(status_code=400, content={"message": "text_lang is required"})
elif text_lang.lower() not in tts_config.languages:
return JSONResponse(status_code=400, content={"message": f"text_lang: {text_lang} is not supported in version {tts_config.version}"})
if (prompt_lang in [None, ""]) :
return JSONResponse(status_code=400, content={"message": "prompt_lang is required"})
elif prompt_lang.lower() not in tts_config.languages:
return JSONResponse(status_code=400, content={"message": f"prompt_lang: {prompt_lang} is not supported in version {tts_config.version}"})
if media_type not in ["wav", "raw", "ogg", "aac"]:
return JSONResponse(status_code=400, content={"message": f"media_type: {media_type} is not supported"})
elif media_type == "ogg" and not streaming_mode:
return JSONResponse(status_code=400, content={"message": "ogg format is not supported in non-streaming mode"})
if text_split_method not in cut_method_names:
return JSONResponse(status_code=400, content={"message": f"text_split_method:{text_split_method} is not supported"})
return None
async def tts_handle(req:dict):
"""
Text to speech handler.
Args:
req (dict):
{
"text": "", # str.(required) text to be synthesized
"text_lang: "", # str.(required) language of the text to be synthesized
"ref_audio_path": "", # str.(required) reference audio path
"aux_ref_audio_paths": [], # list.(optional) auxiliary reference audio paths for multi-speaker synthesis
"prompt_text": "", # str.(optional) prompt text for the reference audio
"prompt_lang": "", # str.(required) language of the prompt text for the reference audio
"top_k": 5, # int. top k sampling
"top_p": 1, # float. top p sampling
"temperature": 1, # float. temperature for sampling
"text_split_method": "cut5", # str. text split method, see text_segmentation_method.py for details.
"batch_size": 1, # int. batch size for inference
"batch_threshold": 0.75, # float. threshold for batch splitting.
"split_bucket: True, # bool. whether to split the batch into multiple buckets.
"speed_factor":1.0, # float. control the speed of the synthesized audio.
"fragment_interval":0.3, # float. to control the interval of the audio fragment.
"seed": -1, # int. random seed for reproducibility.
"media_type": "wav", # str. media type of the output audio, support "wav", "raw", "ogg", "aac".
"streaming_mode": False, # bool. whether to return a streaming response.
"parallel_infer": True, # bool.(optional) whether to use parallel inference.
"repetition_penalty": 1.35 # float.(optional) repetition penalty for T2S model.
}
returns:
StreamingResponse: audio stream response.
"""
streaming_mode = req.get("streaming_mode", False)
return_fragment = req.get("return_fragment", False)
media_type = req.get("media_type", "wav")
check_res = check_params(req)
if check_res is not None:
return check_res
if streaming_mode or return_fragment:
req["return_fragment"] = True
try:
tts_generator=tts_pipeline.run(req)
if streaming_mode:
def streaming_generator(tts_generator:Generator, media_type:str):
if media_type == "wav":
yield wave_header_chunk()
media_type = "raw"
for sr, chunk in tts_generator:
yield pack_audio(BytesIO(), chunk, sr, media_type).getvalue()
# _media_type = f"audio/{media_type}" if not (streaming_mode and media_type in ["wav", "raw"]) else f"audio/x-{media_type}"
return StreamingResponse(streaming_generator(tts_generator, media_type, ), media_type=f"audio/{media_type}")
else:
sr, audio_data = next(tts_generator)
audio_data = pack_audio(BytesIO(), audio_data, sr, media_type).getvalue()
return Response(audio_data, media_type=f"audio/{media_type}")
except Exception as e:
return JSONResponse(status_code=400, content={"message": f"tts failed", "Exception": str(e)})
@APP.get("/control")
async def control(command: str = None):
if command is None:
return JSONResponse(status_code=400, content={"message": "command is required"})
handle_control(command)
@APP.get("/tts")
async def tts_get_endpoint(
text: str = None,
text_lang: str = None,
ref_audio_path: str = None,
aux_ref_audio_paths:list = None,
prompt_lang: str = None,
prompt_text: str = "",
top_k:int = 5,
top_p:float = 1,
temperature:float = 1,
text_split_method:str = "cut0",
batch_size:int = 1,
batch_threshold:float = 0.75,
split_bucket:bool = True,
speed_factor:float = 1.0,
fragment_interval:float = 0.3,
seed:int = -1,
media_type:str = "wav",
streaming_mode:bool = False,
parallel_infer:bool = True,
repetition_penalty:float = 1.35
):
req = {
"text": text,
"text_lang": text_lang.lower(),
"ref_audio_path": ref_audio_path,
"aux_ref_audio_paths": aux_ref_audio_paths,
"prompt_text": prompt_text,
"prompt_lang": prompt_lang.lower(),
"top_k": top_k,
"top_p": top_p,
"temperature": temperature,
"text_split_method": text_split_method,
"batch_size":int(batch_size),
"batch_threshold":float(batch_threshold),
"speed_factor":float(speed_factor),
"split_bucket":split_bucket,
"fragment_interval":fragment_interval,
"seed":seed,
"media_type":media_type,
"streaming_mode":streaming_mode,
"parallel_infer":parallel_infer,
"repetition_penalty":float(repetition_penalty)
}
return await tts_handle(req)
@APP.post("/tts")
async def tts_post_endpoint(request: TTS_Request):
req = request.dict()
return await tts_handle(req)
@APP.get("/set_refer_audio")
async def set_refer_aduio(refer_audio_path: str = None):
try:
tts_pipeline.set_ref_audio(refer_audio_path)
except Exception as e:
return JSONResponse(status_code=400, content={"message": f"set refer audio failed", "Exception": str(e)})
return JSONResponse(status_code=200, content={"message": "success"})
# @APP.post("/set_refer_audio")
# async def set_refer_aduio_post(audio_file: UploadFile = File(...)):
# try:
# # 检查文件类型,确保是音频文件
# if not audio_file.content_type.startswith("audio/"):
# return JSONResponse(status_code=400, content={"message": "file type is not supported"})
# os.makedirs("uploaded_audio", exist_ok=True)
# save_path = os.path.join("uploaded_audio", audio_file.filename)
# # 保存音频文件到服务器上的一个目录
# with open(save_path , "wb") as buffer:
# buffer.write(await audio_file.read())
# tts_pipeline.set_ref_audio(save_path)
# except Exception as e:
# return JSONResponse(status_code=400, content={"message": f"set refer audio failed", "Exception": str(e)})
# return JSONResponse(status_code=200, content={"message": "success"})
@APP.get("/set_gpt_weights")
async def set_gpt_weights(weights_path: str = None):
try:
if weights_path in ["", None]:
return JSONResponse(status_code=400, content={"message": "gpt weight path is required"})
tts_pipeline.init_t2s_weights(weights_path)
except Exception as e:
return JSONResponse(status_code=400, content={"message": f"change gpt weight failed", "Exception": str(e)})
return JSONResponse(status_code=200, content={"message": "success"})
@APP.get("/set_sovits_weights")
async def set_sovits_weights(weights_path: str = None):
try:
if weights_path in ["", None]:
return JSONResponse(status_code=400, content={"message": "sovits weight path is required"})
tts_pipeline.init_vits_weights(weights_path)
except Exception as e:
return JSONResponse(status_code=400, content={"message": f"change sovits weight failed", "Exception": str(e)})
return JSONResponse(status_code=200, content={"message": "success"})
if __name__ == "__main__":
try:
uvicorn.run(app=APP, host=host, port=port, workers=1)
except Exception as e:
traceback.print_exc()
os.kill(os.getpid(), signal.SIGTERM)
exit(0)

View File

@ -93,7 +93,7 @@
2-uvr5适配高版本librosa https://github.com/RVC-Boss/GPT-SoVITS/pull/403
3-修复uvr5 inf everywhere报错的问题(is_half传参未转换bool导致恒定半精度推理16系显卡会inf) https://github.com/RVC-Boss/GPT-SoVITS/commit/14a285109a521679f8846589c22da8f656a46ad8
3-[修复uvr5 inf everywhere报错的问题(is_half传参未转换bool导致恒定半精度推理16系显卡会inf)](https://github.com/RVC-Boss/GPT-SoVITS/commit/14a285109a521679f8846589c22da8f656a46ad8)
4-优化英文文本前端
@ -183,14 +183,65 @@
4-修复了webui的GPT中文微调没读到bert导致和推理不一致训练太多可能效果还会变差的问题。如果大量数据微调的建议重新微调模型得到质量优化 [#99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a)
### 20240706
todolist
小问题修复
1-中文多音字推理优化(有没有人来测试的欢迎把测试结果写在pr评论区里) https://github.com/RVC-Boss/GPT-SoVITS/pull/488
v2底模训练已经合了下个版本发布就要合了
1-[修正CPU推理默认bs小数](https://github.com/RVC-Boss/GPT-SoVITS/commit/db50670598f0236613eefa6f2d5a23a271d82041)
2-正在尝试解决低音质参考音频导致音质较差的问题v2再试试如果能解决就发了节点暂定高考后吧
2-修复降噪、asr中途遇到异常跳出所有需处理的音频文件的问题 https://github.com/RVC-Boss/GPT-SoVITS/pull/1258 https://github.com/RVC-Boss/GPT-SoVITS/pull/1265 https://github.com/RVC-Boss/GPT-SoVITS/pull/1267
3-修复按标点符号切分时小数会被切分 https://github.com/RVC-Boss/GPT-SoVITS/pull/1253
4-[多卡训练多进程保存逻辑修复](https://github.com/RVC-Boss/GPT-SoVITS/commit/a208698e775155efc95b187b746d153d0f2847ca)
5-移除冗余my_utils https://github.com/RVC-Boss/GPT-SoVITS/pull/1251
重点:
6-倍速推理代码经过验证后推理效果和base完全一致合并进main。使用的代码https://github.com/RVC-Boss/GPT-SoVITS/pull/672 。支持无参考文本模式也倍速。
后面会逐渐验证快速推理分支的推理改动的一致性
### 20240727
1-清理冗余i18n代码 https://github.com/RVC-Boss/GPT-SoVITS/pull/1298
2-修复用户打文件及路径在结尾添加/会导致命令行报错的问题 https://github.com/RVC-Boss/GPT-SoVITS/pull/1299
3-修复GPT训练的step计算逻辑 https://github.com/RVC-Boss/GPT-SoVITS/pull/756
重点:
4-[支持合成语速调节。支持冻结随机性只调节语速,](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2)并将其更新到api.py上https://github.com/RVC-Boss/GPT-SoVITS/pull/1340
### 20240806
1-增加bs-roformer人声伴奏分离模型支持。 https://github.com/RVC-Boss/GPT-SoVITS/pull/1306 https://github.com/RVC-Boss/GPT-SoVITS/pull/1356 [支持fp16推理。](https://github.com/RVC-Boss/GPT-SoVITS/commit/e62e965323a60a76a025bcaa45268c1ddcbcf05c)
2-更好的中文文本前端。 https://github.com/RVC-Boss/GPT-SoVITS/pull/987 https://github.com/RVC-Boss/GPT-SoVITS/pull/1351 https://github.com/RVC-Boss/GPT-SoVITS/pull/1404 优化多音字逻辑v2版本特供。 https://github.com/RVC-Boss/GPT-SoVITS/pull/488
3-自动填充下一步的文件路径 https://github.com/RVC-Boss/GPT-SoVITS/pull/1355
4-增加喂饭逻辑,用户瞎写显卡序号也可以正常运作 [bce451a](https://github.com/RVC-Boss/GPT-SoVITS/commit/bce451a2d1641e581e200297d01f219aeaaf7299) [4c8b761](https://github.com/RVC-Boss/GPT-SoVITS/commit/4c8b7612206536b8b4435997acb69b25d93acb78)
5-增加粤语ASR支持 [8a10147](https://github.com/RVC-Boss/GPT-SoVITS/commit/8a101474b5a4f913b4c94fca2e3ca87d0771bae3)
6-GPT-SoVITS-v2支持
7-计时逻辑优化 https://github.com/RVC-Boss/GPT-SoVITS/pull/1387
### 20240821
1-fast_inference分支合并进mainhttps://github.com/RVC-Boss/GPT-SoVITS/pull/1490
2-支持通过ssml标签优化数字、电话、时间日期等https://github.com/RVC-Boss/GPT-SoVITS/issues/1508
3-api修复优化https://github.com/RVC-Boss/GPT-SoVITS/pull/1503
4-修复了参考音频混合只能上传一条的bug:https://github.com/RVC-Boss/GPT-SoVITS/pull/1422
5-增加了各种数据集检查,若缺失会弹出warning:https://github.com/RVC-Boss/GPT-SoVITS/pull/1422

View File

@ -24,7 +24,7 @@
2. **少样本 TTS** 仅需 1 分钟的训练数据即可微调模型,提升声音相似度和真实感。
3. **跨语言支持:** 支持与训练数据集不同语言的推理,目前支持英语、日语和中文。
3. **跨语言支持:** 支持与训练数据集不同语言的推理,目前支持英语、日语、韩语、粤语和中文。
4. **WebUI 工具:** 集成工具包括声音伴奏分离、自动训练集分割、中文自动语音识别(ASR)和文本标注,协助初学者创建训练数据集和 GPT/SoVITS 模型。
@ -38,7 +38,7 @@ https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-
## 安装
中国地区用户可[点击此处](https://www.codewithgpu.com/i/RVC-Boss/GPT-SoVITS/GPT-SoVITS-Official)使用 AutoDL 云端镜像进行体验。
中国地区用户可[点击此处](https://www.codewithgpu.com/i/RVC-Boss/GPT-SoVITS/GPT-SoVITS-Official)使用 AutoDL 云端镜像进行体验。
### 测试通过的环境
@ -51,11 +51,9 @@ _注: numba==0.56.4 需要 python<3.11_
### Windows
如果你是 Windows 用户(已在 win>=10 上测试),可以下载[0206fix3 整合包](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta-fast-inference-branch.7z?download=true)或[0217fix2 整合包](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta0217fix2.7z?download=true),解压后双击 go-webui.bat 即可启动 GPT-SoVITS-WebUI。
如果你是 Windows 用户(已在 win>=10 上测试),可以下载[下载整合包](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta.7z?download=true),解压后双击 go-webui.bat 即可启动 GPT-SoVITS-WebUI。
中国地区用户可以通过点击链接并选择“下载副本”来下载[0206fix3 整合包](https://www.icloud.com.cn/iclouddrive/075NNKIRC2zqnWn-9rhD63WGA#GPT-SoVITS-beta0206fix3)或[0217fix2 整合包](https://www.icloud.com.cn/iclouddrive/091QHaIbZMDZYQg7IX3g2kCqg#GPT-SoVITS-beta0217fix2)。(如果下载时遇到错误,请退出登录)
_注0206版本的推理速度更快0217新版的推理效果更好可按需选择_
**中国地区的用户可以[在此处下载整合包](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/dkxgpiy9zb96hob4#KTvnO)。**
### Linux
@ -67,36 +65,29 @@ bash install.sh
### macOS
**注:在 Mac 上使用 GPU 训练的模型效果显著低于其他设备训练的模型所以我们暂时使用CPU进行训练。**
**注:在 Mac 上使用 GPU 训练的模型效果显著低于其他设备训练的模型,所以我们暂时使用 CPU 进行训练。**
1. 运行 `xcode-select --install` 安装 Xcode command-line tools。
2. 运行 `brew install ffmpeg` `conda install ffmpeg` 安装 FFmpeg。
2. 运行 `brew install ffmpeg` 安装 FFmpeg。
3. 完成上述步骤后,运行以下的命令来安装本项目:
```bash
conda create -n GPTSoVits python=3.9
conda activate GPTSoVits
pip install -r requirements.txt
```
### 手动安装
#### 安装依赖
```bash
pip install -r requirements.txt
```
#### 安装 FFmpeg
##### Conda 使用者
##### Conda 用户
```bash
conda install ffmpeg
```
##### Ubuntu/Debian 使用者
##### Ubuntu/Debian 用户
```bash
sudo apt install ffmpeg
@ -104,10 +95,23 @@ sudo apt install libsox-dev
conda install -c conda-forge 'ffmpeg<7'
```
##### Windows 使用者
##### Windows 用户
下载并将 [ffmpeg.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe) 和 [ffprobe.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe) 放置在 GPT-SoVITS 根目录下。
安装 [Visual Studio 2017](https://aka.ms/vs/17/release/vc_redist.x86.exe) 环境(仅限韩语TTS)
##### MacOS 用户
```bash
brew install ffmpeg
```
#### 安装依赖
```bash
pip install -r requirements.txt
```
### 在 Docker 中使用
#### docker-compose.yaml 设置
@ -137,25 +141,17 @@ docker run --rm -it --gpus=all --env=is_half=False --volume=G:\GPT-SoVITS-Docker
## 预训练模型
从 [GPT-SoVITS Models](https://huggingface.co/lj1995/GPT-SoVITS) 下载预训练模型,并将它们放置在 `GPT_SoVITS\pretrained_models` 中。
**中国地区的用户可以[在此处下载这些模型](https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/dkxgpiy9zb96hob4#nVNhX)。**
对于 UVR5人声/伴奏分离和混响移除,附加),从 [UVR5 Weights](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights) 下载模型,并将它们放置在 `tools/uvr5/uvr5_weights` 中。
1. 从 [GPT-SoVITS Models](https://huggingface.co/lj1995/GPT-SoVITS) 下载预训练模型,并将其放置在 `GPT_SoVITS/pretrained_models` 目录中。
中国地区用户可以进入以下链接并点击“下载副本”下载以上两个模型:
2. 从 [G2PWModel_1.1.zip](https://paddlespeech.bj.bcebos.com/Parakeet/released_models/g2p/G2PWModel_1.1.zip) 下载模型,解压并重命名为 `G2PWModel`,然后将其放置在 `GPT_SoVITS/text` 目录中。仅限中文TTS
- [GPT-SoVITS Models](https://www.icloud.com.cn/iclouddrive/056y_Xog_HXpALuVUjscIwTtg#GPT-SoVITS_Models)
3. 对于 UVR5人声/伴奏分离和混响移除,额外功能),从 [UVR5 Weights](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights) 下载模型,并将其放置在 `tools/uvr5/uvr5_weights` 目录中。
- [UVR5 Weights](https://www.icloud.com.cn/iclouddrive/0bekRKDiJXboFhbfm3lM2fVbA#UVR5_Weights)
对于中文自动语音识别(附加),从 [Damo ASR Model](https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/files), [Damo VAD Model](https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/files), 和 [Damo Punc Model](https://modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files) 下载模型,并将它们放置在 `tools/asr/models` 中。
对于英语与日语自动语音识别(附加),从 [Faster Whisper Large V3](https://huggingface.co/Systran/faster-whisper-large-v3) 下载模型,并将它们放置在 `tools/asr/models` 中。 此外,[其他模型](https://huggingface.co/Systran)可能具有类似效果,但占用更小的磁盘空间。
中国地区用户可以通过以下链接下载:
- [Faster Whisper Large V3](https://www.icloud.com/iclouddrive/0c4pQxFs7oWyVU1iMTq2DbmLA#faster-whisper-large-v3)(点击“下载副本”)
- [Faster Whisper Large V3](https://hf-mirror.com/Systran/faster-whisper-large-v3)(Hugging Face镜像站)
4. 对于中文 ASR额外功能从 [Damo ASR Model](https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/files)、[Damo VAD Model](https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/files) 和 [Damo Punc Model](https://modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files) 下载模型,并将它们放置在 `tools/asr/models` 目录中。
5. 对于英语或日语 ASR额外功能从 [Faster Whisper Large V3](https://huggingface.co/Systran/faster-whisper-large-v3) 下载模型,并将其放置在 `tools/asr/models` 目录中。此外,[其他模型](https://huggingface.co/Systran) 可能具有类似效果且占用更少的磁盘空间。
## 数据集格式
@ -167,34 +163,116 @@ vocal_path|speaker_name|language|text
语言字典:
- 'zh': Chinese
- 'ja': Japanese
- 'en': English
- 'zh': 中文
- 'ja': 日语
- 'en': 英语
- 'ko': 韩语
- 'yue': 粤语
示例:
```
D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.
D:\GPT-SoVITS\xxx/xxx.wav|xxx|zh|我爱玩原神。
```
## 微调与推理
### 打开WebUI
#### 整合包用户
双击`go-webui.bat`或者使用`go-webui.ps1`
若想使用V1,则双击`go-webui-v1.bat`或者使用`go-webui-v1.ps1`
#### 其他
```bash
python webui.py <language(optional)>
```
若想使用V1,则
```bash
python webui.py v1 <language(optional)>
```
或者在webUI内动态切换
### 微调
#### 现已支持自动填充路径
1.填入训练音频路径
2.切割音频
3.进行降噪(可选)
4.进行ASR
5.校对标注
6.前往下一个窗口,点击训练
### 打开推理WebUI
#### 整合包用户
双击 `go-webui.bat` 或者使用 `go-webui.ps1` ,然后在 `1-GPT-SoVITS-TTS/1C-推理` 中打开推理webUI
#### 其他
```bash
python GPT_SoVITS/inference_webui.py <language(optional)>
```
或者
```bash
python webui.py
```
然后在 `1-GPT-SoVITS-TTS/1C-推理` 中打开推理webUI
## V2发布说明
新特性:
1. 支持韩语及粤语
2. 更好的文本前端
3. 底模由2k小时扩展至5k小时
4. 对低音质参考音频(尤其是来源于网络的高频严重缺失、听着很闷的音频)合成出来音质更好
详见[wiki](https://github.com/RVC-Boss/GPT-SoVITS/wiki/GPT%E2%80%90SoVITS%E2%80%90v2%E2%80%90features-(%E6%96%B0%E7%89%B9%E6%80%A7))
从v1环境迁移至v2
1. 需要pip安装requirements.txt更新环境
2. 需要克隆github上的最新代码
3. 需要从[huggingface](https://huggingface.co/lj1995/GPT-SoVITS/tree/main/gsv-v2final-pretrained) 下载预训练模型文件放到GPT_SoVITS\pretrained_models\gsv-v2final-pretrained下
中文额外需要下载[G2PWModel_1.1.zip](https://paddlespeech.bj.bcebos.com/Parakeet/released_models/g2p/G2PWModel_1.1.zip)下载G2PW模型,解压并重命名为`G2PWModel`,将其放到`GPT_SoVITS/text`目录下)
## 待办事项清单
- [ ] **高优先级:**
- [x] **高优先级:**
- [x] 日语和英语的本地化。
- [ ] 用户指南。
- [x] 用户指南。
- [x] 日语和英语数据集微调训练。
- [ ] **功能:**
- [ ] 零样本声音转换5 秒)/ 少样本声音转换1 分钟)。
- [ ] TTS 语速控制。
- [ ] 增强的 TTS 情感控制。
- [x] 零样本声音转换5 秒)/ 少样本声音转换1 分钟)。
- [x] TTS 语速控制。
- [ ] ~~增强的 TTS 情感控制。~~
- [ ] 尝试将 SoVITS 令牌输入更改为词汇的概率分布。
- [ ] 改进英语和日语文本前端。
- [x] 改进英语和日语文本前端。
- [ ] 开发体积小和更大的 TTS 模型。
- [x] Colab 脚本。
- [ ] 扩展训练数据集(从 2k 小时到 10k 小时)。
- [ ] 更好的 sovits 基础模型(增强的音频质量)。
- [x] 更好的 sovits 基础模型(增强的音频质量)。
- [ ] 模型混合。
## (附加)命令行运行方式
@ -202,10 +280,10 @@ D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.
````
python tools/uvr5/webui.py "<infer_device>" <is_half> <webui_port_uvr5>
````
如果打不开浏览器请按照下面的格式进行UVR处理这是使用mdxnet进行音频处理的方式
<!-- 如果打不开浏览器请按照下面的格式进行UVR处理这是使用mdxnet进行音频处理的方式
````
python mdxnet.py --model --input_root --output_vocal --output_ins --agg_level --format --device --is_half_precision
````
```` -->
这是使用命令行完成数据集的音频切分的方式
````
python audio_slicer.py \
@ -223,9 +301,9 @@ python tools/asr/funasr_asr.py -i <input> -o <output>
通过Faster_Whisper进行ASR处理除中文之外的ASR标记
没有进度条GPU性能可能会导致时间延迟
````
python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language>
````
```
python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language> -p <precision>
```
启用自定义列表保存路径
## 致谢
@ -246,6 +324,9 @@ python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language>
### 推理用文本前端
- [paddlespeech zh_normalization](https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/paddlespeech/t2s/frontend/zh_normalization)
- [LangSegment](https://github.com/juntaosun/LangSegment)
- [g2pW](https://github.com/GitYCC/g2pW)
- [pypinyin-g2pW](https://github.com/mozillazg/pypinyin-g2pW)
- [paddlespeech g2pw](https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/paddlespeech/t2s/frontend/g2pw)
### WebUI 工具
- [ultimatevocalremovergui](https://github.com/Anjok07/ultimatevocalremovergui)
- [audio-slicer](https://github.com/openvpi/audio-slicer)
@ -255,6 +336,8 @@ python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language>
- [faster-whisper](https://github.com/SYSTRAN/faster-whisper)
- [FunASR](https://github.com/alibaba-damo-academy/FunASR)
感谢 @Naozumi520 提供粤语训练集,并在粤语相关知识方面给予指导。
## 感谢所有贡献者的努力
<a href="https://github.com/RVC-Boss/GPT-SoVITS/graphs/contributors" target="_blank">

178
docs/en/Changelog_EN.md Normal file
View File

@ -0,0 +1,178 @@
### 20240121 Update
1. Added `is_share` to the `config`. In scenarios like Colab, this can be set to `True` to map the WebUI to the public network.
2. Added English system translation support to WebUI.
3. The `cmd-asr` automatically detects if the FunASR model is included; if not found in the default directory, it will be downloaded from ModelScope.
4. Attempted to fix the SoVITS training ZeroDivisionError reported in [Issue 79](https://github.com/RVC-Boss/GPT-SoVITS/issues/79) by filtering samples with zero length, etc.
5. Cleaned up cached audio files and other files in the `TEMP` folder.
6. Significantly reduced the issue of synthesized audio containing the end of the reference audio.
### 20240122 Update
1. Fixed the issue where excessively short output files resulted in repeating the reference audio.
2. Tested native support for English and Japanese training (Japanese training requires the root directory to be free of non-English special characters).
3. Improved audio path checking. If an attempt is made to read from an incorrect input path, it will report that the path does not exist instead of an ffmpeg error.
### 20240123 Update
1. Resolved the issue where Hubert extraction caused NaN errors, leading to SoVITS/GPT training ZeroDivisionError.
2. Added support for quick model switching in the inference WebUI.
3. Optimized the model file sorting logic.
4. Replaced `jieba` with `jieba_fast` for Chinese word segmentation.
### 20240126 Update
1. Added support for Chinese-English mixed and Japanese-English mixed output texts.
2. Added an optional segmentation mode for output.
3. Fixed the issue of UVR5 reading and automatically jumping out of directories.
4. Fixed multiple newline issues causing inference errors.
5. Removed redundant logs in the inference WebUI.
6. Supported training and inference on Mac.
7. Automatically forced single precision for GPU that do not support half precision; enforced single precision under CPU inference.
### 20240128 Update
1. Fixed the issue with the pronunciation of numbers converting to Chinese characters.
2. Fixed the issue of swallowing a few characters at the beginning of sentences.
3. Excluded unreasonable reference audio lengths by setting restrictions.
4. Fixed the issue where GPT training did not save checkpoints.
5. Completed model downloading process in the Dockerfile.
### 20240129 Update
1. Changed training configurations to single precision for GPUs like the 16 series, which have issues with half precision training.
2. Tested and updated the available Colab version.
3. Fixed the issue of git cloning the ModelScope FunASR repository with older versions of FunASR causing interface misalignment errors.
### 20240130 Update
1. Automatically removed double quotes from all path-related entries to prevent errors from novice users copying paths with double quotes.
2. Fixed issues with splitting Chinese and English punctuation and added punctuation at the beginning and end of sentences.
3. Added splitting by punctuation.
### 20240201 Update
1. Fixed the UVR5 format reading error causing separation failures.
2. Supported automatic segmentation and language recognition for mixed Chinese-Japanese-English texts.
### 20240202 Update
1. Fixed the issue where an ASR path ending with `/` caused an error in saving the filename.
2. [PR 377](https://github.com/RVC-Boss/GPT-SoVITS/pull/377) introduced PaddleSpeech's Normalizer to fix issues like reading "xx.xx%" (percent symbols) and "元/吨" being read as "元吨" instead of "元每吨", and fixed underscore errors.
### 20240207 Update
1. Corrected language parameter confusion causing decreased Chinese inference quality reported in [Issue 391](https://github.com/RVC-Boss/GPT-SoVITS/issues/391).
2. [PR 403](https://github.com/RVC-Boss/GPT-SoVITS/pull/403) adapted UVR5 to higher versions of librosa.
3. [Commit 14a2851](https://github.com/RVC-Boss/GPT-SoVITS/commit/14a285109a521679f8846589c22da8f656a46ad8) fixed UVR5 inf everywhere error caused by `is_half` parameter not converting to boolean, resulting in constant half precision inference, which caused `inf` on 16 series GPUs.
4. Optimized English text frontend.
5. Fixed Gradio dependencies.
6. Supported automatic reading of `.list` full paths if the root directory is left blank during dataset preparation.
7. Integrated Faster Whisper ASR for Japanese and English.
### 20240208 Update
1. [Commit 59f35ad](https://github.com/RVC-Boss/GPT-SoVITS/commit/59f35adad85815df27e9c6b33d420f5ebfd8376b) attempted to fix GPT training hang on Windows 10 1909 and [Issue 232](https://github.com/RVC-Boss/GPT-SoVITS/issues/232) (Traditional Chinese System Language).
### 20240212 Update
1. Optimized logic for Faster Whisper and FunASR, switching Faster Whisper to mirror downloads to avoid issues with Hugging Face connections.
2. [PR 457](https://github.com/RVC-Boss/GPT-SoVITS/pull/457) enabled experimental DPO Loss training option to mitigate GPT repetition and missing characters by constructing negative samples during training and made several inference parameters available in the inference WebUI.
### 20240214 Update
1. Supported Chinese experiment names in training (previously caused errors).
2. Made DPO training an optional feature instead of mandatory. If selected, the batch size is automatically halved. Fixed issues with new parameters not being passed in the inference WebUI.
### 20240216 Update
1. Supported input without reference text.
2. Fixed bugs in Chinese frontend reported in [Issue 475](https://github.com/RVC-Boss/GPT-SoVITS/issues/475).
### 20240221 Update
1. Added a noise reduction option during data processing (noise reduction leaves only 16kHz sampling rate; use only if the background noise is significant).
2. [PR 559](https://github.com/RVC-Boss/GPT-SoVITS/pull/559), [PR 556](https://github.com/RVC-Boss/GPT-SoVITS/pull/556), [PR 532](https://github.com/RVC-Boss/GPT-SoVITS/pull/532), [PR 507](https://github.com/RVC-Boss/GPT-SoVITS/pull/507), [PR 509](https://github.com/RVC-Boss/GPT-SoVITS/pull/509) optimized Chinese and Japanese frontend processing.
3. Switched Mac CPU inference to use CPU instead of MPS for faster performance.
4. Fixed Colab public URL issue.
### 20240306 Update
1. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) accelerated inference by 50% (tested on RTX3090 + PyTorch 2.2.1 + CU11.8 + Win10 + Py39) .
2. No longer requires downloading the Chinese FunASR model first when using Faster Whisper non-Chinese ASR.
3. [PR 610](https://github.com/RVC-Boss/GPT-SoVITS/pull/610) fixed UVR5 reverb removal model where the setting was reversed.
4. [PR 675](https://github.com/RVC-Boss/GPT-SoVITS/pull/675) enabled automatic CPU inference for Faster Whisper if no CUDA is available.
5. [PR 573](https://github.com/RVC-Boss/GPT-SoVITS/pull/573) modified `is_half` check to ensure proper CPU inference on Mac.
### 202403/202404/202405 Update
#### Minor Fixes:
1. Fixed issues with the no-reference text mode.
2. Optimized the Chinese and English text frontend.
3. Improved API format.
4. Fixed CMD format issues.
5. Added error prompts for unsupported languages during training data processing.
6. Fixed the bug in Hubert extraction.
#### Major Fixes:
1. Fixed the issue of SoVITS training without freezing VQ (which could cause quality degradation).
2. Added a quick inference branch.
### 20240610 Update
#### Minor Fixes:
1. [PR 1168](https://github.com/RVC-Boss/GPT-SoVITS/pull/1168) & [PR 1169](https://github.com/RVC-Boss/GPT-SoVITS/pull/1169) improved the logic for pure punctuation and multi-punctuation text input.
2. [Commit 501a74a](https://github.com/RVC-Boss/GPT-SoVITS/commit/501a74ae96789a26b48932babed5eb4e9483a232) fixed CMD format for MDXNet de-reverb in UVR5, supporting paths with spaces.
3. [PR 1159](https://github.com/RVC-Boss/GPT-SoVITS/pull/1159) fixed progress bar logic for SoVITS training in `s2_train.py`.
#### Major Fixes:
4. [Commit 99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) fixed the issue of WebUI's GPT fine-tuning not reading BERT feature of Chinese input texts, causing inconsistency with inference and potential quality degradation.
**Caution: If you have previously fine-tuned with a large amount of data, it is recommended to retune the model to improve quality.**
### 20240706 Update
#### Minor Fixes:
1. [Commit 1250670](https://github.com/RVC-Boss/GPT-SoVITS/commit/db50670598f0236613eefa6f2d5a23a271d82041) fixed default batch size decimal issue in CPU inference.
2. [PR 1258](https://github.com/RVC-Boss/GPT-SoVITS/pull/1258), [PR 1265](https://github.com/RVC-Boss/GPT-SoVITS/pull/1265), [PR 1267](https://github.com/RVC-Boss/GPT-SoVITS/pull/1267) fixed issues where denoising or ASR encountering exceptions would exit all pending audio files.
3. [PR 1253](https://github.com/RVC-Boss/GPT-SoVITS/pull/1253) fixed the issue of splitting decimals when splitting by punctuation.
4. [Commit a208698](https://github.com/RVC-Boss/GPT-SoVITS/commit/a208698e775155efc95b187b746d153d0f2847ca) fixed multi-process save logic for multi-GPU training.
5. [PR 1251](https://github.com/RVC-Boss/GPT-SoVITS/pull/1251) removed redundant `my_utils`.
#### Major Fixes:
6. The accelerated inference code from [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) has been validated and merged into the main branch, ensuring consistent inference effects with the base.
It also supports accelerated inference in no-reference text mode.
**Future updates will continue to verify the consistency of changes in the `fast_inference` branch**.
### 20240727 Update
#### Minor Fixes:
1. [PR 1298](https://github.com/RVC-Boss/GPT-SoVITS/pull/1298) cleaned up redundant i18n code.
2. [PR 1299](https://github.com/RVC-Boss/GPT-SoVITS/pull/1299) fixed issues where trailing slashes in user file paths caused command line errors.
3. [PR 756](https://github.com/RVC-Boss/GPT-SoVITS/pull/756) fixed the step calculation logic in GPT training.
#### Major Fixes:
4. [Commit 9588a3c](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2) supported speech rate adjustment for synthesis.
Enabled freezing randomness while only adjusting the speech rate.
### 20240806 Update
1. [PR 1306](https://github.com/RVC-Boss/GPT-SoVITS/pull/1306), [PR 1356](https://github.com/RVC-Boss/GPT-SoVITS/pull/1356) Added support for the BS RoFormer vocal accompaniment separation model. [Commit e62e965](https://github.com/RVC-Boss/GPT-SoVITS/commit/e62e965323a60a76a025bcaa45268c1ddcbcf05c) Enabled FP16 inference.
2. Improved Chinese text frontend.
- [PR 488](https://github.com/RVC-Boss/GPT-SoVITS/pull/488) added support for polyphonic characters (v2 only);
- [PR 987](https://github.com/RVC-Boss/GPT-SoVITS/pull/987) added quantifier;
- [PR 1351](https://github.com/RVC-Boss/GPT-SoVITS/pull/1351) supports arithmetic and basic math formulas;
- [PR 1404](https://github.com/RVC-Boss/GPT-SoVITS/pull/1404) fixed mixed text errors.
3. [PR 1355](https://github.com/RVC-Boss/GPT-SoVITS/pull/1356) automatically filled in the paths when processing audio in the WebUI.
4. [Commit bce451a](https://github.com/RVC-Boss/GPT-SoVITS/commit/bce451a2d1641e581e200297d01f219aeaaf7299), [Commit 4c8b761](https://github.com/RVC-Boss/GPT-SoVITS/commit/4c8b7612206536b8b4435997acb69b25d93acb78) optimized GPU recognition logic.
5. [Commit 8a10147](https://github.com/RVC-Boss/GPT-SoVITS/commit/8a101474b5a4f913b4c94fca2e3ca87d0771bae3) added support for Cantonese ASR.
6. Added support for GPT-SoVITS v2.
7. [PR 1387](https://github.com/RVC-Boss/GPT-SoVITS/pull/1387) optimized timing logic.

View File

@ -1,85 +1,177 @@
### 20240121 更新
1. `config``is_share`を追加し、Colab などの環境でこれを`True`に設定すると、webui を公共ネットワークにマッピングできます。
2. WebUI に英語システムの英語翻訳を追加しました。
3. `cmd-asr`は damo モデルが既に含まれているかどうかを自動的に確認し、デフォルトのパスにない場合は modelscope から自動的にダウンロードします。
3. `cmd-asr`は FunASR モデルが既に含まれているかどうかを自動的に確認し、デフォルトのパスにない場合は modelscope から自動的にダウンロードします。
4. [SoVITS 训练报错 ZeroDivisionError](https://github.com/RVC-Boss/GPT-SoVITS/issues/79) 修復を試みます(長さ 0 のサンプルをフィルタリングなど)
5. TEMP ファイルフォルダからオーディオやその他のファイルをクリーンアップして最適化します。
6. 合成オーディオがリファレンスオーディオの終わりを含む問題を大幅に改善しました。
### 20240122 更新
1. 短すぎる出力ファイルが重複したリファレンスオーディオを返す問題を修正しました。
2. 英語-日本語学習がスムーズに進む QA を完了しました。(ただし、日本語学習はルートディレクトリに英語以外の文字が含まれていない必要があります)
3. オーディオパスをチェックします。間違ったパスを読み取ろうとすると、「パスが存在しません」というエラーメッセージが返されます。これは ffmpeg モジュールのエラーではありません。
### 20240123 更新
1. hubert から nan 抽出による SoVITS/GPT 学習中の ZeroDivisionError 関連エラーを修正しました。
2. 推論インターフェースでモデルを素早く切り替えることができるようにサポートしました。
3. モデルファイルのソートロジックを最適化しました。
4. 中国語の分析に`jieba_fast``jieba`に置き換えました。
4. 中国語の分析に `jieba_fast``jieba` に置き換えました。
### 20240126 更新
1. 中国語と英語、日本語と英語が混在した出力テキストをサポートします。
2. 出力で選択的な分割モードをサポートします。
3. uvr5 がディレクトリを読み取り、自動的に終了する問題を修正しました。
4. 複数の改行による推論エラーを修正しました。
5. 推論インターフェースから不要なログを削除しました。
6. MacOS での学習と推論をサポートします。
7. 半精度をサポートしていないカードを自動的に識別して単精度を強制し、CPU 推論では単精度を強制します。
### 20240128 更新
1. 数字を漢字で読む問題を修正しました。
2. 文章の先頭の一部の単語が欠落する問題を修正しました。
3. 不適切な長さのリファレンスオーディオを制限しました。
4. GPT 学習時の ckpt が保存されない問題を修正しました。
5. Dockerfile のモデルダウンロードプロセスを改善しました。
### 20240129 更新
1. 16 系などの半精度学習に問題があるカードは、学習構成を単精度学習に変更しました。
2. Colab でも使用可能なバージョンをテストして更新しました。
3. `git clone modelscope funasr`リポジトリと古いバージョンの funasr を使用してインターフェースが一致しないエラーを修正しました。
3. ModelScope FunASR リポジトリの古いバージョンで git クローンを行う際のインターフェース不整合エラーの問題を修正しました。
### 20240130 更新
1. パスと関連する文字列を解析して、二重引用符を自動的に削除します。また、パスをコピーする場合、二重引用符が含まれていてもエラーが発生しません。
2. 中国語と英語、日本語と英語の混合出力をサポートします。
3. 出力で選択的な分割モードをサポートします。
todolist
### 20240201 更新
1. 同音異義語(中国語)の推論の最適化
1. UVR5 形式の読み取りエラーによる分離失敗を修正しました。
2. 中国語・日本語・英語の混合テキストに対する自動分割と言語認識をサポートしました。
2. 英語大文字認識と英語ハイフン [問題](https://github.com/RVC-Boss/GPT-SoVITS/issues/271)
### 20240202 更新
3. テキストに%記号が含まれているとエラーが発生し、推論が不可能です。また、「元/吨」が「元吨」ではなく「元每吨」と読まれるなどの問題があります。このような問題を解決するには、どのライブラリを使用する必要があり、それに対する改善を検討しています。
1. ASRパスが `/` で終わることによるファイル名保存エラーの問題を修正しました。
2. [PR 377](https://github.com/RVC-Boss/GPT-SoVITS/pull/377) で PaddleSpeech の Normalizer を導入し、"xx.xx%"(パーセント記号)の読み取りや"元/吨"が"元吨"ではなく"元每吨"と読まれる問題、アンダースコアエラーを修正しました。
4. 中-日-英、中-英、日-英を含む 5 つの言語をサポートすることを目標にしています。
### 20240207 更新
1. [Issue 391](https://github.com/RVC-Boss/GPT-SoVITS/issues/391) で報告された中国語推論品質の低下を引き起こした言語パラメータの混乱を修正しました。
2. [PR 403](https://github.com/RVC-Boss/GPT-SoVITS/pull/403) で UVR5 を librosa のより高いバージョンに適応させました。
3. [Commit 14a2851](https://github.com/RVC-Boss/GPT-SoVITS/commit/14a285109a521679f8846589c22da8f656a46ad8) で、`is_half` パラメータがブール値に変換されず、常に半精度推論が行われ、16 シリーズの GPU で `inf` が発生する UVR5 inf everywhereエラーを修正しました。
4. 英語テキストフロントエンドを最適化しました。
5. Gradio の依存関係を修正しました。
6. データセット準備中にルートディレクトリが空白の場合、`.list` フルパスの自動読み取りをサポートしました。
7. 日本語と英語のために Faster Whisper ASR を統合しました。
### 20240208 更新
1. [Commit 59f35ad](https://github.com/RVC-Boss/GPT-SoVITS/commit/59f35adad85815df27e9c6b33d420f5ebfd8376b) で、Windows 10 1909 および [Issue 232](https://github.com/RVC-Boss/GPT-SoVITS/issues/232)(繁体字中国語システム言語)での GPT トレーニングのハングを修正する試みを行いました。
### 20240212 更新
1. Faster Whisper と FunASR のロジックを最適化し、Faster Whisper をミラーダウンロードに切り替えて Hugging Face の接続問題を回避しました。
2. [PR 457](https://github.com/RVC-Boss/GPT-SoVITS/pull/457) で、GPT の繰り返しと文字欠落を軽減するために、トレーニング中に負のサンプルを構築する実験的なDPO Lossトレーニングオプションを有効にし、いくつかの推論パラメータを推論WebUIで利用可能にしました。
### 20240214 更新
1. トレーニングで中国語の実験名をサポート(以前はエラーが発生していました)。
2. DPOトレーニングを必須ではなくオプション機能に変更。選択された場合、バッチサイズは自動的に半分になります。推論 WebUI で新しいパラメータが渡されない問題を修正しました。
### 20240216 更新
1. 参照テキストなしでの入力をサポート。
2. [Issue 475](https://github.com/RVC-Boss/GPT-SoVITS/issues/475) で報告された中国語フロントエンドのバグを修正しました。
### 20240221 更新
1. データ処理中のイズ低減オプションを追加イズ低減は16kHzサンプリングレートのみを残します背景イズが大きい場合にのみ使用してください
2. [PR 559](https://github.com/RVC-Boss/GPT-SoVITS/pull/559), [PR 556](https://github.com/RVC-Boss/GPT-SoVITS/pull/556), [PR 532](https://github.com/RVC-Boss/GPT-SoVITS/pull/532), [PR 507](https://github.com/RVC-Boss/GPT-SoVITS/pull/507), [PR 509](https://github.com/RVC-Boss/GPT-SoVITS/pull/509) で中国語と日本語のフロントエンド処理を最適化しました。
3. Mac CPU 推論を MPS ではなく CPU を使用するように切り替え、パフォーマンスを向上させました。
4. Colab のパブリック URL の問題を修正しました。
### 20240306 更新
1. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) で推論速度を50%向上させましたRTX3090 + PyTorch 2.2.1 + CU11.8 + Win10 + Py39 でテスト)。
2. Faster Whisper非中国語ASRを使用する際、最初に中国語FunASRモデルをダウンロードする必要がなくなりました。
3. [PR 610](https://github.com/RVC-Boss/GPT-SoVITS/pull/610) で UVR5 残響除去モデルの設定が逆になっていた問題を修正しました。
4. [PR 675](https://github.com/RVC-Boss/GPT-SoVITS/pull/675) で、CUDA が利用できない場合に Faster Whisper の自動 CPU 推論を有効にしました。
5. [PR 573](https://github.com/RVC-Boss/GPT-SoVITS/pull/573) で、Mac での適切なCPU推論を確保するために `is_half` チェックを修正しました。
### 202403/202404/202405 更新
#### マイナー修正:
1. 参照テキストなしモードの問題を修正しました。
2. 中国語と英語のテキストフロントエンドを最適化しました。
3. API フォーマットを改善しました。
4. CMD フォーマットの問題を修正しました。
5. トレーニングデータ処理中のサポートされていない言語に対するエラープロンプトを追加しました。
6. Hubert 抽出のバグを修正しました。
#### メジャー修正:
1. SoVITS トレーニングで VQ を凍結せずに品質低下を引き起こす問題を修正しました。
2. クイック推論ブランチを追加しました。
### 20240610 更新
#### マイナー修正:
1. [PR 1168](https://github.com/RVC-Boss/GPT-SoVITS/pull/1168) & [PR 1169](https://github.com/RVC-Boss/GPT-SoVITS/pull/1169)で、純粋な句読点および複数の句読点を含むテキスト入力のロジックを改善しました。
2. [Commit 501a74a](https://github.com/RVC-Boss/GPT-SoVITS/commit/501a74ae96789a26b48932babed5eb4e9483a232)で、UVR5 の MDXNet デリバブをサポートする CMD フォーマットを修正し、スペースを含むパスをサポートしました。
3. [PR 1159](https://github.com/RVC-Boss/GPT-SoVITS/pull/1159)で、`s2_train.py` の SoVITS トレーニングのプログレスバーロジックを修正しました。
#### メジャー修正:
4. [Commit 99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) で、WebUI の GPT ファインチューニングが中国語入力テキストの BERT 特徴を読み取らず、推論との不一致や品質低下の可能性を修正しました。
**注意: 以前に大量のデータでファインチューニングを行った場合、品質向上のためにモデルを再調整することをお勧めします。**
### 20240706 更新
#### マイナー修正:
1. [Commit 1250670](https://github.com/RVC-Boss/GPT-SoVITS/commit/db50670598f0236613eefa6f2d5a23a271d82041) で、CPU 推論のデフォルトバッチサイズの小数点問題を修正しました。
2. [PR 1258](https://github.com/RVC-Boss/GPT-SoVITS/pull/1258), [PR 1265](https://github.com/RVC-Boss/GPT-SoVITS/pull/1265), [PR 1267](https://github.com/RVC-Boss/GPT-SoVITS/pull/1267) で、イズ除去またはASRが例外に遭遇した場合に、すべての保留中のオーディオファイルが終了する問題を修正しました。
3. [PR 1253](https://github.com/RVC-Boss/GPT-SoVITS/pull/1253) で、句読点で分割する際の小数点分割の問題を修正しました。
4. [Commit a208698](https://github.com/RVC-Boss/GPT-SoVITS/commit/a208698e775155efc95b187b746d153d0f2847ca) で、マルチGPUトレーニングのマルチプロセス保存ロジックを修正しました。
5. [PR 1251](https://github.com/RVC-Boss/GPT-SoVITS/pull/1251) で、不要な `my_utils` を削除しました。
#### メジャー修正:
6. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) の加速推論コードが検証され、メインブランチにマージされ、ベースとの推論効果の一貫性が確保されました。
また、参照テキストなしモードでの加速推論もサポートしています。
**今後の更新では、`fast_inference`ブランチの変更の一貫性を継続的に検証します**。
### 20240727 更新
#### マイナー修正:
1. [PR 1298](https://github.com/RVC-Boss/GPT-SoVITS/pull/1298) で、不要な i18n コードをクリーンアップしました。
2. [PR 1299](https://github.com/RVC-Boss/GPT-SoVITS/pull/1299) で、ユーザーファイルパスの末尾のスラッシュがコマンドラインエラーを引き起こす問題を修正しました。
3. [PR 756](https://github.com/RVC-Boss/GPT-SoVITS/pull/756) で、GPT トレーニングのステップ計算ロジックを修正しました。
#### メジャー修正:
4. [Commit 9588a3c](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2) で、合成のスピーチレート調整をサポートしました。
スピーチレートのみを調整しながらランダム性を固定できるようになりました。
### 20240806 更新
1. [PR 1306](https://github.com/RVC-Boss/GPT-SoVITS/pull/1306)、[PR 1356](https://github.com/RVC-Boss/GPT-SoVITS/pull/1356) BS RoFormer ボーカルアコムパニ分離モデルのサポートを追加しました。[Commit e62e965](https://github.com/RVC-Boss/GPT-SoVITS/commit/e62e965323a60a76a025bcaa45268c1ddcbcf05c) FP16 推論を有効にしました。
2. 中国語テキストフロントエンドを改善しました。
- [PR 488](https://github.com/RVC-Boss/GPT-SoVITS/pull/488) 多音字のサポートを追加v2 のみ);
- [PR 987](https://github.com/RVC-Boss/GPT-SoVITS/pull/987) 量詞を追加;
- [PR 1351](https://github.com/RVC-Boss/GPT-SoVITS/pull/1351) 四則演算と基本数式のサポート;
- [PR 1404](https://github.com/RVC-Boss/GPT-SoVITS/pull/1404) 混合テキストエラーを修正。
3. [PR 1355](https://github.com/RVC-Boss/GPT-SoVITS/pull/1356) WebUIでオーディオ処理時にパスを自動入力しました。
4. [Commit bce451a](https://github.com/RVC-Boss/GPT-SoVITS/commit/bce451a2d1641e581e200297d01f219aeaaf7299), [Commit 4c8b761](https://github.com/RVC-Boss/GPT-SoVITS/commit/4c8b7612206536b8b4435997acb69b25d93acb78) GPU 認識ロジックを最適化しました。
5. [Commit 8a10147](https://github.com/RVC-Boss/GPT-SoVITS/commit/8a101474b5a4f913b4c94fca2e3ca87d0771bae3) 広東語ASRのサポートを追加しました。
6. GPT-SoVITS v2 のサポートを追加しました。
7. [PR 1387](https://github.com/RVC-Boss/GPT-SoVITS/pull/1387) タイミングロジックを最適化しました。

View File

@ -24,7 +24,7 @@
2. **数ショット TTS:** わずか 1 分間のトレーニングデータでモデルを微調整し、音声の類似性とリアリズムを向上。
3. **多言語サポート:** 現在、英語、日本語、中国語をサポートしています。
3. **多言語サポート:** 現在、英語、日本語、韓語、粵語、中国語をサポートしています。
4. **WebUI ツール:** 統合されたツールには、音声伴奏の分離、トレーニングセットの自動セグメンテーション、中国語 ASR、テキストラベリングが含まれ、初心者がトレーニングデータセットと GPT/SoVITS モデルを作成するのを支援します。
@ -49,9 +49,7 @@ _注記: numba==0.56.4 は py<3.11 が必要です_
### Windows
Windows ユーザーの場合win>=10 でテスト済み)、[0206fix3 パッケージ](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta-fast-inference-branch.7z?download=true) または [0217fix2 パッケージ](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta0217fix2.7z?download=true) をダウンロードして、解凍後に _go-webui.bat_ をダブルクリックするだけで GPT-SoVITS-WebUI を起動できます。
_注0206バージョンの推論速度は速いですが、0217の新バージョンの推論品質は優れています。必要に応じて選択してください。_
Windows ユーザーの方へWindows 10 以降でテスト済み)、[統合パッケージをダウンロード](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta.7z?download=true)し、解凍後に _go-webui.bat_ をダブルクリックすると、GPT-SoVITS-WebUI が起動します。
### Linux
@ -66,7 +64,7 @@ bash install.sh
**注MacでGPUを使用して訓練されたモデルは、他のデバイスで訓練されたモデルと比較して著しく品質が低下するため、当面はCPUを使用して訓練します。**
1. `xcode-select --install` を実行して、Xcodeコマンドラインツールをインストールします。
2. `brew install ffmpeg` または `conda install ffmpeg` を実行してFFmpegをインストールします。
2. `brew install ffmpeg` を実行してFFmpegをインストールします。
3. 上記の手順を完了した後、以下のコマンドを実行してこのプロジェクトをインストールします。
```bash
@ -78,12 +76,6 @@ pip install -r requirements.txt
### 手動インストール
#### 依存関係をインストールします
```bash
pip install -r requirementx.txt
```
#### FFmpegをインストールします。
##### Conda ユーザー
@ -104,6 +96,17 @@ conda install -c conda-forge 'ffmpeg<7'
[ffmpeg.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe) と [ffprobe.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe) をダウンロードし、GPT-SoVITS のルートディレクトリに置きます。
##### MacOS ユーザー
```bash
brew install ffmpeg
```
#### 依存関係をインストールします
```bash
pip install -r requirementx.txt
```
### Docker の使用
#### docker-compose.yaml の設定
@ -133,11 +136,15 @@ docker run --rm -it --gpus=all --env=is_half=False --volume=G:\GPT-SoVITS-Docker
## 事前訓練済みモデル
[GPT-SoVITS Models](https://huggingface.co/lj1995/GPT-SoVITS) から事前訓練済みモデルをダウンロードし、`GPT_SoVITSpretrained_models` に置きます
1. [GPT-SoVITS Models](https://huggingface.co/lj1995/GPT-SoVITS) から事前訓練済みモデルをダウンロードし、`GPT_SoVITS/pretrained_models` ディレクトリに配置してください
中国語 ASR追加については、[Damo ASR Model](https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/files)、[Damo VAD Model](https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/files)、[Damo Punc Model](https://modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files) からモデルをダウンロードし、`tools/asr/models` に置いてください。
2. [G2PWModel_1.1.zip](https://paddlespeech.bj.bcebos.com/Parakeet/released_models/g2p/G2PWModel_1.1.zip) からモデルをダウンロードし、解凍して `G2PWModel` にリネームし、`GPT_SoVITS/text` ディレクトリに配置してください。中国語TTSのみ
UVR5 (Vocals/Accompaniment Separation & Reverberation Removal, additionally) の場合は、[UVR5 Weights](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights) からモデルをダウンロードして `tools/uvr5/uvr5_weights` に置きます。
3. UVR5ボーカル/伴奏分離 & リバーブ除去の追加機能)の場合は、[UVR5 Weights](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights) からモデルをダウンロードし、`tools/uvr5/uvr5_weights` ディレクトリに配置してください。
4. 中国語ASR追加機能の場合は、[Damo ASR Model](https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/files)、[Damo VAD Model](https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/files)、および [Damo Punc Model](https://modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files) からモデルをダウンロードし、`tools/asr/models` ディレクトリに配置してください。
5. 英語または日本語のASR追加機能の場合は、[Faster Whisper Large V3](https://huggingface.co/Systran/faster-whisper-large-v3) からモデルをダウンロードし、`tools/asr/models` ディレクトリに配置してください。また、[他のモデル](https://huggingface.co/Systran) は、より少ないディスク容量で同様の効果を持つ可能性があります。
## データセット形式
@ -158,25 +165,106 @@ vocal_path|speaker_name|language|text
```
D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.
```
## 微調整と推論
### WebUIを開く
#### 統合パッケージ利用者
`go-webui.bat`をダブルクリックするか、`go-webui.ps1`を使用します。
V1に切り替えたい場合は、`go-webui-v1.bat`をダブルクリックするか、`go-webui-v1.ps1`を使用してください。
#### その他
```bash
python webui.py <言語(オプション)>
```
V1に切り替えたい場合は
```bash
python webui.py v1 <言語(オプション)>
```
またはWebUIで手動でバージョンを切り替えます。
### 微調整
#### パス自動補完がサポートされました
1.音声パスを入力する
2.音声を小さなチャンクに分割する
3.ノイズ除去(オプション)
4.ASR
5.ASR転写を校正する
6.次のタブに移動し、モデルを微調整する
### 推論WebUIを開く
#### 統合パッケージ利用者
`go-webui-v2.bat`をダブルクリックするか、`go-webui-v2.ps1`を使用して、`1-GPT-SoVITS-TTS/1C-inference`で推論webuiを開きます。
#### その他
```bash
python GPT_SoVITS/inference_webui.py <言語(オプション)>
```
または
```bash
python webui.py
```
その後、`1-GPT-SoVITS-TTS/1C-inference`で推論webuiを開きます。
## V2リリースート
新機能:
1. 韓国語と広東語をサポート
2. 最適化されたテキストフロントエンド
3. 事前学習済みモデルが2千時間から5千時間に拡張
4. 低品質の参照音声に対する合成品質の向上
[詳細はこちら](https://github.com/RVC-Boss/GPT-SoVITS/wiki/GPT%E2%80%90SoVITS%E2%80%90v2%E2%80%90features-(%E6%96%B0%E7%89%B9%E6%80%A7))
V1環境からV2を使用するには:
1. `pip install -r requirements.txt`を使用していくつかのパッケージを更新
2. 最新のコードをgithubからクローン
3. [huggingface](https://huggingface.co/lj1995/GPT-SoVITS/tree/main/gsv-v2final-pretrained)からV2の事前学習モデルをダウンロードし、それらを`GPT_SoVITS\pretrained_models\gsv-v2final-pretrained`に配置
中国語V2追加: [G2PWModel_1.1.zip](https://paddlespeech.bj.bcebos.com/Parakeet/released_models/g2p/G2PWModel_1.1.zip)G2PWモデルをダウンロードし、解凍して`G2PWModel`にリネームし、`GPT_SoVITS/text`に配置します)
## Todo リスト
- [ ] **優先度 高:**
- [x] **優先度 高:**
- [x] 日本語と英語でのローカライズ。
- [ ] ユーザーガイド。
- [x] ユーザーガイド。
- [x] 日本語データセットと英語データセットのファインチューニングトレーニング。
- [ ] **機能:**
- [ ] ゼロショット音声変換5 秒数ショット音声変換1 分)。
- [ ] TTS スピーキングスピードコントロール。
- [ ] TTS の感情コントロールの強化。
- [x] ゼロショット音声変換5 秒数ショット音声変換1 分)。
- [x] TTS スピーキングスピードコントロール。
- [ ] ~~TTS の感情コントロールの強化。~~
- [ ] SoVITS トークン入力を語彙の確率分布に変更する実験。
- [ ] 英語と日本語のテキストフロントエンドを改善。
- [x] 英語と日本語のテキストフロントエンドを改善。
- [ ] 小型と大型の TTS モデルを開発する。
- [x] Colab のスクリプト。
- [ ] トレーニングデータセットを拡張する2k→10k
- [ ] より良い sovits ベースモデル(音質向上)
- [x] より良い sovits ベースモデル(音質向上)
- [ ] モデルミックス
## (追加の) コマンドラインから実行する方法
@ -206,7 +294,7 @@ ASR処理はFaster_Whisperを通じて実行されます(中国語を除くASR
(進行状況バーは表示されません。GPU のパフォーマンスにより時間遅延が発生する可能性があります)
```
python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language>
python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language> -p <precision>
```
カスタムリストの保存パスが有効になっています
@ -237,6 +325,8 @@ python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language>
- [faster-whisper](https://github.com/SYSTRAN/faster-whisper)
- [FunASR](https://github.com/alibaba-damo-academy/FunASR)
@Naozumi520 さん、広東語のトレーニングセットの提供と、広東語に関する知識のご指導をいただき、感謝申し上げます。
## すべてのコントリビューターに感謝します
<a href="https://github.com/RVC-Boss/GPT-SoVITS/graphs/contributors" target="_blank">

View File

@ -1,109 +1,178 @@
### 20240121 업데이트
1. `config``is_share` 추가, Colab 등의 환경에서 이를 `True`로 설정하여 webui를 공용 네트워크에 매핑되도록 할 수 있습니다.
2. WebUI에 영어 번역이 추가되었습니다.
3. `cmd-asr`은 damo 모델이 이미 포함되어 있는지 자동으로 확인하고, 기본 경로에 없는 경우 modelscope에서 자동 다운로드 되도록 수정하였습니다.
4. [SoVITS 학습 중 ZeroDivisionError가 발생](https://github.com/RVC-Boss/GPT-SoVITS/issues/79)하는 경우 복구를 시도합니다. (길이가 0인 샘플 필터링 등)
5. TEMP 파일 폴더에서 오디오 및 기타 파일을 정리하여 최적화합니다.
6. 합성 오디오가 레퍼런스 오디오의 끝부분을 포함하는 문제를 개선하였습니다.
1. `config``is_share`를 추가했습니다. Colab과 같은 시나리오에서는 이 값을 `True`로 설정하여 WebUI를 공개 네트워크에 매핑할 수 있습니다.
2. WebUI에 영어 시스템 번역 지원을 추가했습니다.
3. `cmd-asr`이 FunASR 모델이 포함되어 있는지 자동으로 감지합니다; 기본 디렉토리에서 찾을 수 없으면 ModelScope에서 다운로드됩니다.
4. [Issue 79](https://github.com/RVC-Boss/GPT-SoVITS/issues/79)에서 보고된 SoVITS 훈련의 ZeroDivisionError를 필터링 샘플 등으로 해결하려고 시도했습니다.
5. `TEMP` 폴더의 캐시된 오디오 파일 및 기타 파일을 정리했습니다.
6. 참조 오디오의 끝이 포함된 합성 오디오 문제를 크게 줄였습니다.
### 20240122 업데이트
1. 너무 짧은 출력 파일이 중복된 레퍼런스 오디오를 반환하는 문제 수정하였습니다.
2. 영어-일본어 학습이 원활하게 진행되는 QA를 완료하였습니다. (다만, 일본어 학습은 루트 디렉토리에 영어 이외의 문자가 없어야 합니다)
3. 오디오 경로를 검사합니다. 잘못된 경로를 읽으려고 할 때 '경로가 존재하지 않습니다'라는 에러 메시지를 반환하도록 수정하였습니다. 이는 ffmpeg 모듈의 에러가 아닙니다.
1. 지나치게 짧은 출력 파일로 인해 참조 오디오가 반복되는 문제를 수정했습니다.
2. 영어 및 일본어 훈련의 네이티브 지원을 테스트했습니다 (일본어 훈련 시 루트 디렉토리에 비영어 특수 문자가 없어야 합니다).
3. 오디오 경로 확인을 개선했습니다. 잘못된 입력 경로에서 읽으려는 시도가 있을 경우, ffmpeg 오류 대신 경로가 존재하지 않는다고 보고합니다.
### 20240123 업데이트
1. hubert에서 nan 추출로 인한 SoVITS/GPT 학습 중 ZeroDivisionError 관련 에러를 해결하였습니다.
2. 추론 인터페이스에서 모델을 빠르게 전환할 수 있도록 지원하도록 수정되었습니다.
3. 모델 파일 정렬 로직 최적화하였습니다.
4. 중문 분석에 `jieba_fast``jieba`로 대체하였습니다.
1. Hubert 추출로 인해 NaN 오류가 발생하여 SoVITS/GPT 훈련에서 ZeroDivisionError가 발생하는 문제를 해결했습니다.
2. 추론 WebUI에서 빠른 모델 전환 지원을 추가했습니다.
3. 모델 파일 정렬 로직을 최적화했습니다.
4. 중국어 단어 분할을 위해 `jieba``jieba_fast`로 교체했습니다.
### 20240126 업데이트
1. 중국어와 영어, 일본어와 영어가 혼합된 출력 텍스트를 지원합니다.
2. 출력에서 선택적 분할 모드를 지원합니다.
3. uvr5가 디렉토리를 읽고 자동으로 종료되는 문제를 수정하였습니다.
4. 여러 줄바꿈으로 인한 추론 오류를 수정하였습니다.
5. 추론 인터페이스에서 불필요한 로그 제거하였습니다.
6. MacOS에서의 학습 및 추론을 지원합니다.
7. 반정밀을 지원하지 않는 카드를 자동으로 식별하여 단일 정밀도를 강제 적용하고, CPU 추론에서 단일 정밀도를 강제 적용합니다.
1. 중국어-영어 혼합 및 일본어-영어 혼합 출력 텍스트를 지원합니다.
2. 출력에 대한 선택적 분할 모드를 추가했습니다.
3. UVR5 읽기 문제 및 디렉토리 자동 탈출 문제를 수정했습니다.
4. 추론 오류를 일으키는 여러 줄 바꿈 문제를 수정했습니다.
5. 추론 WebUI 에서 중복 로그를 제거했습니다.
6. Mac에서 훈련 및 추론을 지원합니다.
7. 절반 정밀도를 지원하지 않는 GPU에 대해 자동으로 단정밀도를 강제하며, CPU 추론 시 단정밀도를 적용합니다.
### 20240128 업데이트
1. 숫자를 한자로 읽는 문제를 수정했습니다.
2. 문장 시작 부분의 일부 단어가 누락되는 문제 수정하였습니다.
3. 부적절한 길이의 레퍼런스 오디오를 제한하였습니다.
4. GPT 학습 시 ckpt가 저장되지 않는 문제 수정하였습니다.
5. Dockerfile에서 모델 다운로드 프로세스 개선하였습니다.
1. 숫자의 발음이 중국어 문자로 변환되는 문제를 수정했습니다.
2. 문장 시작 부분에서 몇 개의 문자가 누락되는 문제를 수정했습니다.
3. 비합리적인 참조 오디오 길이를 설정하여 제외했습니다.
4. GPT 훈련 시 체크포인트가 저장되지 않는 문제를 수정했습니다.
5. Dockerfile 에서 모델 다운로드 프로세스를 완료했습니다.
### 20240129 업데이트
1. 반정밀도 훈련에 문제가 있는 16 시리즈 및 기타 그래픽 카드의 훈련 구성을 단정밀도 훈련으로 변경했습니다.
2. Colab에서도 사용이 가능한 버전을 테스트 및 업데이트 하였습니다.
3. `git clone modelscope funasr` 저장소와 오래된 버전의 funasr 사용으로 인해 인터페이스가 일치하지 않는 오류를 수정하였습니다.
1. 절반 정밀도 훈련에 문제가 있는 16 시리즈와 같은 GPU의 훈련 구성을 단정밀도로 변경했습니다.
2. 사용 가능한 Colab 버전을 테스트하고 업데이트했습니다.
3. 이전 버전의 FunASR 로 인해 인터페이스 정렬 오류가 발생하는 ModelScope FunASR 저장소의 git 클로닝 문제를 수정했습니다.
### 20240130 업데이트
1. 경로와 관련된 문자열을 파싱하여 큰따옴표를 자동으로 제거합니다. 또한, 경로를 복사하는 경우 큰따옴표가 포함되어도 오류가 발생하지 않습니다.
2. 중국어 및 영어 문자열의 문장 부호가 잘리는 문제 및 문장의 시작과 끝에 문장 부호가 추가되는 문제를 수정했습니다.
3. 문장 부호의 수를 확장하였습니다.
1. 모든 경로 관련 항목에서 이중 따옴표를 자동으로 제거하여 초보자가 이중 따옴표가 포함된 경로를 복사하는 오류를 방지했습니다.
2. 중국어 및 영어 문장 부호 분할 문제를 수정하고 문장 시작과 끝에 부호를 추가했습니다.
3. 부호에 의한 분할을 추가했습니다.
### 20240201 업데이트
1. uvr5가 잘못된 형식으로 읽어들이는 문제를 수정하였습니다.
2. 중국어, 일본어, 영어가 혼합된 여러 텍스트를 자동으로 분리하여 언어를 인식합니다.
1. 분리 실패를 일으킨 UVR5 형식 읽기 오류를 수정했습니다.
2. 혼합된 중국어-일본어-영어 텍스트에 대한 자동 분할 및 언어 인식을 지원합니다.
### 20240202 업데이트
1. asr 경로의 끝에 `/`가 포함되어 있는 경우 오류가 발생하는 문제를 수정하였습니다.
2. paddlespeech의 Normalizer를 도입하여 [문제를 해결](https://github.com/RVC-Boss/GPT-SoVITS/pull/377)하여, 예를 들어 xx.xx%(백분율), 元/吨이 元吨으로 읽히는 문제를 해결하였습니다. 또한, 밑줄이 더 이상 오류를 발생시키지 않습니다.
1. `/` 로 끝나는 ASR 경로가 파일 이름 저장 시 오류를 발생시키는 문제를 수정했습니다.
2. [PR 377](https://github.com/RVC-Boss/GPT-SoVITS/pull/377) 에서는 PaddleSpeech 의 Normalizer 를 도입하여 "xx.xx%" (백분율 기호)와 "元/吨"이 "元吨"으로 읽히는 문제를 "元每吨"으로 수정하고, 밑줄 오류를 수정했습니다.
### 20240207 업데이트
1. 언어 전달 매개변수가 혼란스러워져 [중국어 추론 효과가 저하되는 문제](https://github.com/RVC-Boss/GPT-SoVITS/issues/391)를 수정하였습니다.
2. uvr5가 `inf everywhere` [오류를 반환하는 문제](https://github.com/RVC-Boss/GPT-SoVITS/pull/403)를 수정하였습니다.
3. uvr5의 `is_half` 매개변수가 bool로 변환되지 않아 항상 반정밀도 추론으로 설정되어 16 시리즈 그래픽 카드에서 `inf`가 반환되는 [문제](https://github.com/RVC-Boss/GPT-SoVITS/commit/14a285109a521679f8846589c22da8f656a46ad8)를 수정하였습니다.
4. 영어 텍스트 입력을 최적화하였습니다.
5. gradio 종속성을 지원합니다.
6. 루트 디렉토리가 비어 있으면 `.list` 전체 경로를 자동으로 읽습니다.
7. faster whisper ASR 일본어 및 영어를 지원합니다.
1. [Issue 391](https://github.com/RVC-Boss/GPT-SoVITS/issues/391) 에서 보고된 중국어 추론 품질 저하를 일으킨 언어 매개변수 혼동을 수정했습니다.
2. [PR 403](https://github.com/RVC-Boss/GPT-SoVITS/pull/403) 에서는 UVR5 를 높은 버전의 librosa에 맞게 조정했습니다.
3. [Commit 14a2851](https://github.com/RVC-Boss/GPT-SoVITS/commit/14a285109a521679f8846589c22da8f656a46ad8)에서는 `is_half` 매개변수가 불리언으로 변환되지 않아 발생한 UVR5 `inf` 오류를 수정했습니다. 이로 인해 16 시리즈 GPU에서 `inf` 가 발생했습니다.
4. 영어 텍스트 프론트엔드를 최적화했습니다.
5. Gradio 종속성 문제를 수정했습니다.
6. 데이터셋 준비 시 루트 디렉토리를 비워두면 `.list` 전체 경로를 자동으로 읽도록 지원합니다.
7. 일본어와 영어에 대한 Faster Whisper ASR을 통합했습니다.
### 20240208 업데이트
1. GPT 학습이 카드에 따라 멈추는 문제와 [GPT 학습 중 ZeroDivisionError](https://github.com/RVC-Boss/GPT-SoVITS/commit/59f35adad85815df27e9c6b33d420f5ebfd8376b) 문제를 수정하였습니다.
1. [Commit 59f35ad](https://github.com/RVC-Boss/GPT-SoVITS/commit/59f35adad85815df27e9c6b33d420f5ebfd8376b)에서는 Windows 10 1909와 [Issue 232](https://github.com/RVC-Boss/GPT-SoVITS/issues/232) (전통 중국어 시스템 언어)에서 GPT 훈련 멈춤 문제를 수정하려고 했습니다.
### 20240212 업데이트
1. faster whisper 및 funasr 로직을 최적화하였습니다. faster whisper는 이미지 스토어에서 다운로드하여 huggingface에 연결하지 못하는 문제를 회피합니다.
2. DPO Loss 실험적 학습 옵션을 활성화하여 부정적 샘플을 생성하여 [GPT 반복 및 누락 문자 문제](https://github.com/RVC-Boss/GPT-SoVITS/pull/457)를 완화합니다. 추론 인터페이스에 몇 가지 추론 매개변수를 공개합니다.
1. Faster Whisper와 FunASR의 로직을 최적화하고, Faster Whisper를 미러 다운로드로 전환하여 Hugging Face 연결 문제를 피했습니다.
2. [PR 457](https://github.com/RVC-Boss/GPT-SoVITS/pull/457)은 DPO Loss 실험적 훈련 옵션을 활성화하여 GPT의 반복 및 문자 누락 문제를 완화하고, 훈련 중 부정 샘플을 구성하며 여러 추론 매개변수를 추론 WebUI에서 사용할 수 있게 했습니다.
### 20240214 업데이트
1. 학습에서 중국어 실험 이름을 지원합니다. (이전에 오류가 발생했습니다)
2. DPO 학습을 선택적으로 설정할 수 있도록 변경하였습니다. 배치 크기를 선택하면 자동으로 절반으로 줄어듭니다. 추론 인터페이스에서 새로운 매개변수를 전달하지 않는 문제를 수정하였습니다.
1. 훈련 시 중국어 실험 이름을 지원합니다 (이전에는 오류가 발생했습니다).
2. DPO 훈련을 필수 기능 대신 선택적 기능으로 변경했습니다. 선택 시, 배치 크기가 자동으로 절반으로 줄어듭니다. 추론 WebUI에서 새로운 매개변수가 전달되지 않는 문제를 수정했습니다.
### 20240216 업데이트
1. 참조 텍스트 입력을 지원합니다.
2. 프론트엔드에 있던 중국어 텍스트 입력 버그를 수정하였습니다.
1. 참조 텍스트 없이 입력을 지원합니다.
2. [Issue 475](https://github.com/RVC-Boss/GPT-SoVITS/issues/475)에서 보고된 중국어 프론트엔드의 버그를 수정했습니다.
### 20240221 업데이트
1. 데이터 처리에 음성 노이즈 감소 옵션을 추가하였습니다. (노이즈 감소는 16k 샘플링률만 남기며, 노이즈가 크지 않다면 사용하지 마십시오.)
2. 중국어 및 일본어 프론트엔드 처리를 최적화하였습니다. https://github.com/RVC-Boss/GPT-SoVITS/pull/559 https://github.com/RVC-Boss/GPT-SoVITS/pull/556 https://github.com/RVC-Boss/GPT-SoVITS/pull/532 https://github.com/RVC-Boss/GPT-SoVITS/pull/507 https://github.com/RVC-Boss/GPT-SoVITS/pull/509
3. Mac에서 CPU 추론이 더 빨라졌으므로 추론 장치를 mps에서 CPU로 변경하였습니다.
4. colab에서 공용 URL을 열지 않는 문제를 수정하였습니다.
1. 데이터 처리 중 노이즈 감소 옵션을 추가했습니다 (노이즈 감소는 16kHz 샘플링 비율만 남깁니다; 배경 노이즈가 심한 경우에만 사용하십시오).
2. [PR 559](https://github.com/RVC-Boss/GPT-SoVITS/pull/559), [PR 556](https://github.com/RVC-Boss/GPT-SoVITS/pull/556), [PR 532](https://github.com/RVC-Boss/GPT-SoVITS/pull/532), [PR 507](https://github.com/RVC-Boss/GPT-SoVITS/pull/507), [PR 509](https://github.com/RVC-Boss/GPT-SoVITS/pull/509) 중국어 및 일본어 프론트엔드 처리를 최적화했습니다.
3. Mac CPU 추론을 MPS 대신 CPU를 사용하도록 전환하여 성능을 향상시켰습니다.
4. Colab 공개 URL 문제를 수정했습니다.
### 20240306 업데이트
1. 추론 속도를 50% 빠르게 하였습니다. (RTX3090+pytorch2.2.1+cu11.8+win10+py39 테스트 완료) https://github.com/RVC-Boss/GPT-SoVITS/pull/672
2. faster whisper를 사용할 때 중국어 ASR을 먼저 다운로드할 필요가 없습니다.
3. uvr5의 잔향 제거 모델이 잔향이 있는지 여부를 반대로 반환하는 문제를 수정하였습니다.
4. faster whisper가 CUDA를 사용할 수 없는 경우 자동으로 CPU 추론을 사용하도록 수정하였습니다.
5. is_half의 판단을 수정하여 Mac에서 CPU 추론이 정상적으로 작동하도록 수정하였습니다.
1. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672)는 추론 속도를 50% 가속화했습니다 (RTX3090 + PyTorch 2.2.1 + CU11.8 + Win10 + Py39에서 테스트됨).
2. Faster Whisper의 비중국어 ASR을 사용할 때 중국어 FunASR 모델을 먼저 다운로드할 필요가 없습니다.
3. [PR 610](https://github.com/RVC-Boss/GPT-SoVITS/pull/610)은 UVR5 리버브 제거 모델에서 설정이 반대로 되어 있는 문제를 수정했습니다.
4. [PR 675](https://github.com/RVC-Boss/GPT-SoVITS/pull/675)는 CUDA가 없는 경우 Faster Whisper의 자동 CPU 추론을 가능하게 했습니다.
5. [PR 573](https://github.com/RVC-Boss/GPT-SoVITS/pull/573)은 Mac에서 올바른 CPU 추론을 보장하기 위해 `is_half` 체크를 수정했습니다.
todolist
### 202403/202404/202405 업데이트
1. 중국어 다양한 발음 단어 추론 최적화(테스트 결과를 작성하시는 분은 pr 코멘트 영역에 작성해주시면 감사하겠습니다)
#### 사소한 수정:
1. 참조 텍스트 없는 모드의 문제를 수정했습니다.
2. 중국어 및 영어 텍스트 프론트엔드를 최적화했습니다.
3. API 형식을 개선했습니다.
4. CMD 형식 문제를 수정했습니다.
5. 훈련 데이터 처리 중 지원되지 않는 언어에 대한 오류 프롬프트를 추가했습니다.
6. Hubert 추출의 버그를 수정했습니다.
#### 주요 수정:
1. VQ를 고정하지 않고 SoVITS 훈련의 문제를 수정했습니다(품질 저하를 일으킬 수 있음).
2. 빠른 추론 분기를 추가했습니다.
### 20240610 업데이트
#### 사소한 수정:
1. [PR 1168](https://github.com/RVC-Boss/GPT-SoVITS/pull/1168) & [PR 1169](https://github.com/RVC-Boss/GPT-SoVITS/pull/1169) 순수 구두점 및 다중 구두점 텍스트 입력 로직을 개선했습니다.
2. [Commit 501a74a](https://github.com/RVC-Boss/GPT-SoVITS/commit/501a74ae96789a26b48932babed5eb4e9483a232) UVR5에서 MDXNet 디러버브를 위한 CMD 형식을 수정하고 공백이 있는 경로를 지원했습니다.
3. [PR 1159](https://github.com/RVC-Boss/GPT-SoVITS/pull/1159) `s2_train.py`에서 SoVITS 훈련을 위한 진행률 표시줄 로직을 수정했습니다.
#### 주요 수정:
4. [Commit 99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) WebUI의 GPT 미세 조정이 중국어 입력 텍스트의 BERT 기능을 읽지 않아 추론과 불일치 및 잠재적 품질 저하를 일으키는 문제를 수정했습니다.
**주의: 이전에 많은 양의 데이터로 미세 조정한 경우 품질을 향상시키기 위해 모델을 다시 조정하는 것이 좋습니다.**
### 20240706 업데이트
#### 사소한 수정:
1. [Commit 1250670](https://github.com/RVC-Boss/GPT-SoVITS/commit/db50670598f0236613eefa6f2d5a23a271d82041) CPU 추론에서 기본 배치 크기 소수점 문제를 수정했습니다.
2. [PR 1258](https://github.com/RVC-Boss/GPT-SoVITS/pull/1258), [PR 1265](https://github.com/RVC-Boss/GPT-SoVITS/pull/1265), [PR 1267](https://github.com/RVC-Boss/GPT-SoVITS/pull/1267) 노이즈 제거 또는 ASR이 예외를 만나면 모든 보류 중인 오디오 파일이 종료되는 문제를 수정했습니다.
3. [PR 1253](https://github.com/RVC-Boss/GPT-SoVITS/pull/1253) 구두점으로 분할할 때 소수점 분할 문제를 수정했습니다.
4. [Commit a208698](https://github.com/RVC-Boss/GPT-SoVITS/commit/a208698e775155efc95b187b746d153d0f2847ca) 다중 GPU 훈련을 위한 다중 프로세스 저장 로직을 수정했습니다.
5. [PR 1251](https://github.com/RVC-Boss/GPT-SoVITS/pull/1251) 불필요한 `my_utils`를 제거했습니다.
#### 주요 수정:
6. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672)의 가속 추론 코드가 검증되어 메인 브랜치에 병합되었으며, 기본과 일관된 추론 효과를 보장합니다.
또한 참조 텍스트 없는 모드에서 가속 추론을 지원합니다.
**향후 업데이트에서는 `fast_inference` 브랜치의 변경 사항의 일관성을 계속 검증할 것입니다**.
### 20240727 업데이트
#### 사소한 수정:
1. [PR 1298](https://github.com/RVC-Boss/GPT-SoVITS/pull/1298) 불필요한 i18n 코드를 정리했습니다.
2. [PR 1299](https://github.com/RVC-Boss/GPT-SoVITS/pull/1299) 사용자 파일 경로의 후행 슬래시가 명령줄 오류를 일으키는 문제를 수정했습니다.
3. [PR 756](https://github.com/RVC-Boss/GPT-SoVITS/pull/756) GPT 훈련의 단계 계산 로직을 수정했습니다.
#### 주요 수정:
4. [Commit 9588a3c](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2) 합성을 위한 음성 속도 조절을 지원했습니다.
음성 속도만 조절하면서 무작위성을 고정할 수 있습니다.
### 20240806 업데이트
1. [PR 1306](https://github.com/RVC-Boss/GPT-SoVITS/pull/1306), [PR 1356](https://github.com/RVC-Boss/GPT-SoVITS/pull/1356) BS RoFormer 보컬 반주 분리 모델에 대한 지원을 추가했습니다. [Commit e62e965](https://github.com/RVC-Boss/GPT-SoVITS/commit/e62e965323a60a76a025bcaa45268c1ddcbcf05c) FP16 추론을 활성화했습니다.
2. 중국어 텍스트 프론트엔드를 개선했습니다.
- [PR 488](https://github.com/RVC-Boss/GPT-SoVITS/pull/488) 중국어 다의자 지원 (v2 전용);
- [PR 987](https://github.com/RVC-Boss/GPT-SoVITS/pull/987) 추가된 양자;
- [PR 1351](https://github.com/RVC-Boss/GPT-SoVITS/pull/1351) 사칙연산 및 기본 수학 공식을 지원합니다;
- [PR 1404](https://github.com/RVC-Boss/GPT-SoVITS/pull/1404) 혼합 텍스트 오류를 수정했습니다.
3. [PR 1355](https://github.com/RVC-Boss/GPT-SoVITS/pull/1356) WebUI 에서 오디오를 처리할 때 경로를 자동으로 채웠습니다.
4. [Commit bce451a](https://github.com/RVC-Boss/GPT-SoVITS/commit/bce451a2d1641e581e200297d01f219aeaaf7299), [Commit 4c8b761](https://github.com/RVC-Boss/GPT-SoVITS/commit/4c8b7612206536b8b4435997acb69b25d93acb78) GPU 인식 로직을 최적화했습니다.
5. [Commit 8a10147](https://github.com/RVC-Boss/GPT-SoVITS/commit/8a101474b5a4f913b4c94fca2e3ca87d0771bae3) 광동어 ASR 지원을 추가했습니다.
6. GPT-SoVITS v2 지원을 추가했습니다.
7. [PR 1387](https://github.com/RVC-Boss/GPT-SoVITS/pull/1387) 타이밍 로직을 최적화했습니다.

View File

@ -24,7 +24,7 @@
2. **소량의 데이터 TTS:** 1분의 훈련 데이터만으로 모델을 미세 조정하여 음성 유사도와 실제감을 향상시킬 수 있습니다.
3. **다국어 지원:** 훈련 데이터셋과 다른 언어의 추론을 지원하며, 현재 영어, 일본어, 중국어를 지원합니다.
3. **다국어 지원:** 훈련 데이터셋과 다른 언어의 추론을 지원하며, 현재 영어, 일본어, 중국어, 광둥어, 한국어를 지원합니다.
4. **WebUI 도구:** 음성 반주 분리, 자동 훈련 데이터셋 분할, 중국어 자동 음성 인식(ASR) 및 텍스트 주석 등의 도구를 통합하여 초보자가 훈련 데이터셋과 GPT/SoVITS 모델을 생성하는 데 도움을 줍니다.
@ -49,9 +49,7 @@ _참고: numba==0.56.4 는 python<3.11 을 필요로 합니다._
### Windows
Windows 사용자라면 (win>=10에서 테스트됨), [0206fix3 패키지](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta-fast-inference-branch.7z?download=true) 또는 [0217fix2 패키지](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta0217fix2.7z?download=true)를 다운로드하고 압축을 풀어 _go-webui.bat_ 파일을 더블 클릭하면 GPT-SoVITS-WebUI를 시작할 수 있습니다.
_참고: 0206 버전은 추론 속도가 더 빠르지만, 0217 새 버전은 추론 품질이 더 좋습니다. 필요에 따라 선택할 수 있습니다._
Windows 사용자라면 (win>=10에서 테스트됨), [통합 패키지를 다운로드](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta.7z?download=true)한 후 압축을 풀고 _go-webui.bat_ 파일을 더블 클릭하면 GPT-SoVITS-WebUI를 시작할 수 있습니다.
### Linux
@ -66,7 +64,7 @@ bash install.sh
**주의: Mac에서 GPU로 훈련된 모델은 다른 OS에서 훈련된 모델에 비해 품질이 낮습니다. 해당 문제를 해결하기 전까지 MacOS에선 CPU를 사용하여 훈련을 진행합니다.**
1. `xcode-select --install`을 실행하여 Xcode 커맨드라인 도구를 설치하세요.
2. `brew install ffmpeg` 또는 `conda install ffmpeg`을 실행하여 FFmpeg를 설치하세요.
2. `brew install ffmpeg` 명령어를 실행하여 FFmpeg를 설치합니다.
3. 위의 단계를 완료한 후, 다음 명령어를 실행하여 이 프로젝트를 설치하세요.
```bash
@ -78,12 +76,6 @@ pip install -r requirements.txt
### 수동 설치
#### 의존성 설치
```bash
pip install -r requirements.txt
```
#### FFmpeg 설치
##### Conda 사용자
@ -104,6 +96,17 @@ conda install -c conda-forge 'ffmpeg<7'
[ffmpeg.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe)와 [ffprobe.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe)를 GPT-SoVITS root 디렉토리에 넣습니다.
##### MacOS 사용자
```bash
brew install ffmpeg
```
#### 의존성 설치
```bash
pip install -r requirements.txt
```
### Docker에서 사용
#### docker-compose.yaml 설정
@ -134,13 +137,17 @@ docker compose -f "docker-compose.yaml" up -d
docker run --rm -it --gpus=all --env=is_half=False --volume=G:\GPT-SoVITS-DockerTest\output:/workspace/output --volume=G:\GPT-SoVITS-DockerTest\logs:/workspace/logs --volume=G:\GPT-SoVITS-DockerTest\SoVITS_weights:/workspace/SoVITS_weights --workdir=/workspace -p 9880:9880 -p 9871:9871 -p 9872:9872 -p 9873:9873 -p 9874:9874 --shm-size="16G" -d breakstring/gpt-sovits:xxxxx
```
## 사전 훈련된 모델
## 사전 학습된 모델
[GPT-SoVITS Models](https://huggingface.co/lj1995/GPT-SoVITS)에서 사전 훈련된 모델을 다운로드하고 `GPT_SoVITS\pretrained_models`에 넣습니다.
1. [GPT-SoVITS Models](https://huggingface.co/lj1995/GPT-SoVITS) 에서 사전 학습된 모델을 다운로드하고, `GPT_SoVITS/pretrained_models` 디렉토리에 배치하세요.
중국어 자동 음성 인식(ASR), 음성 반주 분리 및 음성 제거를 위해 [Damo ASR Model](https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/files), [Damo VAD Model](https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/files) 및 [Damo Punc Model](https://modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files)을 다운로드하고 `tools/asr/models`에 넣습니다.
2. [G2PWModel_1.1.zip](https://paddlespeech.bj.bcebos.com/Parakeet/released_models/g2p/G2PWModel_1.1.zip) 에서 모델을 다운로드하고 압축을 풀어 `G2PWModel`로 이름을 변경한 후, `GPT_SoVITS/text` 디렉토리에 배치하세요. (중국어 TTS 전용)
UVR5(음성/반주 분리 및 잔향 제거)를 위해 [UVR5 Weights](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights)에서 모델을 다운로드하고 `tools/uvr5/uvr5_weights`에 넣습니다.
3. UVR5 (보컬/반주 분리 & 잔향 제거 추가 기능)의 경우, [UVR5 Weights](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights) 에서 모델을 다운로드하고 `tools/uvr5/uvr5_weights` 디렉토리에 배치하세요.
4. 중국어 ASR (추가 기능)의 경우, [Damo ASR Model](https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/files), [Damo VAD Model](https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/files) 및 [Damo Punc Model](https://modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files) 에서 모델을 다운로드하고, `tools/asr/models` 디렉토리에 배치하세요.
5. 영어 또는 일본어 ASR (추가 기능)의 경우, [Faster Whisper Large V3](https://huggingface.co/Systran/faster-whisper-large-v3) 에서 모델을 다운로드하고, `tools/asr/models` 디렉토리에 배치하세요. 또한, [다른 모델](https://huggingface.co/Systran) 은 더 적은 디스크 용량으로 비슷한 효과를 가질 수 있습니다.
## 데이터셋 형식
@ -162,25 +169,106 @@ vocal_path|speaker_name|language|text
D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.
```
## 미세 조정 및 추론
### WebUI 열기
#### 통합 패키지 사용자
`go-webui.bat`을 더블 클릭하거나 `go-webui.ps1`를 사용하십시오.
V1으로 전환하려면, `go-webui-v1.bat`을 더블 클릭하거나 `go-webui-v1.ps1`를 사용하십시오.
#### 기타
```bash
python webui.py <언어(옵션)>
```
V1으로 전환하려면,
```bash
python webui.py v1 <언어(옵션)>
```
또는 WebUI에서 수동으로 버전을 전환하십시오.
### 미세 조정
#### 경로 자동 채우기가 지원됩니다
1. 오디오 경로를 입력하십시오.
2. 오디오를 작은 청크로 분할하십시오.
3. 노이즈 제거(옵션)
4. ASR 수행
5. ASR 전사를 교정하십시오.
6. 다음 탭으로 이동하여 모델을 미세 조정하십시오.
### 추론 WebUI 열기
#### 통합 패키지 사용자
`go-webui-v2.bat`을 더블 클릭하거나 `go-webui-v2.ps1`를 사용한 다음 `1-GPT-SoVITS-TTS/1C-inference`에서 추론 webui를 엽니다.
#### 기타
```bash
python GPT_SoVITS/inference_webui.py <언어(옵션)>
```
또는
```bash
python webui.py
```
그런 다음 `1-GPT-SoVITS-TTS/1C-inference`에서 추론 webui를 엽니다.
## V2 릴리스 노트
새로운 기능:
1. 한국어 및 광둥어 지원
2. 최적화된 텍스트 프론트엔드
3. 사전 학습 모델이 2천 시간에서 5천 시간으로 확장
4. 저품질 참조 오디오에 대한 합성 품질 향상
[자세한 내용](https://github.com/RVC-Boss/GPT-SoVITS/wiki/GPT%E2%80%90SoVITS%E2%80%90v2%E2%80%90features-(%E6%96%B0%E7%89%B9%E6%80%A7))
V1 환경에서 V2를 사용하려면:
1. `pip install -r requirements.txt`를 사용하여 일부 패키지 업데이트
2. github에서 최신 코드를 클론하십시오.
3. [huggingface](https://huggingface.co/lj1995/GPT-SoVITS/tree/main/gsv-v2final-pretrained)에서 V2 사전 학습 모델을 다운로드하여 `GPT_SoVITS\pretrained_models\gsv-v2final-pretrained`에 넣으십시오.
중국어 V2 추가: [G2PWModel_1.1.zip](https://paddlespeech.bj.bcebos.com/Parakeet/released_models/g2p/G2PWModel_1.1.zip) (G2PW 모델을 다운로드하여 압축을 풀고 `G2PWModel`로 이름을 변경한 다음 `GPT_SoVITS/text`에 배치합니다.)
## 할 일 목록
- [ ] **최우선순위:**
- [x] **최우선순위:**
- [x] 일본어 및 영어 지역화.
- [ ] 사용자 가이드.
- [x] 사용자 가이드.
- [x] 일본어 및 영어 데이터셋 미세 조정 훈련.
- [ ] **기능:**
- [ ] 제로샷 음성 변환 (5초) / 소량의 음성 변환 (1분).
- [ ] TTS 속도 제어.
- [ ] 향상된 TTS 감정 제어.
- [x] 제로샷 음성 변환 (5초) / 소량의 음성 변환 (1분).
- [x] TTS 속도 제어.
- [ ] ~~향상된 TTS 감정 제어.~~
- [ ] SoVITS 토큰 입력을 단어 확률 분포로 변경해 보세요.
- [ ] 영어 및 일본어 텍스트 프론트 엔드 개선.
- [x] 영어 및 일본어 텍스트 프론트 엔드 개선.
- [ ] 작은 크기와 큰 크기의 TTS 모델 개발.
- [x] Colab 스크립트.
- [ ] 훈련 데이터셋 확장 (2k 시간에서 10k 시간).
- [ ] 더 나은 sovits 기본 모델 (향상된 오디오 품질).
- [x] 더 나은 sovits 기본 모델 (향상된 오디오 품질).
- [ ] 모델 블렌딩.
## (추가적인) 명령줄에서 실행하는 방법
@ -210,7 +298,7 @@ ASR 처리는 Faster_Whisper(중국어를 제외한 ASR 마킹)를 통해 수행
(진행률 표시줄 없음, GPU 성능으로 인해 시간 지연이 발생할 수 있음)
```
python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language>
python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language> -p <precision>
```
사용자 정의 목록 저장 경로가 활성화되었습니다.
@ -241,6 +329,7 @@ python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language>
- [faster-whisper](https://github.com/SYSTRAN/faster-whisper)
- [FunASR](https://github.com/alibaba-damo-academy/FunASR)
@Naozumi520 님께 감사드립니다. 광둥어 학습 자료를 제공해 주시고, 광둥어 관련 지식을 지도해 주셔서 감사합니다.
## 모든 기여자들에게 감사드립니다 ;)

178
docs/tr/Changelog_TR.md Normal file
View File

@ -0,0 +1,178 @@
### 20240121 Güncellemesi
1. `config`e `is_share` eklendi. Colab gibi senaryolarda, WebUI'yi halka açık ağa yönlendirmek için bu değeri `True` olarak ayarlayabilirsiniz.
2. WebUI'ye İngilizce sistem çeviri desteği eklendi.
3. `cmd-asr`, FunASR modelinin dahil olup olmadığını otomatik olarak tespit eder; eğer varsayılan dizinde bulunamazsa, ModelScope'dan indirilecektir.
4. [Issue 79](https://github.com/RVC-Boss/GPT-SoVITS/issues/79)de bildirilen SoVITS eğitimindeki ZeroDivisionError'u sıfır uzunlukta örnekleri filtreleyerek düzeltmeye çalıştık.
5. `TEMP` klasöründeki önbelleğe alınmış ses dosyaları ve diğer dosyaları temizledik.
6. Referans sesinin sonunu içeren sentezlenmiş ses sorununu önemli ölçüde azalttık.
### 20240122 Güncellemesi
1. Aşırı kısa çıktı dosyalarının referans sesini tekrarlamasına neden olan sorun giderildi.
2. İngilizce ve Japonca eğitim için yerel destek test edildi (Japonca eğitim için kök dizinin İngilizce olmayan özel karakterlerden arındırılmış olması gerekir).
3. Ses yolu denetimi iyileştirildi. Yanlış bir giriş yolundan okumaya çalışıldığında, ffmpeg hatası yerine yolun mevcut olmadığını bildirir.
### 20240123 Güncellemesi
1. Hubert çıkarımının NaN hatalarına neden olup SoVITS/GPT eğitiminde ZeroDivisionError'a yol açtığı sorun çözüldü.
2. İnferans WebUI'de hızlı model değiştirme desteği eklendi.
3. Model dosyası sıralama mantığı optimize edildi.
4. Çince kelime ayrımı için `jieba` `jieba_fast` ile değiştirildi.
### 20240126 Güncellemesi
1. Çince-İngilizce ve Japonca-İngilizce karışık çıktı metinleri için destek eklendi.
2. Çıktı için isteğe bağlı bir bölme modu eklendi.
3. UVR5'in dizinlerden otomatik olarak çıkmasına neden olan okuma sorununu düzelttik.
4. Çeşitli yeni satır sorunlarını düzelterek çıkarım hatalarını giderdik.
5. Çıkarım WebUI'deki gereksiz günlükleri kaldırdık.
6. Mac'te eğitim ve çıkarım desteği eklendi.
7. Yarım hassasiyeti desteklemeyen GPU'lar için otomatik olarak tek hassasiyet zorlandı; CPU çıkarımında tek hassasiyet uygulandı.
### 20240128 Güncellemesi
1. Sayıların Çince karakterlere dönüştürülmesiyle ilgili sorunu düzelttik.
2. Cümlelerin başındaki birkaç karakterin yutulması sorununu düzelttik.
3. Mantıksız referans ses uzunluklarını sınırlamalar koyarak hariç tuttuk.
4. GPT eğitiminin kontrol noktalarını kaydetmemesi sorununu düzelttik.
5. Dockerfile'da model indirme sürecini tamamladık.
### 20240129 Güncellemesi
1. Yarım hassasiyet eğitimi ile ilgili sorun yaşayan 16 serisi gibi GPU'lar için eğitim yapılandırmalarını tek hassasiyete değiştirdik.
2. Mevcut Colab sürümünü test ettik ve güncelledik.
3. Eski sürüm FunASR ile ModelScope FunASR deposunun git klonlanmasıyla oluşan arayüz hizalama hatalarını düzelttik.
### 20240130 Güncellemesi
1. Çift tırnaklarla yol kopyalama hatalarını önlemek için tüm yol ile ilgili girdilerden otomatik olarak çift tırnakları kaldırdık.
2. Çince ve İngilizce noktalama işaretlerini ayırma sorunlarını düzelttik ve cümlelerin başına ve sonuna noktalama işaretleri ekledik.
3. Noktalama işaretlerine göre ayırma özelliğini ekledik.
### 20240201 Güncellemesi
1. Ayrılma hatalarına neden olan UVR5 format okuma hatasını düzelttik.
2. Karışık Çince-Japonca-İngilizce metinler için otomatik segmentasyon ve dil tanıma desteği sağladık.
### 20240202 Güncellemesi
1. `/` ile biten bir ASR yolunun dosya adını kaydetme hatasına neden olma sorununu düzelttik.
2. [PR 377](https://github.com/RVC-Boss/GPT-SoVITS/pull/377) PaddleSpeech'in Normalizer'ını tanıtarak "xx.xx%" (yüzde sembolleri) ve "元/吨" ifadesinin "元吨" yerine "元每吨" olarak okunması gibi sorunları düzelttik ve alt çizgi hatalarını giderdik.
### 20240207 Güncellemesi
1. [Issue 391](https://github.com/RVC-Boss/GPT-SoVITS/issues/391)de bildirilen dil parametresi karışıklığının Çinçe çıkarım kalitesini düşürme sorununu düzelttik.
2. [PR 403](https://github.com/RVC-Boss/GPT-SoVITS/pull/403) ile UVR5'i daha yüksek versiyonlarda librosa'ya uyarladık.
3. [Commit 14a2851](https://github.com/RVC-Boss/GPT-SoVITS/commit/14a285109a521679f8846589c22da8f656a46ad8) `is_half` parametresinin booleana dönüştürülmemesi nedeniyle sürekli yarım hassasiyet çıkarımı yaparak 16 serisi GPU'larda `inf` hatasına neden olan UVR5 inf hatasını düzelttik.
4. İngilizce metin önyüzünü optimize ettik.
5. Gradio bağımlılıklarını düzelttik.
6. Veri seti hazırlığı sırasında kök dizini boş bırakıldığında `.list` tam yollarının otomatik olarak okunmasını destekledik.
7. Japonca ve İngilizce için Faster Whisper ASR'yi entegre ettik.
### 20240208 Güncellemesi
1. [Commit 59f35ad](https://github.com/RVC-Boss/GPT-SoVITS/commit/59f35adad85815df27e9c6b33d420f5ebfd8376b) ile Windows 10 1909'da ve [Issue 232](https://github.com/RVC-Boss/GPT-SoVITS/issues/232)de (Geleneksel Çince Sistem Dili) bildirilen GPT eğitim durma sorununu düzeltmeye çalıştık.
### 20240212 Güncellemesi
1. Faster Whisper ve FunASR için mantığı optimize ettik, Hugging Face bağlantı sorunlarını önlemek için Faster Whisper'ı ayna indirmelere yönlendirdik.
2. [PR 457](https://github.com/RVC-Boss/GPT-SoVITS/pull/457) GPT tekrarı ve eksik karakterleri azaltmak için eğitim sırasında negatif örnekler oluşturarak deneysel DPO Loss eğitim seçeneğini etkinleştirdi ve çıkarım WebUI'de çeşitli çıkarım parametrelerini kullanılabilir hale getirdi.
### 20240214 Güncellemesi
1. Eğitimde Çince deney adlarını destekledik (önceden hatalara neden oluyordu).
2. DPO eğitimini zorunlu yerine isteğe bağlı bir özellik yaptık. Seçilirse, parti boyutu otomatik olarak yarıya indirilir. Çıkarım WebUI'de yeni parametrelerin iletilmemesi sorunlarını düzelttik.
### 20240216 Güncellemesi
1. Referans metin olmadan girişi destekledik.
2. [Issue 475](https://github.com/RVC-Boss/GPT-SoVITS/issues/475) de bildirilen Çince önyüz hatalarını düzelttik.
### 20240221 Güncellemesi
1. Veri işleme sırasında bir gürültü azaltma seçeneği ekledik (gürültü azaltma sadece 16kHz örnekleme hızını bırakır; yalnızca arka plan gürültüsü önemliyse kullanın).
2. [PR 559](https://github.com/RVC-Boss/GPT-SoVITS/pull/559), [PR 556](https://github.com/RVC-Boss/GPT-SoVITS/pull/556), [PR 532](https://github.com/RVC-Boss/GPT-SoVITS/pull/532), [PR 507](https://github.com/RVC-Boss/GPT-SoVITS/pull/507), [PR 509](https://github.com/RVC-Boss/GPT-SoVITS/pull/509) ile Çince ve Japonca önyüz işlemesini optimize ettik.
3. Mac CPU çıkarımını daha hızlı performans için MPS yerine CPU kullanacak şekilde değiştirdik.
4. Colab genel URL sorununu düzelttik.
### 20240306 Güncellemesi
1. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) çıkarımı %50 hızlandırdı (RTX3090 + PyTorch 2.2.1 + CU11.8 + Win10 + Py39 üzerinde test edildi).
2. Faster Whisper'ın Çince olmayan ASR'sini kullanırken artık önce Çin FunASR modelini indirmeyi gerektirmiyor.
3. [PR 610](https://github.com/RVC-Boss/GPT-SoVITS/pull/610) UVR5 yankı giderme modelindeki ayarın tersine çevrildiği sorunu düzeltti.
4. [PR 675](https://github.com/RVC-Boss/GPT-SoVITS/pull/675) CUDA mevcut olmadığında Faster Whisper için otomatik CPU çıkarımını etkinleştirdi.
5. [PR 573](https://github.com/RVC-Boss/GPT-SoVITS/pull/573) Mac'te doğru CPU çıkarımı sağlamak için `is_half` kontrolünü değiştirdi.
### 202403/202404/202405 Güncellemeleri
#### Küçük Düzeltmeler:
1. Referans metin olmayan mod ile ilgili sorunlar düzeltildi.
2. Çince ve İngilizce metin önyüzü optimize edildi.
3. API formatı iyileştirildi.
4. CMD format sorunları düzeltildi.
5. Eğitim verisi işleme sırasında desteklenmeyen diller için hata uyarıları eklendi.
6. Hubert çıkarımındaki hata düzeltildi.
#### Büyük Düzeltmeler:
1. VQ'yu dondurmadan yapılan SoVITS eğitimi sorunu (bu kalite düşüşüne neden olabilir) düzeltildi.
2. Hızlı çıkarım dalı eklendi.
### 20240610 Güncellemesi
#### Küçük Düzeltmeler:
1. [PR 1168](https://github.com/RVC-Boss/GPT-SoVITS/pull/1168) & [PR 1169](https://github.com/RVC-Boss/GPT-SoVITS/pull/1169) saf noktalama işareti ve çoklu noktalama işareti metin girdisi için mantığı geliştirdi.
2. [Commit 501a74a](https://github.com/RVC-Boss/GPT-SoVITS/commit/501a74ae96789a26b48932babed5eb4e9483a232) UVR5'teki MDXNet yankı giderme için CMD formatını düzeltti, boşluk içeren yolları destekledi.
3. [PR 1159](https://github.com/RVC-Boss/GPT-SoVITS/pull/1159) `s2_train.py` içindeki SoVITS eğitimi için ilerleme çubuğu mantığını düzeltti.
#### Büyük Düzeltmeler:
4. [Commit 99f09c8](https://github.com/RVC-Boss/GPT-SoVITS/commit/99f09c8bdc155c1f4272b511940717705509582a) WebUI'nin GPT ince ayarının, Çince giriş metinlerinin BERT özelliğini okumaması sorununu düzeltti, bu da çıkarım ile tutarsızlığa ve potansiyel kalite düşüşüne neden oluyordu.
**Dikkat: Daha önce büyük miktarda veri ile ince ayar yaptıysanız, modelin kalitesini artırmak için yeniden ayar yapmanız önerilir.**
### 20240706 Güncellemesi
#### Küçük Düzeltmeler:
1. [Commit 1250670](https://github.com/RVC-Boss/GPT-SoVITS/commit/db50670598f0236613eefa6f2d5a23a271d82041) CPU çıkarımında varsayılan yığın boyutu ondalık sorununu düzeltti.
2. [PR 1258](https://github.com/RVC-Boss/GPT-SoVITS/pull/1258), [PR 1265](https://github.com/RVC-Boss/GPT-SoVITS/pull/1265), [PR 1267](https://github.com/RVC-Boss/GPT-SoVITS/pull/1267) gürültü giderme veya ASR ile ilgili istisnalarla karşılaşıldığında bekleyen tüm ses dosyalarının çıkış yapmasına neden olan sorunları düzeltti.
3. [PR 1253](https://github.com/RVC-Boss/GPT-SoVITS/pull/1253) noktalama işaretlerine göre ayrılırken ondalıkların bölünmesi sorununu düzeltti.
4. [Commit a208698](https://github.com/RVC-Boss/GPT-SoVITS/commit/a208698e775155efc95b187b746d153d0f2847ca) çoklu GPU eğitimi için çoklu işlem kaydetme mantığını düzeltti.
5. [PR 1251](https://github.com/RVC-Boss/GPT-SoVITS/pull/1251) gereksiz `my_utils`'ı kaldırdı.
#### Büyük Düzeltmeler:
6. [PR 672](https://github.com/RVC-Boss/GPT-SoVITS/pull/672) hızlandırılmış çıkarım kodu doğrulandı ve ana dala birleştirildi, taban ile tutarlı çıkarım etkileri sağlandı.
Ayrıca referans metni olmayan modda hızlandırılmış çıkarımı destekler.
**Gelecek güncellemeler, `fast_inference` dalındaki değişikliklerin tutarlılığını doğrulamaya devam edecek.**
### 20240727 Güncellemesi
#### Küçük Düzeltmeler:
1. [PR 1298](https://github.com/RVC-Boss/GPT-SoVITS/pull/1298) gereksiz i18n kodlarını temizledi.
2. [PR 1299](https://github.com/RVC-Boss/GPT-SoVITS/pull/1299) kullanıcı dosya yollarındaki sonlandırma eğik çizgilerinin komut satırı hatalarına neden olduğu sorunları düzeltti.
3. [PR 756](https://github.com/RVC-Boss/GPT-SoVITS/pull/756) GPT eğitimindeki adım hesaplama mantığını düzeltti.
#### Büyük Düzeltmeler:
4. [Commit 9588a3c](https://github.com/RVC-Boss/GPT-SoVITS/commit/9588a3c52d9ebdb20b3c5d74f647d12e7c1171c2) sentez için konuşma hızı ayarlamasını destekledi.
Konuşma hızını ayarlarken rastgeleliği dondurmayı etkinleştirdi.
### 20240806 Güncellemesi
1. [PR 1306](https://github.com/RVC-Boss/GPT-SoVITS/pull/1306), [PR 1356](https://github.com/RVC-Boss/GPT-SoVITS/pull/1356) BS RoFormer vokal eşlik ayırma modelini desteklemeye başladı. [Commit e62e965](https://github.com/RVC-Boss/GPT-SoVITS/commit/e62e965323a60a76a025bcaa45268c1ddcbcf05c) FP16 çıkarımı etkinleştirdi.
2. Çince metin ön yüzünü geliştirdi.
- [PR 488](https://github.com/RVC-Boss/GPT-SoVITS/pull/488) çoklu heceli karakterler için destek ekledi (v2 sadece);
- [PR 987](https://github.com/RVC-Boss/GPT-SoVITS/pull/987) sayı belirleyici ekledi;
- [PR 1351](https://github.com/RVC-Boss/GPT-SoVITS/pull/1351) aritmetik ve temel matematik formüllerini destekler;
- [PR 1404](https://github.com/RVC-Boss/GPT-SoVITS/pull/1404) karışık metin hatalarını düzeltti.
3. [PR 1355](https://github.com/RVC-Boss/GPT-SoVITS/pull/1356) WebUI'de ses işlenirken yolları otomatik olarak doldurdu.
4. [Commit bce451a](https://github.com/RVC-Boss/GPT-SoVITS/commit/bce451a2d1641e581e200297d01f219aeaaf7299), [Commit 4c8b761](https://github.com/RVC-Boss/GPT-SoVITS/commit/4c8b7612206536b8b4435997acb69b25d93acb78) GPU tanıma mantığını optimize etti.
5. [Commit 8a10147](https://github.com/RVC-Boss/GPT-SoVITS/commit/8a101474b5a4f913b4c94fca2e3ca87d0771bae3) Kantonca ASR desteği ekledi.
6. GPT-SoVITS v2 desteği eklendi.
7. [PR 1387](https://github.com/RVC-Boss/GPT-SoVITS/pull/1387) zamanlama mantığını optimize etti.

View File

@ -24,7 +24,7 @@ Güçlü Birkaç Örnekli Ses Dönüştürme ve Metinden Konuşmaya Web Arayüz
2. **Birkaç Örnekli Metinden Konuşmaya:** Daha iyi ses benzerliği ve gerçekçiliği için modeli yalnızca 1 dakikalık eğitim verisiyle ince ayarlayın.
3. **Çapraz Dil Desteği:** Eğitim veri setinden farklı dillerde çıkarım, şu anda İngilizce, Japonca ve Çinceyi destekliyor.
3. **Çapraz Dil Desteği:** Eğitim veri setinden farklı dillerde çıkarım, şu anda İngilizce, Japonca, Çince, Kantonca ve Koreceyi destekliyor.
4. **Web Arayüzü Araçları:** Entegre araçlar arasında vokal eşliğinde ayırma, otomatik eğitim seti segmentasyonu, Çince ASR ve metin etiketleme bulunur ve yeni başlayanların eğitim veri setleri ve GPT/SoVITS modelleri oluşturmalarına yardımcı olur.
@ -49,9 +49,7 @@ _Not: numba==0.56.4, py<3.11 gerektirir_
### Windows
Eğer bir Windows kullanıcısıysanız (win>=10 ile test edilmiştir), [0206fix3 paketini](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta-fast-inference-branch.7z?download=true) veya [0217fix2 paketini](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta0217fix2.7z?download=true) indirip _go-webui.bat_ dosyasına çift tıklayarak GPT-SoVITS-WebUI'yi başlatabilirsiniz.
_Not: 0206 sürümünün çıkarım hızı daha hızlıdır, 0217 yeni sürümünün çıkarım kalitesi ise daha iyidir. İhtiyacınıza göre seçim yapabilirsiniz._
Eğer bir Windows kullanıcısıysanız (win>=10 ile test edilmiştir), [entegre paketi indirin](https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-beta.7z?download=true) ve _go-webui.bat_ dosyasına çift tıklayarak GPT-SoVITS-WebUI'yi başlatın.
### Linux
@ -65,8 +63,8 @@ bash install.sh
**Not: Mac'lerde GPU'larla eğitilen modeller, diğer cihazlarda eğitilenlere göre önemli ölçüde daha düşük kalitede sonuç verir, bu nedenle geçici olarak CPU'lar kullanıyoruz.**
1. `xcode-select --install` komutunu çalıştırarak Xcode komut satırı araçlarını yükleyin
2. `brew install ffmpeg` veya `conda install ffmpeg` komutunu çalıştırarak FFmpeg'i yükleyin.
1. `xcode-select --install` komutunu çalıştırarak Xcode komut satırı araçlarını yükleyin.
2. FFmpeg'i yüklemek için `brew install ffmpeg` komutunu çalıştırın.
3. Aşağıdaki komutları çalıştırarak programı yükleyin:
```bash
@ -78,12 +76,6 @@ pip install -r requirements.txt
### El ile Yükleme
#### Bağımlılıkları Yükleme
```bash
pip install -r requirements.txt
```
#### FFmpeg'i Yükleme
##### Conda Kullanıcıları
@ -104,6 +96,17 @@ conda install -c conda-forge 'ffmpeg<7'
[ffmpeg.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe) ve [ffprobe.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe) dosyalarını indirin ve GPT-SoVITS kök dizinine yerleştirin.
##### MacOS Kullanıcıları
```bash
brew install ffmpeg
```
#### Bağımlılıkları Yükleme
```bash
pip install -r requirements.txt
```
### Docker Kullanarak
#### docker-compose.yaml yapılandırması
@ -133,25 +136,15 @@ docker run --rm -it --gpus=all --env=is_half=False --volume=G:\GPT-SoVITS-Docker
## Önceden Eğitilmiş Modeller
Önceden eğitilmiş modelleri [GPT-SoVITS Modelleri](https://huggingface.co/lj1995/GPT-SoVITS) adresinden indirin ve `GPT_SoVITS/pretrained_models` dizinine yerleştirin.
1. [GPT-SoVITS Models](https://huggingface.co/lj1995/GPT-SoVITS) üzerinden önceden eğitilmiş modelleri indirip `GPT_SoVITS/pretrained_models` dizinine yerleştirin.
UVR5 (Vokal/Eşlik Ayırma ve Yankı Giderme, ayrıca) için, modelleri [UVR5 Ağırlıkları](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights) adresinden indirin ve `tools/uvr5/uvr5_weights` dizinine yerleştirin.
2. [G2PWModel_1.1.zip](https://paddlespeech.bj.bcebos.com/Parakeet/released_models/g2p/G2PWModel_1.1.zip) üzerinden modeli indirip sıkıştırmayıın ve `G2PWModel` olarak yeniden adlandırın, ardından `GPT_SoVITS/text` dizinine yerleştirin. (Sadece Çince TTS için)
Çin bölgesindeki kullanıcılar, aşağıdaki bağlantıları girerek ve "Bir kopya indir"i tıklayarak bu iki modeli indirebilirler
3. UVR5 (Vokal/Enstrümantal Ayrımı & Yankı Giderme) için, [UVR5 Weights](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights) üzerinden modelleri indirip `tools/uvr5/uvr5_weights` dizinine yerleştirin.
- [GPT-SoVITS Modelleri](https://www.icloud.com.cn/iclouddrive/056y_Xog_HXpALuVUjscIwTtg#GPT-SoVITS_Models)
4. Çince ASR için, [Damo ASR Model](https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/files), [Damo VAD Model](https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/files) ve [Damo Punc Model](https://modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files) üzerinden modelleri indirip `tools/asr/models` dizinine yerleştirin.
- [UVR5 Ağırlıkları](https://www.icloud.com.cn/iclouddrive/0bekRKDiJXboFhbfm3lM2fVbA#UVR5_Weights)
Çince ASR (ayrıca) için, modelleri [Damo ASR Modeli](https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/files), [Damo VAD Modeli](https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/files), ve [Damo Punc Modeli](https://modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files) adreslerinden indirin ve `tools/asr/models` dizinine yerleştirin.
İngilizce veya Japonca ASR (ayrıca) için, modelleri [Faster Whisper Large V3](https://huggingface.co/Systran/faster-whisper-large-v3) adresinden indirin ve `tools/asr/models` dizinine yerleştirin. Ayrıca, [diğer modeller](https://huggingface.co/Systran) daha küçük disk alanı kaplamasıyla benzer etkiye sahip olabilir.
Çin bölgesindeki kullanıcılar, aşağıdaki bağlantıları girerek bu modeli indirebilirler
- [Faster Whisper Large V3](https://www.icloud.com/iclouddrive/0c4pQxFs7oWyVU1iMTq2DbmLA#faster-whisper-large-v3) ("Bir kopya indir"i tıklayarak)
- [Faster Whisper Large V3](https://hf-mirror.com/Systran/faster-whisper-large-v3) (HuggingFace ayna sitesi)
5. İngilizce veya Japonca ASR için, [Faster Whisper Large V3](https://huggingface.co/Systran/faster-whisper-large-v3) üzerinden modeli indirip `tools/asr/models` dizinine yerleştirin. Ayrıca, [diğer modeller](https://huggingface.co/Systran) benzer bir etki yaratabilir ve daha az disk alanı kaplayabilir.
## Veri Seti Formatı
@ -173,24 +166,104 @@ Dil sözlüğü:
D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.
```
## İnce Ayar ve Çıkarım
### WebUI'yi Açın
#### Entegre Paket Kullanıcıları
`go-webui.bat` dosyasına çift tıklayın veya `go-webui.ps1` kullanın.
V1'e geçmek istiyorsanız, `go-webui-v1.bat` dosyasına çift tıklayın veya `go-webui-v1.ps1` kullanın.
#### Diğerleri
```bash
python webui.py <dil(isteğe bağlı)>
```
V1'e geçmek istiyorsanız,
```bash
python webui.py v1 <dil(isteğe bağlı)>
```
veya WebUI'de manuel olarak sürüm değiştirin.
### İnce Ayar
#### Yol Otomatik Doldurma artık destekleniyor
1. Ses yolunu doldurun
2. Sesi küçük parçalara ayırın
3. Gürültü azaltma (isteğe bağlı)
4. ASR
5. ASR transkripsiyonlarını düzeltin
6. Bir sonraki sekmeye geçin ve modeli ince ayar yapın
### Çıkarım WebUI'sini Açın
#### Entegre Paket Kullanıcıları
`go-webui-v2.bat` dosyasına çift tıklayın veya `go-webui-v2.ps1` kullanın, ardından çıkarım webui'sini `1-GPT-SoVITS-TTS/1C-inference` adresinde açın.
#### Diğerleri
```bash
python GPT_SoVITS/inference_webui.py <dil(isteğe bağlı)>
```
VEYA
```bash
python webui.py
```
ardından çıkarım webui'sini `1-GPT-SoVITS-TTS/1C-inference` adresinde açın.
## V2 Sürüm Notları
Yeni Özellikler:
1. Korece ve Kantonca destekler
2. Optimize edilmiş metin ön yüzü
3. Önceden eğitilmiş model 2k saatten 5k saate kadar genişletildi
4. Düşük kaliteli referans sesler için geliştirilmiş sentez kalitesi
[detaylar burada](https://github.com/RVC-Boss/GPT-SoVITS/wiki/GPT%E2%80%90SoVITS%E2%80%90v2%E2%80%90features-(%E6%96%B0%E7%89%B9%E6%80%A7))
V1 ortamından V2'yi kullanmak için:
1. `pip install -r requirements.txt` ile bazı paketleri güncelleyin
2. github'dan en son kodları klonlayın.
3. [huggingface](https://huggingface.co/lj1995/GPT-SoVITS/tree/main/gsv-v2final-pretrained) adresinden v2 önceden eğitilmiş modelleri indirin ve bunları `GPT_SoVITS\pretrained_models\gsv-v2final-pretrained` dizinine yerleştirin.
Ek olarak Çince V2: [G2PWModel_1.1.zip](https://paddlespeech.bj.bcebos.com/Parakeet/released_models/g2p/G2PWModel_1.1.zip) (G2PW modellerini indirip, zipten çıkarıp, `G2PWModel` olarak yeniden adlandırıp `GPT_SoVITS/text` dizinine yerleştirin.)
## Yapılacaklar Listesi
- [ ] **Yüksek Öncelikli:**
- [x] **Yüksek Öncelikli:**
- [x] Japonca ve İngilizceye yerelleştirme.
- [x] Kullanıcı kılavuzu.
- [x] Japonca ve İngilizce veri seti ince ayar eğitimi.
- [ ] **Özellikler:**
- [ ] Sıfır örnekli ses dönüştürme (5s) / birkaç örnekli ses dönüştürme (1dk).
- [ ] Metinden konuşmaya konuşma hızı kontrolü.
- [ ] Gelişmiş metinden konuşmaya duygu kontrolü.
- [x] Sıfır örnekli ses dönüştürme (5s) / birkaç örnekli ses dönüştürme (1dk).
- [x] Metinden konuşmaya konuşma hızı kontrolü.
- [ ] ~~Gelişmiş metinden konuşmaya duygu kontrolü.~~
- [ ] SoVITS token girdilerini kelime dağarcığı olasılık dağılımına değiştirme denemesi.
- [ ] İngilizce ve Japonca metin ön ucunu iyileştirme.
- [x] İngilizce ve Japonca metin ön ucunu iyileştirme.
- [ ] Küçük ve büyük boyutlu metinden konuşmaya modelleri geliştirme.
- [x] Colab betikleri.
- [ ] Eğitim veri setini genişletmeyi dene (2k saat -> 10k saat).
- [ ] daha iyi sovits temel modeli (geliştirilmiş ses kalitesi)
- [x] daha iyi sovits temel modeli (geliştirilmiş ses kalitesi)
- [ ] model karışımı
## (Ekstra) Komut satırından çalıştırma yöntemi
@ -251,6 +324,8 @@ python ./tools/asr/fasterwhisper_asr.py -i <girdi> -o <çıktı> -l <dil>
- [faster-whisper](https://github.com/SYSTRAN/faster-whisper)
- [FunASR](https://github.com/alibaba-damo-academy/FunASR)
@Naozumi520ye Kantonca eğitim setini sağladığı ve Kantonca ile ilgili bilgiler konusunda rehberlik ettiği için minnettarım.
## Tüm katkıda bulunanlara çabaları için teşekkürler
<a href="https://github.com/RVC-Boss/GPT-SoVITS/graphs/contributors" target="_blank">

View File

@ -1,2 +1,2 @@
runtime\python.exe webui.py
runtime\python.exe webui.py zh_CN
pause

View File

@ -1,4 +1,4 @@
$ErrorActionPreference = "SilentlyContinue"
chcp 65001
& "$PSScriptRoot\runtime\python.exe" "$PSScriptRoot\webui.py"
& "$PSScriptRoot\runtime\python.exe" "$PSScriptRoot\webui.py zh_CN"
pause

View File

@ -1,299 +0,0 @@
{
"很遗憾您这没有能用的显卡来支持您训练": "Unfortunately, there is no compatible GPU available to support your training.",
"UVR5已开启": "UVR5 opened ",
"UVR5已关闭": "UVR5 closed",
"输入文件夹路径": "Input folder path",
"输出文件夹路径": "Output folder path",
"ASR 模型": "ASR model",
"ASR 模型尺寸": "ASR model size",
"ASR 语言设置": "ASR language",
"模型切换": "Model switch",
"是否开启dpo训练选项(实验性)": "Enable DPO training (experimental feature)",
"开启无参考文本模式。不填参考文本亦相当于开启。": "Enable no reference mode. If you don't fill 'Text for reference audio', no reference mode will be enabled.",
"使用无参考文本模式时建议使用微调的GPT": "Please use your trained GPT model if you don't use reference audio.",
"后续将支持转音素、手工修改音素、语音合成分步执行。": " Step-to-step phoneme transformation and modification coming soon!",
"gpt采样参数(无参考文本时不要太低)": "GPT parameters:",
"按标点符号切": "Slice by every punct",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "This software is open source under the MIT license. The author does not have any control over the software. Users who use the software and distribute the sounds exported by the software are solely responsible. <br>If you do not agree with this clause, you cannot use or reference any codes and files within the software package. See the root directory <b>Agreement-LICENSE</b> for details.",
"0-前置数据集获取工具": "0-Fetch dataset",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5 webui (for vocal separation, deecho, dereverb and denoise)",
"是否开启UVR5-WebUI": "Open UVR5-WebUI",
"UVR5进程输出信息": "UVR5 process output log",
"0b-语音切分工具": "0b-Audio slicer",
".list标注文件的路径": ".list annotation file path",
"GPT模型列表": "GPT weight list",
"SoVITS模型列表": "SoVITS weight list",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。": "Fill in the directory of segmented audio. The complete path of the read audio file is equal to the directory concatenated with the waveform's corresponding filename from the list file (not the full path).",
"音频自动切分输入路径,可文件可文件夹": "Audio slicer input (file or folder)",
"切分后的子音频的输出根目录": "Audio slicer output folder",
"怎么切": "How to slice the sentence",
"不切": "No slice",
"凑四句一切": "Slice once every 4 sentences",
"按英文句号.切": "Slice by English punct",
"threshold:音量小于这个值视作静音的备选切割点": "Noise gate threshold (loudness below this value will be treated as noise",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "Minimum length",
"min_interval:最短切割间隔": "Minumum interval for audio cutting",
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size: FO hop size, the smaller the value, the higher the accuracy",
"max_sil_kept:切完后静音最多留多长": "Maximum length for silence to be kept",
"开启语音切割": "Start audio slicer",
"终止语音切割": "Stop audio cutting",
"max:归一化后最大值多少": "Loudness multiplier after normalized",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: proportion of normalized audio merged into dataset",
"切割使用的进程数": "CPU threads used for audio slicing",
"语音切割进程输出信息": "Audio slicer output log",
"0c-中文批量离线ASR工具": "0c-Chinese ASR tool",
"开启离线批量ASR": "Start batch ASR",
"终止ASR进程": "Stop ASR task",
"批量ASR(中文only)输入文件夹路径": "Batch ASR (Chinese only) input folder",
"ASR进程输出信息": "ASR output log",
"0d-语音文本校对标注工具": "0d-Speech to text proofreading tool",
"是否开启打标WebUI": "Open labelling WebUI",
"打标数据标注文件路径": "path to proofreading text file",
"打标工具进程输出信息": "Proofreading tool output log",
"1-GPT-SoVITS-TTS": "1-GPT-SOVITS-TTS",
"*实验/模型名": "*Experiment/model name",
"显卡信息": "GPU Information",
"预训练的SoVITS-G模型路径": "Pretrained SoVITS-G model path",
"预训练的SoVITS-D模型路径": "Pretrained SoVITS-D model path",
"预训练的GPT模型路径": "Pretrained GPT model path",
"1A-训练集格式化工具": "1A-Dataset formatting",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "output folder (logs/{experiment name}) should have files and folders starts with 23456.",
"*文本标注文件": "*Text labelling file",
"*训练集音频文件目录": "*Audio dataset folder",
"训练集音频文件目录 拼接 list文件里波形对应的文件名。": "Training the file name corresponding to the waveform of the waveform in the List file of the audio file",
"1Aa-文本内容": "1Aa-Text",
"GPU卡号以-分割,每个卡号一个进程": "GPU number is separated by -, each GPU will run one process ",
"预训练的中文BERT模型路径": " Pretrained BERT model path",
"开启文本获取": "Start speech-to-text",
"终止文本获取进程": "Stop speech-to-text",
"文本进程输出信息": "Text processing output",
"1Ab-SSL自监督特征提取": "1Ab-SSL self-supervised feature extraction",
"预训练的SSL模型路径": "Pretrained SSL model path",
"开启SSL提取": "Start SSL extracting",
"终止SSL提取进程": "Stop SSL extraction",
"SSL进程输出信息": "SSL output log",
"1Ac-语义token提取": "1Ac-semantics token extraction",
"开启语义token提取": "Start semantics token extraction",
"终止语义token提取进程": "Stop semantics token extraction",
"语义token提取进程输出信息": "Sematics token extraction output log",
"1Aabc-训练集格式化一键三连": "1Aabc-One-click formatting",
"开启一键三连": "Start one-click formatting",
"终止一键三连": "Stop one-click formatting",
"一键三连进程输出信息": "One-click formatting output",
"1B-微调训练": "1B-Fine-tuned training",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITS training. The model is located in SoVITS_weights.",
"每张显卡的batch_size": "Batch size per GPU:",
"总训练轮数total_epoch不建议太高": "Total epochs, do not increase to a value that is too high",
"文本模块学习率权重": "Text model learning rate weighting",
"保存频率save_every_epoch": "Save frequency (save_every_epoch):",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Save only the latest '.ckpt' file to save disk space:",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Save a small final model to the 'weights' folder at each save point:",
"开启SoVITS训练": "Start SoVITS training",
"终止SoVITS训练": "Stop SoVITS training",
"SoVITS训练进程输出信息": "SoVITS training output log",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPT training. The model is located in GPT_weights.",
"总训练轮数total_epoch": "Total training epochs (total_epoch):",
"开启GPT训练": "Start GPT training",
"终止GPT训练": "Stop GPT training",
"GPT训练进程输出信息": "GPT training output log",
"1C-推理": "1C-inference",
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。": "Choose the models from SoVITS_weights and GPT_weights. The default one is a pretrain, so you can experience zero shot TTS.",
"*GPT模型列表": "*GPT models list",
"*SoVITS模型列表": "*SoVITS models list",
"GPU卡号,只能填1个整数": "GPU number, can only input ONE integer",
"刷新模型路径": "refreshing model paths",
"是否开启TTS推理WebUI": "Open TTS inference WEBUI",
"TTS推理WebUI进程输出信息": "TTS inference webui output log",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-Voice Changer",
"施工中,请静候佳音": "In construction, please wait",
"参考音频在3~10秒范围外请更换": "Reference audio is outside the 3-10 second range, please choose another one!",
"请上传3~10秒内参考音频超过会报错": "Please upload a reference audio within the 3-10 second range; if it exceeds this duration, it will raise errors.",
"TTS推理进程已开启": "TTS inference process is opened",
"TTS推理进程已关闭": "TTS inference process closed",
"打标工具WebUI已开启": "proofreading tool webui is opened",
"打标工具WebUI已关闭": "proofreading tool webui is closed",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. 如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录LICENSE.": "This software is under MIT licence. The author does not have any control for this software. Users are solely reponsible for all voices thats being converted and/or distributed. If you disagree with this Terms and Conditions, you cannot use or cite any files or code in this file. Please check LICENSE. for more info.",
"*请上传并填写参考信息": "*Please upload and fill reference information",
"*请填写需要合成的目标文本。中英混合选中文,日英混合选日文,中日混合暂不支持,非目标语言文本自动遗弃。": "*Please fill the text that needs inference. Select Chinese for mixed Chinese and English text, choose Japanese for mixed Japanese and English text. Mixed Chinese and Japanese is currently not supported; non-target language text will be automatically discarded.",
"ASR任务开启%s": "ASR training started: %s",
"GPT训练完成": "Finished GPT training",
"GPT训练开始%s": "GPT training started: %s",
"SSL提取进程执行中": "SSL extracting",
"SSL提取进程结束": "SSL extraction finished",
"SoVITS训练完成": "SoVITS training finished",
"SoVITS训练开始%s": "SoVITS training started%s",
"一键三连中途报错": "An error has occured during One-click formatting",
"一键三连进程结束": "Finished one-click formatting",
"中文": "Chinese",
"凑50字一切": "Cut per 50 characters",
"凑五句一切": "Cut per 5 sentences",
"切分后文本": "Text after sliced",
"切割执行中": "Slicing audio",
"切割结束": "finished audio slicing",
"参考音频的文本": "Text for reference audio",
"参考音频的语种": "Language for reference audio",
"合成语音": "Start inference",
"后续将支持混合语种编码文本输入。": "Mixed languages input will be supported soon.",
"已有正在进行的ASR任务需先终止才能开启下一次任务": " An ASR task is already in progress, please stop before starting the next task",
"已有正在进行的GPT训练任务需先终止才能开启下一次任务": "A GPT training task is already in progress, please stop before starting the next task",
"已有正在进行的SSL提取任务需先终止才能开启下一次任务": "A SSL extraction task is already in progress, please stop before starting the next task",
"已有正在进行的SoVITS训练任务需先终止才能开启下一次任务": "A SoVITS training task is already in progress, please stop before starting the next task",
"已有正在进行的一键三连任务,需先终止才能开启下一次任务": "An ASR task is already in progress, please stop before starting the next task",
"已有正在进行的切割任务,需先终止才能开启下一次任务": "An audio slicing task is already in progress, please stop before starting the next task",
"已有正在进行的文本任务,需先终止才能开启下一次任务": "A TTS proofreading task is already in progress, please stop before starting the next task",
"已有正在进行的语义token提取任务需先终止才能开启下一次任务": "A semantics token extraction task is already in progress, please stop before starting the next task",
"已终止ASR进程": "ASR task has been stopped",
"已终止GPT训练": "GPT training has been stopped",
"已终止SoVITS训练": "SoVITS training has been stopped",
"已终止所有1a进程": "All 1a tasks has been stopped",
"已终止所有1b进程": "All 1b tasks has been stopped",
"已终止所有一键三连进程": "All one-clicking formatting tasks has been stopped",
"已终止所有切割进程": "All audio slicing tasks has been stopped",
"已终止所有语义token进程": "All semantics token tasks has been stopped",
"按中文句号。切": "Slice by Chinese 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.",
"文本进程执行中": "Text processing",
"文本进程结束": "Finished text processing",
"日文": "Japanese",
"英文": "English",
"语义token提取进程执行中": "Semantics token extracting",
"语义token提取进程结束": "Finished semantics token extraction",
"请上传参考音频": "Please upload reference audio",
"输入路径不存在": "No input file or directory",
"输入路径存在但既不是文件也不是文件夹": "Input directory exists, but it is not a file or a folder",
"输出的语音": "Inference Result",
"进度1a-done": "Progress1a-done",
"进度1a-done, 1b-ing": "Progress1a-done, 1b-ing",
"进度1a-ing": "Progress1a-ing",
"进度1a1b-done": "Progress1a1b-done",
"进度1a1b-done, 1cing": "Progress1a1b-done, 1cing",
"进度all-done": "Progressall-done",
"需要合成的切分前文本": "Inference text that needs to be sliced",
"需要合成的文本": "Inference text",
"需要合成的语种": "Inference text language",
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "If >=3: apply median filtering to the harvested pitch results. The value represents the filter radius and can reduce breathiness.",
"A模型权重": "Weight (w) for Model A:",
"A模型路径": "Path to Model A:",
"B模型路径": "Path to Model B:",
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0 curve file (optional). One pitch per line. Replaces the default F0 and pitch modulation:",
"Index Rate": "Index Rate",
"Onnx导出": "Export Onnx",
"Onnx输出路径": "Onnx Export Path:",
"RVC模型路径": "RVC Model Path:",
"ckpt处理": "ckpt Processing",
"harvest进程数": "Number of CPU processes used for harvest pitch algorithm",
"index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Enter the GPU index(es) separated by '-', e.g., 0-0-1 to use 2 processes in GPU0 and 1 process in GPU1",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Step 1: Fill in the experimental configuration. Experimental data is stored in the 'logs' folder, with each experiment having a separate folder. Manually enter the experiment name path, which contains the experimental configuration, logs, and trained model files.",
"step1:正在处理数据": "Step 1: Processing data",
"step2:正在提取音高&正在提取特征": "step2:Pitch extraction & feature extraction",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Step 2a: Automatically traverse all files in the training folder that can be decoded into audio and perform slice normalization. Generates 2 wav folders in the experiment directory. Currently, only single-singer/speaker training is supported.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Step 2b: Use CPU to extract pitch (if the model has pitch), use GPU to extract features (select GPU index):",
"step3: 填写训练设置, 开始训练模型和索引": "Step 3: Fill in the training settings and start training the model and index",
"step3a:正在训练模型": "Step 3a: Model training started",
"一键训练": "One-click training",
"也可批量输入音频文件, 二选一, 优先读文件夹": "Multiple audio files can also be imported. If a folder path exists, this input is ignored.",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>\u2003\u2003(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "Batch processing for vocal accompaniment separation using the UVR5 model.<br>Example of a valid folder path format: D:\\path\\to\\input\\folder (copy it from the file manager address bar).<br>The model is divided into three categories:<br>1. Preserve vocals: Choose this option for audio without harmonies. It preserves vocals better than HP5. It includes two built-in models: HP2 and HP3. HP3 may slightly leak accompaniment but preserves vocals slightly better than HP2.<br>2. Preserve main vocals only: Choose this option for audio with harmonies. It may weaken the main vocals. It includes one built-in model: HP5.<br>3. De-reverb and de-delay models (by FoxJoy):<br>\u2003\u2003(1) MDX-Net: The best choice for stereo reverb removal but cannot remove mono reverb;<br>&emsp;(234) DeEcho: Removes delay effects. Aggressive mode removes more thoroughly than Normal mode. DeReverb additionally removes reverb and can remove mono reverb, but not very effectively for heavily reverberated high-frequency content.<br>De-reverb/de-delay notes:<br>1. The processing time for the DeEcho-DeReverb model is approximately twice as long as the other two DeEcho models.<br>2. The MDX-Net-Dereverb model is quite slow.<br>3. The recommended cleanest configuration is to apply MDX-Net first and then DeEcho-Aggressive.",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Enter the GPU index(es) separated by '-', e.g., 0-1-2 to use GPU 0, 1, and 2:",
"伴奏人声分离&去混响&去回声": "Vocals/Accompaniment Separation & Reverberation Removal",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "Save name:",
"保存的文件名, 默认空为和源文件同名": "Save file name (default: same as the source file):",
"保存的模型名不带后缀": "Saved model name (without extension):",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Protect voiceless consonants and breath sounds to prevent artifacts such as tearing in electronic music. Set to 0.5 to disable. Decrease the value to increase protection, but it may reduce indexing accuracy:",
"修改": "Modify",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modify model information (only supported for small model files extracted from the 'weights' folder)",
"停止音频转换": "Stop audio conversion",
"全流程结束!": "All processes have been completed!",
"刷新音色列表和索引路径": "Refresh voice list and index path",
"加载模型": "Load model",
"加载预训练底模D路径": "Load pre-trained base model D path:",
"加载预训练底模G路径": "Load pre-trained base model G path:",
"单次推理": "Single Inference",
"卸载音色省显存": "Unload voice to save GPU memory:",
"变调(整数, 半音数量, 升八度12降八度-12)": "Transpose (integer, number of semitones, raise by an octave: 12, lower by an octave: -12):",
"后处理重采样至最终采样率0为不进行重采样": "Resample the output audio in post-processing to the final sample rate. Set to 0 for no resampling:",
"否": "No",
"启用相位声码器": "启用相位声码器",
"响应阈值": "Response threshold",
"响度因子": "loudness factor",
"处理数据": "Process data",
"导出Onnx模型": "Export Onnx Model",
"导出文件格式": "Export file format",
"常见问题解答": "FAQ (Frequently Asked Questions)",
"常规设置": "General settings",
"开始音频转换": "Start audio conversion",
"性能设置": "Performance settings",
"批量推理": "Batch Inference",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Batch conversion. Enter the folder containing the audio files to be converted or upload multiple audio files. The converted audio will be output in the specified folder (default: 'opt').",
"指定输出主人声文件夹": "Specify the output folder for vocals:",
"指定输出文件夹": "Specify output folder:",
"指定输出非主人声文件夹": "Specify the output folder for accompaniment:",
"推理时间(ms):": "Inference time (ms):",
"推理音色": "Inferencing voice:",
"提取": "Extract",
"提取音高和处理数据使用的CPU进程数": "Number of CPU processes used for pitch extraction and data processing:",
"是": "Yes",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Cache all training sets to GPU memory. Caching small datasets (less than 10 minutes) can speed up training, but caching large datasets will consume a lot of GPU memory and may not provide much speed improvement:",
"查看": "View",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "View model information (only supported for small model files extracted from the 'weights' folder)",
"检索特征占比": "Search feature ratio (controls accent strength, too high has artifacting):",
"模型": "Model",
"模型推理": "Model Inference",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Model extraction (enter the path of the large file model under the 'logs' folder). This is useful if you want to stop training halfway and manually extract and save a small model file, or if you want to test an intermediate model:",
"模型是否带音高指导": "Whether the model has pitch guidance:",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Whether the model has pitch guidance (required for singing, optional for speech):",
"模型是否带音高指导,1是0否": "Whether the model has pitch guidance (1: yes, 0: no):",
"模型版本型号": "Model architecture version:",
"模型融合, 可用于测试音色融合": "Model fusion, can be used to test timbre fusion",
"模型路径": "Path to Model:",
"淡入淡出长度": "Fade length",
"版本": "Version",
"特征提取": "Feature extraction",
"特征检索库文件路径,为空则使用下拉的选择结果": "Path to the feature index file. Leave blank to use the selected result from the dropdown:",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Recommended +12 key for male to female conversion, and -12 key for female to male conversion. If the sound range goes too far and the voice is distorted, you can also adjust it to the appropriate range by yourself.",
"目标采样率": "Target sample rate:",
"算法延迟(ms):": "Algorithmic delays(ms):",
"自动检测index路径,下拉式选择(dropdown)": "Auto-detect index path and select from the dropdown:",
"融合": "Fusion",
"要改的模型信息": "Model information to be modified:",
"要置入的模型信息": "Model information to be placed:",
"训练": "Train",
"训练模型": "Train model",
"训练特征索引": "Train feature index",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Training complete. You can check the training logs in the console or the 'train.log' file under the experiment folder.",
"请指定说话人id": "Please specify the speaker/singer ID:",
"请选择index文件": "Please choose the .index file",
"请选择pth文件": "Please choose the .pth file",
"请选择说话人id": "Select Speaker/Singer ID:",
"转换": "Convert",
"输入实验名": "Enter the experiment name:",
"输入待处理音频文件夹路径": "Enter the path of the audio folder to be processed:",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Enter the path of the audio folder to be processed (copy it from the address bar of the file manager):",
"输入待处理音频文件路径(默认是正确格式示例)": "Enter the path of the audio file to be processed (default is the correct format example):",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Adjust the volume envelope scaling. Closer to 0, the more it mimicks the volume of the original vocals. Can help mask noise and make volume sound more natural when set relatively low. Closer to 1 will be more of a consistently loud volume:",
"输入监听": "Input voice monitor",
"输入训练文件夹路径": "Enter the path of the training folder:",
"输入设备": "Input device",
"输入降噪": "Input noise reduction",
"输出信息": "Output information",
"输出变声": "Output converted voice",
"输出设备": "Output device",
"输出降噪": "Output noise reduction",
"输出音频(右下角三个点,点了可以下载)": "Export audio (click on the three dots in the lower right corner to download)",
"选择.index文件": "Select the .index file",
"选择.pth文件": "Select the .pth file",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "Select the pitch extraction algorithm ('pm': faster extraction but lower-quality speech; 'harvest': better bass but extremely slow; 'crepe': better quality but GPU intensive), 'rmvpe': best quality, and little GPU requirement",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "Select the pitch extraction algorithm: when extracting singing, you can use 'pm' to speed up. For high-quality speech with fast performance, but worse CPU usage, you can use 'dio'. 'harvest' results in better quality but is slower. 'rmvpe' has the best results and consumes less CPU/GPU",
"采样率:": "采样率:",
"采样长度": "Sample length",
"重载设备列表": "Reload device list",
"音调设置": "Pitch settings",
"音频设备(请使用同种类驱动)": "Audio device (please use the same type of driver)",
"音高算法": "pitch detection algorithm",
"额外推理时长": "Extra inference time"
}

View File

@ -1,284 +0,0 @@
{
"很遗憾您这没有能用的显卡来支持您训练": "Lamentablemente, no tiene una tarjeta gráfica compatible para admitir su entrenamiento.",
"UVR5已开启": "UVR5 está habilitado",
"UVR5已关闭": "UVR5 está deshabilitado",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Este software es de código abierto bajo la licencia MIT. El autor no tiene control sobre el software. El usuario que lo utilice o distribuya, y el que genere sonidos a partir del software, asume toda la responsabilidad. <br>Si no acepta estos términos, no puede utilizar ni hacer referencia a ningún código o archivo dentro del paquete de software. Consulte el archivo <b>LICENSE</b> en el directorio raíz para obtener más detalles.",
"0-前置数据集获取工具": "0-Herramienta de obtención de conjunto de datos previo",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-Herramienta de separación de voz y acompañamiento UVR5 y eliminación de reverberación y retardo",
"是否开启UVR5-WebUI": "¿Habilitar UVR5-WebUI?",
"UVR5进程输出信息": "Información de salida del proceso UVR5",
"0b-语音切分工具": "0b-Herramienta de división de voz",
".list标注文件的路径": "Ruta del archivo de anotación .list",
"GPT模型列表": "Lista de modelos GPT",
"SoVITS模型列表": "Lista de modelos SoVITS",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。": "Directorio donde se guardan los archivos de audio después del corte! Ruta completa del archivo de audio a leer = este directorio - nombre de archivo correspondiente a la forma de onda en el archivo de lista (no la ruta completa).",
"音频自动切分输入路径,可文件可文件夹": "Ruta de entrada para la división automática de audio, puede ser un archivo o una carpeta",
"切分后的子音频的输出根目录": "Directorio raíz de salida de los sub-audios después de la división",
"怎么切": "Cómo cortar",
"不切": "No cortar",
"凑四句一切": "Completa cuatro oraciones para rellenar todo",
"按英文句号.切": "Cortar por puntos en inglés.",
"threshold:音量小于这个值视作静音的备选切割点": "umbral: puntos de corte alternativos considerados como silencio si el volumen es menor que este valor",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length: duración mínima de cada segmento, si el primer segmento es demasiado corto, se conecta continuamente con los siguientes hasta que supera este valor",
"min_interval:最短切割间隔": "min_interval: intervalo mínimo de corte",
"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_sil_kept:切完后静音最多留多长": "max_sil_kept: duración máxima del silencio después del corte",
"开启语音切割": "Habilitar la división de voz",
"终止语音切割": "Terminar la división de voz",
"max:归一化后最大值多少": "max: valor máximo después de la normalización",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: proporción de mezcla de audio normalizado que entra",
"切割使用的进程数": "Número de procesos utilizados para la división",
"语音切割进程输出信息": "Información de salida del proceso de división de voz",
"0c-中文批量离线ASR工具": "0c-Herramienta de ASR en lote fuera de línea en chino",
"开启离线批量ASR": "¿Habilitar ASR en lote fuera de línea?",
"终止ASR进程": "Terminar el proceso ASR",
"批量ASR(中文only)输入文件夹路径": "Ruta de la carpeta de entrada para ASR en lote (solo en chino)",
"ASR进程输出信息": "Información de salida del proceso ASR",
"0d-语音文本校对标注工具": "0d-Herramienta de corrección y etiquetado de texto de voz",
"是否开启打标WebUI": "¿Habilitar la interfaz web de etiquetado?",
"打标数据标注文件路径": "Ruta del archivo de etiquetado de datos",
"打标工具进程输出信息": "Información de salida del proceso de la herramienta de etiquetado",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"*实验/模型名": "*Nombre del experimento/modelo",
"显卡信息": "Información de la tarjeta gráfica",
"预训练的SoVITS-G模型路径": "Ruta del modelo SoVITS-G preentrenado",
"预训练的SoVITS-D模型路径": "Ruta del modelo SoVITS-D preentrenado",
"预训练的GPT模型路径": "Ruta del modelo GPT preentrenado",
"1A-训练集格式化工具": "1A-Herramienta de formateo del conjunto de datos de entrenamiento",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "Debe haber archivos y carpetas que comiencen con 23456 en el directorio logs/nombre del experimento",
"*文本标注文件": "*Archivo de etiquetado de texto",
"*训练集音频文件目录": "*Directorio de archivos de audio de entrenamiento",
"训练集音频文件目录 拼接 list文件里波形对应的文件名。": "Directorio de archivos de audio de entrenamiento, concatenar con los nombres de archivo correspondientes en el archivo list.",
"1Aa-文本内容": "1Aa-Contenido del texto",
"GPU卡号以-分割,每个卡号一个进程": "Número de tarjeta GPU separado por '-', cada número de tarjeta es un proceso",
"预训练的中文BERT模型路径": "Ruta del modelo BERT en chino preentrenado",
"开启文本获取": "¿Habilitar la obtención de texto?",
"终止文本获取进程": "Terminar el proceso de obtención de texto",
"文本进程输出信息": "Información de salida del proceso de obtención de texto",
"1Ab-SSL自监督特征提取": "1Ab-Extracción de características auto-supervisada SSL",
"预训练的SSL模型路径": "Ruta del modelo SSL preentrenado",
"开启SSL提取": "¿Habilitar la extracción SSL?",
"终止SSL提取进程": "Terminar el proceso de extracción SSL",
"SSL进程输出信息": "Información de salida del proceso SSL",
"1Ac-语义token提取": "1Ac-Extracción de tokens semánticos",
"开启语义token提取": "¿Habilitar la extracción de tokens semánticos?",
"终止语义token提取进程": "Terminar el proceso de extracción de tokens semánticos",
"语义token提取进程输出信息": "Información de salida del proceso de extracción de tokens semánticos",
"1Aabc-训练集格式化一键三连": "1Aabc-Formateo del conjunto de datos de entrenamiento en un solo paso",
"开启一键三连": "¿Habilitar un solo paso de formateo?",
"终止一键三连": "Terminar el proceso de un solo paso de formateo",
"一键三连进程输出信息": "Información de salida del proceso de triple acción",
"1B-微调训练": "1B-Entrenamiento de ajuste fino",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-Entrenamiento de SoVITS. Los archivos de modelo para compartir se encuentran en SoVITS_weights.",
"每张显卡的batch_size": "Tamaño de lote por tarjeta gráfica",
"总训练轮数total_epoch不建议太高": "Número total de épocas de entrenamiento, no se recomienda demasiado alto",
"文本模块学习率权重": "Peso de la tasa de aprendizaje del módulo de texto",
"保存频率save_every_epoch": "Frecuencia de guardado (cada epoch)",
"是否仅保存最新的ckpt文件以节省硬盘空间": "¿Guardar solo el último archivo ckpt para ahorrar espacio en disco?",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "¿Guardar el modelo final pequeño en la carpeta de pesos en cada punto de guardado?",
"开启SoVITS训练": "Iniciar entrenamiento de SoVITS",
"终止SoVITS训练": "Detener entrenamiento de SoVITS",
"SoVITS训练进程输出信息": "Información de salida del proceso de entrenamiento de SoVITS",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-Entrenamiento de GPT. Los archivos de modelo para compartir se encuentran en GPT_weights.",
"总训练轮数total_epoch": "Número total de épocas de entrenamiento",
"开启GPT训练": "Iniciar entrenamiento de GPT",
"终止GPT训练": "Detener entrenamiento de GPT",
"GPT训练进程输出信息": "Información de salida del proceso de entrenamiento de GPT",
"1C-推理": "1C-Inferencia",
"选择训练完存放在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.",
"*GPT模型列表": "*Lista de modelos GPT",
"*SoVITS模型列表": "*Lista de modelos SoVITS",
"GPU卡号,只能填1个整数": "Número de tarjeta GPU, solo se puede ingresar un número entero",
"刷新模型路径": "Actualizar la ruta del modelo",
"是否开启TTS推理WebUI": "¿Habilitar la interfaz web de inferencia TTS?",
"TTS推理WebUI进程输出信息": "Información de salida del proceso de interfaz web de inferencia TTS",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-Cambio de voz",
"施工中,请静候佳音": "En construcción, por favor espere pacientemente",
"TTS推理进程已开启": "Proceso de inferencia TTS iniciado",
"TTS推理进程已关闭": "Proceso de inferencia TTS cerrado",
"打标工具WebUI已开启": "Interfaz web de la herramienta de etiquetado iniciada",
"打标工具WebUI已关闭": "Interfaz web de la herramienta de etiquetado cerrada",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. 如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录LICENSE.": "Este software es de código abierto bajo la licencia MIT. El autor no tiene control sobre el software. El usuario que lo utilice o distribuya, y el que genere sonidos a partir del software, asume toda la responsabilidad. Si no acepta estos términos, no puede utilizar ni hacer referencia a ningún código o archivo dentro del paquete de software. Consulte el archivo LICENSE en el directorio raíz para obtener más detalles.",
"*请上传并填写参考信息": "*Por favor, suba y complete la información de referencia",
"*请填写需要合成的目标文本": "*Por favor, complete el texto objetivo que necesita ser sintetizado",
"ASR任务开启%s": "Tarea ASR iniciada: %s",
"GPT训练完成": "Entrenamiento de GPT completado",
"GPT训练开始%s": "Entrenamiento de GPT iniciado: %s",
"SSL提取进程执行中": "Proceso de extracción SSL en ejecución",
"SSL提取进程结束": "Proceso de extracción SSL finalizado",
"SoVITS训练完成": "Entrenamiento de SoVITS completado",
"SoVITS训练开始%s": "Entrenamiento de SoVITS iniciado: %s",
"一键三连中途报错": "Error intermedio en triple acción",
"一键三连进程结束": "Proceso de triple acción finalizado",
"中文": "Chino",
"凑50字一切": "Todo para alcanzar las 50 palabras",
"凑五句一切": "Todo para alcanzar las cinco frases",
"切分后文本": "Texto después de la división",
"切割执行中": "División en proceso",
"切割结束": "División finalizada",
"参考音频的文本": "Texto de referencia del audio",
"参考音频的语种": "Idioma del audio de referencia",
"合成语音": "Síntesis de voz",
"后续将支持混合语种编码文本输入。": "En el futuro, se admitirá la entrada de texto con codificación de idiomas mixtos.",
"已有正在进行的ASR任务需先终止才能开启下一次任务": "Ya hay una tarea ASR en curso, debe detenerla antes de comenzar la siguiente tarea",
"已有正在进行的GPT训练任务需先终止才能开启下一次任务": "Ya hay una tarea de entrenamiento de GPT en curso, debe detenerla antes de comenzar la siguiente tarea",
"已有正在进行的SSL提取任务需先终止才能开启下一次任务": "Ya hay una tarea de extracción SSL en curso, debe detenerla antes de comenzar la siguiente tarea",
"已有正在进行的SoVITS训练任务需先终止才能开启下一次任务": "Ya hay una tarea de entrenamiento de SoVITS en curso, debe detenerla antes de comenzar la siguiente tarea",
"已有正在进行的一键三连任务,需先终止才能开启下一次任务": "Ya hay una tarea de triple acción en curso, debe detenerla antes de comenzar la siguiente tarea",
"已有正在进行的切割任务,需先终止才能开启下一次任务": "Ya hay una tarea de división en curso, debe detenerla antes de comenzar la siguiente tarea",
"已有正在进行的文本任务,需先终止才能开启下一次任务": "Ya hay una tarea de texto en curso, debe detenerla antes de comenzar la siguiente tarea",
"已有正在进行的语义token提取任务需先终止才能开启下一次任务": "Ya hay una tarea de extracción de tokens semánticos en curso, debe detenerla antes de comenzar la siguiente tarea",
"已终止ASR进程": "Proceso ASR terminado",
"已终止GPT训练": "Entrenamiento de GPT terminado",
"已终止SoVITS训练": "Entrenamiento de SoVITS terminado",
"已终止所有1a进程": "Se han terminado todos los procesos 1a",
"已终止所有1b进程": "Se han terminado todos los procesos 1b",
"已终止所有一键三连进程": "Se han terminado todos los procesos de triple acción",
"已终止所有切割进程": "Proceso de corte terminado",
"已终止所有语义token进程": "Proceso de extracción de tokens semánticos terminado",
"按中文句号。切": "Cortar según puntos en chino",
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "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.",
"文本进程执行中": "Proceso de texto en ejecución",
"文本进程结束": "Proceso de texto finalizado",
"日文": "Japonés",
"英文": "Inglés",
"语义token提取进程执行中": "Proceso de extracción de tokens semánticos en ejecución",
"语义token提取进程结束": "Proceso de extracción de tokens semánticos finalizado",
"请上传参考音频": "Por favor, suba el audio de referencia",
"输入路径不存在": "La ruta de entrada no existe",
"输入路径存在但既不是文件也不是文件夹": "La ruta de entrada existe pero no es ni un archivo ni una carpeta",
"输出的语音": "Audio de salida",
"进度1a-done": "Progreso: 1a-hecho",
"进度1a-done, 1b-ing": "Progreso: 1a-hecho, 1b-en proceso",
"进度1a-ing": "Progreso: 1a-en proceso",
"进度1a1b-done": "Progreso: 1a1b-hecho",
"进度1a1b-done, 1cing": "Progreso: 1a1b-hecho, 1c-en proceso",
"进度all-done": "Progreso: todo hecho",
"需要合成的切分前文本": "Texto a sintetizar antes de la división",
"需要合成的文本": "Texto a sintetizar",
"需要合成的语种": "Idioma para la síntesis",
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "Si es >=3, se utiliza la mediana para filtrar los resultados del reconocimiento de altura tonal de harvest, el valor es el radio del filtro. Su uso puede debilitar los sonidos sordos.",
"A模型权重": "Peso del modelo A",
"A模型路径": "Ruta del modelo A",
"B模型路径": "Ruta del modelo B",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "Archivo de curva F0, opcional, una línea por altura tonal, en lugar de F0 y cambio de tono predeterminados",
"Index Rate": "Tasa de índice",
"Onnx导出": "Exportar a Onnx",
"Onnx输出路径": "Ruta de salida de Onnx",
"RVC模型路径": "Ruta del modelo RVC",
"ckpt处理": "Procesamiento de ckpt",
"harvest进程数": "Número de procesos de harvest",
"index文件路径不可包含中文": "La ruta del archivo de índice no puede contener caracteres chinos",
"pth文件路径不可包含中文": "La ruta del archivo pth no puede contener caracteres chinos",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Configuración de números de tarjeta rmvpe: usando - para separar los números de tarjeta de diferentes procesos de entrada, por ejemplo, 0-0-1 para ejecutar 2 procesos en la tarjeta 0 y 1 proceso en la tarjeta 1",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Paso 1: Completa la configuración del experimento. Los datos del experimento se encuentran en logs, cada experimento en una carpeta, debe ingresar manualmente la ruta del nombre del experimento, que incluye la configuración del experimento, el registro y los archivos del modelo entrenado.",
"step1:正在处理数据": "Paso 1: Procesando datos",
"step2:正在提取音高&正在提取特征": "Paso 2: Extrayendo tono y características",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Paso 2a: Recorre automáticamente todos los archivos en la carpeta de entrenamiento que se pueden decodificar en archivos de audio y realiza la normalización de segmentos. Genera 2 carpetas de audio en el directorio del experimento; por ahora, solo es compatible con el entrenamiento de una sola persona.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Paso 2b: Extraer tono con CPU (si el modelo incluye tono) y extraer características con GPU (seleccionar número de tarjeta)",
"step3: 填写训练设置, 开始训练模型和索引": "Paso 3: Completa la configuración de entrenamiento y comienza a entrenar el modelo e indexar",
"step3a:正在训练模型": "Paso 3a: Entrenando el modelo",
"一键训练": "Entrenamiento con un clic",
"也可批量输入音频文件, 二选一, 优先读文件夹": "También se pueden ingresar archivos de audio por lotes, seleccionar uno, prioridad para leer carpetas",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Usar - para separar los números de tarjeta utilizados como entrada, por ejemplo, 0-1-2 para usar las tarjetas 0, 1 y 2",
"伴奏人声分离&去混响&去回声": "Separación de acompañamiento y voz principal y eliminación de reverberación y eco",
"使用模型采样率": "Usar tasa de muestreo del modelo",
"使用设备采样率": "Usar tasa de muestreo del dispositivo",
"保存名": "Nombre de guardado",
"保存的文件名, 默认空为和源文件同名": "Nombre de archivo guardado, vacío por defecto para tener el mismo nombre que el archivo fuente",
"保存的模型名不带后缀": "Nombre del modelo guardado sin extensión",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Proteger las consonantes claras y los sonidos de respiración, evitando artefactos como el desgarro eléctrico. No activar al tirar hasta 0.5, reducir para aumentar la protección, pero puede disminuir la efectividad del índice",
"修改": "Modificar",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modificar información del modelo (solo compatible con archivos de modelo pequeños extraídos en la carpeta weights)",
"停止音频转换": "Detener la conversión de audio",
"全流程结束!": "¡Proceso completo!",
"刷新音色列表和索引路径": "Actualizar lista de tonos e índice de ruta",
"加载模型": "Cargar modelo",
"加载预训练底模D路径": "Cargar ruta del modelo D preentrenado",
"加载预训练底模G路径": "Cargar ruta del modelo G preentrenado",
"单次推理": "Inferencia única",
"卸载音色省显存": "Descargar tono para ahorrar memoria de video",
"变调(整数, 半音数量, 升八度12降八度-12)": "Cambiar tono (número entero, cantidad de semitonos, subir octava 12 bajar octava -12)",
"后处理重采样至最终采样率0为不进行重采样": "Reprocesar y remuestrear a la tasa de muestreo final, 0 para no remuestrear",
"否": "No",
"启用相位声码器": "Activar codificador de fase",
"响应阈值": "Umbral de respuesta",
"响度因子": "Factor de sonoridad",
"处理数据": "Procesar datos",
"导出Onnx模型": "Exportar modelo Onnx",
"导出文件格式": "Formato de archivo de exportación",
"常见问题解答": "Preguntas frecuentes",
"常规设置": "Configuración general",
"开始音频转换": "Iniciar conversión de audio",
"性能设置": "Configuración de rendimiento",
"批量推理": "Inferencia por lotes",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Conversión por lotes, ingrese la carpeta de audio a convertir o cargue varios archivos de audio, la salida se realiza en la carpeta especificada (opt por defecto). ",
"指定输出主人声文件夹": "Especificar carpeta de salida de voz principal",
"指定输出文件夹": "Especificar carpeta de salida",
"指定输出非主人声文件夹": "Especificar carpeta de salida de no voz principal",
"推理时间(ms):": "Tiempo de inferencia (ms):",
"推理音色": "Tono de inferencia",
"提取": "Extraer",
"提取音高和处理数据使用的CPU进程数": "Número de procesadores de CPU utilizados para extraer tono y procesar datos",
"是": "Sí",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Almacenar en caché todos los conjuntos de entrenamiento en la memoria de video. Pequeños conjuntos de datos menores a 10 minutos pueden almacenarse en caché para acelerar el entrenamiento; almacenar en caché grandes conjuntos de datos puede saturar la memoria de video y no acelerará mucho.",
"查看": "Ver",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Ver información del modelo (solo compatible con archivos pequeños extraídos en la carpeta weights)",
"检索特征占比": "Proporción de características de búsqueda",
"模型": "Modelo",
"模型推理": "Inferencia de modelo",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Extracción de modelo (ingresar la ruta del modelo grande en la carpeta logs), útil cuando se quiere dejar de entrenar a la mitad y el modelo no ha extraído automáticamente un modelo pequeño guardado, o para probar la situación del modelo intermedio",
"模型是否带音高指导": "¿El modelo incluye guía de altura tonal?",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "¿El modelo incluye guía de altura tonal? (Necesario para cantar, opcional para voz)",
"模型是否带音高指导,1是0否": "¿El modelo incluye guía de altura tonal? 1 para sí, 0 para no",
"模型版本型号": "Versión y modelo del modelo",
"模型融合, 可用于测试音色融合": "Fusión de modelos, útil para probar la mezcla de tonos",
"模型路径": "Ruta del modelo",
"淡入淡出长度": "Longitud de desvanecimiento",
"版本": "Versión",
"特征提取": "Extracción de características",
"特征检索库文件路径,为空则使用下拉的选择结果": "Ruta del archivo de la biblioteca de búsqueda de características, si está vacío, se utiliza el resultado seleccionado en el menú desplegable",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Recomendación para cambiar de hombre a mujer +12 teclas, cambiar de mujer a hombre -12 teclas. Si la amplitud del rango tonal causa distorsión del tono, también puede ajustarse manualmente al rango tonal adecuado. ",
"目标采样率": "Tasa de muestreo objetivo",
"算法延迟(ms):": "Retardo del algoritmo (ms):",
"自动检测index路径,下拉式选择(dropdown)": "Detectar automáticamente la ruta del índice, seleccionar en menú desplegable",
"融合": "Fusión",
"要改的模型信息": "Información del modelo a cambiar",
"要置入的模型信息": "Información del modelo a insertar",
"训练": "Entrenar",
"训练模型": "Entrenar modelo",
"训练特征索引": "Entrenar índice de características",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Entrenamiento terminado, puede ver registros de entrenamiento en la consola o en el archivo train.log en la carpeta del experimento",
"请指定说话人id": "Por favor, especifique el ID del hablante",
"请选择index文件": "Seleccione el archivo index, por favor",
"请选择pth文件": "Seleccione el archivo pth, por favor",
"请选择说话人id": "Seleccione el ID del hablante, por favor",
"转换": "Convertir",
"输入实验名": "Ingrese el nombre del experimento",
"输入待处理音频文件夹路径": "Ingrese la ruta de la carpeta de audio a procesar",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Ingrese la ruta de la carpeta de audio a procesar (puede copiarla desde la barra de direcciones del administrador de archivos)",
"输入待处理音频文件路径(默认是正确格式示例)": "Ingrese la ruta del archivo de audio a procesar (el formato predeterminado es un ejemplo correcto)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Ingrese la proporción de fusión para reemplazar el sobre de volumen de origen con el sobre de volumen de salida; cuanto más cercano a 1, más se utiliza el sobre de salida",
"输入监听": "Entrada de monitoreo",
"输入训练文件夹路径": "Ingrese la ruta de la carpeta de entrenamiento",
"输入设备": "Dispositivo de entrada",
"输入降噪": "Entrada de reducción de ruido",
"输出信息": "Información de salida",
"输出变声": "Salida de cambio de voz",
"输出设备": "Dispositivo de salida",
"输出降噪": "Salida de reducción de ruido",
"输出音频(右下角三个点,点了可以下载)": "Salida de audio (los tres puntos en la esquina inferior derecha, haga clic para descargar)",
"选择.index文件": "Seleccione el archivo .index, por favor",
"选择.pth文件": "Seleccione el archivo .pth, por favor",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "Seleccione el algoritmo de extracción de tono; para voz, pm acelera, harvest es lento pero tiene buenos bajos, crepe tiene buen efecto pero consume GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "Seleccione el algoritmo de extracción de tono; para voz, pm acelera, harvest es lento pero tiene buenos bajos, crepe tiene buen efecto pero consume GPU, rmvpe tiene el mejor efecto y consume poco GPU",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "Seleccione el algoritmo de extracción de tono: para voz, pm acelera con buena calidad de audio pero CPU deficiente, dio acelera pero harvest tiene mejor calidad aunque es más lento, rmvpe tiene el mejor efecto y consume poco CPU/GPU",
"采样率:": "Tasa de muestreo:",
"采样长度": "Longitud de muestreo",
"重载设备列表": "Recargar lista de dispositivos",
"音调设置": "Configuración de tono",
"音频设备(请使用同种类驱动)": "Dispositivo de audio (utilice controladores del mismo tipo)",
"音高算法": "Algoritmo de tono",
"额外推理时长": "Tiempo adicional de inferencia"
}

View File

@ -1,284 +0,0 @@
{
"很遗憾您这没有能用的显卡来支持您训练": "Malheureusement, votre carte graphique n'est pas compatible avec l'entraînement.",
"UVR5已开启": "UVR5 est activé",
"UVR5已关闭": "UVR5 est désactivé",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Ce logiciel est open source sous la licence MIT. L'auteur n'a aucun contrôle sur le logiciel. Les utilisateurs et les diffuseurs du son exporté par le logiciel en assument l'entière responsabilité. <br>Si vous n'acceptez pas ces termes, vous ne pouvez ni utiliser ni citer aucun code ou fichier à l'intérieur du package. Voir <b>LICENSE</b> dans le répertoire racine pour plus de détails.",
"0-前置数据集获取工具": "0-Outil de récupération de jeu de données préalable",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-Outil de séparation de la voix humaine et de l'accompagnement UVR5 & suppression de la réverbération et du retard",
"是否开启UVR5-WebUI": "Activer UVR5-WebUI",
"UVR5进程输出信息": "Informations de processus UVR5",
"0b-语音切分工具": "0b-Outil de découpage vocal",
".list标注文件的路径": "Chemin du fichier d'annotation .list",
"GPT模型列表": "Liste des modèles GPT",
"SoVITS模型列表": "Liste des modèles SoVITS",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。": "Répertoire où sont enregistrés les fichiers audio après la découpe ! Chemin complet du fichier audio à lire = ce répertoire - nom du fichier correspondant à la forme d'onde dans le fichier liste (pas le chemin complet).",
"音频自动切分输入路径,可文件可文件夹": "Chemin d'entrée automatique de découpage audio, peut être un fichier ou un dossier",
"切分后的子音频的输出根目录": "Répertoire racine de sortie des sous-audios après découpage",
"怎么切": "Comment découper",
"不切": "Pas de découpe",
"凑四句一切": "Composez quatre phrases pour tout remplir",
"按英文句号.切": "Découpez par des points en anglais",
"threshold:音量小于这个值视作静音的备选切割点": "seuil: le volume inférieur à cette valeur est considéré comme un point de coupe silencieux alternatif",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length: longueur minimale de chaque segment, si le premier segment est trop court, il est continué avec le segment suivant jusqu'à dépasser cette valeur",
"min_interval:最短切割间隔": "min_interval: intervalle de coupe minimum",
"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_sil_kept:切完后静音最多留多长": "max_sil_kept: durée maximale de silence après la coupe",
"开启语音切割": "Activer le découpage vocal",
"终止语音切割": "Arrêter le découpage vocal",
"max:归一化后最大值多少": "max: valeur maximale après normalisation",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: proportion d'audio normalisé mélangé",
"切割使用的进程数": "Nombre de processus utilisés pour le découpage",
"语音切割进程输出信息": "Informations de processus de découpage vocal",
"0c-中文批量离线ASR工具": "0c-Outil chinois de transcription automatique hors ligne en masse",
"开启离线批量ASR": "Activer la transcription automatique hors ligne en masse",
"终止ASR进程": "Arrêter le processus ASR",
"批量ASR(中文only)输入文件夹路径": "Chemin du dossier d'entrée pour la transcription automatique hors ligne en masse (chinois uniquement)",
"ASR进程输出信息": "Informations de processus ASR",
"0d-语音文本校对标注工具": "0d-Outil de correction et d'annotation de texte vocal",
"是否开启打标WebUI": "Activer l'interface Web d'annotation",
"打标数据标注文件路径": "Chemin du fichier d'annotation des données annotées",
"打标工具进程输出信息": "Informations de processus de l'outil d'annotation",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"*实验/模型名": "*Nom de l'expérience/modèle",
"显卡信息": "Informations sur la carte graphique",
"预训练的SoVITS-G模型路径": "Chemin du modèle SoVITS-G pré-entraîné",
"预训练的SoVITS-D模型路径": "Chemin du modèle SoVITS-D pré-entraîné",
"预训练的GPT模型路径": "Chemin du modèle GPT pré-entraîné",
"1A-训练集格式化工具": "1A-Outil de formatage du jeu de données d'entraînement",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "Les fichiers et dossiers commençant par 23456 devraient être présents dans le répertoire logs/nom de l'expérience",
"*文本标注文件": "*Fichier d'annotation de texte",
"*训练集音频文件目录": "*Répertoire des fichiers audio d'entraînement",
"训练集音频文件目录 拼接 list文件里波形对应的文件名。": "Répertoire des fichiers audio d'entraînement - concaténer avec les noms de fichiers correspondants dans le fichier de liste",
"1Aa-文本内容": "1Aa-Contenu du texte",
"GPU卡号以-分割,每个卡号一个进程": "Numéro de carte GPU séparé par des tirets, un processus par numéro de carte",
"预训练的中文BERT模型路径": "Chemin du modèle BERT chinois pré-entraîné",
"开启文本获取": "Activer l'extraction de texte",
"终止文本获取进程": "Arrêter le processus d'extraction de texte",
"文本进程输出信息": "Informations de processus de texte",
"1Ab-SSL自监督特征提取": "1Ab-Extraction de caractéristiques auto-supervisée SSL",
"预训练的SSL模型路径": "Chemin du modèle SSL pré-entraîné",
"开启SSL提取": "Activer l'extraction SSL",
"终止SSL提取进程": "Arrêter le processus d'extraction SSL",
"SSL进程输出信息": "Informations de processus SSL",
"1Ac-语义token提取": "1Ac-Extraction de jetons sémantiques",
"开启语义token提取": "Activer l'extraction de jetons sémantiques",
"终止语义token提取进程": "Arrêter le processus d'extraction de jetons sémantiques",
"语义token提取进程输出信息": "Informations de processus d'extraction de jetons sémantiques",
"1Aabc-训练集格式化一键三连": "1Aabc-Formatage en un clic du jeu de données d'entraînement",
"开启一键三连": "Activer l'un clic trois connexions",
"终止一键三连": "Arrêter l'un clic trois connexions",
"一键三连进程输出信息": "Informations de processus de l'un clic trois connexions",
"1B-微调训练": "1B-Entraînement fin",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-Entraînement SoVITS. Les fichiers de modèle destinés au partage sont enregistrés sous SoVITS_weights.",
"每张显卡的batch_size": "Taille de lot par carte graphique",
"总训练轮数total_epoch不建议太高": "Nombre total d'époques d'entraînement, pas recommandé d'être trop élevé",
"文本模块学习率权重": "Poids du taux d'apprentissage du module de texte",
"保存频率save_every_epoch": "Fréquence de sauvegarde (sauvegarder à chaque époque)",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Sauvegarder uniquement le dernier fichier ckpt pour économiser de l'espace disque",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Sauvegarder le petit modèle final dans le dossier weights à chaque point de sauvegarde",
"开启SoVITS训练": "Activer l'entraînement SoVITS",
"终止SoVITS训练": "Arrêter l'entraînement SoVITS",
"SoVITS训练进程输出信息": "Informations de processus d'entraînement SoVITS",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-Entraînement GPT. Les fichiers de modèle destinés au partage sont enregistrés sous GPT_weights.",
"总训练轮数total_epoch": "Nombre total d'époques d'entraînement",
"开启GPT训练": "Activer l'entraînement GPT",
"终止GPT训练": "Arrêter l'entraînement GPT",
"GPT训练进程输出信息": "Informations de processus d'entraînement GPT",
"1C-推理": "1C-Inférence",
"选择训练完存放在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.",
"*GPT模型列表": "*Liste des modèles GPT",
"*SoVITS模型列表": "*Liste des modèles SoVITS",
"GPU卡号,只能填1个整数": "Numéro de carte GPU, ne peut contenir qu'un seul entier",
"刷新模型路径": "Actualiser le chemin du modèle",
"是否开启TTS推理WebUI": "Activer l'interface Web d'inférence TTS",
"TTS推理WebUI进程输出信息": "Informations de processus de l'interface Web d'inférence TTS",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-Modification de la voix",
"施工中,请静候佳音": "En construction, veuillez attendre patiemment",
"TTS推理进程已开启": "Le processus d'inférence TTS est en cours",
"TTS推理进程已关闭": "Le processus d'inférence TTS est terminé",
"打标工具WebUI已开启": "L'interface Web de l'outil d'annotation est en cours",
"打标工具WebUI已关闭": "L'interface Web de l'outil d'annotation est terminée",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. 如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录LICENSE.": "Ce logiciel est open source sous la licence MIT. L'auteur n'a aucun contrôle sur le logiciel. Les utilisateurs et les diffuseurs du son exporté par le logiciel en assument l'entière responsabilité. Si vous n'acceptez pas ces termes, vous ne pouvez ni utiliser ni citer aucun code ou fichier à l'intérieur du package. Voir LICENSE dans le répertoire racine pour plus de détails.",
"*请上传并填写参考信息": "*Veuillez télécharger et remplir les informations de référence",
"*请填写需要合成的目标文本": "*Veuillez remplir le texte cible à synthétiser",
"ASR任务开启%s": "Tâche ASR activée : %s",
"GPT训练完成": "Entraînement GPT terminé",
"GPT训练开始%s": "Entraînement GPT commencé : %s",
"SSL提取进程执行中": "Processus d'extraction SSL en cours",
"SSL提取进程结束": "Processus d'extraction SSL terminé",
"SoVITS训练完成": "Entraînement SoVITS terminé",
"SoVITS训练开始%s": "Entraînement SoVITS commencé : %s",
"一键三连中途报错": "Erreur intermédiaire dans la séquence d'un clic trois connexions",
"一键三连进程结束": "Processus de séquence d'un clic trois connexions terminé",
"中文": "Chinois",
"凑50字一切": "Assembler 50 mots tout",
"凑五句一切": "Assembler cinq phrases tout",
"切分后文本": "Texte après découpage",
"切割执行中": "Découpage en cours",
"切割结束": "Découpage terminé",
"参考音频的文本": "Texte de l'audio de référence",
"参考音频的语种": "Langue de l'audio de référence",
"合成语音": "Synthèse vocale",
"后续将支持混合语种编码文本输入。": "Prise en charge ultérieure du codage de texte avec des langues mixtes.",
"已有正在进行的ASR任务需先终止才能开启下一次任务": "Une tâche ASR est déjà en cours. Vous devez d'abord l'arrêter avant de démarrer une nouvelle tâche.",
"已有正在进行的GPT训练任务需先终止才能开启下一次任务": "Une tâche d'entraînement GPT est déjà en cours. Vous devez d'abord l'arrêter avant de démarrer une nouvelle tâche.",
"已有正在进行的SSL提取任务需先终止才能开启下一次任务": "Une tâche d'extraction SSL est déjà en cours. Vous devez d'abord l'arrêter avant de démarrer une nouvelle tâche.",
"已有正在进行的SoVITS训练任务需先终止才能开启下一次任务": "Une tâche d'entraînement SoVITS est déjà en cours. Vous devez d'abord l'arrêter avant de démarrer une nouvelle tâche.",
"已有正在进行的一键三连任务,需先终止才能开启下一次任务": "Une tâche d'une séquence d'un clic trois connexions est déjà en cours. Vous devez d'abord l'arrêter avant de démarrer une nouvelle tâche.",
"已有正在进行的切割任务,需先终止才能开启下一次任务": "Une tâche de découpage est déjà en cours. Vous devez d'abord l'arrêter avant de démarrer une nouvelle tâche.",
"已有正在进行的文本任务,需先终止才能开启下一次任务": "Une tâche de texte est déjà en cours. Vous devez d'abord l'arrêter avant de démarrer une nouvelle tâche.",
"已有正在进行的语义token提取任务需先终止才能开启下一次任务": "Une tâche d'extraction de jetons sémantiques est déjà en cours. Vous devez d'abord l'arrêter avant de démarrer une nouvelle tâche.",
"已终止ASR进程": "Processus ASR arrêté",
"已终止GPT训练": "Entraînement GPT arrêté",
"已终止SoVITS训练": "Entraînement SoVITS arrêté",
"已终止所有1a进程": "Tous les processus 1a ont été arrêtés",
"已终止所有1b进程": "Tous les processus 1b ont été arrêtés",
"已终止所有一键三连进程": "Tous les processus d'une séquence d'un clic trois connexions ont été arrêtés",
"已终止所有切割进程": "Tous les processus de découpage ont été arrêtés",
"已终止所有语义token进程": "Tous les processus de jetons sémantiques ont été arrêtés",
"按中文句号。切": "Couper selon les points en chinois.",
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "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.",
"文本进程执行中": "Processus de texte en cours",
"文本进程结束": "Processus de texte terminé",
"日文": "Japonais",
"英文": "Anglais",
"语义token提取进程执行中": "Processus d'extraction de jetons sémantiques en cours",
"语义token提取进程结束": "Processus d'extraction de jetons sémantiques terminé",
"请上传参考音频": "Veuillez télécharger l'audio de référence",
"输入路径不存在": "Le chemin d'entrée n'existe pas",
"输入路径存在但既不是文件也不是文件夹": "Le chemin d'entrée existe mais n'est ni un fichier ni un dossier",
"输出的语音": "Audio de sortie",
"进度1a-done": "Progression : 1a-done",
"进度1a-done, 1b-ing": "Progression : 1a-done, 1b-ing",
"进度1a-ing": "Progression : 1a-ing",
"进度1a1b-done": "Progression : 1a1b-done",
"进度1a1b-done, 1cing": "Progression : 1a1b-done, 1cing",
"进度all-done": "Progression : all-done",
"需要合成的切分前文本": "Texte préalable à la synthèse",
"需要合成的文本": "Texte à synthétiser",
"需要合成的语种": "Langue de synthèse requise",
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "Si >= 3, utilisez le résultat de la reconnaissance de hauteur de récolte avec un filtre médian, la valeur est le rayon du filtre, son utilisation peut atténuer les sons sourds",
"A模型权重": "Poids du modèle A",
"A模型路径": "Chemin du modèle A",
"B模型路径": "Chemin du modèle B",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "Fichier de courbe F0, optionnel, une ligne par hauteur de ton, remplace F0 et la hauteur de ton par défaut",
"Index Rate": "Taux d'index",
"Onnx导出": "Exportation Onnx",
"Onnx输出路径": "Chemin d'exportation Onnx",
"RVC模型路径": "Chemin du modèle RVC",
"ckpt处理": "Traitement des points de contrôle",
"harvest进程数": "Nombre de processus de récolte",
"index文件路径不可包含中文": "Le chemin du fichier d'index ne peut pas contenir de caractères chinois",
"pth文件路径不可包含中文": "Le chemin du fichier pth ne peut pas contenir de caractères chinois",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Configuration des numéros de carte rmvpe : séparez les numéros de carte utilisés en entrée par des tirets, par exemple 0-0-1 signifie 2 processus sur la carte 0 et 1 processus sur la carte 1",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Étape 1 : Remplissez la configuration de l'expérience. Les données de l'expérience sont stockées dans le dossier logs, chaque expérience a son propre dossier. Vous devez entrer manuellement le chemin du nom de l'expérience, qui contient la configuration de l'expérience, les journaux et les fichiers de modèle entraînés.",
"step1:正在处理数据": "Étape 1 : Traitement des données en cours",
"step2:正在提取音高&正在提取特征": "Étape 2 : Extraction de la hauteur tonale et des caractéristiques en cours",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Étape 2a : Parcours automatique de tous les fichiers décodables en audio dans le dossier d'entraînement et normalisation par découpage. Deux dossiers wav sont générés dans le répertoire de l'expérience. Actuellement, seule la formation individuelle est prise en charge.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Étape 2b : Extraction de la hauteur tonale avec le CPU (si le modèle a une hauteur tonale) et extraction des caractéristiques avec le GPU (choisissez le numéro de la carte)",
"step3: 填写训练设置, 开始训练模型和索引": "Étape 3 : Remplissez les paramètres d'entraînement et commencez l'entraînement du modèle et de l'index",
"step3a:正在训练模型": "Étape 3a : Entraînement du modèle en cours",
"一键训练": "Entraînement en un clic",
"也可批量输入音频文件, 二选一, 优先读文件夹": "Également possible d'entrer en lot des fichiers audio, au choix, privilégiez la lecture du dossier",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Numéros de carte utilisés en entrée séparés par des tirets, par exemple 0-1-2 Utilisez les cartes 0, 1 et 2",
"伴奏人声分离&去混响&去回声": "Séparation de la voix et de l'accompagnement, suppression de la réverbération et de l'écho",
"使用模型采样率": "Taux d'échantillonnage du modèle",
"使用设备采样率": "Taux d'échantillonnage de l'appareil",
"保存名": "Nom de sauvegarde",
"保存的文件名, 默认空为和源文件同名": "Nom de fichier sauvegardé, par défaut vide pour avoir le même nom que le fichier source",
"保存的模型名不带后缀": "Nom du modèle sauvegardé sans suffixe",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Protéger les consonnes claires et les sons de respiration, éviter les artefacts tels que le déchirement du son électronique, tirer à 0.5 pour désactiver, diminuer pour augmenter la protection mais cela peut réduire l'efficacité de l'indexation",
"修改": "Modifier",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modifier les informations du modèle (uniquement pour les petits fichiers de modèle extraits sous le dossier weights)",
"停止音频转换": "Arrêter la conversion audio",
"全流程结束!": "Processus complet terminé !",
"刷新音色列表和索引路径": "Actualiser la liste des timbres et les chemins d'index",
"加载模型": "Charger le modèle",
"加载预训练底模D路径": "Charger le chemin du modèle de base pré-entraîné D",
"加载预训练底模G路径": "Charger le chemin du modèle de base pré-entraîné G",
"单次推理": "Inférence unique",
"卸载音色省显存": "Décharger le timbre pour économiser la mémoire vidéo",
"变调(整数, 半音数量, 升八度12降八度-12)": "Changer la tonalité (entier, quantité de demi-tons, monter d'une octave 12, descendre d'une octave -12)",
"后处理重采样至最终采样率0为不进行重采样": "Re-échantillonnage en post-traitement à la fréquence d'échantillonnage finale, 0 pour ne pas effectuer de re-échantillonnage",
"否": "Non",
"启用相位声码器": "Activer le codeur de phase",
"响应阈值": "Seuil de réponse",
"响度因子": "Facteur de volume sonore",
"处理数据": "Traiter les données",
"导出Onnx模型": "Exporter le modèle Onnx",
"导出文件格式": "Format d'exportation du fichier",
"常见问题解答": "Questions fréquemment posées",
"常规设置": "Paramètres généraux",
"开始音频转换": "Démarrer la conversion audio",
"性能设置": "Paramètres de performance",
"批量推理": "Inférence en lot",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Conversion en lot, entrez le dossier audio à convertir, ou téléchargez plusieurs fichiers audio, les fichiers convertis seront enregistrés dans le dossier spécifié (opt par défaut).",
"指定输出主人声文件夹": "Spécifier le dossier de sortie pour la voix principale",
"指定输出文件夹": "Spécifier le dossier de sortie",
"指定输出非主人声文件夹": "Spécifier le dossier de sortie pour la non-voix principale",
"推理时间(ms):": "Temps d'inférence (ms) :",
"推理音色": "Timbre d'inférence",
"提取": "Extraire",
"提取音高和处理数据使用的CPU进程数": "Nombre de processus CPU utilisés pour extraire la hauteur tonale et traiter les données",
"是": "Oui",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Mettre en cache ou non tous les ensembles d'entraînement dans la mémoire vidéo. Pour les petites données de moins de 10 minutes, la mise en cache peut accélérer l'entraînement, mais pour les grandes données, la mise en cache peut épuiser la mémoire vidéo sans améliorer considérablement la vitesse.",
"查看": "Voir",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Voir les informations du modèle (uniquement pour les petits fichiers de modèle extraits sous le dossier weights)",
"检索特征占比": "Pourcentage des caractéristiques extraites",
"模型": "Modèle",
"模型推理": "Inférence du modèle",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Extraction du modèle (saisissez le chemin du modèle volumineux sous le dossier logs), utilisé lorsque l'entraînement est à mi-chemin, que vous ne voulez pas continuer l'entraînement, que le modèle n'a pas été automatiquement extrait et sauvegardé en tant que petit fichier, ou que vous souhaitez tester le modèle intermédiaire.",
"模型是否带音高指导": "Le modèle inclut-il un guidage en hauteur tonale",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Le modèle inclut-il un guidage en hauteur tonale (nécessaire pour le chant, facultatif pour la parole)",
"模型是否带音高指导,1是0否": "Le modèle inclut-il un guidage en hauteur tonale, 1 pour oui, 0 pour non",
"模型版本型号": "Numéro de version du modèle",
"模型融合, 可用于测试音色融合": "Fusion de modèles, utilisée pour tester la fusion des timbres",
"模型路径": "Chemin du modèle",
"淡入淡出长度": "Longueur du fondu enchaîné",
"版本": "Version",
"特征提取": "Extraction des caractéristiques",
"特征检索库文件路径,为空则使用下拉的选择结果": "Chemin du fichier de bibliothèque de recherche de caractéristiques, laisser vide pour utiliser le résultat de la liste déroulante",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Recommandation pour la transformation homme vers femme +12 clés, femme vers homme -12 clés, ajustez vous-même si l'étendue du son explose et provoque une distorsion de la voix.",
"目标采样率": "Taux d'échantillonnage cible",
"算法延迟(ms):": "Retard de l'algorithme (ms):",
"自动检测index路径,下拉式选择(dropdown)": "Détection automatique du chemin de l'index, choix dans la liste déroulante",
"融合": "Fusion",
"要改的模型信息": "Informations du modèle à modifier",
"要置入的模型信息": "Informations du modèle à insérer",
"训练": "Entraînement",
"训练模型": "Entraîner le modèle",
"训练特征索引": "Entraîner l'index des caractéristiques",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Entraînement terminé, vous pouvez consulter les journaux d'entraînement de la console ou le fichier train.log dans le dossier d'expérience",
"请指定说话人id": "Veuillez spécifier l'ID du locuteur",
"请选择index文件": "Veuillez choisir le fichier d'index",
"请选择pth文件": "Veuillez choisir le fichier pth",
"请选择说话人id": "Veuillez choisir l'ID du locuteur",
"转换": "Conversion",
"输入实验名": "Nom de l'expérience d'entrée",
"输入待处理音频文件夹路径": "Entrez le chemin du dossier audio à traiter",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Entrez le chemin du dossier audio à traiter (copiez-le depuis la barre d'adresse du gestionnaire de fichiers)",
"输入待处理音频文件路径(默认是正确格式示例)": "Entrez le chemin du fichier audio à traiter (par défaut, c'est un exemple de format correct)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Entrez le taux de fusion pour remplacer l'enveloppe de volume source par l'enveloppe de volume de sortie, plus proche de 1, plus l'enveloppe de sortie est utilisée",
"输入监听": "Entrée d'écoute",
"输入训练文件夹路径": "Entrez le chemin du dossier d'entraînement",
"输入设备": "Entrée de l'appareil",
"输入降噪": "Entrée de réduction du bruit",
"输出信息": "Sortie d'information",
"输出变声": "Sortie de la transformation de la voix",
"输出设备": "Sortie de l'appareil",
"输出降噪": "Sortie de réduction du bruit",
"输出音频(右下角三个点,点了可以下载)": "Sortie audio (trois points en bas à droite, cliquez pour télécharger)",
"选择.index文件": "Choisissez le fichier .index",
"选择.pth文件": "Choisissez le fichier .pth",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "Choisissez l'algorithme d'extraction de hauteur tonale, vous pouvez utiliser pm pour accélérer l'entrée de la voix, harvest est bon pour les basses mais très lent, crepe a un bon effet mais utilise le GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "Choisissez l'algorithme d'extraction de hauteur tonale, vous pouvez utiliser pm pour accélérer l'entrée de la voix, harvest est bon pour les basses mais très lent, crepe a un bon effet mais utilise le GPU, rmvpe a le meilleur effet et utilise légèrement le GPU",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "Choisissez l'algorithme d'extraction de hauteur tonale : utilisez pm pour accélérer l'entrée de la voix, une voix de haute qualité mais nécessite une meilleure CPU ; utilisez dio pour accélérer, harvest a une meilleure qualité mais est lent, rmvpe a le meilleur effet et utilise légèrement la CPU/GPU",
"采样率:": "Taux d'échantillonnage:",
"采样长度": "Longueur d'échantillonnage",
"重载设备列表": "Recharger la liste des appareils",
"音调设置": "Paramètres de tonalité",
"音频设备(请使用同种类驱动)": "Appareil audio (veuillez utiliser un pilote de même type)",
"音高算法": "Algorithme de hauteur tonale",
"额外推理时长": "Durée d'inférence supplémentaire"
}

View File

@ -1,276 +0,0 @@
{
"很遗憾您这没有能用的显卡来支持您训练": "Purtroppo non hai una scheda grafica utilizzabile per supportare il tuo addestramento",
"UVR5已开启": "UVR5 è attivato",
"UVR5已关闭": "UVR5 è disattivato",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Questo software è open source con licenza MIT. L'autore non ha alcun controllo sul software. L'utente che utilizza il software o diffonde i suoni derivati dal software ne è responsabile. <br>Se non accetti questi termini, non puoi utilizzare o citare alcun codice o file all'interno del pacchetto software. Vedi la cartella principale<b>LICENSE</b> per i dettagli.",
"0-前置数据集获取工具": "0-Strumento di acquisizione del dataset preliminare",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-Strumento di separazione voce e accompagnamento UVR5 & Rimozione riverbero e ritardo",
"是否开启UVR5-WebUI": "Attivare UVR5-WebUI",
"UVR5进程输出信息": "Informazioni sull'output del processo UVR5",
"0b-语音切分工具": "0b-Strumento di segmentazione vocale",
"音频自动切分输入路径,可文件可文件夹": "Percorso di input per la segmentazione automatica dell'audio, può essere un file o una cartella",
"切分后的子音频的输出根目录": "Directory radice di output per gli audio segmentati",
"threshold:音量小于这个值视作静音的备选切割点": "threshold: Punto di taglio alternativo considerato silenzioso se il volume è inferiore a questo valore",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length: Lunghezza minima di ogni segmento. Se il primo segmento è troppo corto, verrà unito agli segmenti successivi fino a superare questo valore",
"min_interval:最短切割间隔": "min_interval: Intervallo minimo di taglio",
"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_sil_kept:切完后静音最多留多长": "max_sil_kept: Massima durata del silenzio dopo il taglio",
"开启语音切割": "Attivare la segmentazione vocale",
"终止语音切割": "Terminare la segmentazione vocale",
"max:归一化后最大值多少": "max: Massimo valore dopo la normalizzazione",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: Quanta proporzione dell'audio normalizzato deve essere miscelata",
"切割使用的进程数": "Numero di processi utilizzati per il taglio",
"语音切割进程输出信息": "Informazioni sull'output del processo di segmentazione vocale",
"0c-中文批量离线ASR工具": "0c-Strumento di ASR offline batch in cinese",
"开启离线批量ASR": "Attivare ASR offline batch",
"终止ASR进程": "Terminare il processo ASR",
"批量ASR(中文only)输入文件夹路径": "Percorso della cartella di input per ASR offline batch (solo cinese)",
"ASR进程输出信息": "Informazioni sull'output del processo ASR",
"0d-语音文本校对标注工具": "0d-Strumento di correzione e annotazione testo vocale",
"是否开启打标WebUI": "Attivare l'interfaccia utente Web di annotazione",
"打标数据标注文件路径": "Percorso del file di annotazione dei dati contrassegnati",
"打标工具进程输出信息": "Informazioni sull'output del processo di annotazione",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"*实验/模型名": "*Nome dell'esperimento/modello",
"显卡信息": "Informazioni sulla scheda grafica",
"预训练的SoVITS-G模型路径": "Percorso del modello preaddestrato SoVITS-G",
"预训练的SoVITS-D模型路径": "Percorso del modello preaddestrato SoVITS-D",
"预训练的GPT模型路径": "Percorso del modello preaddestrato GPT",
"1A-训练集格式化工具": "1A-Strumento di formattazione del set di addestramento",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "Nella cartella logs/nome dell'esperimento dovrebbero esserci file e cartelle che iniziano con 23456",
"*文本标注文件": "*File di annotazione del testo",
"*训练集音频文件目录": "*Directory dei file audio del set di addestramento",
"训练集音频文件目录 拼接 list文件里波形对应的文件名。": "Directory dei file audio del set di addestramento, concatenare il nome del file corrispondente nella lista",
"1Aa-文本内容": "1Aa-Contenuto del testo",
"GPU卡号以-分割,每个卡号一个进程": "Numero di GPU separati da '-'; ogni numero corrisponde a un processo",
"预训练的中文BERT模型路径": "Percorso del modello BERT cinese preaddestrato",
"开启文本获取": "Attivare l'estrazione del testo",
"终止文本获取进程": "Terminare il processo di estrazione del testo",
"文本进程输出信息": "Informazioni sull'output del processo di estrazione del testo",
"1Ab-SSL自监督特征提取": "1Ab-Estrazione di caratteristiche auto-supervisionata SSL",
"预训练的SSL模型路径": "Percorso del modello SSL preaddestrato",
"开启SSL提取": "Attivare l'estrazione SSL",
"终止SSL提取进程": "Terminare il processo di estrazione SSL",
"SSL进程输出信息": "Informazioni sull'output del processo SSL",
"1Ac-语义token提取": "1Ac-Estrazione del token semantico",
"开启语义token提取": "Attivare l'estrazione del token semantico",
"终止语义token提取进程": "Terminare il processo di estrazione del token semantico",
"语义token提取进程输出信息": "Informazioni sull'output del processo di estrazione del token semantico",
"1Aabc-训练集格式化一键三连": "1Aabc-Strumento di formattazione del set di addestramento con tre passaggi",
"开启一键三连": "Attivare la formattazione con tre passaggi",
"终止一键三连": "Terminare la formattazione con tre passaggi",
"一键三连进程输出信息": "Informazioni sull'output del processo di 'One Click Three Connect'",
"1B-微调训练": "1B-Allenamento di affinamento",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-Allenamento di SoVITS. I file del modello destinati alla condivisione sono salvati in SoVITS_weights.",
"每张显卡的batch_size": "Batch size per ogni scheda grafica",
"总训练轮数total_epoch不建议太高": "Numero totale di epoche di addestramento, non raccomandato troppo alto",
"文本模块学习率权重": "Peso del tasso di apprendimento del modulo di testo",
"保存频率save_every_epoch": "Frequenza di salvataggio ogni epoca",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Salvare solo il file ckpt più recente per risparmiare spazio su disco",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Salvare il modello finale più piccolo nella cartella weights ad ogni punto di salvataggio",
"开启SoVITS训练": "Attivare l'allenamento di SoVITS",
"终止SoVITS训练": "Terminare l'allenamento di SoVITS",
"SoVITS训练进程输出信息": "Informazioni sull'output del processo di allenamento di SoVITS",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-Allenamento di GPT. I file del modello destinati alla condivisione sono salvati in GPT_weights.",
"总训练轮数total_epoch": "Numero totale di epoche di addestramento",
"开启GPT训练": "Attivare l'allenamento di GPT",
"终止GPT训练": "Terminare l'allenamento di GPT",
"GPT训练进程输出信息": "Informazioni sull'output del processo di allenamento di GPT",
"1C-推理": "1C-Inferenza",
"选择训练完存放在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.",
"*GPT模型列表": "*Lista dei modelli GPT",
"*SoVITS模型列表": "*Lista dei modelli SoVITS",
"GPU卡号,只能填1个整数": "Numero della scheda grafica, può essere inserito solo un numero intero",
"刷新模型路径": "Aggiorna il percorso del modello",
"是否开启TTS推理WebUI": "Attivare l'interfaccia utente Web per l'inferenza TTS",
"TTS推理WebUI进程输出信息": "Informazioni sull'output del processo dell'interfaccia utente Web per l'inferenza TTS",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-Voce modificata",
"施工中,请静候佳音": "In costruzione, attendi pazientemente le buone notizie",
"TTS推理进程已开启": "Il processo di inferenza TTS è stato avviato",
"TTS推理进程已关闭": "Il processo di inferenza TTS è stato chiuso",
"打标工具WebUI已开启": "L'interfaccia utente Web dello strumento di annotazione è stata avviata",
"打标工具WebUI已关闭": "L'interfaccia utente Web dello strumento di annotazione è stata chiusa",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. 如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录LICENSE.": "Questo software è open source con licenza MIT. L'autore non ha alcun controllo sul software. L'utente che utilizza il software o diffonde i suoni derivati dal software ne è responsabile. Se non accetti questi termini, non puoi utilizzare o citare alcun codice o file all'interno del pacchetto software. Vedi la cartella principale LICENSE per i dettagli.",
"*请上传并填写参考信息": "*Carica e compila le informazioni di riferimento",
"*请填写需要合成的目标文本": "*Compila il testo di destinazione da sintetizzare",
"ASR任务开启%s": "Attività ASR avviata: %s",
"GPT训练完成": "Allenamento di GPT completato",
"GPT训练开始%s": "Inizio dell'allenamento di GPT: %s",
"SSL提取进程执行中": "Processo di estrazione SSL in corso",
"SSL提取进程结束": "Processo di estrazione SSL completato",
"SoVITS训练完成": "Allenamento di SoVITS completato",
"SoVITS训练开始%s": "Inizio dell'allenamento di SoVITS: %s",
"一键三连中途报错": "Errore durante 'One Click Three Connect'",
"一键三连进程结束": "Processo di 'One Click Three Connect' completato",
"中文": "Cinese",
"凑50字一切": "Riempire con 50 caratteri per tutto",
"凑五句一切": "Riempire con cinque frasi per tutto",
"切分后文本": "Testo dopo il taglio",
"切割执行中": "Taglio in corso",
"切割结束": "Taglio completato",
"参考音频的文本": "Testo dell'audio di riferimento",
"参考音频的语种": "Lingua dell'audio di riferimento",
"合成语音": "Sintesi vocale",
"后续将支持混合语种编码文本输入。": "In futuro sarà supportata l'input di testi con codifica mista di lingue.",
"已有正在进行的ASR任务需先终止才能开启下一次任务": "È già in corso un'attività ASR. Devi interromperla prima di avviare una nuova attività.",
"已有正在进行的GPT训练任务需先终止才能开启下一次任务": "È già in corso un'attività di allenamento di GPT. Devi interromperla prima di avviare una nuova attività.",
"已有正在进行的SSL提取任务需先终止才能开启下一次任务": "È già in corso un'attività di estrazione SSL. Devi interromperla prima di avviare una nuova attività.",
"已有正在进行的SoVITS训练任务需先终止才能开启下一次任务": "È già in corso un'attività di allenamento di SoVITS. Devi interromperla prima di avviare una nuova attività.",
"已有正在进行的一键三连任务,需先终止才能开启下一次任务": "È già in corso un'attività di 'One Click Three Connect'. Devi interromperla prima di avviare una nuova attività.",
"已有正在进行的切割任务,需先终止才能开启下一次任务": "È già in corso un'attività di taglio. Devi interromperla prima di avviare una nuova attività.",
"已有正在进行的文本任务,需先终止才能开启下一次任务": "È già in corso un'attività di testo. Devi interromperla prima di avviare una nuova attività.",
"已有正在进行的语义token提取任务需先终止才能开启下一次任务": "È già in corso un'attività di estrazione di token semantici. Devi interromperla prima di avviare una nuova attività.",
"已终止ASR进程": "Il processo ASR è stato terminato",
"已终止GPT训练": "L'allenamento di GPT è stato terminato",
"已终止SoVITS训练": "Allenamento SoVITS terminato",
"已终止所有1a进程": "Processi 1a terminati",
"已终止所有1b进程": "Processi 1b terminati",
"已终止所有一键三连进程": "Processi One Click Three Connect terminati",
"已终止所有切割进程": "Processi di taglio terminati",
"已终止所有语义token进程": "Processi di estrazione token semantici terminati",
"按中文句号。切": "Taglia secondo il punto cinese.",
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "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.",
"文本进程执行中": "Processo di testo in esecuzione",
"文本进程结束": "Processo di testo terminato",
"日文": "Giapponese",
"英文": "Inglese",
"语义token提取进程执行中": "Processo di estrazione token semantici in esecuzione",
"语义token提取进程结束": "Processo di estrazione token semantici terminato",
"请上传参考音频": "Carica l'audio di riferimento",
"输入路径不存在": "Il percorso di input non esiste",
"输入路径存在但既不是文件也不是文件夹": "Il percorso di input esiste ma non è né un file né una cartella",
"输出的语音": "Audio di output",
"进度1a-done": "Progresso: 1a-done",
"进度1a-done, 1b-ing": "Progresso: 1a-done, 1b-ing",
"进度1a-ing": "Progresso: 1a-ing",
"进度1a1b-done": "Progresso: 1a1b-done",
"进度1a1b-done, 1cing": "Progresso: 1a1b-done, 1cing",
"进度all-done": "Progresso: all-done",
"需要合成的切分前文本": "Testo da sintetizzare prima del taglio",
"需要合成的文本": "Testo da sintetizzare",
"需要合成的语种": "Lingua da sintetizzare",
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "Se >=3, usa il filtraggio mediano sui risultati del riconoscimento dell'altezza di harvest, il valore è il raggio del filtro. L'uso di questo valore può attenuare i suoni muti.",
"A模型权重": "Peso del modello A",
"A模型路径": "Percorso del modello A",
"B模型路径": "Percorso del modello B",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "File della curva F0, opzionale, una riga per un'altezza, sostituisce il F0 predefinito e le variazioni di tono",
"Index Rate": "Tasso di indice",
"Onnx导出": "Esporta in Onnx",
"Onnx输出路径": "Percorso di output Onnx",
"RVC模型路径": "Percorso del modello RVC",
"ckpt处理": "Elaborazione del ckpt",
"harvest进程数": "Numero di processi harvest",
"index文件路径不可包含中文": "Il percorso del file di indice non può contenere caratteri cinesi",
"pth文件路径不可包含中文": "Il percorso del file pth non può contenere caratteri cinesi",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Configurazione dei numeri delle schede rmvpe: separa con - i numeri delle schede dei diversi processi utilizzati in input. Ad esempio, 0-0-1 utilizza 2 processi sulla scheda 0 e 1 processo sulla scheda 1",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Passo 1: Compila la configurazione sperimentale. I dati sperimentali sono salvati in logs, ogni esperimento in una cartella. È necessario inserire manualmente il percorso del nome dell'esperimento, contenente configurazione sperimentale, log e file di modello addestrato.",
"step1:正在处理数据": "Passo 1: Elaborazione dei dati in corso",
"step2:正在提取音高&正在提取特征": "Passo 2: Estrazione dell'altezza e delle caratteristiche in corso",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Passo 2a: Attraversa automaticamente tutti i file nella cartella di addestramento che possono essere decodificati in audio e li normalizza a fette. Nella cartella sperimentale vengono generate due cartelle wav; Al momento supporta solo l'addestramento singolo.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Passo 2b: Usa la CPU per estrarre l'altezza (se il modello la include) e la GPU per estrarre le caratteristiche (scegliendo il numero della scheda)",
"step3: 填写训练设置, 开始训练模型和索引": "Passo 3: Compila le impostazioni di addestramento, inizia ad addestrare il modello e l'indice",
"step3a:正在训练模型": "Passo 3a: Addestramento del modello in corso",
"一键训练": "Allenamento One-Click",
"也可批量输入音频文件, 二选一, 优先读文件夹": "È possibile anche inserire file audio in batch, una delle due opzioni, con priorità alla lettura della cartella",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Numeri delle schede separati da - utilizzati in input, ad esempio 0-1-2, utilizzando le schede 0, 1 e 2",
"伴奏人声分离&去混响&去回声": "Separazione tra accompagnamento e voce & Rimozione dell'eco & Rimozione dell'eco",
"使用模型采样率": "Frequenza di campionamento del modello",
"使用设备采样率": "Frequenza di campionamento del dispositivo",
"保存名": "Nome del salvataggio",
"保存的文件名, 默认空为和源文件同名": "Nome del file salvato, vuoto di default è lo stesso del file sorgente",
"保存的模型名不带后缀": "Nome del modello salvato senza estensione",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Protegge le consonanti chiare e i suoni di respirazione, evita artifact come la rottura del suono elettronico, tirare a 0.5 per disattivare, abbassare per aumentare la protezione ma potrebbe ridurre l'effetto di indicizzazione",
"修改": "Modifica",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modifica le informazioni del modello (supporta solo i piccoli file di modello estratti dalla cartella weights)",
"停止音频转换": "Interrompi la conversione audio",
"全流程结束!": "Processo completo!",
"刷新音色列表和索引路径": "Aggiorna la lista dei toni e il percorso dell'indice",
"加载模型": "Carica il modello",
"加载预训练底模D路径": "Carica il percorso del modello di fondo preaddestrato D",
"加载预训练底模G路径": "Carica il percorso del modello di fondo preaddestrato G",
"单次推理": "Inferenza singola",
"卸载音色省显存": "Scarica il tono per risparmiare memoria video",
"变调(整数, 半音数量, 升八度12降八度-12)": "Modifica del tono (numero intero, quantità di semitoni, 12 per un'ottava in su, -12 per un'ottava in giù)",
"后处理重采样至最终采样率0为不进行重采样": "Ricampiona in modo post-elaborazione alla frequenza di campionamento finale, 0 per non eseguire il ricampionamento",
"否": "No",
"启用相位声码器": "Abilita il codificatore di fase",
"响应阈值": "Soglia di risposta",
"响度因子": "Fattore di risposta",
"处理数据": "Elaborazione dati",
"导出Onnx模型": "Esporta il modello Onnx",
"导出文件格式": "Formato di esportazione del file",
"常见问题解答": "Domande frequenti",
"常规设置": "Impostazioni generali",
"开始音频转换": "Inizia la conversione audio",
"性能设置": "Impostazioni di performance",
"批量推理": "Inferenza batch",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Conversione in batch, inserisci la cartella con i file audio da convertire o carica più file audio, i file convertiti verranno salvati nella cartella specificata (per impostazione predefinita opt).",
"指定输出主人声文件夹": "Specifica la cartella di output per la voce principale",
"指定输出文件夹": "Specifica la cartella di output",
"指定输出非主人声文件夹": "Specifica la cartella di output per la non voce principale",
"推理时间(ms):": "Tempo di inferenza (ms):",
"推理音色": "Tono di inferenza",
"提取": "Estrai",
"提取音高和处理数据使用的CPU进程数": "Numero di processi CPU utilizzati per l'estrazione dell'altezza del suono e l'elaborazione dei dati",
"是": "Sì",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Se memorizzare nella cache tutto l'insieme di addestramento nella memoria video. Piccoli set di dati inferiori a 10 minuti possono essere memorizzati nella cache per accelerare l'addestramento, la memorizzazione nella cache di grandi set di dati può esaurire la memoria video e non accelerare di molto",
"查看": "Visualizza",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Visualizza le informazioni del modello (supporta solo i piccoli file di modello estratti dalla cartella weights)",
"检索特征占比": "Percentuale di caratteristiche di ricerca",
"模型": "Modello",
"模型推理": "Inferenza del modello",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Estrazione del modello (inserisci il percorso del modello di grandi dimensioni nella cartella logs), adatto per i modelli a metà addestramento che non si desidera continuare ad addestrare, i modelli non estratti automaticamente vengono salvati come modelli di piccole dimensioni o per testare la situazione del modello intermedio",
"模型是否带音高指导": "Il modello include o meno la guida all'altezza del suono",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Il modello include o meno la guida all'altezza del suono (necessario per il canto, opzionale per la voce)",
"模型是否带音高指导,1是0否": "Il modello include o meno la guida all'altezza del suono, 1 sì, 0 no",
"模型版本型号": "Versione e modello del modello",
"模型融合, 可用于测试音色融合": "Fusione dei modelli, utile per testare la fusione dei toni",
"模型路径": "Percorso del modello",
"淡入淡出长度": "Lunghezza del fading in/fading out",
"版本": "Versione",
"特征提取": "Estrazione delle caratteristiche",
"特征检索库文件路径,为空则使用下拉的选择结果": "Percorso del file della libreria di ricerca delle caratteristiche, se vuoto usa la selezione a discesa",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Consigliato +12 toni per la trasformazione da uomo a donna, -12 toni per la trasformazione da donna a uomo. Se l'intervallo tonale esplode causando distorsioni nel timbro, è possibile regolarlo manualmente nell'intervallo adatto.",
"目标采样率": "Frequenza di campionamento obiettivo",
"算法延迟(ms):": "Ritardo dell'algoritmo (ms):",
"自动检测index路径,下拉式选择(dropdown)": "Rilevamento automatico del percorso dell'indice, selezione a discesa (dropdown)",
"融合": "Fusione",
"要改的模型信息": "Informazioni del modello da modificare",
"要置入的模型信息": "Informazioni del modello da inserire",
"训练": "Addestramento",
"训练模型": "Addestra il modello",
"训练特征索引": "Addestramento dell'indice delle caratteristiche",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Fine dell'addestramento, puoi visualizzare il registro di addestramento sulla console o il file train.log nella cartella dell'esperimento",
"请指定说话人id": "Si prega di specificare l'ID del parlante",
"请选择index文件": "Seleziona il file di indice",
"请选择pth文件": "Seleziona il file pth",
"请选择说话人id": "Seleziona l'ID del parlante",
"转换": "Converti",
"输入实验名": "Inserisci il nome dell'esperimento",
"输入待处理音频文件夹路径": "Inserisci il percorso della cartella dei file audio da elaborare",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Inserisci il percorso della cartella dei file audio da elaborare (copialo dalla barra degli indirizzi del gestore dei file)",
"输入待处理音频文件路径(默认是正确格式示例)": "Inserisci il percorso del file audio da elaborare (esempio di formato corretto predefinito)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Inserisci la proporzione di fusione della sostituzione dell'involucro del volume di ingresso con l'involucro del volume di uscita, più vicino a 1 più utilizza l'involucro di uscita",
"输入监听": "Inserisci l'ascolto",
"输入训练文件夹路径": "Inserisci il percorso della cartella di addestramento",
"输入设备": "Dispositivo di input",
"输入降噪": "Inserisci la riduzione del rumore",
"输出信息": "Informazioni di output",
"输出变声": "Variazione della voce in output",
"输出设备": "Dispositivo di output",
"输出降噪": "Riduzione del rumore in output",
"输出音频(右下角三个点,点了可以下载)": "Audio in output (tre punti nell'angolo in basso a destra, fare clic per scaricare)",
"选择.index文件": "Seleziona il file .index",
"选择.pth文件": "Seleziona il file .pth",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "Seleziona l'algoritmo di estrazione dell'altezza del suono, l'input vocale può utilizzare pm per velocizzare, harvest ha bassi migliori ma è incredibilmente lento, crepe ha un buon effetto ma consuma molte risorse della GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "Seleziona l'algoritmo di estrazione dell'altezza del suono, l'input vocale può utilizzare pm per velocizzare, harvest ha bassi migliori ma è incredibilmente lento, crepe ha un buon effetto ma consuma molte risorse della GPU, rmvpe ha il miglior effetto ed è leggermente esigente sulla GPU",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "Seleziona l'algoritmo di estrazione dell'altezza del suono: l'input vocale può utilizzare pm per velocizzare, la qualità del suono è elevata ma richiede molte risorse della CPU; l'input vocale può utilizzare dio per velocizzare, harvest ha una qualità del suono migliore ma è lento, rmvpe ha il miglior effetto ed è leggermente esigente sulla CPU/GPU",
"采样率:": "Frequenza di campionamento:",
"采样长度": "Lunghezza del campionamento",
"重载设备列表": "Ricarica la lista dei dispositivi",
"音调设置": "Impostazioni del tono",
"音频设备(请使用同种类驱动)": "Dispositivo audio (usa driver della stessa categoria)",
"音高算法": "Algoritmo dell'altezza del suono",
"额外推理时长": "Tempo di inferenza extra"
}

View File

@ -1,283 +0,0 @@
{
"很遗憾您这没有能用的显卡来支持您训练": "残念ながら、トレーニングをサポートする利用可能なグラフィックカードがありません",
"UVR5已开启": "UVR5がオンになっています",
"UVR5已关闭": "UVR5がオフになっています",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "このソフトウェアはMITライセンスでオープンソース化されており、作者はソフトウェアに対して一切の制御権を持っていません。ソフトウェアを使用する者、ソフトウェアから導出される音声を広める者は、自己責任で行ってください。<br>この条件を認めない場合、ソフトウェアパッケージ内の任意のコードやファイルを使用または引用することはできません。詳細はルートディレクトリの<b>LICENSE</b>を参照してください。",
"0-前置数据集获取工具": "0-データセット取得ツールの事前処理",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5ボーカルアカンパニメント分離リバーブおよびディレイ除去ツール",
"是否开启UVR5-WebUI": "UVR5-WebUIをオンにしますか",
"UVR5进程输出信息": "UVR5プロセスの出力情報",
"0b-语音切分工具": "0b-音声分割ツール",
".list标注文件的路径": ".listアテーションファイルのパス",
"GPT模型列表": "GPTモデルリスト",
"SoVITS模型列表": "SoVITSモデルリスト",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。": "音声を切り取った後の音声が保存されているディレクトリ!読み取られる音声ファイルの完全なパス=このディレクトリ-連結-リストファイル内の波形に対応するファイル名(フルパスではない)。",
"音频自动切分输入路径,可文件可文件夹": "オーディオの自動分割入力パス、ファイルまたはフォルダを指定できます",
"切分后的子音频的输出根目录": "分割後のサブオーディオの出力ルートディレクトリ",
"怎么切": "どうやって切るか",
"不切": "切らない",
"凑四句一切": "4つの文で埋める",
"按英文句号.切": "英文のピリオドで切ってください",
"threshold:音量小于这个值视作静音的备选切割点": "閾値:この値未満の音量は静音と見なされ、代替のカットポイントとして扱われます",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length各セグメントの最小長さ。最初のセグメントが短すぎる場合、連続して後続のセグメントに接続され、この値を超えるまで続きます。",
"min_interval:最短切割间隔": "min_interval最短カット間隔",
"hop_size:怎么算音量曲线,越小精度越大計算量越高(不是精度越大效果越好)": "hop_size音量曲線を計算する方法。値が小さいほど精度が高くなり、計算量が増加します精度が高いほど効果が良いわけではありません。",
"max_sil_kept:切完后静音最多留多长": "max_sil_kept切り終えた後、最大でどれだけ静かにするか",
"开启语音切割": "音声の分割を開始",
"终止语音切割": "音声の分割を停止",
"max:归一化后最大值多少": "max正規化後の最大値",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix正規化後のオーディオが入る割合",
"切割使用的进程数": "分割に使用されるプロセス数",
"语音切割进程输出信息": "音声分割プロセスの出力情報",
"0c-中文批量离线ASR工具": "0c-中国語バッチオフラインASRツール",
"开启离线批量ASR": "オフラインバッチASRを開始",
"终止ASR进程": "ASRプロセスを停止",
"批量ASR(中文only)输入文件夹路径": "バッチASR中国語のみの入力フォルダパス",
"ASR进程输出信息": "ASRプロセスの出力情報",
"0d-语音文本校对标注工具": "0d-音声テキストの校正アノテーションツール",
"是否开启打标WebUI": "WebUIを使用したアテーションを開始しますか",
"打标数据标注文件路径": "アノテーションデータのファイルパス",
"打标工具进程输出信息": "アノテーションツールプロセスの出力情報",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"*实验/模型名": "*実験/モデル名",
"显卡信息": "グラフィックカード情報",
"预训练的SoVITS-G模型路径": "事前にトレーニングされたSoVITS-Gモデルのパス",
"预训练的SoVITS-D模型路径": "事前にトレーニングされたSoVITS-Dモデルのパス",
"预训练的GPT模型路径": "事前にトレーニングされたGPTモデルのパス",
"1A-训练集格式化工具": "1A-トレーニングデータのフォーマットツール",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "logs/実験名ディレクトリには23456で始まるファイルとフォルダが含まれている必要があります",
"*文本标注文件": "*テキスト注釈ファイル",
"*训练集音频文件目录": "*トレーニングデータのオーディオファイルディレクトリ",
"训练集音频文件目录 拼接 list文件里波形对应的文件名。": "トレーニングデータのオーディオファイルディレクトリ。リストファイル内の波形に対応するファイル名を連結します。",
"1Aa-文本内容": "1Aa-テキストの内容",
"GPU卡号以-分割,每个卡号一个进程": "GPUカード番号はハイフンで区切り、各カード番号ごとに1つのプロセスが実行されます",
"预训练的中文BERT模型路径": "事前にトレーニングされた中文BERTモデルのパス",
"开启文本获取": "テキストの取得を開始",
"终止文本获取进程": "テキスト取得プロセスを停止",
"文本进程输出信息": "テキストプロセスの出力情報",
"1Ab-SSL自监督特征提取": "1Ab-SSLセルフスーパーバイズ特徴抽出",
"预训练的SSL模型路径": "事前にトレーニングされたSSLモデルのパス",
"开启SSL提取": "SSL抽出を開始",
"终止SSL提取进程": "SSL抽出プロセスを停止",
"SSL进程输出信息": "SSLプロセスの出力情報",
"1Ac-语义token提取": "1Ac-セマンティックトークン抽出",
"开启语义token提取": "セマンティックトークン抽出を開始",
"终止语义token提取进程": "セマンティックトークン抽出プロセスを停止",
"语义token提取进程输出信息": "セマンティックトークン抽出プロセスの出力情報",
"1Aabc-训练集格式化一键三连": "1Aabc-トレーニングデータのフォーマットワンクリック三連",
"开启一键三连": "ワンクリック三連を開始",
"终止一键三连": "ワンクリック三連を停止",
"一键三连进程输出信息": "ワンクリック三連プロセスの出力情報",
"1B-微调训练": "1B-ファインチューニングトレーニング",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITSトレーニング。共有用のモデルファイルはSoVITS_weightsディレクトリに出力されます。",
"每张显卡的batch_size": "各グラフィックカードのバッチサイズ",
"总训练轮数total_epoch不建议太高": "総トレーニングエポック数total_epoch、高すぎないようにお勧めします",
"文本模块学习率权重": "テキストモジュールの学習率の重み",
"保存频率save_every_epoch": "保存頻度save_every_epoch",
"是否仅保存最新的ckpt文件以节省硬盘空间": "最新のckptファイルのみを保存してディスクスペースを節約するかどうか",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "各保存時間点で最終的な小さなモデルをweightsフォルダに保存するかどうか",
"开启SoVITS训练": "SoVITSトレーニングを開始",
"终止SoVITS训练": "SoVITSトレーニングを停止",
"SoVITS训练进程输出信息": "SoVITSトレーニングプロセスの出力情報",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPTトレーニング。共有用のモデルファイルはGPT_weightsディレクトリに出力されます。",
"总训练轮数total_epoch": "総トレーニングエポック数total_epoch",
"开启GPT训练": "GPTトレーニングを開始",
"终止GPT训练": "GPTトレーニングを停止",
"GPT训练进程输出信息": "GPTトレーニングプロセスの出力情報",
"1C-推理": "1C-推論",
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。": "SoVITS_weightsおよびGPT_weightsに保存されたモデルを選択します。デフォルトのものはプレトレインであり、ゼロショットTTSを体験できます。",
"*GPT模型列表": "*GPTモデルリスト",
"*SoVITS模型列表": "*SoVITSモデルリスト",
"GPU卡号,只能填1个整数": "GPU番号、1つの整数しか入力できません",
"刷新模型路径": "モデルのパスを更新",
"是否开启TTS推理WebUI": "TTS推論WebUIを開く",
"TTS推理WebUI进程输出信息": "TTS推論WebUIプロセスの出力情報",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-ボイスチェンジャー",
"施工中,请静候佳音": "施工中、お待ちください",
"TTS推理进程已开启": "TTS推論プロセスが開始されました",
"TTS推理进程已关闭": "TTS推論プロセスが終了しました",
"打标工具WebUI已开启": "校正ツールWebUIが開始されました",
"打标工具WebUI已关闭": "校正ツールWebUIが終了しました",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. 如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录LICENSE.": "このソフトウェアはMITライセンスでオープンソース化されており、作者はソフトウェアに対して一切の制御権を持っていません。ソフトウェアを使用する者、ソフトウェアからエクスポートされた音声を伝播する者は、自己の責任を負います。この条件を受け入れない場合は、ソフトウェアパッケージ内の任意のコードやファイルを使用または引用することはできません。詳細はLICENSEを参照してください。",
"*请上传并填写参考信息": "*参照情報をアップロードして記入してください",
"*请填写需要合成的目标文本": "*合成が必要な対象のテキストを記入してください",
"ASR任务开启%s": "ASRタスクが開始されました%s",
"GPT训练完成": "GPTトレーニングが完了しました",
"GPT训练开始%s": "GPTトレーニングが開始されました%s",
"SSL提取进程执行中": "SSL抽出プロセス実行中",
"SSL提取进程结束": "SSL抽出プロセスが終了しました",
"SoVITS训练完成": "SoVITSトレーニングが完了しました",
"SoVITS训练开始%s": "SoVITSトレーニングが開始されました%s",
"一键三连中途报错": "ワンクリックフォーマット中にエラーが発生しました",
"一键三连进程结束": "ワンクリックフォーマットが終了しました",
"中文": "中国語",
"凑50字一切": "50文字ずつカット",
"凑五句一切": "5つの文ごとにカット",
"切分后文本": "分割後のテキスト",
"切割执行中": "オーディオの分割中",
"切割结束": "オーディオの分割が完了しました",
"参考音频的文本": "参照オーディオのテキスト",
"参考音频的语种": "参照オーディオの言語",
"合成语音": "推論を開始",
"后续将支持混合语种编码文本输入。": "後で混合言語コードテキストの入力がサポートされるようになります。",
"已有正在进行的ASR任务需先终止才能开启下一次任务": "すでに進行中のASRタスクがあります。次のタスクを開始する前に停止してください",
"已有正在进行的GPT训练任务需先终止才能开启下一次任务": "すでに進行中のGPTトレーニングタスクがあります。次のタスクを開始する前に停止してください",
"已有正在进行的SSL提取任务需先终止才能开启下一次任务": "すでに進行中のSSL抽出タスクがあります。次のタスクを開始する前に停止してください",
"已有正在进行的SoVITS训练任务需先终止才能开启下一次任务": "すでに進行中のSoVITSトレーニングタスクがあります。次のタスクを開始する前に停止してください",
"已有正在进行的一键三连任务,需先终止才能开启下一次任务": "すでに進行中のワンクリックフォーマットタスクがあります。次のタスクを開始する前に停止してください",
"已有正在进行的切割任务,需先终止才能开启下一次任务": "すでに進行中のオーディオの分割タスクがあります。次のタスクを開始する前に停止してください",
"已有正在进行的文本任务,需先终止才能开启下一次任务": "すでに進行中のTTS校正タスクがあります。次のタスクを開始する前に停止してください",
"已有正在进行的语义token提取任务需先终止才能开启下一次任务": "すでに進行中の意味トークン抽出タスクがあります。次のタスクを開始する前に停止してください",
"已终止ASR进程": "ASRタスクが終了しました",
"已终止GPT训练": "GPTトレーニングが終了しました",
"已终止SoVITS训练": "SoVITSトレーニングが終了しました",
"已终止所有1a进程": "すべての1aタスクが終了しました",
"已终止所有1b进程": "すべての1bタスクが終了しました",
"已终止所有一键三连进程": "すべてのワンクリックフォーマットタスクが終了しました",
"已终止所有切割进程": "すべてのオーディオの分割タスクが終了しました",
"已终止所有语义token进程": "すべての意味トークンタスクが終了しました",
"按中文句号。切": "中国語の句点でカット",
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "テキストスライサーツール。長文を変換すると効果が不安定になる可能性があるため、長文の場合は事前に切り分けることをお勧めします。推論時には、テキストを個別に推論し、それを組み合わせて再構築します。",
"文本进程执行中": "テキスト処理中",
"文本进程结束": "テキスト処理が終了しました",
"日文": "日本語",
"英文": "英語",
"语义token提取进程执行中": "意味トークン抽出実行中",
"语义token提取进程结束": "意味トークン抽出が終了しました",
"请上传参考音频": "参照オーディオをアップロードしてください",
"输入路径不存在": "入力パスが存在しません",
"输入路径存在但既不是文件也不是文件夹": "入力ディレクトリが存在しますが、ファイルでもフォルダでもありません",
"输出的语音": "推論結果",
"进度1a-done": "進捗1a完了",
"进度1a-done, 1b-ing": "進捗1a完了、1b進行中",
"进度1a-ing": "進捗1a進行中",
"进度1a1b-done": "進捗1a1b完了",
"进度1a1b-done, 1cing": "進捗1a1b完了、1c進行中",
"进度all-done": "進捗all-done",
"需要合成的切分前文本": "推論が必要な分割前のテキスト",
"需要合成的文本": "推論テキスト",
"需要合成的语种": "推論テキストの言語",
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "3以上の場合収穫音高の認識結果に中央値フィルタリングを適用します。値はフィルターの半径を表し、息遣いを減少させることができます。",
"A模型权重": "モデルAの重み (w):",
"A模型路径": "モデルAのパス:",
"B模型路径": "モデルBのパス:",
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲線ファイルオプション。1行に1つの音高があります。デフォルトのF0とピッチ変調の代わりに使用します:",
"Index Rate": "インデックスレート",
"Onnx导出": "Onnxエクスポート",
"Onnx输出路径": "Onnxエクスポートパス:",
"RVC模型路径": "RVCモデルパス:",
"ckpt处理": "ckpt処理",
"harvest进程数": "harvestピッチアルゴリズムに使用するCPUプロセス数",
"index文件路径不可包含中文": "インデックスファイルパスには中文を含めないでください",
"pth文件路径不可包含中文": "pthファイルパスには中文を含めないでください",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "異なるプロセスカードの入力に使用するGPUインデックスを'-'で区切って入力します。例0-0-1はGPU0で2つのプロセスを実行し、GPU1で1つのプロセスを実行します",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "ステップ1実験構成を記入します。実験データは「logs」フォルダに保存され、各実験には別々のフォルダがあります。実験名のパスを手動で入力する必要があり、実験構成、ログ、トレーニングされたモデルファイルが含まれています。",
"step1:正在处理数据": "ステップ1データ処理中",
"step2:正在提取音高&正在提取特征": "ステップ2ピッチ抽出と特徴抽出中",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "ステップ2aトレーニングフォルダ内のデコード可能なすべてのファイルを自動的にトラバースし、スライス正規化を実行します。実験ディレクトリに2つのwavフォルダが生成されます。現時点では、単一の歌手/スピーカーのトレーニングのみがサポートされています。",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "ステップ2bCPUを使用してピッチを抽出しますモデルにピッチがある場合、GPUを使用して特徴を抽出しますGPUインデックスを選択します:",
"step3: 填写训练设置, 开始训练模型和索引": "ステップ3トレーニング設定を入力し、モデルとインデックスのトレーニングを開始します",
"step3a:正在训练模型": "ステップ3aモデルのトレーニングが開始されました",
"一键训练": "ワンクリックトレーニング",
"也可批量输入音频文件, 二选一, 优先读文件夹": "複数のオーディオファイルもインポートできます。フォルダパスが存在する場合、この入力は無視されます。",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "GPUインデックスを'-'で区切って入力します。例0-1-2はGPU 0、1、および2を使用します。",
"伴奏人声分离&去混响&去回声": "ボーカル/伴奏の分離と残響の除去",
"使用模型采样率": "使用するモデルのサンプルレート",
"使用设备采样率": "使用デバイスのサンプルレート",
"保存名": "保存名:",
"保存的文件名, 默认空为和源文件同名": "保存ファイル名(デフォルト:元のファイルと同じ):",
"保存的模型名不带后缀": "保存されるモデル名(拡張子なし):",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "清濁音と呼吸音を保護し、電子音楽の撕裂などのアーティファクトを防ぎます。0.5まで引っ張ると無効になり、保護力を高めるには値を下げますが、索引の精度が低下する可能性があります。",
"修改": "変更",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "モデル情報の変更('weights'フォルダから抽出された小さなモデルファイルのみサポート)",
"停止音频转换": "オーディオ変換を停止",
"全流程结束!": "すべてのプロセスが完了しました!",
"刷新音色列表和索引路径": "ボイスリストとインデックスパスをリフレッシュ",
"加载模型": "モデルの読み込み",
"加载预训练底模D路径": "事前にトレーニングされたベースモデルDのパスをロード:",
"加载预训练底模G路径": "事前にトレーニングされたベースモデルGのパスをロード:",
"单次推理": "単一推論",
"卸载音色省显存": "GPUメモリを節約するためにボイスをアンロード:",
"变调(整数, 半音数量, 升八度12降八度-12)": "トランスポーズ整数、半音の数、8度上げ: 12、8度下げ: -12:",
"后处理重采样至最终采样率0为不进行重采样": "後処理でオーディオを最終のサンプルレートに再サンプリングします。リサンプリングを行わない場合は0に設定してください:",
"否": "いいえ",
"启用相位声码器": "位相音声コーダーを有効にする",
"响应阈值": "応答閾値",
"响度因子": "音量ファクター",
"处理数据": "データ処理",
"导出Onnx模型": "Onnxモデルのエクスポート",
"导出文件格式": "エクスポートファイル形式",
"常见问题解答": "よくある質問 (FAQ)",
"常规设置": "一般的な設定",
"开始音频转换": "オーディオ変換を開始",
"性能设置": "性能設定",
"批量推理": "一括推論",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "一括変換。変換するオーディオファイルが含まれるフォルダを入力するか、複数のオーディオファイルをアップロードします。変換されたオーディオは指定されたフォルダ (デフォルト: 'opt') に出力されます。",
"指定输出主人声文件夹": "ボーカルの出力フォルダを指定:",
"指定输出文件夹": "出力フォルダの指定:",
"指定输出非主人声文件夹": "伴奏の出力フォルダを指定:",
"推理时间(ms):": "推論時間 (ms):",
"推理音色": "推論ボイス:",
"提取": "抽出",
"提取音高和处理数据使用的CPU进程数": "ピッチ抽出およびデータ処理に使用されるCPUプロセスの数:",
"是": "はい",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "すべてのトレーニングセットをGPUメモリにキャッシュするかどうか。小さなデータセット (10分以下) をキャッシュするとトレーニングが高速化されますが、大きなデータセットをキャッシュするとGPUメモリが消費され、あまり速度が向上しないかもしれません:",
"查看": "表示",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "モデル情報を表示します ( 'weights' フォルダから抽出された小さなモデルファイルにのみ対応):",
"检索特征占比": "特徴の検索比率 (アクセントの強度を制御、高すぎるとアーティファクトが発生します):",
"模型": "モデル",
"模型推理": "モデル推論",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "モデル抽出 ( 'logs' フォルダ内の大きなファイルモデルのパスを入力)。トレーニングを途中で停止して手動で小さなモデルファイルを抽出および保存したい場合、または中間モデルをテストしたい場合に使用します:",
"模型是否带音高指导": "モデルにピッチガイダンスがあるかどうか:",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "モデルにピッチガイダンスがあるかどうか (歌唱には必須、音声にはオプション):",
"模型是否带音高指导,1是0否": "モデルにピッチガイダンスがあるかどうか (1: はい、0: いいえ):",
"模型版本型号": "モデルアーキテクチャバージョン:",
"模型融合, 可用于测试音色融合": "モデルフュージョン、音色フュージョンをテストするために使用できます",
"模型路径": "モデルへのパス:",
"淡入淡出长度": "フェードの長さ",
"版本": "バージョン",
"特徴提取": "特徴抽出",
"特徴检索库文件路径,为空则使用下拉的选择结果": "特徴インデックスファイルへのパス。空白の場合はドロップダウンから選択された結果が使用されます:",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性から女性への変換では+12キーが推奨され、女性から男性への変換では-12キーが推奨されます。音域が広すぎて音声が歪む場合は、適切な音域に手動で調整することもできます。",
"目标采样率": "目標サンプルレート:",
"算法延迟(ms):": "アルゴリズムの遅延(ms):",
"自动检测index路径,下拉式选择(dropdown)": "indexパスを自動検出し、ドロップダウンから選択します:",
"融合": "フュージョン",
"要改的模型信息": "変更するモデル情報:",
"要置入的模型信息": "挿入するモデル情報:",
"训练": "トレーニング",
"训练模型": "モデルのトレーニング",
"训练特征索引": "特徴索引のトレーニング",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "トレーニングが完了しました。トレーニングログはコンソールまたは実験フォルダの 'train.log' ファイルで確認できます。",
"请指定说话人id": "話者/歌手のIDを指定してください:",
"请选择index文件": ".index ファイルを選択してください",
"请选择pth文件": ".pth ファイルを選択してください",
"请选择说话人id": "話者/歌手のIDを選択してください:",
"转换": "変換",
"输入实验名": "実験名を入力:",
"输入待处理音频文件夹路径": "処理するオーディオフォルダのパスを入力してください:",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "処理するオーディオフォルダのパスを入力してください (ファイルマネージャのアドレスバーからコピーしてください):",
"输入待处理音频文件路径(默认是正确格式示例)": "処理するオーディオファイルのパスを入力してください (デフォルトは正しい形式の例です):",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "音量エンベロープのスケーリングを調整します。0に近いほど、元のボーカルの音量に似ます。相対的に低い値に設定すると、イズをマスキングし、音量がより自然に聞こえるようになります。1に近いほど、一貫して大きな音量になります:",
"输入监听": "入力ボイスモニター",
"输入训练文件夹路径": "トレーニングフォルダのパスを入力してください:",
"输入设备": "入力デバイス",
"输入降噪": "ノイズリダクションの入力",
"输出信息": "出力情報",
"输出变声": "変換されたボイスの出力",
"输出设备": "出力デバイス",
"输出降噪": "ノイズリダクションの出力",
"输出音频(右下角三个点,点了可以下载)": "オーディオの出力 (右下隅の三点をクリックしてダウンロード)",
"选择.index文件": ".index ファイルを選択してください",
"选择.pth文件": ".pth ファイルを選択してください",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "音高抽出アルゴリズムを選択します。歌声を抽出する場合は 'pm' を使用して高速化できます。高品質な音声でパフォーマンスが向上するが、CPUの使用が悪化する場合は 'dio' を使用できます。 'harvest' は品質が向上しますが、遅いです。 'rmvpe' は最高の品質で、少ないGPUが必要です",
"选择音高提取算法,输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "音高抽出アルゴリズムを選択します。歌声を抽出する場合は 'pm' を使用して高速化できます。高品質な音声でパフォーマンスが向上するが、CPUの使用が悪化する場合は 'dio' を使用できます。 'harvest' は品質が向上しますが、遅いです。 'rmvpe' は最高の品質で、CPU/GPUの使用が少ないです",
"采样率:": "サンプルレート:",
"采样长度": "サンプル長",
"重载设备列表": "デバイスリストを再読み込み",
"音调设置": "ピッチ設定",
"音频设备(请使用同种类驱动)": "オーディオデバイス (同じタイプのドライバを使用してください)",
"音高算法": "音程検出アルゴリズム",
"额外推理时长": "追加推論時間"
}

View File

@ -1,285 +0,0 @@
{
"很遗憾您这没有能用的显卡来支持您训练": "죄송합니다. 훈련을 지원할 수 있는 그래픽 카드가 없습니다.",
"UVR5已开启": "UVR5가 활성화되었습니다",
"UVR5已关闭": "UVR5가 비활성화되었습니다",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "본 소프트웨어는 MIT 라이선스로 오픈 소스로 제공되며, 제작자는 소프트웨어에 대해 어떠한 제어력도 가지지 않습니다. 소프트웨어 사용자 및 소프트웨어에서 내보낸 소리를 전파하는 자는 전적으로 책임져야 합니다. <br>이 조항을 인정하지 않으면 소프트웨어의 코드 및 파일을 사용하거나 인용할 수 없습니다. 루트 디렉터리의 <b>LICENSE</b>를 참조하십시오.",
"0-前置数据集获取工具": "0-전방 데이터 세트 수집 도구",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5 보컬 및 반주 분리 및 에코 및 지연 제거 도구",
"是否开启UVR5-WebUI": "UVR5-WebUI를 여시겠습니까?",
"UVR5进程输出信息": "UVR5 프로세스 출력 정보",
"0b-语音切分工具": "0b-음성 분리 도구",
".list标注文件的路径": ".list 주석 파일 경로",
"GPT模型路径": "GPT 모델 경로",
"SoVITS模型列表": "SoVITS 모델 목록",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。": "분리된 오디오가 있는 디렉터리를 입력하십시오! 읽은 오디오 파일의 전체 경로 = 해당 디렉터리-연결-목록 파일에 해당하는 원본 이름 (전체 경로가 아님).",
"音频自动切分输入路径,可文件可文件夹": "오디오 자동 분리 입력 경로, 파일 또는 폴더 가능",
"切分后的子音频的输出根目录": "분리된 하위 오디오의 출력 기본 디렉터리",
"怎么切": "자르기 옵션",
"不切": "자르지 않음",
"凑四句一切": "네 문장의 세트를 완성하세요.",
"按英文句号.切": "영어 문장으로 분리하기",
"threshold:音量小于这个值视作静音的备选切割点": "임계 값: 이 값보다 작은 볼륨은 대체 분리 지점으로 간주됩니다.",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "최소 길이: 각 세그먼트의 최소 길이. 첫 번째 세그먼트가 너무 짧으면 계속해서 뒷부분과 연결하여 이 값 이상이 될 때까지",
"min_interval:最短切割间隔": "최소 분리 간격",
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop 크기: 볼륨 곡선을 계산하는 방법. 작을수록 정확도가 높아지지만 계산량이 높아집니다 (정확도가 높다고 효과가 좋아지지 않음)",
"max_sil_kept:切完后静音最多留多长": "최대 유지되는 정적 길이 (분리 후)",
"开启语音切割": "음성 분리 활성화",
"终止语音切割": "음성 분리 종료",
"max:归一化后最大值多少": "최대 값 (정규화 후)",
"alpha_mix:混多少比例归一化后音频进来": "알파 믹스: 정규화된 오디오가 들어오는 비율",
"切割使用的进程数": "사용되는 프로세스 수로 자르기",
"语音切割进程输出信息": "음성 분리 프로세스 출력 정보",
"0c-中文批量离线ASR工具": "0c-중국어 대량 오프라인 ASR 도구",
"开启离线批量ASR": "오프라인 대량 ASR 활성화",
"终止ASR进程": "ASR 프로세스 종료",
"批量ASR(中文only)输入文件夹路径": "대량 ASR (중국어 전용) 입력 폴더 경로",
"ASR进程输出信息": "ASR 프로세스 출력 정보",
"0d-语音文本校对标注工具": "0d-음성 텍스트 교정 주석 도구",
"是否开启打标WebUI": "웹 기반 주석 활성화 여부",
"打标数据标注文件路径": "주석 데이터 주석 파일 경로",
"打标工具进程输出信息": "주석 도구 프로세스 출력 정보",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"*实验/模型名": "*실험/모델 이름",
"显卡信息": "그래픽 카드 정보",
"预训练的SoVITS-G模型路径": "사전 훈련된 SoVITS-G 모델 경로",
"预训练的SoVITS-D模型路径": "사전 훈련된 SoVITS-D 모델 경로",
"预训练的GPT模型路径": "사전 훈련된 GPT 모델 경로",
"1A-训练集格式化工具": "1A-훈련 세트 형식 지정 도구",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "logs/실험 이름 디렉터리에는 23456으로 시작하는 파일과 폴더가 있어야 함",
"*文本标注文件": "*텍스트 주석 파일",
"*训练集音频文件目录": "*훈련 세트 오디오 파일 디렉터리",
"训练集音频文件目录 拼接 list文件里波形对应的文件名。": "훈련 세트 오디오 파일 디렉터리 - 목록 파일에 해당하는 원형 이름 연결",
"1Aa-文本内容": "1Aa-텍스트 내용",
"GPU卡号以-分割,每个卡号一个进程": "GPU 카드 번호는 -로 구분되며 각 카드 번호에 하나의 프로세스가 있어야 함",
"预训练的中文BERT模型路径": "사전 훈련된 중국어 BERT 모델 경로",
"开启文本获取": "텍스트 추출 활성화",
"终止文本获取进程": "텍스트 추출 프로세스 종료",
"文本进程输出信息": "텍스트 프로세스 출력 정보",
"1Ab-SSL自监督特征提取": "1Ab-SSL 자기 지도 특징 추출",
"预训练的SSL模型路径": "사전 훈련된 SSL 모델 경로",
"开启SSL提取": "SSL 추출 활성화",
"终止SSL提取进程": "SSL 추출 프로세스 종료",
"SSL进程输出信息": "SSL 프로세스 출력 정보",
"1Ac-语义token提取": "1Ac-의미 토큰 추출",
"开启语义token提取": "의미 토큰 추출 활성화",
"终止语义token提取进程": "의미 토큰 추출 프로세스 종료",
"语义token提取进程输出信息": "의미 토큰 추출 프로세스 출력 정보",
"1Aabc-训练集格式化一键三连": "1Aabc-훈련 세트 형식 지정 일괄 처리",
"开启一键三连": "일괄 처리 활성화",
"终止一键三连": "일괄 처리 종료",
"一键三连进程输出信息": "일괄 처리 프로세스 출력 정보",
"1B-微调训练": "1B-미세 조정 훈련",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITS 훈련. 공유 용 모델 파일은 SoVITS_weights 하위에 출력됩니다.",
"每张显卡的batch_size": "각 그래픽 카드의 배치 크기",
"总训练轮数total_epoch不建议太高": "총 훈련 라운드 수 (total_epoch), 너무 높지 않게 권장됨",
"文本模块学习率权重": "텍스트 모듈 학습률 가중치",
"保存频率save_every_epoch": "저장 빈도 (각 라운드마다)",
"是否仅保存最新的ckpt文件以节省硬盘空间": "디스크 공간을 절약하기 위해 최신 ckpt 파일만 저장할지 여부",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "각 저장 시간에 최종 작은 모델을 weights 폴더에 저장할지 여부",
"开启SoVITS训练": "SoVITS 훈련 활성화",
"终止SoVITS训练": "SoVITS 훈련 종료",
"SoVITS训练进程输出信息": "SoVITS 훈련 프로세스 출력 정보",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPT 훈련. 공유 용 모델 파일은 GPT_weights 하위에 출력됩니다.",
"总训练轮数total_epoch": "총 훈련 라운드 수 (total_epoch)",
"开启GPT训练": "GPT 훈련 활성화",
"终止GPT训练": "GPT 훈련 종료",
"GPT训练进程输出信息": "GPT 훈련 프로세스 출력 정보",
"1C-推理": "1C-추론",
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。": "SoVITS_weights 및 GPT_weights에 저장된 훈련 완료된 모델 중 선택. 기본적으로 하나는 기본 모델이며 5초 Zero Shot TTS를 체험할 수 있습니다.",
"*GPT模型列表": "*GPT 모델 목록",
"*SoVITS模型列表": "*SoVITS 모델 목록",
"GPU卡号,只能填1个整数": "GPU 카드 번호, 1개의 정수만 입력 가능",
"刷新模型路径": "모델 경로 새로 고침",
"是否开启TTS推理WebUI": "TTS 추론 WebUI 활성화 여부",
"TTS推理WebUI进程输出信息": "TTS 추론 WebUI 프로세스 출력 정보",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-음성 변환",
"施工中,请静候佳音": "공사 중입니다. 기다려주십시오.",
"参考音频在3~10秒范围外请更换": "참고 오디오가 3~10초 범위를 벗어났습니다. 다른 것으로 바꾸십시오!",
"请上传3~10秒内参考音频超过会报错": "3~10초 이내의 참고 오디오를 업로드하십시오. 초과하면 오류가 발생합니다!",
"TTS推理进程已开启": "TTS 추론 프로세스가 열렸습니다",
"TTS推理进程已关闭": "TTS 추론 프로세스가 닫혔습니다",
"打标工具WebUI已开启": "주석 도구 WebUI가 열렸습니다",
"打标工具WebUI已关闭": "주석 도구 WebUI가 닫혔습니다",
"*请填写需要合成的目标文本。中英混合选中文,日英混合选日文,中日混合暂不支持,非目标语言文本自动遗弃。": "*합성할 대상 텍스트를 입력하십시오. 중국어와 영어를 혼합하면 중국어를 선택하고 일본어와 영어를 혼합하면 일본어를 선택하십시오. 중국어와 일본어를 혼합하는 것은 아직 지원되지 않으며 대상 언어가 아닌 텍스트는 자동으로 버려집니다.",
"*请填写需要合成的目标文本": "*합성할 대상 텍스트를 입력하십시오",
"ASR任务开启%s": "ASR 작업 시작: %s",
"GPT训练完成": "GPT 훈련 완료",
"GPT训练开始%s": "GPT 훈련 시작: %s",
"SSL提取进程执行中": "SSL 추출 프로세스 실행 중",
"SSL提取进程结束": "SSL 추출 프로세스 종료",
"SoVITS训练完成": "SoVITS 훈련 완료",
"SoVITS训练开始%s": "SoVITS 훈련 시작: %s",
"一键三连中途报错": "일괄 처리 중 오류 발생",
"一键三连进程结束": "일괄 처리 프로세스 종료",
"中文": "중국어",
"凑50字一切": "50자를 채우십시오",
"凑五句一切": "다섯 문장을 채우십시오",
"切分后文本": "분리된 텍스트",
"切割执行中": "분리 진행 중",
"切割结束": "분리 종료",
"参考音频的文本": "참고 오디오의 텍스트",
"参考音频的语种": "참고 오디오의 언어",
"合成语音": "합성 음성",
"后续将支持混合语种编码文本输入。": "향후 혼합 언어 코딩 텍스트 입력을 지원할 예정입니다.",
"已有正在进行的ASR任务需先终止才能开启下一次任务": "이미 진행 중인 ASR 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的GPT训练任务需先终止才能开启下一次任务": "이미 진행 중인 GPT 훈련 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的SSL提取任务需先终止才能开启下一次任务": "이미 진행 중인 SSL 추출 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的SoVITS训练任务需先终止才能开启下一次任务": "이미 진행 중인 SoVITS 훈련 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的一键三连任务,需先终止才能开启下一次任务": "이미 진행 중인 일괄 처리 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的切割任务,需先终止才能开启下一次任务": "이미 진행 중인 분리 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的文本任务,需先终止才能开启下一次任务": "이미 진행 중인 텍스트 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的语义token提取任务需先终止才能开启下一次任务": "이미 진행 중인 의미 토큰 추출 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已终止ASR进程": "ASR 프로세스 종료됨",
"已终止GPT训练": "GPT 훈련 종료됨",
"已终止SoVITS训练": "SoVITS 훈련 종료됨",
"已终止所有1a进程": "모든 1a 프로세스 종료됨",
"已终止所有1b进程": "모든 1b 프로세스 종료됨",
"已终止所有一键三连进程": "모든 일괄 처리 프로세스 종료됨",
"已终止所有切割进程": "모든 분리 프로세스 종료됨",
"已终止所有语义token进程": "모든 의미 토큰 프로세스 종료됨",
"按中文句号。切": "중국어 문장으로 분리하십시오.",
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "텍스트 분리 도구. 너무 긴 텍스트는 합성 결과가 항상 좋지 않을 수 있으므로 너무 길면 먼저 분리하는 것이 좋습니다. 합성은 텍스트 줄 바꿈을 기준으로 분리되어 다시 조합됩니다.",
"文本进程执行中": "텍스트 프로세스 실행 중",
"文本进程结束": "텍스트 프로세스 종료",
"日文": "일본어",
"英文": "영어",
"语义token提取进程执行中": "의미 토큰 추출 프로세스 실행 중",
"语义token提取进程结束": "의미 토큰 추출 프로세스 종료",
"请上传参考音频": "참고 오디오를 업로드하십시오",
"输入路径不存在": "입력 경로가 존재하지 않습니다",
"输入路径存在但既不是文件也不是文件夹": "입력 경로가 파일이나 폴더가 아닙니다",
"输出的语音": "출력 음성",
"进度1a-done": "진행: 1a-done",
"进度1a-done, 1b-ing": "진행: 1a-done, 1b-ing",
"进度1a-ing": "진행: 1a-ing",
"进度1a1b-done": "진행: 1a1b-done",
"进度1a1b-done, 1cing": "진행: 1a1b-done, 1cing",
"进度all-done": "진행: all-done",
"需要合成的切分前文本": "합성해야 할 분할 전 텍스트",
"需要合成的文本": "합성해야 할 텍스트",
"需要合成的语种": "합성해야 할 언어",
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": ">=3이면 harvest 음고 인식 결과에 중앙값 필터를 사용하며, 값은 필터 반경이며 사용하면 소리를 약하게 할 수 있습니다",
"A模型权重": "A 모델 가중치",
"A模型路径": "A 모델 경로",
"B模型路径": "B 모델 경로",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\음성 오디오 + 주석\\Miyuki Kenshi\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0 곡선 파일, 선택 사항, 한 줄에 하나의 음고, 기본 F0 및 음조 대신 사용",
"Index Rate": "인덱스 비율",
"Onnx导出": "Onnx 내보내기",
"Onnx输出路径": "Onnx 출력 경로",
"RVC模型路径": "RVC 모델 경로",
"ckpt处理": "ckpt 처리",
"harvest进程数": "harvest 프로세스 수",
"index文件路径不可包含中文": "인덱스 파일 경로에는 중국어를 포함할 수 없습니다",
"pth文件路径不可包含中文": "pth 파일 경로에는 중국어를 포함할 수 없습니다",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe 카드 번호 구성: 각 입력에 사용되는 다른 프로세스 카드를 -로 구분하여 입력하십시오. 예: 0-0-1은 카드 0에서 2개의 프로세스를 실행하고 카드 1에서 1개의 프로세스를 실행합니다",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1: 실험 구성 입력. 실험 데이터는 logs 하위에 있으며 각 실험에 대한 폴더가 있어야합니다. 실험 이름 경로를 수동으로 입력해야하며 실험 구성, 로그, 훈련된 모델 파일이 포함되어 있습니다.",
"step1:正在处理数据": "step1: 데이터 처리 중",
"step2:正在提取音高&正在提取特征": "step2: 음고 추출 및 특징 추출 중",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a: 자동으로 훈련 폴더에서 오디오로 디코딩할 수 있는 모든 파일을 반복하고 슬라이스 정규화를 수행하여 실험 디렉토리에 2 개의 wav 폴더를 생성합니다. 현재 단일 훈련만 지원됩니다.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "step2b: CPU로 음고 추출(모델이 음고를 지원하는 경우), GPU로 특징 추출(카드 번호 선택)",
"step3: 填写训练设置, 开始训练模型和索引": "step3: 훈련 설정 입력, 모델 및 인덱스 훈련 시작",
"step3a:正在训练模型": "step3a: 모델 훈련 중",
"一键训练": "일괄 훈련",
"也可批量输入音频文件, 二选一, 优先读文件夹": "오디오 파일을 일괄로 입력할 수도 있습니다. 둘 중 하나를 선택하고 폴더를 읽기를 우선합니다.",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "-로 구분하여 입력에 사용되는 카드 번호를 지정하십시오. 예 : 0-1-2는 카드 0, 1 및 2를 사용합니다",
"伴奏人声分离&去混响&去回声": "반주 및 보컬 분리 & 리버브 제거 & 에코 제거",
"使用模型采样率": "모델 샘플링 속도 사용",
"使用设备采样率": "기기 샘플링 속도 사용",
"保存名": "저장 이름",
"保存的文件名, 默认空为和源文件同名": "저장할 파일 이름, 기본적으로 공백은 원본 파일과 동일한 이름입니다",
"保存的模型名不带后缀": "저장할 모델 이름에는 확장자가 없습니다",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "클리어 자음 및 숨소를 보호하여 전자 음향 찢김과 같은 아티팩트를 방지하려면 0.5로 설정하되, 보호 강도를 높이려면 0.5로 당기지 않고 낮추면 인덱스 효과가 감소할 수 있습니다",
"修改": "수정",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "모델 정보 수정 (weights 폴더에서 추출된 작은 모델 파일만 지원됨)",
"停止音频转换": "오디오 변환 중지",
"全流程结束!": "전체 프로세스 완료!",
"刷新音色列表和索引路径": "음색 목록 및 인덱스 경로 새로 고침",
"加载模型": "모델 로드",
"加载预训练底模D路径": "사전 훈련된 기본 모델 D 경로 로드",
"加载预训练底模G路径": "사전 훈련된 기본 모델 G 경로 로드",
"单次推理": "단일 추론",
"卸载音色省显存": "음색 언로드 및 GPU 메모리 절약",
"变调(整数, 半音数量, 升八度12降八度-12)": "음높이 변경(정수, 반음 수, 올림 높이 12 내림 높이 -12)",
"后处理重采样至最终采样率0为不进行重采样": "후 처리를 통한 최종 샘플링률 재샘플링, 0은 재샘플링 미실행",
"否": "아니오",
"启用相位声码器": "페이즈 보코더 사용",
"响应阈值": "응답 임계값",
"响度因子": "음량 요소",
"处理数据": "데이터 처리",
"导出Onnx模型": "Onnx 모델 내보내기",
"导出文件格式": "내보내기 파일 형식",
"常见问题解答": "자주 묻는 질문 해결",
"常规设置": "일반 설정",
"开始音频转换": "오디오 변환 시작",
"性能设置": "성능 설정",
"批量推理": "일괄 추론",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "일괄 변환, 변환 대기 중인 오디오 폴더를 입력하거나 여러 오디오 파일을 업로드하고 지정된 폴더(opt 기본값)에 변환된 오디오를 출력합니다.",
"指定输出主人声文件夹": "지정된 주인 목소리 출력 폴더",
"指定输出文件夹": "지정된 출력 폴더",
"指定输出非主人声文件夹": "지정된 비주인 목소리 출력 폴더",
"推理时间(ms):": "추론 시간(ms):",
"推理音色": "추론 음색",
"提取": "추출",
"提取音高和处理数据使用的CPU进程数": "음높이 추출 및 데이터 처리에 사용되는 CPU 프로세스 수 추출",
"是": "예",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "모든 훈련 세트를 GPU 메모리에 캐시할지 여부. 10분 미만의 소량 데이터는 훈련 속도를 높이기 위해 캐시할 수 있지만, 대량 데이터를 캐시하면 메모리가 터지고 속도가 크게 향상되지 않을 수 있습니다.",
"查看": "보기",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "모델 정보보기(작은 모델 파일로 추출된 weights 폴더에서만 지원)",
"检索特征占比": "특징 비율 검색",
"模型": "모델",
"模型推理": "모델 추론",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "모델 추출(로그 폴더에 대형 파일 모델 경로 입력), 반 훈련하고 싶지 않거나 모델이 자동으로 작은 파일 모델로 추출되지 않았거나 중간 모델을 테스트하려는 경우에 사용",
"模型是否带音高指导": "모델에 음높이 안내가 있는지 여부",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "모델에 음높이 안내가 있는지 여부(노래에는 필수, 음성은 선택 사항)",
"模型是否带音高指导,1是0否": "모델에 음높이 안내가 있는지 여부, 1이면 있음 0이면 없음",
"模型版本型号": "모델 버전 및 모델 번호",
"模型融合, 可用于测试音色融合": "모델 통합, 음색 통합 테스트에 사용 가능",
"模型路径": "모델 경로",
"淡入淡出长度": "페이드 인/아웃 길이",
"版本": "버전",
"特征提取": "특성 추출",
"特征检索库文件路径,为空则使用下拉的选择结果": "특성 검색 라이브러리 파일 경로, 비어 있으면 드롭다운 선택 결과 사용",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "남성을 여성으로 추천 +12키, 여성을 남성으로 추천 -12키, 음역 폭발로 음색이 왜곡되면 적절한 음역으로 직접 조절 가능",
"目标采样率": "목표 샘플링률",
"算法延迟(ms):": "알고리즘 지연 시간(ms):",
"自动检测index路径,下拉式选择(dropdown)": "자동으로 index 경로 감지, 드롭다운 선택",
"融合": "융합",
"要改的模型信息": "수정할 모델 정보",
"要置入的模型信息": "삽입할 모델 정보",
"训练": "훈련",
"训练模型": "모델 훈련",
"训练特征索引": "특성 인덱스 훈련",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "훈련 종료, 콘솔 훈련 로그 또는 실험 폴더의 train.log를 확인할 수 있습니다",
"请指定说话人id": "화자 ID 지정",
"请选择index文件": "index 파일 선택",
"请选择pth文件": "pth 파일 선택",
"请选择说话人id": "화자 ID 선택",
"转换": "변환",
"输入实验名": "실험명 입력",
"输入待处理音频文件夹路径": "처리 대기 중인 오디오 폴더 경로 입력",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "처리 대기 중인 오디오 폴더 경로 입력(파일 관리자 주소 표시 줄에서 복사하면 됨)",
"输入待处理音频文件路径(默认是正确格式示例)": "처리 대기 중인 오디오 파일 경로 입력(기본적으로 올바른 형식의 예제)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "소스 음량 에너벌롭을 입력하여 출력 음량 에너벌롭 합성 비율을 대체하면 1에 가까울수록 출력 에너벌롭 사용",
"输入监听": "입력 모니터링",
"输入训练文件夹路径": "훈련 폴더 경로 입력",
"输入设备": "입력 장치",
"输入降噪": "노이즈 감소 입력",
"输出信息": "출력 정보",
"输出变声": "음성 출력",
"输出设备": "출력 장치",
"输出降噪": "노이즈 감소 출력",
"输出音频(右下角三个点,点了可以下载)": "출력 오디오(우하단 세 점, 클릭하면 다운로드 가능)",
"选择.index文件": "index 파일 선택",
"选择.pth文件": "pth 파일 선택",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "음높이 추출 알고리즘 선택, 노래 입력에 pm 사용 가능, harvest는 저음이 좋지만 매우 느림, crepe 효과는 좋지만 GPU 사용",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "음높이 추출 알고리즘 선택, 노래 입력에 pm 사용 가능, harvest는 저음이 좋지만 매우 느림, crepe 효과는 좋지만 GPU 사용, rmvpe 효과가 가장 좋으며 약간의 GPU 사용",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "음높이 추출 알고리즘 선택: 노래 입력에 pm 사용 가능, 고품질 음성이지만 CPU가 낮음, dio 사용 가능, harvest 품질이 더 좋지만 느림, rmvpe 효과가 최고이며 CPU/GPU 약간 사용",
"采样率:": "샘플링률:",
"采样长度": "샘플링 길이",
"重载设备列表": "장치 목록 다시로드",
"音调设置": "음조 설정",
"音频设备(请使用同种类驱动)": "오디오 장치(동일한 유형의 드라이버 사용 권장)",
"音高算法": "음높이 알고리즘",
"额外推理时长": "추가 추론 시간"
}

View File

@ -1,93 +0,0 @@
{
"很遗憾您这没有能用的显卡来支持您训练": "Infelizmente, você não possui uma placa de vídeo funcional para suportar seu treinamento",
"UVR5已开启": "UVR5 está ativado",
"UVR5已关闭": "UVR5 está desativado",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Este software é de código aberto sob a licença MIT. O autor não tem controle sobre o software. Aqueles que usam o software e difundem os sons exportados pelo software são totalmente responsáveis. <br>Se você não concorda com esta cláusula, não pode usar ou citar nenhum código e arquivo dentro do pacote de software. Consulte o diretório raiz <b>LICENSE</b> para mais detalhes.<br><br> Traduzido por Rafael Godoy Ebert",
"0-前置数据集获取工具": "0- Ferramenta de aquisição de conjunto de dados pré-frontal",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0A-UVR5 separação de voz e acompanhamento instrumental & ferramenta para remover reverberação e atraso",
"是否开启UVR5-WebUI": "Se deseja ativar a UVR5-WEBUI",
"UVR5进程输出信息": "Informações de saída do processo UVR5",
"0b-语音切分工具": "0b- Ferramenta de corte de voz",
"音频自动切分输入路径,可文件可文件夹": "Caminho de entrada automático de corte de áudio, pode ser um arquivo ou uma pasta",
"切分后的子音频的输出根目录": "Diretório raiz de saída do sub-áudio após o corte",
"threshold:音量小于这个值视作静音的备选切割点": "Limiar: O volume menor que este valor é considerado como um ponto de corte mudo alternativo",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length: O comprimento mínimo de cada parágrafo, se o primeiro for muito curto, conecte-o continuamente aos próximos até ultrapassar este valor",
"min_interval:最短切割间隔": "min_interval: O intervalo de corte mínimo",
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "HOP_SIZE: Como calcular a curva de volume, quanto menor a precisão, maior a quantidade de cálculos (não significa que quanto maior a precisão, melhor o efeito)",
"max_sil_kept:切完后静音最多留多长": "max_sil_kept: Depois de cortar, por quanto tempo no máximo o silêncio é mantido",
"开启语音切割": "Ativar corte de voz",
"终止语音切割": "Encerrar corte de voz",
"max:归一化后最大值多少": "MAX: Qual é o valor máximo após a normalização?",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: Em que proporção o áudio normalizado é misturado de volta",
"切割使用的进程数": "Número de processos para corte",
"语音切割进程输出信息": "Informações de saída do processo de corte de voz",
"0c-中文批量离线ASR工具": "0c- Ferramenta chinesa de ASR offline em lote",
"开启离线批量ASR": "Ativar ASR offline em lote",
"终止ASR进程": "Encerrar processo ASR",
"批量ASR(中文only)输入文件夹路径": "Caminho da pasta de entrada para ASR em lote (apenas chinês)",
"ASR进程输出信息": "Informações de saída do processo ASR",
"0d-语音文本校对标注工具": "0d- Ferramenta de correção e marcação de texto de voz",
"是否开启打标WebUI": "Se deseja abrir o webui de marcação",
"打标数据标注文件路径": "Caminho do arquivo de marcação de dados de marcação",
"打标工具进程输出信息": "Informações de saída do processo da ferramenta de marcação",
"1-GPT-SoVITS-TTS": "1-GPT-SOVITS-TTS",
"*实验/模型名": "*Nome do experimento/modelo",
"显卡信息": "Informações da placa de vídeo",
"预训练的SoVITS-G模型路径": "Caminho do modelo SoVITS-G pre-train",
"预训练的SoVITS-D模型路径": "Caminho do modelo SoVITS-D pre-train",
"预训练的GPT模型路径": "Caminho do modelo GPT pre-train",
"1A-训练集格式化工具": "1A-Ferramenta de formatação de conjunto de dados de treinamento",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "Logs de saída/deve haver arquivos e pastas começando com 23456 no diretório do nome do experimento",
"*文本标注文件": "*Arquivo de marcação de texto",
"*训练集音频文件目录": "*Diretório de arquivos de áudio do conjunto de treinamento",
"训练集音频文件目录 拼接 list文件里波形对应的文件名。": "Diretório de arquivos de áudio do conjunto de treinamento. Concatene o nome do arquivo correspondente à forma de onda no arquivo de lista",
"1Aa-文本内容": "1AA-Conteúdo do texto",
"GPU卡号以-分割,每个卡号一个进程": "Número da placa de vídeo dividido por-, cada número de placa é um processo",
"预训练的中文BERT模型路径": "Caminho do modelo BERT chinês pre-train",
"开启文本获取": "Ativar obtenção de texto",
"终止文本获取进程": "Encerrar processo de obtenção de texto",
"文本进程输出信息": "Informações de saída do processo de texto",
"1Ab-SSL自监督特征提取": "1AB-Extração de características auto-supervisionadas SSL",
"预训练的SSL模型路径": "Caminho do modelo SSL pre-train",
"开启SSL提取": "Ativar extração SSL",
"终止SSL提取进程": "Encerrar processo de extração SSL",
"SSL进程输出信息": "Informações de saída do processo SSL",
"1Ac-语义token提取": "1AC-Extração de token semântico",
"开启语义token提取": "Ativar extração de token semântico",
"终止语义token提取进程": "Encerrar processo de extração de token semântico",
"语义token提取进程输出信息": "Informações de saída do processo de extração de token semântico",
"1Aabc-训练集格式化一键三连": "1AABC-Formatação de conjunto de treinamento em um clique",
"开启一键三连": "Ativar um clique",
"终止一键三连": "Encerrar um clique",
"一键三连进程输出信息": "Informações de saída do processo de um clique",
"1B-微调训练": "1B-Treinamento de ajuste fino",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1ba-Treinamento SoVITS. O arquivo de modelo para compartilhamento é gerado em SOVITS_WEIGHTS",
"每张显卡的batch_size": "Tamanho do lote de cada placa de vídeo",
"总训练轮数total_epoch不建议太高": "Total de epoch de treinamento, não é recomendável um valor muito alto",
"文本模块学习率权重": "Weight da taxa de aprendizado do módulo de texto",
"保存频率save_every_epoch": "Frequência de salvamento save_every_epoch",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Se deve salvar apenas o último arquivo CKPT para economizar espaço em disco",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Se deve salvar o modelo pequeno final na pasta Weights em cada ponto de salvamento de tempo",
"开启SoVITS训练": "Ativar treinamento SoVITS",
"终止SoVITS训练": "Encerrar treinamento SoVITS",
"SoVITS训练进程输出信息": "Informações de saída do processo de treinamento SoVITS",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1BB-Treinamento GPT. O arquivo de modelo para compartilhamento é gerado em GPT_WEIGHTS",
"总训练轮数total_epoch": "Total de epoch de treinamento",
"开启GPT训练": "Ativar treinamento GPT",
"终止GPT训练": "Encerrar treinamento GPT",
"GPT训练进程输出信息": "Informações de saída do processo de treinamento GPT",
"1C-推理": "1C-raciocínio",
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。": "Selecione os modelos armazenados em Sovits_weights e GPT_WEIGHTS. O padrão é o modelo inferior, experiência para 5 segundos de Zero Shot TTS",
"*GPT模型列表": "*Lista de modelos GPT",
"*SoVITS模型列表": "*Lista de modelos Sovits",
"GPU卡号,只能填1个整数": "Número da placa de vídeo, só é possível preencher com um número inteiro",
"刷新模型路径": "Atualizar caminho do modelo",
"是否开启TTS推理WebUI": "Se deseja ativar o webui de raciocínio TTS",
"TTS推理WebUI进程输出信息": "Informações de saída do processo webui de raciocínio TTS",
"2-GPT-SoVITS-变声": "2-gpt-sovits-mudança de voz",
"施工中,请静候佳音": "Em construção, por favor, aguarde por um bom som",
"TTS推理进程已开启": "O processo de inferência TTS foi iniciado",
"TTS推理进程已关闭": "O processo de inferência TTS foi desativado",
"打标工具WebUI已开启": "A ferramenta de marcação WebUI está ativada",
"打标工具WebUI已关闭": "A ferramenta de marcação WebUI foi desativado"
}

View File

@ -1,135 +0,0 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "Если значение больше 3: применить медианную фильтрацию к вытащенным тональностям. Значение контролирует радиус фильтра и может уменьшить излишнее дыхание.",
"A模型权重": "Весы (w) модели А:",
"A模型路径": "Путь к модели А:",
"B模型路径": "Путь к модели Б:",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "Файл дуги F0 (не обязательно). Одна тональность на каждую строчку. Заменяет обычный F0 и модуляцию тональности:",
"Index Rate": "Темп индекса",
"Onnx导出": "Экспорт ONNX",
"Onnx输出路径": "Путь для сохранения модели в формате ONNX:",
"RVC模型路径": "Путь к модели RVC:",
"ckpt处理": "Обработка ckpt",
"harvest进程数": "Количество процессор harvest",
"index文件路径不可包含中文": "Путь к файлу индекса",
"pth文件路径不可包含中文": "Путь к файлу pth",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Введите номера графических процессоров, разделенные символом «-», например, 0-0-1, чтобы запустить два процесса на GPU 0 и один процесс на GPU 1:",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Шаг 1. Конфигурирование модели. Данные обучения модели сохраняются в папку 'logs', и для каждой модели создаётся отдельная папка. Введите вручную путь к настройкам для модели, в которой находятся логи и тренировочные файлы.",
"step1:正在处理数据": "Шаг 1. Переработка данных",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Шаг 2А. Автоматическая обработка исходных аудиозаписей для обучения и выполнение нормализации среза. Создаст 2 папки wav в папке модели. В данный момент поддерживается обучение только на одноголосных записях.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Шаг 2Б. Оценка и извлечение тональности в аудиофайлах с помощью процессора (если включена поддержка изменения высоты звука), извлечение черт с помощью GPU (выберите номер GPU):",
"step3: 填写训练设置, 开始训练模型和索引": "Шаг 3. Заполнение дополнительных настроек обучения и запуск обучения модели и индекса",
"step3a:正在训练模型": "Шаг 3. Запуск обучения модели",
"一键训练": "Обучение в одно нажатие",
"也可批量输入音频文件, 二选一, 优先读文件夹": "Можно также импортировать несколько аудиофайлов. Если путь к папке существует, то этот ввод игнорируется.",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "Пакетная обработка для разделения вокального сопровождения с использованием модели UVR5.<br>Пример допустимого формата пути к папке: D:\\path\\to\\input\\folder<br> Модель разделена на три категории:<br>1. Сохранить вокал: выберите этот вариант для звука без гармоний. Он сохраняет вокал лучше, чем HP5. Он включает в себя две встроенные модели: HP2 и HP3. HP3 может немного пропускать инструментал, но сохраняет вокал немного лучше, чем HP2.<br>2. Сохранить только основной вокал: выберите этот вариант для звука с гармониями. Это может ослабить основной вокал. Он включает одну встроенную модель: HP5.<br>3. Модели удаления реверберации и задержки (от FoxJoy):<br>(1) MDX-Net: лучший выбор для удаления стереореверберации, но он не может удалить монореверберацию;<br>&emsp;(234) DeEcho: удаляет эффекты задержки. Агрессивный режим удаляет более тщательно, чем Нормальный режим. DeReverb дополнительно удаляет реверберацию и может удалять монореверберацию, но не очень эффективно для сильно реверберированного высокочастотного контента.<br>Примечания по удалению реверберации/задержки:<br>1. Время обработки для модели DeEcho-DeReverb примерно в два раза больше, чем для двух других моделей DeEcho.<br>2. Модель MDX-Net-Dereverb довольно медленная.<br>3. Рекомендуемая самая чистая конфигурация — сначала применить MDX-Net, а затем DeEcho-Aggressive.",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Введите, какие(-ую) GPU(-у) хотите использовать через '-', например 0-1-2, чтобы использовать GPU с номерами 0, 1 и 2:",
"伴奏人声分离&去混响&去回声": "Разделение вокала/аккомпанемента и удаление эхо",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "Имя файла для сохранения:",
"保存的文件名, 默认空为和源文件同名": "Название сохранённого файла (по умолчанию: такое же, как и у входного):",
"保存的模型名不带后缀": "Имя файла модели для сохранения (без расширения):",
"保存频率save_every_epoch": "Частота сохранения (save_every_epoch):",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Защитить глухие согласные и звуки дыхания для предотвращения артефактов, например, разрывания в электронной музыке. Поставьте на 0.5, чтобы выключить. Уменьшите значение для повышения защиты, но учтите, что при этом может ухудшиться точность индексирования:",
"修改": "Изменить",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Изменить информацию о модели (работает только с маленькими моделями, взятыми из папки 'weights')",
"停止音频转换": "Закончить конвертацию аудио",
"全流程结束!": "Все процессы завершены!",
"刷新音色列表和索引路径": "Обновить список голосов и индексов",
"加载模型": "Загрузить модель",
"加载预训练底模D路径": "Путь к предварительно обученной базовой модели D:",
"加载预训练底模G路径": "Путь к предварительно обученной базовой модели G:",
"单次推理": "单次推理",
"卸载音色省显存": "Выгрузить модель из памяти GPU для освобождения ресурсов",
"变调(整数, 半音数量, 升八度12降八度-12)": "Изменить высоту голоса (укажите количество полутонов; чтобы поднять голос на октаву, выберите 12, понизить на октаву — -12):",
"后处理重采样至最终采样率0为不进行重采样": "Изменить частоту дискретизации в выходном файле на финальную. Поставьте 0, чтобы ничего не изменялось:",
"否": "Нет",
"启用相位声码器": "启用相位声码器",
"响应阈值": "Порог ответа",
"响度因子": "коэффициент громкости",
"处理数据": "Обработать данные",
"导出Onnx模型": "Экспортировать модель",
"导出文件格式": "Формат выходных файлов",
"常见问题解答": "ЧаВо (часто задаваемые вопросы)",
"常规设置": "Основные настройки",
"开始音频转换": "Начать конвертацию аудио",
"很遗憾您这没有能用的显卡来支持您训练": "К сожалению, у вас нету графического процессора, который поддерживает обучение моделей.",
"性能设置": "Настройки быстроты",
"总训练轮数total_epoch": "Полное количество эпох (total_epoch):",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Массовое преобразование. Введите путь к папке, в которой находятся файлы для преобразования голоса или выгрузите несколько аудиофайлов. Сконвертированные файлы будут сохранены в указанной папке (по умолчанию: 'opt').",
"指定输出主人声文件夹": "Путь к папке для сохранения вокала:",
"指定输出文件夹": "Папка для результатов:",
"指定输出非主人声文件夹": "Путь к папке для сохранения аккомпанемента:",
"推理时间(ms):": "Время переработки (мс):",
"推理音色": "Желаемый голос:",
"提取": "Создать модель",
"提取音高和处理数据使用的CPU进程数": "Число процессов ЦП, используемое для оценки высоты голоса и обработки данных:",
"是": "Да",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Сохранять только последний файл '.ckpt', чтобы сохранить место на диске:",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Сохранять маленькую финальную модель в папку 'weights' на каждой точке сохранения:",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Кэшировать все тренировочные сеты в видеопамять. Кэширование маленький датасетов (меньше 10 минут) может ускорить тренировку, но кэширование больших, наоборот, займёт много видеопамяти и не сильно ускорит тренировку:",
"显卡信息": "Информация о графических процессорах (GPUs):",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Это программное обеспечение с открытым исходным кодом распространяется по лицензии MIT. Автор никак не контролирует это программное обеспечение. Пользователи, которые используют эту программу и распространяют аудиозаписи, полученные с помощью этой программы, несут полную ответственность за это. Если вы не согласны с этим, вы не можете использовать какие-либо коды и файлы в рамках этой программы или ссылаться на них. Подробнее в файле <b>Agreement-LICENSE.txt</b> в корневом каталоге программы.",
"查看": "Просмотреть информацию",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Просмотреть информацию о модели (работает только с маленькими моделями, взятыми из папки 'weights')",
"检索特征占比": "Соотношение поиска черт:",
"模型": "Модели",
"模型推理": "Изменение голоса",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Создание модели из данных, полученных в процессе обучения (введите путь к большому файлу модели в папке 'logs'). Может пригодиться, если вам нужно завершить обучение и получить маленький файл готовой модели, или если вам нужно проверить недообученную модель:",
"模型是否带音高指导": "Поддерживает ли модель изменение высоты голоса (1: да, 0: нет):",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Поддержка изменения высоты звука (обязательно для пения, необязательно для речи):",
"模型是否带音高指导,1是0否": "Поддерживает ли модель изменение высоты голоса (1: да, 0: нет):",
"模型版本型号": "Версия архитектуры модели:",
"模型融合, 可用于测试音色融合": "Слияние моделей, может быть использовано для проверки слияния тембра",
"模型路径": "Путь к папке:",
"每张显卡的batch_size": "Размер пачки для GPU:",
"淡入淡出长度": "Длина затухания",
"版本": "Версия архитектуры модели:",
"特征提取": "Извлечь черты",
"特征检索库文件路径,为空则使用下拉的选择结果": "Путь к файлу индекса черт. Оставьте пустым, чтобы использовать выбранный вариант из списка ниже:",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Рекомендуется выбрать +12 для конвертирования мужского голоса в женский и -12 для конвертирования женского в мужской. Если диапазон голоса слишком велик, и голос искажается, можно выбрать значение на свой вкус.",
"目标采样率": "Частота дискретизации аудио:",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "Автоматически найденные файлы индексов черт (выберите вариант из списка):",
"融合": "Запустить слияние",
"要改的模型信息": "Информация, которая будет изменена:",
"要置入的模型信息": "Информация о модели:",
"训练": "Обучение модели",
"训练模型": "Обучить модель",
"训练特征索引": "Обучить индекс черт",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Обучение модели завершено. Журнал обучения можно просмотреть в консоли или в файле 'train.log' в папке с моделью.",
"请指定说话人id": "Номер говорящего/поющего:",
"请选择index文件": "Пожалуйста, выберите файл индекса",
"请选择pth文件": "Пожалуйста, выберите файл pth",
"请选择说话人id": "Номер говорящего:",
"转换": "Преобразовать",
"输入实验名": "Название модели:",
"输入待处理音频文件夹路径": "Путь к папке с аудиофайлами для обработки:",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Путь к папке с аудиофайлами для переработки (можно скопировать путь из адресной строки файлового менеджера):",
"输入待处理音频文件路径(默认是正确格式示例)": "Путь к аудиофайлу, который хотите обработать (ниже указан пример пути к файлу):",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Использовать громкость входного файла для замены или перемешивания с громкостью выходного файла. Чем ближе соотношение к 1, тем больше используется звука из выходного файла:",
"输入监听": "输入监听",
"输入训练文件夹路径": "Путь к папке с аудиозаписями, на которых будет обучаться модель:",
"输入设备": "Входное устройство",
"输入降噪": "Уменьшение входного шума",
"输出信息": "Статистика",
"输出变声": "输出变声",
"输出设备": "Выходное устройство",
"输出降噪": "Уменьшение выходного шума",
"输出音频(右下角三个点,点了可以下载)": "Аудиофайл (чтобы скачать, нажмите на три точки справа в плеере)",
"选择.index文件": "Выбрать файл .index",
"选择.pth文件": "Выбрать файл .pth",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "Выберите алгоритм оценки высоты голоса ('pm': работает быстро, но даёт низкое качество речи; 'harvest': басы лучше, но работает очень медленно; 'crepe': лучшее качество, но сильно нагружает GPU; 'rmvpe': лучшее качество и минимальная нагрузка на GPU):",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU",
"采样率:": "采样率:",
"采样长度": "Длина сэмпла",
"重载设备列表": "Обновить список устройств",
"音调设置": "Настройка высоты звука",
"音频设备(请使用同种类驱动)": "Аудиоустройство (пожалуйста, используйте такой же тип драйвера)",
"音高算法": "Алгоритм оценки высоты звука",
"额外推理时长": "Доп. время переработки"
}

View File

@ -1,135 +0,0 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "Eğer >=3 ise, elde edilen pitch sonuçlarına median filtreleme uygula. Bu değer, filtre yarıçapını temsil eder ve nefesliliği azaltabilir.",
"A模型权重": "A Modeli Ağırlığı:",
"A模型路径": "A Modeli Yolu:",
"B模型路径": "B Modeli Yolu:",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0 eğrisi dosyası (isteğe bağlı). Her satırda bir pitch değeri bulunur. Varsayılan F0 ve pitch modülasyonunu değiştirir:",
"Index Rate": "Index Oranı",
"Onnx导出": "Onnx Dışa Aktar",
"Onnx输出路径": "Onnx Dışa Aktarım Yolu:",
"RVC模型路径": "RVC Model Yolu:",
"ckpt处理": "ckpt İşleme",
"harvest进程数": "harvest进程数",
"index文件路径不可包含中文": ".index dosya yolu Çince karakter içeremez",
"pth文件路径不可包含中文": ".pth dosya yolu Çince karakter içeremez",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Adım 1: Deneysel yapılandırmayı doldurun. Deneysel veriler 'logs' klasöründe saklanır ve her bir deney için ayrı bir klasör vardır. Deneysel adı yolu manuel olarak girin; bu yol, deneysel yapılandırmayı, günlükleri ve eğitilmiş model dosyalarını içerir.",
"step1:正在处理数据": "Adım 1: Veri işleme",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Adım 2a: Eğitim klasöründe ses dosyalarını otomatik olarak gezinerek dilimleme normalizasyonu yapın. Deney dizini içinde 2 wav klasörü oluşturur. Şu anda sadece tek kişilik eğitim desteklenmektedir.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Adım 2b: Ses yüksekliği (Pitch) çıkartmak için CPU kullanın (eğer model ses yüksekliği içeriyorsa), özellikleri çıkartmak için GPU kullanın (GPU indeksini seçin):",
"step3: 填写训练设置, 开始训练模型和索引": "Adım 3: Eğitim ayarlarını doldurun ve modeli ve dizini eğitmeye başlayın",
"step3a:正在训练模型": "Adım 3a: Model eğitimi başladı",
"一键训练": "Tek Tuşla Eğit",
"也可批量输入音频文件, 二选一, 优先读文件夹": "Ses dosyaları ayrıca toplu olarak, iki seçimle, öncelikli okuma klasörüyle içe aktarılabilir",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "Batch işleme kullanarak vokal eşlik ayrımı için UVR5 modeli kullanılır.<br>Geçerli bir klasör yol formatı örneği: D:\\path\\to\\input\\folder (dosya yöneticisi adres çubuğundan kopyalanır).<br>Model üç kategoriye ayrılır:<br>1. Vokalleri koru: Bu seçeneği, harmoni içermeyen sesler için kullanın. HP5'ten daha iyi bir şekilde vokalleri korur. İki dahili model içerir: HP2 ve HP3. HP3, eşlik sesini hafifçe sızdırabilir, ancak vokalleri HP2'den biraz daha iyi korur.<br>2. Sadece ana vokalleri koru: Bu seçeneği, harmoni içeren sesler için kullanın. Ana vokalleri zayıflatabilir. Bir dahili model içerir: HP5.<br>3. Reverb ve gecikme modelleri (FoxJoy tarafından):<br>(1) MDX-Net: Stereo reverb'i kaldırmak için en iyi seçenek, ancak mono reverb'i kaldıramaz;<br>(234) DeEcho: Gecikme efektlerini kaldırır. Agresif mod, Normal moda göre daha kapsamlı bir şekilde kaldırma yapar. DeReverb ayrıca reverb'i kaldırır ve mono reverb'i kaldırabilir, ancak yoğun yankılı yüksek frekanslı içerikler için çok etkili değildir.<br>Reverb/gecikme notları:<br>1. DeEcho-DeReverb modelinin işleme süresi diğer iki DeEcho modeline göre yaklaşık olarak iki kat daha uzundur.<br>2. MDX-Net-Dereverb modeli oldukça yavaştır.<br>3. Tavsiye edilen en temiz yapılandırma önce MDX-Net'i uygulamak ve ardından DeEcho-Aggressive uygulamaktır.",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "GPU indekslerini '-' ile ayırarak girin, örneğin 0-1-2, GPU 0, 1 ve 2'yi kullanmak için:",
"伴奏人声分离&去混响&去回声": "Vokal/Müzik Ayrıştırma ve Yankı Giderme",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "Kaydetme Adı:",
"保存的文件名, 默认空为和源文件同名": "Kaydedilecek dosya adı (varsayılan: kaynak dosya ile aynı):",
"保存的模型名不带后缀": "Kaydedilecek model adı (uzantı olmadan):",
"保存频率save_every_epoch": "Kaydetme sıklığı (save_every_epoch):",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Sessiz ünsüzleri ve nefes seslerini koruyarak elektronik müzikte yırtılma gibi sanal hataların oluşmasını engeller. 0.5 olarak ayarlandığında devre dışı kalır. Değerin azaltılması korumayı artırabilir, ancak indeksleme doğruluğunu azaltabilir:",
"修改": "Düzenle",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Model bilgilerini düzenle (sadece 'weights' klasöründen çıkarılan küçük model dosyaları desteklenir)",
"停止音频转换": "Ses dönüştürmeyi durdur",
"全流程结束!": "Tüm işlemler tamamlandı!",
"刷新音色列表和索引路径": "Ses listesini ve indeks yolunu yenile",
"加载模型": "Model yükle",
"加载预训练底模D路径": "Önceden eğitilmiş temel D modelini yükleme yolu:",
"加载预训练底模G路径": "Önceden eğitilmiş temel G modelini yükleme yolu:",
"单次推理": "单次推理",
"卸载音色省显存": "GPU bellek kullanımını azaltmak için sesi kaldır",
"变调(整数, 半音数量, 升八度12降八度-12)": "Transpoze et (tamsayı, yarıton sayısıyla; bir oktav yükseltmek için: 12, bir oktav düşürmek için: -12):",
"后处理重采样至最终采样率0为不进行重采样": "Son işleme aşamasında çıktı sesini son örnekleme hızına yeniden örnekle. 0 değeri için yeniden örnekleme yapılmaz:",
"否": "Hayır",
"启用相位声码器": "启用相位声码器",
"响应阈值": "Tepki eşiği",
"响度因子": "ses yüksekliği faktörü",
"处理数据": "Verileri işle",
"导出Onnx模型": "Onnx Modeli Dışa Aktar",
"导出文件格式": "Dışa aktarma dosya formatı",
"常见问题解答": "Sıkça Sorulan Sorular (SSS)",
"常规设置": "Genel ayarlar",
"开始音频转换": "Ses dönüştürmeyi başlat",
"很遗憾您这没有能用的显卡来支持您训练": "Maalesef, eğitiminizi desteklemek için uyumlu bir GPU bulunmamaktadır.",
"性能设置": "Performans ayarları",
"总训练轮数total_epoch": "Toplam eğitim turu (total_epoch):",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Toplu dönüştür. Dönüştürülecek ses dosyalarının bulunduğu klasörü girin veya birden çok ses dosyasını yükleyin. Dönüştürülen ses dosyaları belirtilen klasöre ('opt' varsayılan olarak) dönüştürülecektir",
"指定输出主人声文件夹": "Vokal için çıkış klasörünü belirtin:",
"指定输出文件夹": ıkış klasörünü belirt:",
"指定输出非主人声文件夹": "Müzik ve diğer sesler için çıkış klasörünü belirtin:",
"推理时间(ms):": ıkarsama süresi (ms):",
"推理音色": "Ses çıkartma (Inference):",
"提取": ıkart",
"提取音高和处理数据使用的CPU进程数": "Ses yüksekliği çıkartmak (Pitch) ve verileri işlemek için kullanılacak CPU işlemci sayısı:",
"是": "Evet",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Sadece en son '.ckpt' dosyasını kaydet:",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Her kaydetme noktasında son küçük bir modeli 'weights' klasörüne kaydetmek için:",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Tüm eğitim verilerini GPU belleğine önbelleğe alıp almayacağınızı belirtin. Küçük veri setlerini (10 dakikadan az) önbelleğe almak eğitimi hızlandırabilir, ancak büyük veri setlerini önbelleğe almak çok fazla GPU belleği tüketir ve çok fazla hız artışı sağlamaz:",
"显卡信息": "GPU Bilgisi",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Bu yazılım, MIT lisansı altında açık kaynaklıdır. Yazarın yazılım üzerinde herhangi bir kontrolü yoktur. Yazılımı kullanan ve yazılım tarafından dışa aktarılan sesleri dağıtan kullanıcılar sorumludur. <br>Eğer bu maddeyle aynı fikirde değilseniz, yazılım paketi içindeki herhangi bir kod veya dosyayı kullanamaz veya referans göremezsiniz. Detaylar için kök dizindeki <b>Agreement-LICENSE.txt</b> dosyasına bakınız.",
"查看": "Görüntüle",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Model bilgilerini görüntüle (sadece 'weights' klasöründen çıkarılan küçük model dosyaları desteklenir)",
"检索特征占比": "Arama özelliği oranı (vurgu gücünü kontrol eder, çok yüksek olması sanal etkilere neden olur)",
"模型": "Model",
"模型推理": "Model çıkartma (Inference)",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Model çıkartma (büyük dosya modeli yolunu 'logs' klasöründe girin). Bu, eğitimi yarıda bırakmak istediğinizde ve manuel olarak küçük bir model dosyası çıkartmak ve kaydetmek istediğinizde veya bir ara modeli test etmek istediğinizde kullanışlıdır:",
"模型是否带音高指导": "Modelin ses yüksekliği rehberi içerip içermediği:",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Modelin ses yüksekliği (Pitch) rehberliği içerip içermediği (şarkı söyleme için şarttır, konuşma için isteğe bağlıdır):",
"模型是否带音高指导,1是0否": "Modelin ses yüksekliği rehberi içerip içermediği (1: evet, 0: hayır):",
"模型版本型号": "Model mimari versiyonu:",
"模型融合, 可用于测试音色融合": "Model birleştirme, ses rengi birleştirmesi için kullanılabilir",
"模型路径": "Model Yolu:",
"每张显卡的batch_size": "Her GPU için yığın boyutu (batch_size):",
"淡入淡出长度": "Geçiş (Fade) uzunluğu",
"版本": "Sürüm",
"特征提取": "Özellik çıkartma",
"特征检索库文件路径,为空则使用下拉的选择结果": "Özellik indeksi dosyasının yolunu belirtin. Seçilen sonucu kullanmak için boş bırakın veya açılır menüden seçim yapın.",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Erkekten kadına çevirmek için +12 tuş önerilir, kadından erkeğe çevirmek için ise -12 tuş önerilir. Eğer ses aralığı çok fazla genişler ve ses bozulursa, isteğe bağlı olarak uygun aralığa kendiniz de ayarlayabilirsiniz.",
"目标采样率": "Hedef örnekleme oranı:",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "İndeks yolunu otomatik olarak tespit et ve açılır menüden seçim yap.",
"融合": "Birleştir",
"要改的模型信息": "Düzenlenecek model bilgileri:",
"要置入的模型信息": "Eklemek için model bilgileri:",
"训练": "Eğitim",
"训练模型": "Modeli Eğit",
"训练特征索引": "Özellik Dizinini Eğit",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Eğitim tamamlandı. Eğitim günlüklerini konsolda veya deney klasörü altındaki train.log dosyasında kontrol edebilirsiniz.",
"请指定说话人id": "Lütfen konuşmacı/sanatçı no belirtin:",
"请选择index文件": "Lütfen .index dosyası seçin",
"请选择pth文件": "Lütfen .pth dosyası seçin",
"请选择说话人id": "Konuşmacı/Şarkıcı No seçin:",
"转换": "Dönüştür",
"输入实验名": "Deneysel adı girin:",
"输入待处理音频文件夹路径": "İşlenecek ses klasörünün yolunu girin:",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "İşlenecek ses klasörünün yolunu girin (dosya yöneticisinin adres çubuğundan kopyalayın):",
"输入待处理音频文件路径(默认是正确格式示例)": "İşlenecek ses dosyasının yolunu girin (varsayılan doğru format örneğidir):",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Sesin hacim zarfını ayarlayın. 0'a yakın değerler, sesin orijinal vokallerin hacmine benzer olmasını sağlar. Düşük bir değerle ses gürültüsünü maskeleyebilir ve hacmi daha doğal bir şekilde duyulabilir hale getirebilirsiniz. 1'e yaklaştıkça sürekli bir yüksek ses seviyesi elde edilir:",
"输入监听": "输入监听",
"输入训练文件夹路径": "Eğitim klasörünün yolunu girin:",
"输入设备": "Giriş cihazı",
"输入降噪": "Giriş gürültü azaltma",
"输出信息": ıkış bilgisi",
"输出变声": "输出变声",
"输出设备": ıkış cihazı",
"输出降噪": ıkış gürültü azaltma",
"输出音频(右下角三个点,点了可以下载)": "Ses dosyasını dışa aktar (indirmek için sağ alt köşedeki üç noktaya tıklayın)",
"选择.index文件": ".index dosyası seç",
"选择.pth文件": ".pth dosyası seç",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "Pitch algoritmasını seçin ('pm': daha hızlı çıkarır ancak daha düşük kaliteli konuşma; 'harvest': daha iyi konuşma sesi ancak son derece yavaş; 'crepe': daha da iyi kalite ancak GPU yoğunluğu gerektirir):",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU",
"采样率:": "采样率:",
"采样长度": "Örnekleme uzunluğu",
"重载设备列表": "Cihaz listesini yeniden yükle",
"音调设置": "Pitch ayarları",
"音频设备(请使用同种类驱动)": "Ses cihazı (aynı tür sürücüyü kullanın)",
"音高算法": "音高算法",
"额外推理时长": "Ekstra çıkartma süresi"
}

View File

@ -1,299 +0,0 @@
{
"很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练",
"UVR5已开启": "UVR5已开启",
"UVR5已关闭": "UVR5已关闭",
"输入文件夹路径": "输入文件夹路径",
"输出文件夹路径": "输出文件夹路径",
"ASR 模型": "ASR 模型",
"ASR 模型尺寸": "ASR 模型尺寸",
"ASR 语言设置": "ASR 语言设置",
"模型切换": "模型切换",
"是否开启dpo训练选项(实验性)": "是否开启dpo训练选项(实验性)",
"开启无参考文本模式。不填参考文本亦相当于开启。": "开启无参考文本模式。不填参考文本亦相当于开启。",
"使用无参考文本模式时建议使用微调的GPT": "使用无参考文本模式时建议使用微调的GPT",
"后续将支持转音素、手工修改音素、语音合成分步执行。": "后续将支持转音素、手工修改音素、语音合成分步执行。",
"gpt采样参数(无参考文本时不要太低)": "gpt采样参数(无参考文本时不要太低)",
"按标点符号切": "按标点符号切",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.",
"0-前置数据集获取工具": "0-前置数据集获取工具",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5人声伴奏分离&去混响去延迟工具",
"是否开启UVR5-WebUI": "是否开启UVR5-WebUI",
"UVR5进程输出信息": "UVR5进程输出信息",
"0b-语音切分工具": "0b-语音切分工具",
".list标注文件的路径": ".list标注文件的路径",
"GPT模型列表": "GPT模型列表",
"SoVITS模型列表": "SoVITS模型列表",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。": "填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。",
"音频自动切分输入路径,可文件可文件夹": "音频自动切分输入路径,可文件可文件夹",
"切分后的子音频的输出根目录": "切分后的子音频的输出根目录",
"怎么切": "怎么切",
"不切": "不切",
"凑四句一切": "凑四句一切",
"按英文句号.切": "按英文句号.切",
"threshold:音量小于这个值视作静音的备选切割点": "threshold:音量小于这个值视作静音的备选切割点",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值",
"min_interval:最短切割间隔": "min_interval:最短切割间隔",
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)",
"max_sil_kept:切完后静音最多留多长": "max_sil_kept:切完后静音最多留多长",
"开启语音切割": "开启语音切割",
"终止语音切割": "终止语音切割",
"max:归一化后最大值多少": "max:归一化后最大值多少",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix:混多少比例归一化后音频进来",
"切割使用的进程数": "切割使用的进程数",
"语音切割进程输出信息": "语音切割进程输出信息",
"0c-中文批量离线ASR工具": "0c-中文批量离线ASR工具",
"开启离线批量ASR": "开启离线批量ASR",
"终止ASR进程": "终止ASR进程",
"批量ASR(中文only)输入文件夹路径": "批量ASR(中文only)输入文件夹路径",
"ASR进程输出信息": "ASR进程输出信息",
"0d-语音文本校对标注工具": "0d-语音文本校对标注工具",
"是否开启打标WebUI": "是否开启打标WebUI",
"打标数据标注文件路径": "打标数据标注文件路径",
"打标工具进程输出信息": "打标工具进程输出信息",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"*实验/模型名": "*实验/模型名",
"显卡信息": "显卡信息",
"预训练的SoVITS-G模型路径": "预训练的SoVITS-G模型路径",
"预训练的SoVITS-D模型路径": "预训练的SoVITS-D模型路径",
"预训练的GPT模型路径": "预训练的GPT模型路径",
"1A-训练集格式化工具": "1A-训练集格式化工具",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "输出logs/实验名目录下应有23456开头的文件和文件夹",
"*文本标注文件": "*文本标注文件",
"*训练集音频文件目录": "*训练集音频文件目录",
"训练集音频文件目录 拼接 list文件里波形对应的文件名。": "训练集音频文件目录 拼接 list文件里波形对应的文件名。",
"1Aa-文本内容": "1Aa-文本内容",
"GPU卡号以-分割,每个卡号一个进程": "GPU卡号以-分割,每个卡号一个进程",
"预训练的中文BERT模型路径": "预训练的中文BERT模型路径",
"开启文本获取": "开启文本获取",
"终止文本获取进程": "终止文本获取进程",
"文本进程输出信息": "文本进程输出信息",
"1Ab-SSL自监督特征提取": "1Ab-SSL自监督特征提取",
"预训练的SSL模型路径": "预训练的SSL模型路径",
"开启SSL提取": "开启SSL提取",
"终止SSL提取进程": "终止SSL提取进程",
"SSL进程输出信息": "SSL进程输出信息",
"1Ac-语义token提取": "1Ac-语义token提取",
"开启语义token提取": "开启语义token提取",
"终止语义token提取进程": "终止语义token提取进程",
"语义token提取进程输出信息": "语义token提取进程输出信息",
"1Aabc-训练集格式化一键三连": "1Aabc-训练集格式化一键三连",
"开启一键三连": "开启一键三连",
"终止一键三连": "终止一键三连",
"一键三连进程输出信息": "一键三连进程输出信息",
"1B-微调训练": "1B-微调训练",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。",
"每张显卡的batch_size": "每张显卡的batch_size",
"总训练轮数total_epoch不建议太高": "总训练轮数total_epoch不建议太高",
"文本模块学习率权重": "文本模块学习率权重",
"保存频率save_every_epoch": "保存频率save_every_epoch",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否仅保存最新的ckpt文件以节省硬盘空间",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存时间点将最终小模型保存至weights文件夹",
"开启SoVITS训练": "开启SoVITS训练",
"终止SoVITS训练": "终止SoVITS训练",
"SoVITS训练进程输出信息": "SoVITS训练进程输出信息",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。",
"总训练轮数total_epoch": "总训练轮数total_epoch",
"开启GPT训练": "开启GPT训练",
"终止GPT训练": "终止GPT训练",
"GPT训练进程输出信息": "GPT训练进程输出信息",
"1C-推理": "1C-推理",
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。": "选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。",
"*GPT模型列表": "*GPT模型列表",
"*SoVITS模型列表": "*SoVITS模型列表",
"GPU卡号,只能填1个整数": "GPU卡号,只能填1个整数",
"刷新模型路径": "刷新模型路径",
"是否开启TTS推理WebUI": "是否开启TTS推理WebUI",
"TTS推理WebUI进程输出信息": "TTS推理WebUI进程输出信息",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-变声",
"施工中,请静候佳音": "施工中,请静候佳音",
"参考音频在3~10秒范围外请更换": "参考音频在3~10秒范围外请更换",
"请上传3~10秒内参考音频超过会报错": "请上传3~10秒内参考音频超过会报错",
"TTS推理进程已开启": "TTS推理进程已开启",
"TTS推理进程已关闭": "TTS推理进程已关闭",
"打标工具WebUI已开启": "打标工具WebUI已开启",
"打标工具WebUI已关闭": "打标工具WebUI已关闭",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. 如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录LICENSE.": "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. 如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录LICENSE.",
"*请上传并填写参考信息": "*请上传并填写参考信息",
"*请填写需要合成的目标文本。中英混合选中文,日英混合选日文,中日混合暂不支持,非目标语言文本自动遗弃。": "*请填写需要合成的目标文本。中英混合选中文,日英混合选日文,中日混合暂不支持,非目标语言文本自动遗弃。",
"ASR任务开启%s": "ASR任务开启%s",
"GPT训练完成": "GPT训练完成",
"GPT训练开始%s": "GPT训练开始%s",
"SSL提取进程执行中": "SSL提取进程执行中",
"SSL提取进程结束": "SSL提取进程结束",
"SoVITS训练完成": "SoVITS训练完成",
"SoVITS训练开始%s": "SoVITS训练开始%s",
"一键三连中途报错": "一键三连中途报错",
"一键三连进程结束": "一键三连进程结束",
"中文": "中文",
"凑50字一切": "凑50字一切",
"凑五句一切": "凑五句一切",
"切分后文本": "切分后文本",
"切割执行中": "切割执行中",
"切割结束": "切割结束",
"参考音频的文本": "参考音频的文本",
"参考音频的语种": "参考音频的语种",
"合成语音": "合成语音",
"后续将支持混合语种编码文本输入。": "后续将支持混合语种编码文本输入。",
"已有正在进行的ASR任务需先终止才能开启下一次任务": "已有正在进行的ASR任务需先终止才能开启下一次任务",
"已有正在进行的GPT训练任务需先终止才能开启下一次任务": "已有正在进行的GPT训练任务需先终止才能开启下一次任务",
"已有正在进行的SSL提取任务需先终止才能开启下一次任务": "已有正在进行的SSL提取任务需先终止才能开启下一次任务",
"已有正在进行的SoVITS训练任务需先终止才能开启下一次任务": "已有正在进行的SoVITS训练任务需先终止才能开启下一次任务",
"已有正在进行的一键三连任务,需先终止才能开启下一次任务": "已有正在进行的一键三连任务,需先终止才能开启下一次任务",
"已有正在进行的切割任务,需先终止才能开启下一次任务": "已有正在进行的切割任务,需先终止才能开启下一次任务",
"已有正在进行的文本任务,需先终止才能开启下一次任务": "已有正在进行的文本任务,需先终止才能开启下一次任务",
"已有正在进行的语义token提取任务需先终止才能开启下一次任务": "已有正在进行的语义token提取任务需先终止才能开启下一次任务",
"已终止ASR进程": "已终止ASR进程",
"已终止GPT训练": "已终止GPT训练",
"已终止SoVITS训练": "已终止SoVITS训练",
"已终止所有1a进程": "已终止所有1a进程",
"已终止所有1b进程": "已终止所有1b进程",
"已终止所有一键三连进程": "已终止所有一键三连进程",
"已终止所有切割进程": "已终止所有切割进程",
"已终止所有语义token进程": "已终止所有语义token进程",
"按中文句号。切": "按中文句号。切",
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。",
"文本进程执行中": "文本进程执行中",
"文本进程结束": "文本进程结束",
"日文": "日文",
"英文": "英文",
"语义token提取进程执行中": "语义token提取进程执行中",
"语义token提取进程结束": "语义token提取进程结束",
"请上传参考音频": "请上传参考音频",
"输入路径不存在": "输入路径不存在",
"输入路径存在但既不是文件也不是文件夹": "输入路径存在但既不是文件也不是文件夹",
"输出的语音": "输出的语音",
"进度1a-done": "进度1a-done",
"进度1a-done, 1b-ing": "进度1a-done, 1b-ing",
"进度1a-ing": "进度1a-ing",
"进度1a1b-done": "进度1a1b-done",
"进度1a1b-done, 1cing": "进度1a1b-done, 1cing",
"进度all-done": "进度all-done",
"需要合成的切分前文本": "需要合成的切分前文本",
"需要合成的文本": "需要合成的文本",
"需要合成的语种": "需要合成的语种",
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": ">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音",
"A模型权重": "A模型权重",
"A模型路径": "A模型路径",
"B模型路径": "B模型路径",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调",
"Index Rate": "Index Rate",
"Onnx导出": "Onnx导出",
"Onnx输出路径": "Onnx输出路径",
"RVC模型路径": "RVC模型路径",
"ckpt处理": "ckpt处理",
"harvest进程数": "harvest进程数",
"index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ",
"step1:正在处理数据": "step1:正在处理数据",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)",
"step3: 填写训练设置, 开始训练模型和索引": "step3: 填写训练设置, 开始训练模型和索引",
"step3a:正在训练模型": "step3a:正在训练模型",
"一键训练": "一键训练",
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2",
"伴奏人声分离&去混响&去回声": "伴奏人声分离&去混响&去回声",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "保存名",
"保存的文件名, 默认空为和源文件同名": "保存的文件名, 默认空为和源文件同名",
"保存的模型名不带后缀": "保存的模型名不带后缀",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果",
"修改": "修改",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型信息(仅支持weights文件夹下提取的小模型文件)",
"停止音频转换": "停止音频转换",
"全流程结束!": "全流程结束!",
"刷新音色列表和索引路径": "刷新音色列表和索引路径",
"加载模型": "加载模型",
"加载预训练底模D路径": "加载预训练底模D路径",
"加载预训练底模G路径": "加载预训练底模G路径",
"单次推理": "单次推理",
"卸载音色省显存": "卸载音色省显存",
"变调(整数, 半音数量, 升八度12降八度-12)": "变调(整数, 半音数量, 升八度12降八度-12)",
"后处理重采样至最终采样率0为不进行重采样": "后处理重采样至最终采样率0为不进行重采样",
"否": "否",
"启用相位声码器": "启用相位声码器",
"响应阈值": "响应阈值",
"响度因子": "响度因子",
"处理数据": "处理数据",
"导出Onnx模型": "导出Onnx模型",
"导出文件格式": "导出文件格式",
"常见问题解答": "常见问题解答",
"常规设置": "常规设置",
"开始音频转换": "开始音频转换",
"性能设置": "性能设置",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ",
"指定输出主人声文件夹": "指定输出主人声文件夹",
"指定输出文件夹": "指定输出文件夹",
"指定输出非主人声文件夹": "指定输出非主人声文件夹",
"推理时间(ms):": "推理时间(ms):",
"推理音色": "推理音色",
"提取": "提取",
"提取音高和处理数据使用的CPU进程数": "提取音高和处理数据使用的CPU进程数",
"是": "是",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速",
"查看": "查看",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型信息(仅支持weights文件夹下提取的小模型文件)",
"检索特征占比": "检索特征占比",
"模型": "模型",
"模型推理": "模型推理",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况",
"模型是否带音高指导": "模型是否带音高指导",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否带音高指导(唱歌一定要, 语音可以不要)",
"模型是否带音高指导,1是0否": "模型是否带音高指导,1是0否",
"模型版本型号": "模型版本型号",
"模型融合, 可用于测试音色融合": "模型融合, 可用于测试音色融合",
"模型路径": "模型路径",
"淡入淡出长度": "淡入淡出长度",
"版本": "版本",
"特征提取": "特征提取",
"特征检索库文件路径,为空则使用下拉的选择结果": "特征检索库文件路径,为空则使用下拉的选择结果",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ",
"目标采样率": "目标采样率",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "自动检测index路径,下拉式选择(dropdown)",
"融合": "融合",
"要改的模型信息": "要改的模型信息",
"要置入的模型信息": "要置入的模型信息",
"训练": "训练",
"训练模型": "训练模型",
"训练特征索引": "训练特征索引",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log",
"请指定说话人id": "请指定说话人id",
"请选择index文件": "请选择index文件",
"请选择pth文件": "请选择pth文件",
"请选择说话人id": "请选择说话人id",
"转换": "转换",
"输入实验名": "输入实验名",
"输入待处理音频文件夹路径": "输入待处理音频文件夹路径",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)",
"输入待处理音频文件路径(默认是正确格式示例)": "输入待处理音频文件路径(默认是正确格式示例)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络",
"输入监听": "输入监听",
"输入训练文件夹路径": "输入训练文件夹路径",
"输入设备": "输入设备",
"输入降噪": "输入降噪",
"输出信息": "输出信息",
"输出变声": "输出变声",
"输出设备": "输出设备",
"输出降噪": "输出降噪",
"输出音频(右下角三个点,点了可以下载)": "输出音频(右下角三个点,点了可以下载)",
"选择.index文件": "选择.index文件",
"选择.pth文件": "选择.pth文件",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU",
"采样率:": "采样率:",
"采样长度": "采样长度",
"重载设备列表": "重载设备列表",
"音调设置": "音调设置",
"音频设备(请使用同种类驱动)": "音频设备(请使用同种类驱动)",
"音高算法": "音高算法",
"额外推理时长": "额外推理时长"
}

View File

@ -1,135 +0,0 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": ">=3則使用對harvest音高識別的結果使用中值濾波數值為濾波半徑使用可以削弱啞音",
"A模型权重": "A模型權重",
"A模型路径": "A模型路徑",
"B模型路径": "B模型路徑",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲線檔案可選一行一個音高代替預設的F0及升降調",
"Index Rate": "Index Rate",
"Onnx导出": "Onnx导出",
"Onnx输出路径": "Onnx输出路径",
"RVC模型路径": "RVC模型路径",
"ckpt处理": "ckpt處理",
"harvest进程数": "harvest進程數",
"index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡號配置以-分隔輸入使用的不同進程卡號,例如0-0-1使用在卡0上跑2個進程並在卡1上跑1個進程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1填寫實驗配置。實驗數據放在logs下每個實驗一個資料夾需手動輸入實驗名路徑內含實驗配置、日誌、訓練得到的模型檔案。",
"step1:正在处理数据": "step1:正在处理数据",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a自動遍歷訓練資料夾下所有可解碼成音頻的檔案並進行切片歸一化在實驗目錄下生成2個wav資料夾暫時只支援單人訓練。",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "步驟2b: 使用CPU提取音高(如果模型帶音高), 使用GPU提取特徵(選擇卡號)",
"step3: 填写训练设置, 开始训练模型和索引": "步驟3: 填寫訓練設定, 開始訓練模型和索引",
"step3a:正在训练模型": "step3a:正在训练模型",
"一键训练": "一鍵訓練",
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "使用UVR5模型進行人聲伴奏分離的批次處理。<br>有效資料夾路徑格式的例子D:\\path\\to\\input\\folder從檔案管理員地址欄複製。<br>模型分為三類:<br>1. 保留人聲選擇這個選項適用於沒有和聲的音訊。它比HP5更好地保留了人聲。它包括兩個內建模型HP2和HP3。HP3可能輕微漏出伴奏但比HP2更好地保留了人聲<br>2. 僅保留主人聲選擇這個選項適用於有和聲的音訊。它可能會削弱主人聲。它包括一個內建模型HP5。<br>3. 消除混響和延遲模型由FoxJoy提供<br>(1) MDX-Net對於立體聲混響的移除是最好的選擇但不能移除單聲道混響<br>&emsp;(234) DeEcho移除延遲效果。Aggressive模式比Normal模式移除得更徹底。DeReverb另外移除混響可以移除單聲道混響但對於高頻重的板式混響移除不乾淨。<br>消除混響/延遲注意事項:<br>1. DeEcho-DeReverb模型的處理時間是其他兩個DeEcho模型的近兩倍<br>2. MDX-Net-Dereverb模型相當慢<br>3. 個人推薦的最乾淨配置是先使用MDX-Net然後使用DeEcho-Aggressive。",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔輸入使用的卡號, 例如 0-1-2 使用卡0和卡1和卡2",
"伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "儲存名",
"保存的文件名, 默认空为和源文件同名": "儲存的檔案名,預設空為與來源檔案同名",
"保存的模型名不带后缀": "儲存的模型名不帶副檔名",
"保存频率save_every_epoch": "保存頻率save_every_epoch",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保護清輔音和呼吸聲防止電音撕裂等artifact拉滿0.5不開啟,調低加大保護力度但可能降低索引效果",
"修改": "修改",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"停止音频转换": "停止音訊轉換",
"全流程结束!": "全流程结束!",
"刷新音色列表和索引路径": "刷新音色列表和索引路徑",
"加载模型": "載入模型",
"加载预训练底模D路径": "加載預訓練底模D路徑",
"加载预训练底模G路径": "加載預訓練底模G路徑",
"单次推理": "单次推理",
"卸载音色省显存": "卸載音色節省 VRAM",
"变调(整数, 半音数量, 升八度12降八度-12)": "變調(整數、半音數量、升八度12降八度-12)",
"后处理重采样至最终采样率0为不进行重采样": "後處理重採樣至最終採樣率0為不進行重採樣",
"否": "否",
"启用相位声码器": "启用相位声码器",
"响应阈值": "響應閾值",
"响度因子": "響度因子",
"处理数据": "處理資料",
"导出Onnx模型": "导出Onnx模型",
"导出文件格式": "導出檔格式",
"常见问题解答": "常見問題解答",
"常规设置": "一般設定",
"开始音频转换": "開始音訊轉換",
"很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练",
"性能设置": "效能設定",
"总训练轮数total_epoch": "總訓練輪數total_epoch",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量轉換,輸入待轉換音頻資料夾,或上傳多個音頻檔案,在指定資料夾(默認opt)下輸出轉換的音頻。",
"指定输出主人声文件夹": "指定输出主人声文件夹",
"指定输出文件夹": "指定輸出資料夾",
"指定输出非主人声文件夹": "指定输出非主人声文件夹",
"推理时间(ms):": "推理時間(ms):",
"推理音色": "推理音色",
"提取": "提取",
"提取音高和处理数据使用的CPU进程数": "提取音高和處理數據使用的CPU進程數",
"是": "是",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt檔案以節省硬碟空間",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights檔夾",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否緩存所有訓練集至 VRAM。小於10分鐘的小數據可緩存以加速訓練大數據緩存會爆 VRAM 也加不了多少速度",
"显卡信息": "顯示卡資訊",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何程式碼和檔案。詳見根目錄<b>使用需遵守的協議-LICENSE.txt</b>。",
"查看": "查看",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"检索特征占比": "檢索特徵佔比",
"模型": "模型",
"模型推理": "模型推理",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(輸入logs資料夾下大檔案模型路徑),適用於訓一半不想訓了模型沒有自動提取儲存小檔案模型,或者想測試中間模型的情況",
"模型是否带音高指导": "模型是否帶音高指導",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否帶音高指導(唱歌一定要,語音可以不要)",
"模型是否带音高指导,1是0否": "模型是否帶音高指導1是0否",
"模型版本型号": "模型版本型號",
"模型融合, 可用于测试音色融合": "模型融合,可用於測試音色融合",
"模型路径": "模型路徑",
"每张显卡的batch_size": "每张显卡的batch_size",
"淡入淡出长度": "淡入淡出長度",
"版本": "版本",
"特征提取": "特徵提取",
"特征检索库文件路径,为空则使用下拉的选择结果": "特徵檢索庫檔路徑,為空則使用下拉的選擇結果",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性轉女性推薦+12key女性轉男性推薦-12key如果音域爆炸導致音色失真也可以自己調整到合適音域。",
"目标采样率": "目標取樣率",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "自動檢測index路徑,下拉式選擇(dropdown)",
"融合": "融合",
"要改的模型信息": "要改的模型資訊",
"要置入的模型信息": "要置入的模型資訊",
"训练": "訓練",
"训练模型": "訓練模型",
"训练特征索引": "訓練特徵索引",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log",
"请指定说话人id": "請指定說話人id",
"请选择index文件": "请选择index文件",
"请选择pth文件": "请选择pth文件",
"请选择说话人id": "請選擇說話人ID",
"转换": "轉換",
"输入实验名": "輸入實驗名稱",
"输入待处理音频文件夹路径": "輸入待處理音頻資料夾路徑",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "輸入待處理音頻資料夾路徑(去檔案管理器地址欄拷貝即可)",
"输入待处理音频文件路径(默认是正确格式示例)": "輸入待處理音頻檔案路徑(預設是正確格式示例)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "輸入源音量包絡替換輸出音量包絡融合比例越靠近1越使用輸出包絡",
"输入监听": "输入监听",
"输入训练文件夹路径": "輸入訓練檔案夾路徑",
"输入设备": "輸入設備",
"输入降噪": "輸入降噪",
"输出信息": "輸出訊息",
"输出变声": "输出变声",
"输出设备": "輸出設備",
"输出降噪": "輸出降噪",
"输出音频(右下角三个点,点了可以下载)": "輸出音頻(右下角三個點,點了可以下載)",
"选择.index文件": "選擇 .index 檔案",
"选择.pth文件": "選擇 .pth 檔案",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "選擇音高提取演算法,輸入歌聲可用pm提速,harvest低音好但巨慢無比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU",
"采样率:": "采样率:",
"采样长度": "取樣長度",
"重载设备列表": "重載設備列表",
"音调设置": "音調設定",
"音频设备(请使用同种类驱动)": "音訊設備 (請使用同種類驅動)",
"音高算法": "音高演算法",
"额外推理时长": "額外推理時長"
}

View File

@ -1,135 +0,0 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": ">=3則使用對harvest音高識別的結果使用中值濾波數值為濾波半徑使用可以削弱啞音",
"A模型权重": "A模型權重",
"A模型路径": "A模型路徑",
"B模型路径": "B模型路徑",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲線檔案可選一行一個音高代替預設的F0及升降調",
"Index Rate": "Index Rate",
"Onnx导出": "Onnx导出",
"Onnx输出路径": "Onnx输出路径",
"RVC模型路径": "RVC模型路径",
"ckpt处理": "ckpt處理",
"harvest进程数": "harvest進程數",
"index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡號配置以-分隔輸入使用的不同進程卡號,例如0-0-1使用在卡0上跑2個進程並在卡1上跑1個進程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1填寫實驗配置。實驗數據放在logs下每個實驗一個資料夾需手動輸入實驗名路徑內含實驗配置、日誌、訓練得到的模型檔案。",
"step1:正在处理数据": "step1:正在处理数据",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a自動遍歷訓練資料夾下所有可解碼成音頻的檔案並進行切片歸一化在實驗目錄下生成2個wav資料夾暫時只支援單人訓練。",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "步驟2b: 使用CPU提取音高(如果模型帶音高), 使用GPU提取特徵(選擇卡號)",
"step3: 填写训练设置, 开始训练模型和索引": "步驟3: 填寫訓練設定, 開始訓練模型和索引",
"step3a:正在训练模型": "step3a:正在训练模型",
"一键训练": "一鍵訓練",
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "使用UVR5模型進行人聲伴奏分離的批次處理。<br>有效資料夾路徑格式的例子D:\\path\\to\\input\\folder從檔案管理員地址欄複製。<br>模型分為三類:<br>1. 保留人聲選擇這個選項適用於沒有和聲的音訊。它比HP5更好地保留了人聲。它包括兩個內建模型HP2和HP3。HP3可能輕微漏出伴奏但比HP2更好地保留了人聲<br>2. 僅保留主人聲選擇這個選項適用於有和聲的音訊。它可能會削弱主人聲。它包括一個內建模型HP5。<br>3. 消除混響和延遲模型由FoxJoy提供<br>(1) MDX-Net對於立體聲混響的移除是最好的選擇但不能移除單聲道混響<br>&emsp;(234) DeEcho移除延遲效果。Aggressive模式比Normal模式移除得更徹底。DeReverb另外移除混響可以移除單聲道混響但對於高頻重的板式混響移除不乾淨。<br>消除混響/延遲注意事項:<br>1. DeEcho-DeReverb模型的處理時間是其他兩個DeEcho模型的近兩倍<br>2. MDX-Net-Dereverb模型相當慢<br>3. 個人推薦的最乾淨配置是先使用MDX-Net然後使用DeEcho-Aggressive。",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔輸入使用的卡號, 例如 0-1-2 使用卡0和卡1和卡2",
"伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "儲存名",
"保存的文件名, 默认空为和源文件同名": "儲存的檔案名,預設空為與來源檔案同名",
"保存的模型名不带后缀": "儲存的模型名不帶副檔名",
"保存频率save_every_epoch": "保存頻率save_every_epoch",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保護清輔音和呼吸聲防止電音撕裂等artifact拉滿0.5不開啟,調低加大保護力度但可能降低索引效果",
"修改": "修改",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"停止音频转换": "停止音訊轉換",
"全流程结束!": "全流程结束!",
"刷新音色列表和索引路径": "刷新音色列表和索引路徑",
"加载模型": "載入模型",
"加载预训练底模D路径": "加載預訓練底模D路徑",
"加载预训练底模G路径": "加載預訓練底模G路徑",
"单次推理": "单次推理",
"卸载音色省显存": "卸載音色節省 VRAM",
"变调(整数, 半音数量, 升八度12降八度-12)": "變調(整數、半音數量、升八度12降八度-12)",
"后处理重采样至最终采样率0为不进行重采样": "後處理重採樣至最終採樣率0為不進行重採樣",
"否": "否",
"启用相位声码器": "启用相位声码器",
"响应阈值": "響應閾值",
"响度因子": "響度因子",
"处理数据": "處理資料",
"导出Onnx模型": "导出Onnx模型",
"导出文件格式": "導出檔格式",
"常见问题解答": "常見問題解答",
"常规设置": "一般設定",
"开始音频转换": "開始音訊轉換",
"很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练",
"性能设置": "效能設定",
"总训练轮数total_epoch": "總訓練輪數total_epoch",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量轉換,輸入待轉換音頻資料夾,或上傳多個音頻檔案,在指定資料夾(默認opt)下輸出轉換的音頻。",
"指定输出主人声文件夹": "指定输出主人声文件夹",
"指定输出文件夹": "指定輸出資料夾",
"指定输出非主人声文件夹": "指定输出非主人声文件夹",
"推理时间(ms):": "推理時間(ms):",
"推理音色": "推理音色",
"提取": "提取",
"提取音高和处理数据使用的CPU进程数": "提取音高和處理數據使用的CPU進程數",
"是": "是",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt檔案以節省硬碟空間",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights檔夾",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否緩存所有訓練集至 VRAM。小於10分鐘的小數據可緩存以加速訓練大數據緩存會爆 VRAM 也加不了多少速度",
"显卡信息": "顯示卡資訊",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何程式碼和檔案。詳見根目錄<b>使用需遵守的協議-LICENSE.txt</b>。",
"查看": "查看",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"检索特征占比": "檢索特徵佔比",
"模型": "模型",
"模型推理": "模型推理",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(輸入logs資料夾下大檔案模型路徑),適用於訓一半不想訓了模型沒有自動提取儲存小檔案模型,或者想測試中間模型的情況",
"模型是否带音高指导": "模型是否帶音高指導",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否帶音高指導(唱歌一定要,語音可以不要)",
"模型是否带音高指导,1是0否": "模型是否帶音高指導1是0否",
"模型版本型号": "模型版本型號",
"模型融合, 可用于测试音色融合": "模型融合,可用於測試音色融合",
"模型路径": "模型路徑",
"每张显卡的batch_size": "每张显卡的batch_size",
"淡入淡出长度": "淡入淡出長度",
"版本": "版本",
"特征提取": "特徵提取",
"特征检索库文件路径,为空则使用下拉的选择结果": "特徵檢索庫檔路徑,為空則使用下拉的選擇結果",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性轉女性推薦+12key女性轉男性推薦-12key如果音域爆炸導致音色失真也可以自己調整到合適音域。",
"目标采样率": "目標取樣率",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "自動檢測index路徑,下拉式選擇(dropdown)",
"融合": "融合",
"要改的模型信息": "要改的模型資訊",
"要置入的模型信息": "要置入的模型資訊",
"训练": "訓練",
"训练模型": "訓練模型",
"训练特征索引": "訓練特徵索引",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log",
"请指定说话人id": "請指定說話人id",
"请选择index文件": "请选择index文件",
"请选择pth文件": "请选择pth文件",
"请选择说话人id": "請選擇說話人ID",
"转换": "轉換",
"输入实验名": "輸入實驗名稱",
"输入待处理音频文件夹路径": "輸入待處理音頻資料夾路徑",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "輸入待處理音頻資料夾路徑(去檔案管理器地址欄拷貝即可)",
"输入待处理音频文件路径(默认是正确格式示例)": "輸入待處理音頻檔案路徑(預設是正確格式示例)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "輸入源音量包絡替換輸出音量包絡融合比例越靠近1越使用輸出包絡",
"输入监听": "输入监听",
"输入训练文件夹路径": "輸入訓練檔案夾路徑",
"输入设备": "輸入設備",
"输入降噪": "輸入降噪",
"输出信息": "輸出訊息",
"输出变声": "输出变声",
"输出设备": "輸出設備",
"输出降噪": "輸出降噪",
"输出音频(右下角三个点,点了可以下载)": "輸出音頻(右下角三個點,點了可以下載)",
"选择.index文件": "選擇 .index 檔案",
"选择.pth文件": "選擇 .pth 檔案",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "選擇音高提取演算法,輸入歌聲可用pm提速,harvest低音好但巨慢無比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU",
"采样率:": "采样率:",
"采样长度": "取樣長度",
"重载设备列表": "重載設備列表",
"音调设置": "音調設定",
"音频设备(请使用同种类驱动)": "音訊設備 (請使用同種類驅動)",
"音高算法": "音高演算法",
"额外推理时长": "額外推理時長"
}

View File

@ -1,135 +0,0 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": ">=3則使用對harvest音高識別的結果使用中值濾波數值為濾波半徑使用可以削弱啞音",
"A模型权重": "A模型權重",
"A模型路径": "A模型路徑",
"B模型路径": "B模型路徑",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲線檔案可選一行一個音高代替預設的F0及升降調",
"Index Rate": "Index Rate",
"Onnx导出": "Onnx导出",
"Onnx输出路径": "Onnx输出路径",
"RVC模型路径": "RVC模型路径",
"ckpt处理": "ckpt處理",
"harvest进程数": "harvest進程數",
"index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡號配置以-分隔輸入使用的不同進程卡號,例如0-0-1使用在卡0上跑2個進程並在卡1上跑1個進程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1填寫實驗配置。實驗數據放在logs下每個實驗一個資料夾需手動輸入實驗名路徑內含實驗配置、日誌、訓練得到的模型檔案。",
"step1:正在处理数据": "step1:正在处理数据",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a自動遍歷訓練資料夾下所有可解碼成音頻的檔案並進行切片歸一化在實驗目錄下生成2個wav資料夾暫時只支援單人訓練。",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "步驟2b: 使用CPU提取音高(如果模型帶音高), 使用GPU提取特徵(選擇卡號)",
"step3: 填写训练设置, 开始训练模型和索引": "步驟3: 填寫訓練設定, 開始訓練模型和索引",
"step3a:正在训练模型": "step3a:正在训练模型",
"一键训练": "一鍵訓練",
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "使用UVR5模型進行人聲伴奏分離的批次處理。<br>有效資料夾路徑格式的例子D:\\path\\to\\input\\folder從檔案管理員地址欄複製。<br>模型分為三類:<br>1. 保留人聲選擇這個選項適用於沒有和聲的音訊。它比HP5更好地保留了人聲。它包括兩個內建模型HP2和HP3。HP3可能輕微漏出伴奏但比HP2更好地保留了人聲<br>2. 僅保留主人聲選擇這個選項適用於有和聲的音訊。它可能會削弱主人聲。它包括一個內建模型HP5。<br>3. 消除混響和延遲模型由FoxJoy提供<br>(1) MDX-Net對於立體聲混響的移除是最好的選擇但不能移除單聲道混響<br>&emsp;(234) DeEcho移除延遲效果。Aggressive模式比Normal模式移除得更徹底。DeReverb另外移除混響可以移除單聲道混響但對於高頻重的板式混響移除不乾淨。<br>消除混響/延遲注意事項:<br>1. DeEcho-DeReverb模型的處理時間是其他兩個DeEcho模型的近兩倍<br>2. MDX-Net-Dereverb模型相當慢<br>3. 個人推薦的最乾淨配置是先使用MDX-Net然後使用DeEcho-Aggressive。",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔輸入使用的卡號, 例如 0-1-2 使用卡0和卡1和卡2",
"伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "儲存名",
"保存的文件名, 默认空为和源文件同名": "儲存的檔案名,預設空為與來源檔案同名",
"保存的模型名不带后缀": "儲存的模型名不帶副檔名",
"保存频率save_every_epoch": "保存頻率save_every_epoch",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保護清輔音和呼吸聲防止電音撕裂等artifact拉滿0.5不開啟,調低加大保護力度但可能降低索引效果",
"修改": "修改",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"停止音频转换": "停止音訊轉換",
"全流程结束!": "全流程结束!",
"刷新音色列表和索引路径": "刷新音色列表和索引路徑",
"加载模型": "載入模型",
"加载预训练底模D路径": "加載預訓練底模D路徑",
"加载预训练底模G路径": "加載預訓練底模G路徑",
"单次推理": "单次推理",
"卸载音色省显存": "卸載音色節省 VRAM",
"变调(整数, 半音数量, 升八度12降八度-12)": "變調(整數、半音數量、升八度12降八度-12)",
"后处理重采样至最终采样率0为不进行重采样": "後處理重採樣至最終採樣率0為不進行重採樣",
"否": "否",
"启用相位声码器": "启用相位声码器",
"响应阈值": "響應閾值",
"响度因子": "響度因子",
"处理数据": "處理資料",
"导出Onnx模型": "导出Onnx模型",
"导出文件格式": "導出檔格式",
"常见问题解答": "常見問題解答",
"常规设置": "一般設定",
"开始音频转换": "開始音訊轉換",
"很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练",
"性能设置": "效能設定",
"总训练轮数total_epoch": "總訓練輪數total_epoch",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量轉換,輸入待轉換音頻資料夾,或上傳多個音頻檔案,在指定資料夾(默認opt)下輸出轉換的音頻。",
"指定输出主人声文件夹": "指定输出主人声文件夹",
"指定输出文件夹": "指定輸出資料夾",
"指定输出非主人声文件夹": "指定输出非主人声文件夹",
"推理时间(ms):": "推理時間(ms):",
"推理音色": "推理音色",
"提取": "提取",
"提取音高和处理数据使用的CPU进程数": "提取音高和處理數據使用的CPU進程數",
"是": "是",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt檔案以節省硬碟空間",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights檔夾",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否緩存所有訓練集至 VRAM。小於10分鐘的小數據可緩存以加速訓練大數據緩存會爆 VRAM 也加不了多少速度",
"显卡信息": "顯示卡資訊",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何程式碼和檔案。詳見根目錄<b>使用需遵守的協議-LICENSE.txt</b>。",
"查看": "查看",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"检索特征占比": "檢索特徵佔比",
"模型": "模型",
"模型推理": "模型推理",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(輸入logs資料夾下大檔案模型路徑),適用於訓一半不想訓了模型沒有自動提取儲存小檔案模型,或者想測試中間模型的情況",
"模型是否带音高指导": "模型是否帶音高指導",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否帶音高指導(唱歌一定要,語音可以不要)",
"模型是否带音高指导,1是0否": "模型是否帶音高指導1是0否",
"模型版本型号": "模型版本型號",
"模型融合, 可用于测试音色融合": "模型融合,可用於測試音色融合",
"模型路径": "模型路徑",
"每张显卡的batch_size": "每张显卡的batch_size",
"淡入淡出长度": "淡入淡出長度",
"版本": "版本",
"特征提取": "特徵提取",
"特征检索库文件路径,为空则使用下拉的选择结果": "特徵檢索庫檔路徑,為空則使用下拉的選擇結果",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性轉女性推薦+12key女性轉男性推薦-12key如果音域爆炸導致音色失真也可以自己調整到合適音域。",
"目标采样率": "目標取樣率",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "自動檢測index路徑,下拉式選擇(dropdown)",
"融合": "融合",
"要改的模型信息": "要改的模型資訊",
"要置入的模型信息": "要置入的模型資訊",
"训练": "訓練",
"训练模型": "訓練模型",
"训练特征索引": "訓練特徵索引",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log",
"请指定说话人id": "請指定說話人id",
"请选择index文件": "请选择index文件",
"请选择pth文件": "请选择pth文件",
"请选择说话人id": "請選擇說話人ID",
"转换": "轉換",
"输入实验名": "輸入實驗名稱",
"输入待处理音频文件夹路径": "輸入待處理音頻資料夾路徑",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "輸入待處理音頻資料夾路徑(去檔案管理器地址欄拷貝即可)",
"输入待处理音频文件路径(默认是正确格式示例)": "輸入待處理音頻檔案路徑(預設是正確格式示例)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "輸入源音量包絡替換輸出音量包絡融合比例越靠近1越使用輸出包絡",
"输入监听": "输入监听",
"输入训练文件夹路径": "輸入訓練檔案夾路徑",
"输入设备": "輸入設備",
"输入降噪": "輸入降噪",
"输出信息": "輸出訊息",
"输出变声": "输出变声",
"输出设备": "輸出設備",
"输出降噪": "輸出降噪",
"输出音频(右下角三个点,点了可以下载)": "輸出音頻(右下角三個點,點了可以下載)",
"选择.index文件": "選擇 .index 檔案",
"选择.pth文件": "選擇 .pth 檔案",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "選擇音高提取演算法,輸入歌聲可用pm提速,harvest低音好但巨慢無比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU",
"采样率:": "采样率:",
"采样长度": "取樣長度",
"重载设备列表": "重載設備列表",
"音调设置": "音調設定",
"音频设备(请使用同种类驱动)": "音訊設備 (請使用同種類驅動)",
"音高算法": "音高演算法",
"额外推理时长": "額外推理時長"
}

View File

@ -1,18 +1,18 @@
numpy
numpy==1.23.4
scipy
tensorboard
librosa==0.9.2
numba==0.56.4
pytorch-lightning
gradio==3.38.0
gradio_client==0.8.1
gradio>=4.0,<=4.24.0
ffmpeg-python
onnxruntime
onnxruntime; sys_platform == 'darwin'
onnxruntime-gpu; sys_platform != 'darwin'
tqdm
funasr==1.0.0
funasr==1.0.27
cn2an
pypinyin
pyopenjtalk
pyopenjtalk>=0.3.4
g2p_en
torchaudio
modelscope==1.10.0
@ -26,3 +26,11 @@ jieba
LangSegment>=0.2.0
Faster_Whisper
wordsegment
rotary_embedding_torch
pyjyutping
g2pk2
ko_pron
opencc; sys_platform != 'linux'
opencc==1.1.1; sys_platform == 'linux'
python_mecab_ko; sys_platform != 'win32'
fastapi<0.112.2

View File

@ -18,14 +18,16 @@ def check_fw_local_models():
asr_dict = {
"达摩 ASR (中文)": {
'lang': ['zh'],
'lang': ['zh','yue'],
'size': ['large'],
'path': 'funasr_asr.py',
'precision': ['float32']
},
"Faster Whisper (多语种)": {
'lang': ['auto', 'zh', 'en', 'ja'],
'lang': ['auto', 'zh', 'en', 'ja', 'ko', 'yue'],
'size': check_fw_local_models(),
'path': 'fasterwhisper_asr.py'
}
'path': 'fasterwhisper_asr.py',
'precision': ['float32', 'float16', 'int8']
},
}

View File

@ -68,17 +68,16 @@ def execute_asr(input_folder, output_folder, model_size, language, precision):
if info.language == "zh":
print("检测为中文文本, 转 FunASR 处理")
if("only_asr"not in globals()):
from tools.asr.funasr_asr import \
only_asr # #如果用英文就不需要导入下载模型
text = only_asr(file_path)
if("only_asr" not in globals()):
from tools.asr.funasr_asr import only_asr #如果用英文就不需要导入下载模型
text = only_asr(file_path, language=info.language.lower())
if text == '':
for segment in segments:
text += segment.text
output.append(f"{file_path}|{output_file_name}|{info.language.upper()}|{text}")
except:
return print(traceback.format_exc())
print(traceback.format_exc())
output_folder = output_folder or "output/asr_opt"
os.makedirs(output_folder, exist_ok=True)
@ -101,8 +100,8 @@ if __name__ == '__main__':
parser.add_argument("-l", "--language", type=str, default='ja',
choices=language_code_list,
help="Language of the audio files.")
parser.add_argument("-p", "--precision", type=str, default='float16', choices=['float16','float32'],
help="fp16 or fp32")
parser.add_argument("-p", "--precision", type=str, default='float16', choices=['float16','float32','int8'],
help="fp16, int8 or fp32")
cmd = parser.parse_args()
output_file_path = execute_asr(

View File

@ -3,34 +3,60 @@
import argparse
import os
import traceback
# from funasr.utils import version_checker
# version_checker.check_for_update = lambda: None
from funasr import AutoModel
from tqdm import tqdm
from funasr import AutoModel
funasr_models = {} # 存储模型避免重复加载
path_asr = 'tools/asr/models/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch'
path_vad = 'tools/asr/models/speech_fsmn_vad_zh-cn-16k-common-pytorch'
path_punc = 'tools/asr/models/punc_ct-transformer_zh-cn-common-vocab272727-pytorch'
path_asr = path_asr if os.path.exists(path_asr) else "iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch"
path_vad = path_vad if os.path.exists(path_vad) else "iic/speech_fsmn_vad_zh-cn-16k-common-pytorch"
path_punc = path_punc if os.path.exists(path_punc) else "iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch"
model = AutoModel(
model = path_asr,
model_revision = "v2.0.4",
vad_model = path_vad,
vad_model_revision = "v2.0.4",
punc_model = path_punc,
punc_model_revision = "v2.0.4",
)
def only_asr(input_file):
def only_asr(input_file, language):
try:
model = create_model(language)
text = model.generate(input=input_file)[0]["text"]
except:
text = ''
print(traceback.format_exc())
return text
def create_model(language="zh"):
path_vad = 'tools/asr/models/speech_fsmn_vad_zh-cn-16k-common-pytorch'
path_punc = 'tools/asr/models/punc_ct-transformer_zh-cn-common-vocab272727-pytorch'
path_vad = path_vad if os.path.exists(path_vad) else "iic/speech_fsmn_vad_zh-cn-16k-common-pytorch"
path_punc = path_punc if os.path.exists(path_punc) else "iic/punc_ct-transformer_zh-cn-common-vocab272727-pytorch"
vad_model_revision = punc_model_revision = "v2.0.4"
if language == "zh":
path_asr = 'tools/asr/models/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch'
path_asr = path_asr if os.path.exists(path_asr) else "iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch"
model_revision = "v2.0.4"
elif language == "yue":
path_asr = 'tools/asr/models/speech_UniASR_asr_2pass-cantonese-CHS-16k-common-vocab1468-tensorflow1-online'
path_asr = path_asr if os.path.exists(path_asr) else "iic/speech_UniASR_asr_2pass-cantonese-CHS-16k-common-vocab1468-tensorflow1-online"
model_revision = "master"
path_vad = path_punc = None
vad_model_revision = punc_model_revision = None
###友情提示粤语带VAD识别可能会有少量shape不对报错的但是不带VAD可以.不带vad只能分阶段单独加标点。不过标点模型对粤语效果真的不行…
else:
raise ValueError("FunASR 不支持该语言" + ": " + language)
if language in funasr_models:
return funasr_models[language]
else:
model = AutoModel(
model = path_asr,
model_revision = model_revision,
vad_model = path_vad,
vad_model_revision = vad_model_revision,
punc_model = path_punc,
punc_model_revision = punc_model_revision,
)
print(f"FunASR 模型加载完成: {language.upper()}")
funasr_models[language] = model
return model
def execute_asr(input_folder, output_folder, model_size, language):
input_file_names = os.listdir(input_folder)
input_file_names.sort()
@ -38,8 +64,11 @@ def execute_asr(input_folder, output_folder, model_size, language):
output = []
output_file_name = os.path.basename(input_folder)
model = create_model(language)
for file_name in tqdm(input_file_names):
try:
print("\n" + file_name)
file_path = os.path.join(input_folder, file_name)
text = model.generate(input=file_path)[0]["text"]
output.append(f"{file_path}|{output_file_name}|{language.upper()}|{text}")
@ -63,11 +92,10 @@ if __name__ == '__main__':
help="Output folder to store transcriptions.")
parser.add_argument("-s", "--model_size", type=str, default='large',
help="Model Size of FunASR is Large")
parser.add_argument("-l", "--language", type=str, default='zh', choices=['zh'],
parser.add_argument("-l", "--language", type=str, default='zh', choices=['zh','yue','auto'],
help="Language of the audio files.")
parser.add_argument("-p", "--precision", type=str, default='float16', choices=['float16','float32'],
help="fp16 or fp32")#还没接入
cmd = parser.parse_args()
execute_asr(
input_folder = cmd.input_folder,

View File

@ -1,4 +1,5 @@
import os,argparse
import traceback
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
@ -12,7 +13,10 @@ def execute_denoise(input_folder,output_folder):
# print(input_folder)
# print(list(os.listdir(input_folder).sort()))
for name in tqdm(os.listdir(input_folder)):
ans("%s/%s"%(input_folder,name),output_path='%s/%s'%(output_folder,name))
try:
ans("%s/%s"%(input_folder,name),output_path='%s/%s'%(output_folder,name))
except:
traceback.print_exc()
if __name__ == '__main__':
parser = argparse.ArgumentParser()

View File

@ -2,20 +2,25 @@ import json
import locale
import os
I18N_JSON_DIR : os.PathLike = os.path.join(os.path.dirname(os.path.relpath(__file__)), 'locale')
def load_language_list(language):
with open(f"./i18n/locale/{language}.json", "r", encoding="utf-8") as f:
with open(os.path.join(I18N_JSON_DIR, f"{language}.json"), "r", encoding="utf-8") as f:
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]:
language = locale.getdefaultlocale()[
0
] # getlocale can't identify the system's language ((None, None))
if not os.path.exists(f"./i18n/locale/{language}.json"):
language = locale.getdefaultlocale()[0]
# getlocale can't identify the system's language ((None, None))
if not os.path.exists(os.path.join(I18N_JSON_DIR, f"{language}.json")):
language = "en_US"
self.language = language
self.language_map = load_language_list(language)
@ -25,3 +30,7 @@ class I18nAuto:
def __repr__(self):
return "Use Language: " + self.language
if __name__ == "__main__":
i18n = I18nAuto(language='en_US')
print(i18n)

View File

@ -1,135 +1,192 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "If >=3: apply median filtering to the harvested pitch results. The value represents the filter radius and can reduce breathiness.",
"A模型权重": "Weight (w) for Model A:",
"A模型路径": "Path to Model A:",
"B模型路径": "Path to Model B:",
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0 curve file (optional). One pitch per line. Replaces the default F0 and pitch modulation:",
"Index Rate": "Index Rate",
"Onnx导出": "Export Onnx",
"Onnx输出路径": "Onnx Export Path:",
"RVC模型路径": "RVC Model Path:",
"ckpt处理": "ckpt Processing",
"harvest进程数": "Number of CPU processes used for harvest pitch algorithm",
"index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Enter the GPU index(es) separated by '-', e.g., 0-0-1 to use 2 processes in GPU0 and 1 process in GPU1",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Step 1: Fill in the experimental configuration. Experimental data is stored in the 'logs' folder, with each experiment having a separate folder. Manually enter the experiment name path, which contains the experimental configuration, logs, and trained model files.",
"step1:正在处理数据": "Step 1: Processing data",
"step2:正在提取音高&正在提取特征": "step2:Pitch extraction & feature extraction",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Step 2a: Automatically traverse all files in the training folder that can be decoded into audio and perform slice normalization. Generates 2 wav folders in the experiment directory. Currently, only single-singer/speaker training is supported.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Step 2b: Use CPU to extract pitch (if the model has pitch), use GPU to extract features (select GPU index):",
"step3: 填写训练设置, 开始训练模型和索引": "Step 3: Fill in the training settings and start training the model and index",
"step3a:正在训练模型": "Step 3a: Model training started",
"一键训练": "One-click training",
"(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;": "(1)MDX-Net(onnx_dereverb): Best choice for dual-channel reverberation, cannot remove single-channel reverberation;",
"(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。": "(234)DeEcho: Removes delay effects. Aggressive mode removes more thoroughly than Normal mode. DeReverb additionally removes reverberation, can remove mono reverberation, but does not clean heavily high-frequency plate reverberation.",
"*GPT模型列表": "*GPT models list",
"*SoVITS模型列表": "*SoVITS models list",
"*实验/模型名": "*Experiment/model name",
"*文本标注文件": "*Text labelling file",
"*训练集音频文件目录": "*Audio dataset folder",
"*请上传并填写参考信息": "*Please upload and fill reference information",
"*请填写需要合成的目标文本和语种模式": "*Please fill in the target text and language mode for synthesis",
".list标注文件的路径": ".list annotation file path",
".限制范围越小判别效果越好。": "Less Multilingual is better",
"0-前置数据集获取工具": "0-Fetch dataset",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5 webui (for vocal separation, deecho, dereverb and denoise)",
"0b-语音切分工具": "0b-Audio slicer",
"0bb-语音降噪工具": "0bb-Voice denoiser",
"0c-中文批量离线ASR工具": "0c-Chinese ASR tool",
"0d-语音文本校对标注工具": "0d-Speech to text proofreading tool",
"1-GPT-SoVITS-TTS": "1-GPT-SOVITS-TTS",
"1A-训练集格式化工具": "1A-Dataset formatting",
"1Aa-文本内容": "1Aa-Text",
"1Aabc-训练集格式化一键三连": "1Aabc-One-click formatting",
"1Ab-SSL自监督特征提取": "1Ab-SSL self-supervised feature extraction",
"1Ac-语义token提取": "1Ac-semantics token extraction",
"1B-微调训练": "1B-Fine-tuned training",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITS training. The model is located in SoVITS_weights.",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPT training. The model is located in GPT_weights.",
"1C-推理": "1C-inference",
"1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍": "1. The DeEcho-DeReverb model's processing time is nearly twice that of the other two DeEcho models.",
"1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点": "1. Preserve Vocals: Choose this option for audio without harmonies, as it better retains the main vocal compared to the HP5 model. This option includes two built-in models, HP2 and HP3. HP3 may slightly let through some accompaniment but retains the main vocal slightly better than HP2.",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-Voice Changer",
"2、MDX-Net-Dereverb模型挺慢的": "2、MDX-Net-Dereverb Model is slow;",
"2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型": "2. Keep Only Main Vocal: Choose this option for audio with harmonies, as it may slightly reduce the main vocal. Includes one built-in HP5 model;",
"3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "3. Personal Recommendation for the cleanest configuration: First use MDX-Net followed by DeEcho-Aggressive",
"3、去混响、去延迟模型by FoxJoy": "3. Reverberation and delay removal model(by FoxJoy):",
"ASR 模型": "ASR model",
"ASR 模型尺寸": "ASR model size",
"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",
"SoVITS模型列表": "SoVITS weight list",
"SoVITS训练进程输出信息": "SoVITS training output log",
"TTS推理WebUI进程输出信息": "TTS inference webui output log",
"TTS推理进程已关闭": "TTS inference process closed",
"TTS推理进程已开启": "TTS inference process is opened",
"UVR5已关闭": "UVR5 closed",
"UVR5已开启": "UVR5 opened ",
"UVR5进程输出信息": "UVR5 process output log",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: proportion of normalized audio merged into dataset",
"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",
"min_interval:最短切割间隔": "Minumum interval for audio cutting",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length: the minimum length of each segment. If the first segment is too short, it will be concatenated with the next segment until it exceeds this value",
"temperature": "temperature",
"threshold:音量小于这个值视作静音的备选切割点": "Noise gate threshold (loudness below this value will be treated as noise",
"top_k": "top_k",
"top_p": "top_p",
"一键三连进程输出信息": "One-click formatting output",
"不切": "No slice",
"中文": "Chinese",
"中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e": "Chinese Tutorialhttps://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e",
"中英混合": "Chinese-English Mixed",
"也可批量输入音频文件, 二选一, 优先读文件夹": "Multiple audio files can also be imported. If a folder path exists, this input is ignored.",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "Batch processing for vocal accompaniment separation using the UVR5 model.<br>Example of a valid folder path format: D:\\path\\to\\input\\folder (copy it from the file manager address bar).<br>The model is divided into three categories:<br>1. Preserve vocals: Choose this option for audio without harmonies. It preserves vocals better than HP5. It includes two built-in models: HP2 and HP3. HP3 may slightly leak accompaniment but preserves vocals slightly better than HP2.<br>2. Preserve main vocals only: Choose this option for audio with harmonies. It may weaken the main vocals. It includes one built-in model: HP5.<br>3. De-reverb and de-delay models (by FoxJoy):<br>(1) MDX-Net: The best choice for stereo reverb removal but cannot remove mono reverb;<br>&emsp;(234) DeEcho: Removes delay effects. Aggressive mode removes more thoroughly than Normal mode. DeReverb additionally removes reverb and can remove mono reverb, but not very effectively for heavily reverberated high-frequency content.<br>De-reverb/de-delay notes:<br>1. The processing time for the DeEcho-DeReverb model is approximately twice as long as the other two DeEcho models.<br>2. The MDX-Net-Dereverb model is quite slow.<br>3. The recommended cleanest configuration is to apply MDX-Net first and then DeEcho-Aggressive.",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Enter the GPU index(es) separated by '-', e.g., 0-1-2 to use GPU 0, 1, and 2:",
"人声伴奏分离批量处理, 使用UVR5模型。": "Batch processing for vocal and instrumental separation, using the UVR5 model.",
"人声提取激进程度": "Vocal extraction aggressiveness",
"以下文件或文件夹不存在": "No Such File or Folder",
"以下模型不存在:": "No Such Model:",
"伴奏人声分离&去混响&去回声": "Vocals/Accompaniment Separation & Reverberation Removal",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "Save name:",
"保存的文件名, 默认空为和源文件同名": "Save file name (default: same as the source file):",
"保存的模型名不带后缀": "Saved model name (without extension):",
"使用无参考文本模式时建议使用微调的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):",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Protect voiceless consonants and breath sounds to prevent artifacts such as tearing in electronic music. Set to 0.5 to disable. Decrease the value to increase protection, but it may reduce indexing accuracy:",
"修改": "Modify",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modify model information (only supported for small model files extracted from the 'weights' folder)",
"停止音频转换": "Stop audio conversion",
"全流程结束!": "All processes have been completed!",
"刷新音色列表和索引路径": "Refresh voice list and index path",
"加载模型": "Load model",
"加载预训练底模D路径": "Load pre-trained base model D path:",
"加载预训练底模G路径": "Load pre-trained base model G path:",
"单次推理": "Single Inference",
"卸载音色省显存": "Unload voice to save GPU memory:",
"变调(整数, 半音数量, 升八度12降八度-12)": "Transpose (integer, number of semitones, raise by an octave: 12, lower by an octave: -12):",
"后处理重采样至最终采样率0为不进行重采样": "Resample the output audio in post-processing to the final sample rate. Set to 0 for no resampling:",
"否": "No",
"启用相位声码器": "启用相位声码器",
"响应阈值": "Response threshold",
"响度因子": "loudness factor",
"处理数据": "Process data",
"导出Onnx模型": "Export Onnx Model",
"关闭TTS推理WebUI": "Close TTS Inference WebUI",
"关闭UVR5-WebUI": "Close UVR5-WebUI",
"关闭打标WebUI": "Close Labeling WebUI",
"凑50字一切": "Slice per 50 characters",
"凑四句一切": "Slice once every 4 sentences",
"切分后的子音频的输出根目录": "Audio slicer output folder",
"切割使用的进程数": "CPU threads used for audio slicing",
"刷新模型路径": "refreshing model paths",
"前端处理后的文本(每句):": "Processed text from the frontend (per sentence):",
"去混响/去延迟,附:": "Dereverberation/Delay Removal, including:",
"参考音频在3~10秒范围外请更换": "Reference audio is outside the 3-10 second range, please choose another one!",
"参考音频的文本": "Text for reference audio",
"参考音频的语种": "Language for reference audio",
"可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。": "Optional: Upload multiple reference audio files by dragging and dropping them (recommended to be of the same gender), and average their tone. If this option is left blank, the tone will be controlled by the single reference audio on the left. If fine-tuning the model, it is recommended that all reference audio files have tones within the fine-tuning training set; the pretrained model can be ignored.",
"合成语音": "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).",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-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):",
"实际输入的目标文本:": "Actual Input Target Text:",
"导出文件格式": "Export file format",
"常见问题解答": "FAQ (Frequently Asked Questions)",
"常规设置": "General settings",
"开始音频转换": "Start audio conversion",
"很遗憾您这没有能用的显卡来支持您训练": "Unfortunately, there is no compatible GPU available to support your training.",
"性能设置": "Performance settings",
"开启GPT训练": "Start GPT training",
"开启SSL提取": "Start SSL extracting",
"开启SoVITS训练": "Start SoVITS training",
"开启TTS推理WebUI": "Open TTS Inference WebUI",
"开启UVR5-WebUI": "Open UVR5-WebUI",
"开启一键三连": "Start one-click formatting",
"开启打标WebUI": "Open Labeling WebUI",
"开启文本获取": "Start speech-to-text",
"开启无参考文本模式。不填参考文本亦相当于开启。": "Enable no reference mode. If you don't fill 'Text for reference audio', no reference mode will be enabled.",
"开启离线批量ASR": "Start batch ASR",
"开启语义token提取": "Start semantics token extraction",
"开启语音切割": "Start audio slicer",
"开启语音降噪": "Start voice denoiser",
"怎么切": "How to slice the sentence",
"总训练轮数total_epoch": "Total training epochs (total_epoch):",
"批量推理": "Batch Inference",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Batch conversion. Enter the folder containing the audio files to be converted or upload multiple audio files. The converted audio will be output in the specified folder (default: 'opt').",
"总训练轮数total_epoch不建议太高": "Total epochs, do not increase to a value that is too high",
"打标工具WebUI已关闭": "proofreading tool webui is closed",
"打标工具WebUI已开启": "proofreading tool webui is opened",
"打标工具进程输出信息": "Proofreading tool output log",
"指定输出主人声文件夹": "Specify the output folder for vocals:",
"指定输出文件夹": "Specify output folder:",
"指定输出非主人声文件夹": "Specify the output folder for accompaniment:",
"推理时间(ms):": "Inference time (ms):",
"推理音色": "Inferencing voice:",
"提取": "Extract",
"提取音高和处理数据使用的CPU进程数": "Number of CPU processes used for pitch extraction and data processing:",
"是": "Yes",
"按中文句号。切": "Slice by Chinese punct",
"按标点符号切": "Slice by every punct",
"按英文句号.切": "Slice by English punct",
"数据类型精度": "Computing precision",
"文本模块学习率权重": "Text model learning rate weighting",
"文本进程输出信息": "Text processing output",
"施工中,请静候佳音": "In construction, please wait",
"日文": "Japanese",
"日英混合": "Japanese-English Mixed",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Save only the latest '.ckpt' file to save disk space:",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Save a small final model to the 'weights' folder at each save point:",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Cache all training sets to GPU memory. Caching small datasets (less than 10 minutes) can speed up training, but caching large datasets will consume a lot of GPU memory and may not provide much speed improvement:",
"是否开启dpo训练选项(实验性)": "Enable DPO training (experimental feature)",
"是否直接对上次合成结果调整语速和音色。防止随机性。": "Adjust the speech rate and tone of the last synthesis result to prevent randomness.",
"显卡信息": "GPU Information",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "This software is open source under the MIT license. The author does not have any control over the software. Users who use the software and distribute the sounds exported by the software are solely responsible. <br>If you do not agree with this clause, you cannot use or reference any codes and files within the software package. See the root directory <b>Agreement-LICENSE.txt</b> for details.",
"查看": "View",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "View model information (only supported for small model files extracted from the 'weights' folder)",
"检索特征占比": "Search feature ratio (controls accent strength, too high has artifacting):",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "This software is open source under the MIT license. The author does not have any control over the software. Users who use the software and distribute the sounds exported by the software are solely responsible. <br>If you do not agree with this clause, you cannot use or reference any codes and files within the software package. See the root directory <b>Agreement-LICENSE</b> for details.",
"模型": "Model",
"模型推理": "Model Inference",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Model extraction (enter the path of the large file model under the 'logs' folder). This is useful if you want to stop training halfway and manually extract and save a small model file, or if you want to test an intermediate model:",
"模型是否带音高指导": "Whether the model has pitch guidance:",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Whether the model has pitch guidance (required for singing, optional for speech):",
"模型是否带音高指导,1是0否": "Whether the model has pitch guidance (1: yes, 0: no):",
"模型版本型号": "Model architecture version:",
"模型融合, 可用于测试音色融合": "Model fusion, can be used to test timbre fusion",
"模型路径": "Path to Model:",
"模型分为三类:": "Models are categorized into three types:",
"模型切换": "Model switch",
"每张显卡的batch_size": "Batch size per GPU:",
"淡入淡出长度": "Fade length",
"版本": "Version",
"特征提取": "Feature extraction",
"特征检索库文件路径,为空则使用下拉的选择结果": "Path to the feature index file. Leave blank to use the selected result from the dropdown:",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Recommended +12 key for male to female conversion, and -12 key for female to male conversion. If the sound range goes too far and the voice is distorted, you can also adjust it to the appropriate range by yourself.",
"目标采样率": "Target sample rate:",
"算法延迟(ms):": "Algorithmic delays(ms):",
"自动检测index路径,下拉式选择(dropdown)": "Auto-detect index path and select from the dropdown:",
"融合": "Fusion",
"要改的模型信息": "Model information to be modified:",
"要置入的模型信息": "Model information to be placed:",
"训练": "Train",
"训练模型": "Train model",
"训练特征索引": "Train feature index",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Training complete. You can check the training logs in the console or the 'train.log' file under the experiment folder.",
"请指定说话人id": "Please specify the speaker/singer ID:",
"请选择index文件": "Please choose the .index file",
"请选择pth文件": "Please choose the .pth file",
"请选择说话人id": "Select Speaker/Singer ID:",
"粤英混合": "Yue-English Mixed",
"粤语": "Yue",
"终止ASR进程": "Stop ASR task",
"终止GPT训练": "Stop GPT training",
"终止SSL提取进程": "Stop SSL extraction",
"终止SoVITS训练": "Stop SoVITS training",
"终止一键三连": "Stop one-click formatting",
"终止文本获取进程": "Stop speech-to-text",
"终止语义token提取进程": "Stop semantics token extraction",
"终止语音切割": "Stop audio cutting",
"终止语音降噪进程": "Stop voice denoising",
"缺少Hubert数据集": "Missing Hubert Dataset",
"缺少语义数据集": "Missing Semantics Dataset",
"缺少音素数据集": "Missing Phoneme Dataset",
"缺少音频数据集": "Missing Audio Dataset",
"英文": "English",
"语义token提取进程输出信息": "Sematics token extraction output log",
"语速": "Speech rate",
"语速调整,高为更快": "Adjust speech rate, higher for faster",
"语音切割进程输出信息": "Audio slicer output log",
"语音降噪进程输出信息": "Voice Denoiser Process Output Information",
"请上传3~10秒内参考音频超过会报错": "Please upload a reference audio within the 3-10 second range; if it exceeds this duration, it will raise errors.",
"请上传参考音频": "Please Upload the Reference Audio",
"请填入推理文本": "Please Fill in the Terget Text",
"请填入正确的List路径": "Please Fill in the Correct List Path",
"请填入正确的音频文件夹路径": "Please Fill in the Correct Audio Folder Path",
"请输入有效文本": "Please enter valid text.",
"路径不能为空": "Expected No Empty Path",
"路径错误": "Path Error",
"转换": "Convert",
"输入实验名": "Enter the experiment name:",
"输入待处理音频文件夹路径": "Enter the path of the audio folder to be processed:",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Enter the path of the audio folder to be processed (copy it from the address bar of the file manager):",
"输入待处理音频文件路径(默认是正确格式示例)": "Enter the path of the audio file to be processed (default is the correct format example):",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Adjust the volume envelope scaling. Closer to 0, the more it mimicks the volume of the original vocals. Can help mask noise and make volume sound more natural when set relatively low. Closer to 1 will be more of a consistently loud volume:",
"输入监听": "Input voice monitor",
"输入训练文件夹路径": "Enter the path of the training folder:",
"输入设备": "Input device",
"输入降噪": "Input noise reduction",
"输入文件夹路径": "Input folder path",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "output folder (logs/{experiment name}) should have files and folders starts with 23456.",
"输出信息": "Output information",
"输出变声": "Output converted voice",
"输出设备": "Output device",
"输出降噪": "Output noise reduction",
"输出音频(右下角三个点,点了可以下载)": "Export audio (click on the three dots in the lower right corner to download)",
"选择.index文件": "Select the .index file",
"选择.pth文件": "Select the .pth file",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "Select the pitch extraction algorithm ('pm': faster extraction but lower-quality speech; 'harvest': better bass but extremely slow; 'crepe': better quality but GPU intensive), 'rmvpe': best quality, and little GPU requirement",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "Select the pitch extraction algorithm: when extracting singing, you can use 'pm' to speed up. For high-quality speech with fast performance, but worse CPU usage, you can use 'dio'. 'harvest' results in better quality but is slower. 'rmvpe' has the best results and consumes less CPU/GPU",
"采样率:": "采样率:",
"采样长度": "Sample length",
"重载设备列表": "Reload device list",
"音调设置": "Pitch settings",
"音频设备(请使用同种类驱动)": "Audio device (please use the same type of driver)",
"音高算法": "pitch detection algorithm",
"额外推理时长": "Extra inference time"
"输出文件夹路径": "Output folder path",
"输出的语音": "Inference Result",
"选择训练完存放在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",
"需要合成的语种": "Inference text language",
"韩文": "Korean",
"韩英混合": "Korean-English Mixed",
"音频加载失败": "Failed to Load Audio",
"音频自动切分输入路径,可文件可文件夹": "Audio slicer input (file or folder)",
"预训练的GPT模型路径": "Pretrained GPT model path",
"预训练的SSL模型路径": "Pretrained SSL model path",
"预训练的SoVITS-D模型路径": "Pretrained SoVITS-D model path",
"预训练的SoVITS-G模型路径": "Pretrained SoVITS-G model path",
"预训练的中文BERT模型路径": " Pretrained BERT model path"
}

View File

@ -1,135 +1,192 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "Si es >=3, entonces use el resultado del reconocimiento de tono de 'harvest' con filtro de mediana, el valor es el radio del filtro, su uso puede debilitar el sonido sordo",
"A模型权重": "Un peso modelo para el modelo A.",
"A模型路径": "Modelo A ruta.",
"B模型路径": "Modelo B ruta.",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "Archivo de curva F0, opcional, un tono por línea, en lugar de F0 predeterminado y cambio de tono",
"Index Rate": "Tasa de índice",
"Onnx导出": "Exportar Onnx",
"Onnx输出路径": "Ruta de salida Onnx",
"RVC模型路径": "Ruta del modelo RVC",
"ckpt处理": "Procesamiento de recibos",
"harvest进程数": "Número de procesos",
"index文件路径不可包含中文": "La ruta del archivo .index no debe contener caracteres chinos.",
"pth文件路径不可包含中文": "La ruta del archivo .pth no debe contener caracteres chinos.",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Separe los números de identificación de la GPU con '-' al ingresarlos. Por ejemplo, '0-1-2' significa usar GPU 0, GPU 1 y GPU 2.",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Paso 1: Complete la configuración del experimento. Los datos del experimento se almacenan en el directorio 'logs', con cada experimento en una carpeta separada. La ruta del nombre del experimento debe ingresarse manualmente y debe contener la configuración del experimento, los registros y los archivos del modelo entrenado.",
"step1:正在处理数据": "Paso 1: Procesando datos",
"step2:正在提取音高&正在提取特征": "Paso 2: Extracción del tono y extracción de características",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Paso 2a: Recorra automáticamente la carpeta de capacitación y corte y normalice todos los archivos de audio que se pueden decodificar en audio. Se generarán dos carpetas 'wav' en el directorio del experimento. Actualmente, solo se admite la capacitación de una sola persona.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Paso 2b: Use la CPU para extraer el tono (si el modelo tiene guía de tono) y la GPU para extraer características (seleccione el número de tarjeta).",
"step3: 填写训练设置, 开始训练模型和索引": "Paso 3: Complete la configuración de entrenamiento y comience a entrenar el modelo y el índice.",
"step3a:正在训练模型": "Paso 3a: Entrenando el modelo",
"一键训练": "Entrenamiento con un clic",
"也可批量输入音频文件, 二选一, 优先读文件夹": "También se pueden importar varios archivos de audio. Si existe una ruta de carpeta, esta entrada se ignora.",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "Procesamiento por lotes para la separación de acompañamiento vocal utilizando el modelo UVR5.<br>Ejemplo de formato de ruta de carpeta válido: D:\\ruta\\a\\la\\carpeta\\de\\entrada (copiar desde la barra de direcciones del administrador de archivos).<br>El modelo se divide en tres categorías:<br>1. Preservar voces: Elija esta opción para audio sin armonías. Preserva las voces mejor que HP5. Incluye dos modelos incorporados: HP2 y HP3. HP3 puede filtrar ligeramente el acompañamiento pero conserva las voces un poco mejor que HP2.<br>2. Preservar solo voces principales: Elija esta opción para audio con armonías. Puede debilitar las voces principales. Incluye un modelo incorporado: HP5.<br>3. Modelos de des-reverberación y des-retardo (por FoxJoy):<br>(1) MDX-Net: La mejor opción para la eliminación de reverberación estéreo pero no puede eliminar la reverberación mono;<br>&emsp;(234) DeEcho: Elimina efectos de retardo. El modo Agresivo elimina más a fondo que el modo Normal. DeReverb adicionalmente elimina la reverberación y puede eliminar la reverberación mono, pero no muy efectivamente para contenido de alta frecuencia fuertemente reverberado.<br>Notas de des-reverberación/des-retardo:<br>1. El tiempo de procesamiento para el modelo DeEcho-DeReverb es aproximadamente el doble que los otros dos modelos DeEcho.<br>2. El modelo MDX-Net-Dereverb es bastante lento.<br>3. La configuración más limpia recomendada es aplicar primero MDX-Net y luego DeEcho-Agresivo.",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Separe los números de identificación de la GPU con '-' al ingresarlos. Por ejemplo, '0-1-2' significa usar GPU 0, GPU 1 y GPU 2.",
"伴奏人声分离&去混响&去回声": "Separación de voz acompañante & eliminación de reverberación & eco",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "Guardar nombre",
"保存的文件名, 默认空为和源文件同名": "Nombre del archivo que se guardará, el valor predeterminado es el mismo que el nombre del archivo de origen",
"保存的模型名不带后缀": "Nombre del modelo guardado sin extensión.",
"保存频率save_every_epoch": "Frecuencia de guardado (save_every_epoch)",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Proteger las consonantes claras y la respiración, prevenir artefactos como la distorsión de sonido electrónico, 0.5 no está activado, reducir aumentará la protección pero puede reducir el efecto del índice",
"修改": "Modificar",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modificar la información del modelo (solo admite archivos de modelos pequeños extraídos en la carpeta weights)",
"停止音频转换": "Detener la conversión de audio",
"全流程结束!": "¡Todo el proceso ha terminado!",
"刷新音色列表和索引路径": "Actualizar la lista de modelos e índice de rutas",
"加载模型": "Cargar modelo",
"加载预训练底模D路径": "Cargue la ruta del modelo D base pre-entrenada.",
"加载预训练底模G路径": "Cargue la ruta del modelo G base pre-entrenada.",
"单次推理": "单次推理",
"卸载音色省显存": "Descargue la voz para ahorrar memoria GPU",
"变调(整数, 半音数量, 升八度12降八度-12)": "Cambio de tono (entero, número de semitonos, subir una octava +12 o bajar una octava -12)",
"后处理重采样至最终采样率0为不进行重采样": "Remuestreo posterior al proceso a la tasa de muestreo final, 0 significa no remuestrear",
"否": "No",
"启用相位声码器": "启用相位声码器",
"响应阈值": "Umbral de respuesta",
"响度因子": "factor de sonoridad",
"处理数据": "Procesar datos",
"导出Onnx模型": "Exportar modelo Onnx",
"(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;": "(1)MDX-Net (onnx_dereverb): reverberación estéreo, la mejor opción; no puede eliminar reverberación mono",
"(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。": "(234)DeEcho: Eliminar el efecto de retardo. Aggressive elimina más que Normal, DeReverb elimina reverberación adicional, puede eliminar reverberación mono, pero no limpia bien la reverberación de placa de alta frecuencia",
"*GPT模型列表": "*Lista de modelos GPT",
"*SoVITS模型列表": "*Lista de modelos SoVITS",
"*实验/模型名": "*Nombre del experimento/modelo",
"*文本标注文件": "*Archivo de etiquetado de texto",
"*训练集音频文件目录": "*Directorio de archivos de audio de entrenamiento",
"*请上传并填写参考信息": "*Por favor, suba y complete la información de referencia",
"*请填写需要合成的目标文本和语种模式": "*Por favor, complete el texto objetivo a sintetizar y el modo de idioma",
".list标注文件的路径": "Ruta del archivo de anotación .list",
".限制范围越小判别效果越好。": "#!.限制范围越小判别效果越好。",
"0-前置数据集获取工具": "0-Herramienta de obtención de conjunto de datos previo",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-Herramienta de separación de voz y acompañamiento UVR5 y eliminación de reverberación y retardo",
"0b-语音切分工具": "0b-Herramienta de división de voz",
"0bb-语音降噪工具": "0bb-Herramienta de reducción de ruido de voz",
"0c-中文批量离线ASR工具": "0c-Herramienta de ASR en lote fuera de línea en chino",
"0d-语音文本校对标注工具": "0d-Herramienta de corrección y etiquetado de texto de voz",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"1A-训练集格式化工具": "1A-Herramienta de formateo del conjunto de datos de entrenamiento",
"1Aa-文本内容": "1Aa-Contenido del texto",
"1Aabc-训练集格式化一键三连": "1Aabc-Formateo del conjunto de datos de entrenamiento en un solo paso",
"1Ab-SSL自监督特征提取": "1Ab-Extracción de características auto-supervisada SSL",
"1Ac-语义token提取": "1Ac-Extracción de tokens semánticos",
"1B-微调训练": "1B-Entrenamiento de ajuste fino",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-Entrenamiento de SoVITS. Los archivos de modelo para compartir se encuentran en SoVITS_weights.",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-Entrenamiento de GPT. Los archivos de modelo para compartir se encuentran en GPT_weights.",
"1C-推理": "1C-Inferencia",
"1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍": "1. El modelo DeEcho-DeReverb tarda casi el doble que los otros dos modelos DeEcho",
"1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点": "1. Retener voz principal: seleccione este para audio sin coros, retiene mejor la voz principal que HP5. Incluye dos modelos, HP2 y HP3; HP3 puede filtrar ligeramente el acompañamiento pero retiene mejor la voz principal que HP2",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-Cambio de voz",
"2、MDX-Net-Dereverb模型挺慢的": "2. El modelo MDX-Net-Dereverb es bastante lento",
"2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型": "2. Solo retener voz principal: seleccione este para audio con coros, puede debilitar la voz principal. Incluye un modelo HP5",
"3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "3. La configuración más limpia recomendada es primero MDX-Net, luego DeEcho-Aggressive",
"3、去混响、去延迟模型by FoxJoy": "3. Modelos de eliminación de reverberación y retardo (por FoxJoy)",
"ASR 模型": "Modelo ASR",
"ASR 模型尺寸": "Tamaño del modelo ASR",
"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",
"SoVITS模型列表": "Lista de modelos SoVITS",
"SoVITS训练进程输出信息": "Información de salida del proceso de entrenamiento de SoVITS",
"TTS推理WebUI进程输出信息": "Información de salida del proceso de interfaz web de inferencia TTS",
"TTS推理进程已关闭": "Proceso de inferencia TTS cerrado",
"TTS推理进程已开启": "Proceso de inferencia TTS iniciado",
"UVR5已关闭": "UVR5 está deshabilitado",
"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",
"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",
"min_interval:最短切割间隔": "min_interval: intervalo mínimo de corte",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length: longitud mínima de cada segmento; si el primer segmento es demasiado corto, se une al siguiente hasta superar este valor",
"temperature": "temperatura",
"threshold:音量小于这个值视作静音的备选切割点": "umbral: puntos de corte alternativos considerados como silencio si el volumen es menor que este valor",
"top_k": "top_k",
"top_p": "top_p",
"一键三连进程输出信息": "Información de salida del proceso de triple acción",
"不切": "No cortar",
"中文": "Chino",
"中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e": "Documentación del tutorial en chino: https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e",
"中英混合": "Chino e inglés mezclados",
"也可批量输入音频文件, 二选一, 优先读文件夹": "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 Archivo o Carpeta",
"以下模型不存在:": "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)",
"关闭TTS推理WebUI": "Cerrar TTS Inference WebUI",
"关闭UVR5-WebUI": "Cerrar UVR5-WebUI",
"关闭打标WebUI": "Cerrar Labeling WebUI",
"凑50字一切": "Todo para alcanzar las 50 palabras",
"凑四句一切": "Completa cuatro oraciones para rellenar todo",
"切分后的子音频的输出根目录": "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",
"前端处理后的文本(每句):": "Texto después del procesamiento previo (por frase):",
"去混响/去延迟,附:": "Eliminación de reverberación/retardo, incluye:",
"参考音频在3~10秒范围外请更换": "El audio de referencia está fuera del rango de 3 a 10 segundos, ¡por favor cámbielo!",
"参考音频的文本": "Texto de referencia del audio",
"参考音频的语种": "Idioma del audio de referencia",
"可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。": "Opcional: Sube varios archivos de audio de referencia arrastrándolos y soltándolos (se recomienda que sean del mismo género) y promedia sus tonos. Si esta opción se deja en blanco, el tono será controlado por el único audio de referencia a la izquierda. Si se está afinando el modelo, se recomienda que todos los archivos de audio de referencia tengan tonos dentro del conjunto de entrenamiento de ajuste fino; se puede ignorar el modelo preentrenado.",
"合成语音": "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).",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-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):",
"实际输入的目标文本:": "Texto objetivo realmente ingresado:",
"导出文件格式": "Formato de archivo de exportación",
"常见问题解答": "Preguntas frecuentes",
"常规设置": "Configuración general",
"开始音频转换": "Iniciar conversión de audio",
"很遗憾您这没有能用的显卡来支持您训练": "Lamentablemente, no tiene una tarjeta gráfica adecuada para soportar su entrenamiento",
"性能设置": "Configuración de rendimiento",
"总训练轮数total_epoch": "Total de épocas de entrenamiento (total_epoch)",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Conversión por lotes, ingrese la carpeta que contiene los archivos de audio para convertir o cargue varios archivos de audio. El audio convertido se emitirá en la carpeta especificada (opción predeterminada).",
"指定输出主人声文件夹": "Especifique la carpeta de salida para la voz principal",
"指定输出文件夹": "Especificar carpeta de salida",
"指定输出非主人声文件夹": "Especifique la carpeta de salida para las voces no principales",
"推理时间(ms):": "Inferir tiempo (ms):",
"推理音色": "inferencia de voz",
"提取": "Extraer",
"提取音高和处理数据使用的CPU进程数": "Número de procesos de CPU utilizados para extraer el tono y procesar los datos",
"是": "Sí",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Guardar solo el archivo ckpt más reciente para ahorrar espacio en disco",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Guardar pequeño modelo final en la carpeta 'weights' en cada punto de guardado",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Si almacenar en caché todos los conjuntos de entrenamiento en la memoria de la GPU. Los conjuntos de datos pequeños (menos de 10 minutos) se pueden almacenar en caché para acelerar el entrenamiento, pero el almacenamiento en caché de conjuntos de datos grandes puede causar errores de memoria en la GPU y no aumenta la velocidad de manera significativa.",
"显卡信息": "información de la GPU",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Este software es de código abierto bajo la licencia MIT, el autor no tiene ningún control sobre el software, y aquellos que usan el software y difunden los sonidos exportados por el software son los únicos responsables.<br>Si no está de acuerdo con esta cláusula , no puede utilizar ni citar ningún código ni archivo del paquete de software Consulte el directorio raíz <b>Agreement-LICENSE.txt</b> para obtener más información.",
"查看": "Ver",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Ver información del modelo (solo aplicable a archivos de modelos pequeños extraídos de la carpeta 'pesos')",
"检索特征占比": "Proporción de función de búsqueda",
"开启GPT训练": "Iniciar entrenamiento de GPT",
"开启SSL提取": "Habilitar la extracción SSL",
"开启SoVITS训练": "Iniciar entrenamiento de SoVITS",
"开启TTS推理WebUI": "Abrir TTS Inference WebUI",
"开启UVR5-WebUI": "Abrir UVR5-WebUI",
"开启一键三连": "Habilitar un solo paso de formateo",
"开启打标WebUI": "Abrir Labeling WebUI",
"开启文本获取": "Habilitar la obtención de texto",
"开启无参考文本模式。不填参考文本亦相当于开启。": "Habilitar el modo sin texto de referencia. No llenar el texto de referencia también lo habilita.",
"开启离线批量ASR": "Habilitar ASR en lote fuera de línea",
"开启语义token提取": "Habilitar la extracción de tokens semánticos",
"开启语音切割": "Habilitar la división de voz",
"开启语音降噪": "Habilitar la reducción de ruido de voz",
"怎么切": "Cómo cortar",
"总训练轮数total_epoch": "Número total de épocas de entrenamiento",
"总训练轮数total_epoch不建议太高": "Número total de épocas de entrenamiento, no se recomienda demasiado alto",
"打标工具WebUI已关闭": "Interfaz web de la herramienta de etiquetado cerrada",
"打标工具WebUI已开启": "Interfaz web de la herramienta de etiquetado iniciada",
"打标工具进程输出信息": "Información de salida del proceso de la herramienta de etiquetado",
"指定输出主人声文件夹": "Especificar carpeta de salida de voz principal",
"指定输出非主人声文件夹": "Especificar carpeta de salida de no voz principal",
"按中文句号。切": "Cortar según puntos en chino",
"按标点符号切": "Cortar según los signos de puntuación",
"按英文句号.切": "Cortar por puntos en inglés.",
"数据类型精度": "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",
"日文": "Japonés",
"日英混合": "Mezcla de japonés e inglés",
"是否仅保存最新的ckpt文件以节省硬盘空间": "¿Guardar solo el último archivo ckpt para ahorrar espacio en disco?",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "¿Guardar el modelo final pequeño en la carpeta de pesos en cada punto de guardado?",
"是否开启dpo训练选项(实验性)": "¿Habilitar la opción de entrenamiento dpo (experimental)?",
"是否直接对上次合成结果调整语速和音色。防止随机性。": "¿Ajustar directamente la velocidad del habla y el tono del último resultado de síntesis? Para prevenir la aleatoriedad.",
"显卡信息": "Información de la tarjeta gráfica",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Este software es de código abierto bajo la licencia MIT. El autor no tiene control sobre el software. El usuario que lo utilice o distribuya, y el que genere sonidos a partir del software, asume toda la responsabilidad. <br>Si no acepta estos términos, no puede utilizar ni hacer referencia a ningún código o archivo dentro del paquete de software. Consulte el archivo <b>LICENSE</b> en el directorio raíz para obtener más detalles.",
"模型": "Modelo",
"模型推理": "inferencia del modelo",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Extracción de modelo (ingrese la ruta de un archivo de modelo grande en la carpeta 'logs'), aplicable cuando desea extraer un archivo de modelo pequeño después de entrenar a mitad de camino y no se guardó automáticamente, o cuando desea probar un modelo intermedio",
"模型是否带音高指导": "Si el modelo tiene guía de tono.",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Si el modelo tiene guía de tono (necesaria para cantar, pero no para hablar)",
"模型是否带音高指导,1是0否": "Si el modelo tiene guía de tono, 1 para sí, 0 para no",
"模型版本型号": "Versión y modelo del modelo",
"模型融合, 可用于测试音色融合": "Fusión de modelos, se puede utilizar para fusionar diferentes voces",
"模型路径": "Ruta del modelo",
"每张显卡的batch_size": "Tamaño del lote (batch_size) por tarjeta gráfica",
"淡入淡出长度": "Duración del fundido de entrada/salida",
"模型分为三类:": "Los modelos se dividen en tres categorías:",
"模型切换": "Cambio de modelo",
"每张显卡的batch_size": "Tamaño de lote por tarjeta gráfica",
"版本": "Versión",
"特征提取": "Extracción de características",
"特征检索库文件路径,为空则使用下拉的选择结果": "Ruta del archivo de la biblioteca de características, si está vacío, se utilizará el resultado de la selección desplegable",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Tecla +12 recomendada para conversión de voz de hombre a mujer, tecla -12 para conversión de voz de mujer a hombre. Si el rango de tono es demasiado amplio y causa distorsión, ajústelo usted mismo a un rango adecuado.",
"目标采样率": "Tasa de muestreo objetivo",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "Detección automática de la ruta del índice, selección desplegable (dropdown)",
"融合": "Fusión",
"要改的模型信息": "Información del modelo a modificar",
"要置入的模型信息": "Información del modelo a colocar.",
"训练": "Entrenamiento",
"训练模型": "Entrenar Modelo",
"训练特征索引": "Índice de características",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Entrenamiento finalizado, puede ver el registro de entrenamiento en la consola o en el archivo train.log en la carpeta del experimento",
"请指定说话人id": "ID del modelo",
"请选择index文件": "Seleccione el archivo .index",
"请选择pth文件": "Seleccione el archivo .pth",
"请选择说话人id": "Seleccione una identificación de altavoz",
"转换": "Conversión",
"输入实验名": "Ingrese el nombre del modelo",
"输入待处理音频文件夹路径": "Ingrese la ruta a la carpeta de audio que se procesará",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Ingrese la ruta a la carpeta de audio que se procesará (simplemente cópiela desde la barra de direcciones del administrador de archivos)",
"输入待处理音频文件路径(默认是正确格式示例)": "Ingrese la ruta del archivo del audio que se procesará (el formato predeterminado es el ejemplo correcto)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Proporción de fusión para reemplazar el sobre de volumen de entrada con el sobre de volumen de salida, cuanto más cerca de 1, más se utiliza el sobre de salida",
"输入监听": "输入监听",
"输入训练文件夹路径": "Introduzca la ruta de la carpeta de entrenamiento",
"输入设备": "Dispositivo de entrada",
"输入降噪": "Reducción de ruido de entrada",
"粤英混合": "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",
"终止SoVITS训练": "Detener entrenamiento de SoVITS",
"终止一键三连": "Terminar el proceso de un solo paso de formateo",
"终止文本获取进程": "Terminar el proceso de obtención de texto",
"终止语义token提取进程": "Terminar el proceso de extracción de tokens semánticos",
"终止语音切割": "Terminar la división de voz",
"终止语音降噪进程": "Terminar el proceso de reducción de ruido de voz",
"缺少Hubert数据集": "Falta el Conjunto de Datos de Hubert",
"缺少语义数据集": "Falta el Conjunto de Datos Semánticos",
"缺少音素数据集": "Falta el Conjunto de Datos de Fonemas",
"缺少音频数据集": "Falta el Conjunto de Datos de Audio",
"英文": "Inglés",
"语义token提取进程输出信息": "Información de salida del proceso de extracción de tokens semánticos",
"语速": "Velocidad de habla",
"语速调整,高为更快": "Ajustar la velocidad de habla, más alta para más rápido",
"语音切割进程输出信息": "Información de salida del proceso de división de voz",
"语音降噪进程输出信息": "Información de salida del proceso de reducción de ruido de voz",
"请上传3~10秒内参考音频超过会报错": "Por favor, suba un audio de referencia de entre 3 y 10 segundos, ¡más de eso causará un error!",
"请上传参考音频": "Por Favor, Suba el Audio de Referencia",
"请填入推理文本": "Por Favor, Ingrese el Texto Objetivo",
"请填入正确的List路径": "Por Favor, Introduzca la Ruta Correcta de la Lista",
"请填入正确的音频文件夹路径": "Por Favor, Introduzca la Ruta Correcta de la Carpeta de Audio",
"请输入有效文本": "Por favor, introduzca un texto válido",
"路径不能为空": "Se Espera que la Ruta No Esté Vacía",
"路径错误": "Error de Ruta",
"转换": "Convertir",
"输入待处理音频文件夹路径": "Ingrese la ruta de la carpeta de audio a procesar",
"输入文件夹路径": "Ingrese la ruta de la carpeta",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "Debe haber archivos y carpetas que comiencen con 23456 en el directorio logs/nombre del experimento",
"输出信息": "Información de salida",
"输出变声": "输出变声",
"输出设备": "Dispositivo de salida",
"输出降噪": "Reducción de ruido de salida",
"输出音频(右下角三个点,点了可以下载)": "Salida de audio (haga clic en los tres puntos en la esquina inferior derecha para descargar)",
"选择.index文件": "Seleccione el archivo .index",
"选择.pth文件": "Seleccione el archivo .pth",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "Seleccione el algoritmo de extracción de tono, las voces de entrada se pueden acelerar con pm, harvest tiene buenos graves pero es muy lento, crepe es bueno pero se come las GPUs",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "Seleccione el algoritmo de extracción de tono, use 'pm' para acelerar la entrada de canto, 'harvest' es bueno para los graves pero extremadamente lento, 'crepe' tiene buenos resultados pero consume GPU",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "Seleccione el algoritmo de extracción de tono: la canción de entrada se puede acelerar con pm, la voz de alta calidad pero CPU pobre se puede acelerar con dio, harvest es mejor pero más lento, rmvpe es el mejor y se come ligeramente la CPU/GPU",
"采样率:": "采样率:",
"采样长度": "Longitud de muestreo",
"重载设备列表": "Actualizar lista de dispositivos",
"音调设置": "Ajuste de tono",
"音频设备(请使用同种类驱动)": "Dispositivo de audio (utilice el mismo tipo de controlador)",
"音高算法": "Algoritmo de tono",
"额外推理时长": "Tiempo de inferencia adicional"
"输出文件夹路径": "Ruta de la carpeta de salida",
"输出的语音": "Audio de salida",
"选择训练完存放在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",
"需要合成的语种": "Idioma para la síntesis",
"韩文": "Coreano",
"韩英混合": "Mezcla Coreano-Inglés",
"音频加载失败": "Error al Cargar el Audio",
"音频自动切分输入路径,可文件可文件夹": "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",
"预训练的SoVITS-D模型路径": "Ruta del modelo SoVITS-D preentrenado",
"预训练的SoVITS-G模型路径": "Ruta del modelo SoVITS-G preentrenado",
"预训练的中文BERT模型路径": "Ruta del modelo BERT en chino preentrenado"
}

View File

@ -1,135 +1,192 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "Si >=3 : appliquer un filtrage médian aux résultats de la reconnaissance de la hauteur de récolte. La valeur représente le rayon du filtre et peut réduire la respiration.",
"A模型权重": "Poids (w) pour le modèle A :",
"A模型路径": "Chemin d'accès au modèle A :",
"B模型路径": "Chemin d'accès au modèle B :",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "Fichier de courbe F0 (facultatif). Une hauteur par ligne. Remplace la fréquence fondamentale par défaut et la modulation de la hauteur :",
"Index Rate": "Taux d'indexation",
"Onnx导出": "Exporter en ONNX",
"Onnx输出路径": "Chemin d'exportation ONNX :",
"RVC模型路径": "Chemin du modèle RVC :",
"ckpt处理": "Traitement des fichiers .ckpt",
"harvest进程数": "Nombre de processus CPU utilisés pour l'algorithme de reconnaissance de la hauteur (pitch) dans le cadre de la récolte (harvest).",
"index文件路径不可包含中文": "Le chemin du fichier d'index ne doit pas contenir de caractères chinois.",
"pth文件路径不可包含中文": "Le chemin du fichier .pth ne doit pas contenir de caractères chinois.",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Configuration des numéros de carte RMVPE : séparez les index GPU par des tirets \"-\", par exemple, 0-0-1 pour utiliser 2 processus sur GPU0 et 1 processus sur GPU1.",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Étape 1 : Remplissez la configuration expérimentale. Les données expérimentales sont stockées dans le dossier 'logs', avec chaque expérience ayant un dossier distinct. Entrez manuellement le chemin du nom de l'expérience, qui contient la configuration expérimentale, les journaux et les fichiers de modèle entraînés.",
"step1:正在处理数据": "Étape 1 : Traitement des données en cours.",
"step2:正在提取音高&正在提取特征": "Étape 2 : Extraction de la hauteur et extraction des caractéristiques en cours.",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Étape 2a : Parcours automatique de tous les fichiers du dossier d'entraînement qui peuvent être décodés en fichiers audio et réalisation d'une normalisation par tranches. Génère 2 dossiers wav dans le répertoire de l'expérience. Actuellement, seule la formation avec un seul chanteur/locuteur est prise en charge.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Étape 2b : Utilisez le CPU pour extraire la hauteur (si le modèle le permet), utilisez le GPU pour extraire les caractéristiques (sélectionnez l'index du GPU) :",
"step3: 填写训练设置, 开始训练模型和索引": "Étape 3 : Remplissez les paramètres d'entraînement et démarrez l'entraînement du modèle ainsi que l'indexation.",
"step3a:正在训练模型": "Étape 3a : L'entraînement du modèle a commencé.",
"一键训练": "Entraînement en un clic",
"也可批量输入音频文件, 二选一, 优先读文件夹": "Il est également possible d'importer plusieurs fichiers audio. Si un chemin de dossier existe, cette entrée est ignorée.",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "Traitement en lot pour la séparation de la voix et de l'accompagnement vocal à l'aide du modèle UVR5.<br>Exemple d'un format de chemin de dossier valide : D:\\chemin\\vers\\dossier\\d'entrée (copiez-le depuis la barre d'adresse du gestionnaire de fichiers).<br>Le modèle est divisé en trois catégories :<br>1. Préserver la voix : Choisissez cette option pour l'audio sans harmonies. Elle préserve la voix mieux que HP5. Il comprend deux modèles intégrés : HP2 et HP3. HP3 peut légèrement laisser passer l'accompagnement mais préserve légèrement mieux la voix que HP2.<br>2. Préserver uniquement la voix principale : Choisissez cette option pour l'audio avec harmonies. Cela peut affaiblir la voix principale. Il comprend un modèle intégré : HP5.<br>3. Modèles de suppression de la réverbération et du délai (par FoxJoy) :<br>(1) MDX-Net : Le meilleur choix pour la suppression de la réverbération stéréo, mais ne peut pas supprimer la réverbération mono.<br>(234) DeEcho : Supprime les effets de délai. Le mode Aggressive supprime plus efficacement que le mode Normal. DeReverb supprime également la réverbération et peut supprimer la réverbération mono, mais pas très efficacement pour les contenus à haute fréquence fortement réverbérés.<br>Notes sur la suppression de la réverbération et du délai :<br>1. Le temps de traitement pour le modèle DeEcho-DeReverb est environ deux fois plus long que pour les autres deux modèles DeEcho.<br>2. Le modèle MDX-Net-Dereverb est assez lent.<br>3. La configuration la plus propre recommandée est d'appliquer d'abord MDX-Net, puis DeEcho-Aggressive.",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Entrez le(s) index GPU séparé(s) par '-', par exemple, 0-1-2 pour utiliser les GPU 0, 1 et 2 :",
"伴奏人声分离&去混响&去回声": "Séparation des voix/accompagnement et suppression de la réverbération",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "Nom de sauvegarde :",
"保存的文件名, 默认空为和源文件同名": "Nom du fichier de sauvegarde (par défaut : identique au nom du fichier source) :",
"保存的模型名不带后缀": "Nom du modèle enregistré (sans extension) :",
"保存频率save_every_epoch": "Fréquence de sauvegarde (save_every_epoch) :",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Protéger les consonnes sourdes et les bruits de respiration pour éviter les artefacts tels que le déchirement dans la musique électronique. Réglez à 0,5 pour désactiver. Diminuez la valeur pour renforcer la protection, mais cela peut réduire la précision de l'indexation :",
"修改": "Modifier",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modifier les informations du modèle (uniquement pris en charge pour les petits fichiers de modèle extraits du dossier 'weights')",
"停止音频转换": "Arrêter la conversion audio",
"全流程结束!": "Toutes les étapes ont été terminées !",
"刷新音色列表和索引路径": "Actualiser la liste des voix et le vers l'index.",
"加载模型": "Charger le modèle.",
"加载预训练底模D路径": "Charger le chemin du modèle de base pré-entraîné D :",
"加载预训练底模G路径": "Charger le chemin du modèle de base pré-entraîné G :",
"单次推理": "单次推理",
"卸载音色省显存": "Décharger la voix pour économiser la mémoire GPU.",
"变调(整数, 半音数量, 升八度12降八度-12)": "Transposer (entier, nombre de demi-tons, monter d'une octave : 12, descendre d'une octave : -12) :",
"后处理重采样至最终采样率0为不进行重采样": "Rééchantillonner l'audio de sortie en post-traitement à la fréquence d'échantillonnage finale. Réglez sur 0 pour ne pas effectuer de rééchantillonnage :",
"否": "Non",
"启用相位声码器": "启用相位声码器",
"响应阈值": "Seuil de réponse",
"响度因子": "Facteur de volume sonore",
"处理数据": "Traitement des données",
"导出Onnx模型": "Exporter le modèle au format ONNX.",
"导出文件格式": "Format de fichier d'exportation",
"常见问题解答": "FAQ (Foire Aux Questions)",
"常规设置": "Paramètres généraux",
"开始音频转换": "Démarrer la conversion audio.",
"很遗憾您这没有能用的显卡来支持您训练": "Malheureusement, il n'y a pas de GPU compatible disponible pour prendre en charge votre entrainement.",
"性能设置": "Paramètres de performance",
"总训练轮数total_epoch": "Nombre total d'époques d'entraînement (total_epoch) :",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Conversion en lot. Entrez le dossier contenant les fichiers audio à convertir ou téléchargez plusieurs fichiers audio. Les fichiers audio convertis seront enregistrés dans le dossier spécifié (par défaut : 'opt').",
"指定输出主人声文件夹": "Spécifiez le dossier de sortie pour les fichiers de voix :",
"指定输出文件夹": "Spécifiez le dossier de sortie :",
"指定输出非主人声文件夹": "Spécifiez le dossier de sortie pour l'accompagnement :",
"推理时间(ms):": "Temps d'inférence (ms) :",
"推理音色": "Voix pour l'inférence",
"提取": "Extraire",
"提取音高和处理数据使用的CPU进程数": "Nombre de processus CPU utilisés pour l'extraction de la hauteur et le traitement des données :",
"是": "Oui",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Enregistrer uniquement le dernier fichier '.ckpt' pour économiser de l'espace disque :",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Enregistrer un petit modèle final dans le dossier 'weights' à chaque point de sauvegarde :",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Mettre en cache tous les ensembles d'entrainement dans la mémoire GPU. Mettre en cache de petits ensembles de données (moins de 10 minutes) peut accélérer l'entrainement, mais mettre en cache de grands ensembles de données consommera beaucoup de mémoire GPU et peut ne pas apporter beaucoup d'amélioration de vitesse :",
"显卡信息": "Informations sur la carte graphique (GPU)",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Ce logiciel est open source sous la licence MIT. L'auteur n'a aucun contrôle sur le logiciel. Les utilisateurs qui utilisent le logiciel et distribuent les sons exportés par le logiciel en sont entièrement responsables. <br>Si vous n'acceptez pas cette clause, vous ne pouvez pas utiliser ou faire référence à aucun code ni fichier contenu dans le package logiciel. Consultez le fichier <b>Agreement-LICENSE.txt</b> dans le répertoire racine pour plus de détails.",
"查看": "Voir",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Afficher les informations sur le modèle (uniquement pour les petits fichiers de modèle extraits du dossier \"weights\")",
"检索特征占比": "Rapport de recherche de caractéristiques (contrôle l'intensité de l'accent, un rapport trop élevé provoque des artefacts) :",
"(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;": "(1) MDX-Net (onnx_dereverb) : C'est le meilleur choix pour la réverbération à deux canaux, mais il ne peut pas éliminer la réverbération à un seul canal;",
"(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。": "(234)DeEcho : Supprime les effets de délai. Aggressive est plus exhaustif que Normal dans la suppression, DeReverb élimine également la réverbération, peut supprimer la réverbération monocanal, mais n'élimine pas complètement la réverbération de plaque à haute fréquence.",
"*GPT模型列表": "*Liste des modèles GPT",
"*SoVITS模型列表": "*Liste des modèles SoVITS",
"*实验/模型名": "*Nom de l'expérience/modèle",
"*文本标注文件": "*Fichier d'annotation de texte",
"*训练集音频文件目录": "*Répertoire des fichiers audio d'entraînement",
"*请上传并填写参考信息": "*Veuillez télécharger et remplir les informations de référence",
"*请填写需要合成的目标文本和语种模式": "*Veuillez saisir le texte cible à synthétiser et le mode de langue.",
".list标注文件的路径": "Chemin du fichier d'annotation .list",
".限制范围越小判别效果越好。": "Moins il y a de langues, mieux c'est",
"0-前置数据集获取工具": "0-Outil de récupération de jeu de données préalable",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-Outil de séparation de la voix humaine et de l'accompagnement UVR5 & suppression de la réverbération et du retard",
"0b-语音切分工具": "0b-Outil de découpage vocal",
"0bb-语音降噪工具": "0bb-Outil de réduction du bruit vocal",
"0c-中文批量离线ASR工具": "0c-Outil chinois de transcription automatique hors ligne en masse",
"0d-语音文本校对标注工具": "0d-Outil de correction et d'annotation de texte vocal",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"1A-训练集格式化工具": "1A-Outil de formatage du jeu de données d'entraînement",
"1Aa-文本内容": "1Aa-Contenu du texte",
"1Aabc-训练集格式化一键三连": "1Aabc-Formatage en un clic du jeu de données d'entraînement",
"1Ab-SSL自监督特征提取": "1Ab-Extraction de caractéristiques auto-supervisée SSL",
"1Ac-语义token提取": "1Ac-Extraction de jetons sémantiques",
"1B-微调训练": "1B-Entraînement fin",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-Entraînement SoVITS. Les fichiers de modèle destinés au partage sont enregistrés sous SoVITS_weights.",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-Entraînement GPT. Les fichiers de modèle destinés au partage sont enregistrés sous GPT_weights.",
"1C-推理": "1C-Inférence",
"1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍": "1. Le temps de traitement du modèle DeEcho-DeReverb est presque le double de celui des deux autres modèles DeEcho;",
"1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点": "1. Préserver les voix : Choisissez cette option pour les audio sans harmonie, car elle conserve mieux la voix principale par rapport au modèle HP5. Deux modèles intégrés, HP2 et HP3, sont disponibles. HP3 peut légèrement laisser passer l'accompagnement mais conserve la voix principale un peu mieux que HP2;",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-Modification de la voix",
"2、MDX-Net-Dereverb模型挺慢的": "2. Le modèle MDX-Net-Dereverb est assez lent;",
"2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型": "2. Conserver uniquement la voix principale : Choisissez cette option pour les audio avec harmonie, car elle peut affaiblir la voix principale. Un modèle HP5 intégré est disponible;",
"3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "3. La configuration la plus propre que je recommande est d'utiliser d'abord MDX-Net, puis DeEcho-Aggressive.",
"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",
"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",
"SoVITS模型列表": "Liste des modèles SoVITS",
"SoVITS训练进程输出信息": "Informations de processus d'entraînement SoVITS",
"TTS推理WebUI进程输出信息": "Informations de processus de l'interface Web d'inférence TTS",
"TTS推理进程已关闭": "Le processus d'inférence TTS est terminé",
"TTS推理进程已开启": "Le processus d'inférence TTS est en cours",
"UVR5已关闭": "UVR5 est désactivé",
"UVR5已开启": "UVR5 est activé",
"UVR5进程输出信息": "Informations de processus UVR5",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: proportion d'audio normalisé mélangé",
"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",
"min_interval:最短切割间隔": "min_interval: intervalle de coupe minimum",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length:longueur minimale de chaque segment ; si le premier segment est trop court, il est concaténé avec les segments suivants jusqu'à ce que la longueur dépasse cette valeur",
"temperature": "température",
"threshold:音量小于这个值视作静音的备选切割点": "seuil: le volume inférieur à cette valeur est considéré comme un point de coupe silencieux alternatif",
"top_k": "top_k",
"top_p": "top_p",
"一键三连进程输出信息": "Informations de processus de l'un clic trois connexions",
"不切": "Pas de découpe",
"中文": "Chinois",
"中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e": "Documentation du tutoriel en chinoishttps://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e",
"中英混合": "Mélange de chinois et d'anglais",
"也可批量输入音频文件, 二选一, 优先读文件夹": "É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 Fichier ou Dossier de ce Type",
"以下模型不存在:": "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)",
"关闭TTS推理WebUI": "Fermer TTS Inference WebUI",
"关闭UVR5-WebUI": "Fermer UVR5-WebUI",
"关闭打标WebUI": "Fermer Labeling WebUI",
"凑50字一切": "Assembler 50 mots tout",
"凑四句一切": "Composez quatre phrases pour tout remplir",
"切分后的子音频的输出根目录": "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",
"前端处理后的文本(每句):": "Texte après traitement frontal (par phrase):",
"去混响/去延迟,附:": "Suppression de la réverbération / suppression du retard, ci-joint:",
"参考音频在3~10秒范围外请更换": "Veuillez remplacer l'audio de référence si sa durée est en dehors de la plage de 3 à 10 secondes!",
"参考音频的文本": "Texte de l'audio de référence",
"参考音频的语种": "Langue de l'audio de référence",
"可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。": "Optionnel : Téléchargez plusieurs fichiers audio de référence en les faisant glisser (recommandé d'être du même genre) et fusionnez leur tonalité. Si cette option est laissée vide, la tonalité sera contrôlée par l'unique fichier audio de référence à gauche. Si vous ajustez le modèle, il est recommandé que tous les fichiers audio de référence aient des tonalités dans l'ensemble d'entraînement d'ajustement ; le modèle pré-entrainé peut être ignoré.",
"合成语音": "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).",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-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):",
"实际输入的目标文本:": "Texte cible réellement saisi:",
"导出文件格式": "Format d'exportation du fichier",
"开启GPT训练": "Activer l'entraînement GPT",
"开启SSL提取": "Activer l'extraction SSL",
"开启SoVITS训练": "Activer l'entraînement SoVITS",
"开启TTS推理WebUI": "Ouvrir TTS Inference WebUI",
"开启UVR5-WebUI": "Ouvrir UVR5-WebUI",
"开启一键三连": "Activer l'un clic trois connexions",
"开启打标WebUI": "Ouvrir Labeling WebUI",
"开启文本获取": "Activer l'extraction de texte",
"开启无参考文本模式。不填参考文本亦相当于开启。": "Activer le mode sans texte de référence. Laisser le texte de référence vide équivaut également à activer le mode.",
"开启离线批量ASR": "Activer la transcription automatique hors ligne en masse",
"开启语义token提取": "Activer l'extraction de jetons sémantiques",
"开启语音切割": "Activer le découpage vocal",
"开启语音降噪": "Activer la réduction de bruit vocal",
"怎么切": "Comment découper",
"总训练轮数total_epoch": "Nombre total d'époques d'entraînement",
"总训练轮数total_epoch不建议太高": "Nombre total d'époques d'entraînement, pas recommandé d'être trop élevé",
"打标工具WebUI已关闭": "L'interface Web de l'outil d'annotation est terminée",
"打标工具WebUI已开启": "L'interface Web de l'outil d'annotation est en cours",
"打标工具进程输出信息": "Informations de processus de l'outil d'annotation",
"指定输出主人声文件夹": "Spécifier le dossier de sortie pour la voix principale",
"指定输出非主人声文件夹": "Spécifier le dossier de sortie pour la non-voix principale",
"按中文句号。切": "Couper selon les points en chinois.",
"按标点符号切": "Couper selon les signes de ponctuation",
"按英文句号.切": "Découpez par des points en anglais",
"数据类型精度": "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",
"日文": "Japonais",
"日英混合": "Mélange Japonais-Anglais",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Sauvegarder uniquement le dernier fichier ckpt pour économiser de l'espace disque",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Sauvegarder le petit modèle final dans le dossier weights à chaque point de sauvegarde",
"是否开启dpo训练选项(实验性)": "Activer l'option d'entraînement DPO (expérimental)",
"是否直接对上次合成结果调整语速和音色。防止随机性。": "Ajuster la vitesse de parole et la tonalité du dernier résultat de synthèse pour prévenir l'aléatoire.",
"显卡信息": "Informations sur la carte graphique",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Ce logiciel est open source sous la licence MIT. L'auteur n'a aucun contrôle sur le logiciel. Les utilisateurs et les diffuseurs du son exporté par le logiciel en assument l'entière responsabilité. <br>Si vous n'acceptez pas ces termes, vous ne pouvez ni utiliser ni citer aucun code ou fichier à l'intérieur du package. Voir <b>LICENSE</b> dans le répertoire racine pour plus de détails.",
"模型": "Modèle",
"模型推理": "Inférence du modèle",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Extraction du modèle (saisissez le chemin d'accès au modèle du grand fichier dans le dossier \"logs\"). Cette fonction est utile si vous souhaitez arrêter l'entrainement à mi-chemin et extraire et enregistrer manuellement un petit fichier de modèle, ou si vous souhaitez tester un modèle intermédiaire :",
"模型是否带音高指导": "Indique si le modèle dispose d'un guidage en hauteur :",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Indique si le modèle dispose d'un système de guidage de la hauteur (obligatoire pour le chant, facultatif pour la parole) :",
"模型是否带音高指导,1是0否": "Le modèle dispose-t-il d'un guide de hauteur (1 : oui, 0 : non) ?",
"模型版本型号": "Version de l'architecture du modèle :",
"模型融合, 可用于测试音色融合": "Fusion de modèles, peut être utilisée pour tester la fusion de timbres",
"模型路径": "Le chemin vers le modèle :",
"每张显卡的batch_size": "Taille du batch par GPU :",
"淡入淡出长度": "Longueur de la transition",
"模型分为三类:": "Les modèles sont classés en trois catégories:",
"模型切换": "Changement de modèle",
"每张显卡的batch_size": "Taille de lot par carte graphique",
"版本": "Version",
"特征提取": "Extraction des caractéristiques",
"特征检索库文件路径,为空则使用下拉的选择结果": "Chemin d'accès au fichier d'index des caractéristiques. Laisser vide pour utiliser le résultat sélectionné dans la liste déroulante :",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Il est recommandé d'utiliser la clé +12 pour la conversion homme-femme et la clé -12 pour la conversion femme-homme. Si la plage sonore est trop large et que la voix est déformée, vous pouvez également l'ajuster vous-même à la plage appropriée.",
"目标采样率": "Taux d'échantillonnage cible :",
"算法延迟(ms):": "Délais algorithmiques (ms):",
"自动检测index路径,下拉式选择(dropdown)": "Détecter automatiquement le chemin d'accès à l'index et le sélectionner dans la liste déroulante :",
"融合": "Fusion",
"要改的模型信息": "Informations sur le modèle à modifier :",
"要置入的模型信息": "Informations sur le modèle à placer :",
"训练": "Entraîner",
"训练模型": "Entraîner le modèle",
"训练特征索引": "Entraîner l'index des caractéristiques",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Entraînement terminé. Vous pouvez consulter les rapports d'entraînement dans la console ou dans le fichier 'train.log' situé dans le dossier de l'expérience.",
"请指定说话人id": "Veuillez spécifier l'ID de l'orateur ou du chanteur :",
"请选择index文件": "Veuillez sélectionner le fichier d'index",
"请选择pth文件": "Veuillez sélectionner le fichier pth",
"请选择说话人id": "Sélectionner l'ID de l'orateur ou du chanteur :",
"转换": "Convertir",
"输入实验名": "Saisissez le nom de l'expérience :",
"输入待处理音频文件夹路径": "Entrez le chemin du dossier audio à traiter :",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Entrez le chemin du dossier audio à traiter (copiez-le depuis la barre d'adresse du gestionnaire de fichiers) :",
"输入待处理音频文件路径(默认是正确格式示例)": "Entrez le chemin d'accès du fichier audio à traiter (par défaut, l'exemple de format correct) :",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Ajustez l'échelle de l'enveloppe de volume. Plus il est proche de 0, plus il imite le volume des voix originales. Cela peut aider à masquer les bruits et à rendre le volume plus naturel lorsqu'il est réglé relativement bas. Plus le volume est proche de 1, plus le volume sera fort et constant :",
"输入监听": "Moniteur vocal d'entrée",
"输入训练文件夹路径": "Indiquez le chemin d'accès au dossier d'entraînement :",
"输入设备": "Dispositif d'entrée",
"输入降噪": "Réduction du bruit d'entrée",
"输出信息": "Informations sur la sortie",
"输出变声": "Sortie voix convertie",
"输出设备": "Dispositif de sortie",
"输出降噪": "Réduction du bruit de sortie",
"输出音频(右下角三个点,点了可以下载)": "Exporter l'audio (cliquer sur les trois points dans le coin inférieur droit pour télécharger)",
"选择.index文件": "Sélectionner le fichier .index",
"选择.pth文件": "Sélectionner le fichier .pth",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "Sélection de l'algorithme d'extraction de la hauteur, les voix d'entrée peuvent être accélérées avec pm, harvest a de bonnes basses mais est très lent, crepe est bon mais consomme beaucoup de ressources GPU.",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "Sélectionnez l'algorithme d'extraction de la hauteur de ton (\"pm\" : extraction plus rapide mais parole de moindre qualité ; \"harvest\" : meilleure basse mais extrêmement lente ; \"crepe\" : meilleure qualité mais utilisation intensive du GPU), \"rmvpe\" : meilleure qualité et peu d'utilisation du GPU.",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "Sélection de l'algorithme d'extraction de la hauteur : la chanson d'entrée peut être traitée plus rapidement par pm, avec une voix de haute qualité mais un CPU médiocre, par dio, harvest est meilleur mais plus lent, rmvpe est le meilleur, mais consomme légèrement le CPU/GPU.",
"采样率:": "采样率:",
"采样长度": "Longueur de l'échantillon",
"重载设备列表": "Recharger la liste des dispositifs",
"音调设置": "Réglages de la hauteur",
"音频设备(请使用同种类驱动)": "Périphérique audio (veuillez utiliser le même type de pilote)",
"音高算法": "algorithme de détection de la hauteur",
"额外推理时长": "Temps d'inférence supplémentaire"
"粤英混合": "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",
"终止SoVITS训练": "Arrêter l'entraînement SoVITS",
"终止一键三连": "Arrêter l'un clic trois connexions",
"终止文本获取进程": "Arrêter le processus d'extraction de texte",
"终止语义token提取进程": "Arrêter le processus d'extraction de jetons sémantiques",
"终止语音切割": "Arrêter le découpage vocal",
"终止语音降噪进程": "Arrêter le processus de réduction du bruit vocal",
"缺少Hubert数据集": "Jeu de Données Hubert Manquant",
"缺少语义数据集": "Jeu de Données Sémantiques Manquant",
"缺少音素数据集": "Jeu de Données de Phonèmes Manquant",
"缺少音频数据集": "Jeu de Données Audio Manquant",
"英文": "Anglais",
"语义token提取进程输出信息": "Informations de processus d'extraction de jetons sémantiques",
"语速": "Débit de parole",
"语速调整,高为更快": "Ajuster la vitesse de parole, plus élevée pour plus rapide",
"语音切割进程输出信息": "Informations de processus de découpage vocal",
"语音降噪进程输出信息": "Informations de sortie du processus de réduction du bruit vocal",
"请上传3~10秒内参考音频超过会报错": "Veuillez télécharger une référence audio de 3 à 10 secondes ; les fichiers plus longs généreront une erreur!",
"请上传参考音频": "Veuillez télécharger l'audio de référence",
"请填入推理文本": "Veuillez remplir le texte cible",
"请填入正确的List路径": "Veuillez Remplir le Chemin Correct de la Liste",
"请填入正确的音频文件夹路径": "Veuillez Remplir le Chemin Correct du Dossier Audio",
"请输入有效文本": "Veuillez entrer un texte valide",
"路径不能为空": "Chemin Non Vide Attendu",
"路径错误": "Erreur de Chemin",
"转换": "Conversion",
"输入待处理音频文件夹路径": "Entrez le chemin du dossier audio à traiter",
"输入文件夹路径": "Chemin du dossier à entrer",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "Les fichiers et dossiers commençant par 23456 devraient être présents dans le répertoire logs/nom de l'expérience",
"输出信息": "Sortie d'information",
"输出文件夹路径": "Chemin du dossier de sortie",
"输出的语音": "Audio de sortie",
"选择训练完存放在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 à synthétiser",
"需要合成的语种": "Langue de synthèse requise",
"韩文": "Coreano",
"韩英混合": "Mezcla Coreano-Inglés",
"音频加载失败": "Échec du Chargement de l'Audio",
"音频自动切分输入路径,可文件可文件夹": "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é",
"预训练的SoVITS-D模型路径": "Chemin du modèle SoVITS-D pré-entraîné",
"预训练的SoVITS-G模型路径": "Chemin du modèle SoVITS-G pré-entraîné",
"预训练的中文BERT模型路径": "Chemin du modèle BERT chinois pré-entraîné"
}

View File

@ -1,135 +1,192 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "Se >=3: applica il filtro mediano ai risultati del pitch raccolto. ",
"A模型权重": "Peso (w) per il modello A:",
"A模型路径": "Percorso per il modello A:",
"B模型路径": "Percorso per il modello B:",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "File curva F0 (opzionale). ",
"Index Rate": "Tasso di indice",
"Onnx导出": "Esporta Onnx",
"Onnx输出路径": "Percorso di esportazione Onnx:",
"RVC模型路径": "Percorso modello RVC:",
"ckpt处理": "Elaborazione ckpt",
"harvest进程数": "harvest进程数",
"index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth è un'app per il futuro",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Passaggio 1: compilare la configurazione sperimentale. ",
"step1:正在处理数据": "Passaggio 1: elaborazione dei dati",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Passaggio 2a: attraversa automaticamente tutti i file nella cartella di addestramento che possono essere decodificati in audio ed esegui la normalizzazione delle sezioni. ",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Passaggio 2b: utilizzare la CPU per estrarre il tono (se il modello ha il tono), utilizzare la GPU per estrarre le caratteristiche (selezionare l'indice GPU):",
"step3: 填写训练设置, 开始训练模型和索引": "Passaggio 3: compilare le impostazioni di addestramento e avviare l'addestramento del modello e dell'indice",
"step3a:正在训练模型": "Passaggio 3a: è iniziato l'addestramento del modello",
"一键训练": "Addestramento con un clic",
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "Elaborazione batch per la separazione dell'accompagnamento vocale utilizzando il modello UVR5.<br>Esempio di un formato di percorso di cartella valido: D:\\path\\to\\input\\folder (copialo dalla barra degli indirizzi del file manager).<br>Il modello è suddiviso in tre categorie:<br>1. Conserva la voce: scegli questa opzione per l'audio senza armonie. <br>2. Mantieni solo la voce principale: scegli questa opzione per l'audio con armonie. <br>3. Modelli di de-riverbero e de-delay (di FoxJoy):<br>(1) MDX-Net: la scelta migliore per la rimozione del riverbero stereo ma non può rimuovere il riverbero mono;<br><br>Note di de-riverbero/de-delay:<br>1. Il tempo di elaborazione per il modello DeEcho-DeReverb è circa il doppio rispetto agli altri due modelli DeEcho.<br>2. Il modello MDX-Net-Dereverb è piuttosto lento.<br>3. La configurazione più pulita consigliata consiste nell'applicare prima MDX-Net e poi DeEcho-Aggressive.",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Inserisci gli indici GPU separati da '-', ad esempio 0-1-2 per utilizzare GPU 0, 1 e 2:",
"伴奏人声分离&去混响&去回声": "Separazione voce/accompagnamento",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "Salva nome:",
"保存的文件名, 默认空为和源文件同名": "Salva il nome del file (predefinito: uguale al file di origine):",
"保存的模型名不带后缀": "Nome del modello salvato (senza estensione):",
"保存频率save_every_epoch": "Frequenza di salvataggio (save_every_epoch):",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Proteggi le consonanti senza voce e i suoni del respiro per evitare artefatti come il tearing nella musica elettronica. ",
"修改": "Modificare",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modifica le informazioni sul modello (supportato solo per i file di modello di piccole dimensioni estratti dalla cartella 'weights')",
"停止音频转换": "Arresta la conversione audio",
"全流程结束!": "Tutti i processi sono stati completati!",
"刷新音色列表和索引路径": "Aggiorna l'elenco delle voci e il percorso dell'indice",
"加载模型": "Carica modello",
"加载预训练底模D路径": "Carica il percorso D del modello base pre-addestrato:",
"加载预训练底模G路径": "Carica il percorso G del modello base pre-addestrato:",
"单次推理": "单次推理",
"卸载音色省显存": "Scarica la voce per risparmiare memoria della GPU:",
"变调(整数, 半音数量, 升八度12降八度-12)": "Trasposizione (numero intero, numero di semitoni, alza di un'ottava: 12, abbassa di un'ottava: -12):",
"后处理重采样至最终采样率0为不进行重采样": "Ricampiona l'audio di output in post-elaborazione alla frequenza di campionamento finale. ",
"否": "NO",
"启用相位声码器": "启用相位声码器",
"响应阈值": "Soglia di risposta",
"响度因子": "fattore di sonorità",
"处理数据": "Processa dati",
"导出Onnx模型": "Esporta modello Onnx",
"导出文件格式": "Formato file di esportazione",
"常见问题解答": "FAQ (Domande frequenti)",
"常规设置": "Impostazioni generali",
"开始音频转换": "Avvia la conversione audio",
"很遗憾您这没有能用的显卡来支持您训练": "Sfortunatamente, non è disponibile alcuna GPU compatibile per supportare l'addestramento.",
"性能设置": "Impostazioni delle prestazioni",
"总训练轮数total_epoch": "Epoch totali di addestramento (total_epoch):",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Conversione massiva. Inserisci il percorso della cartella che contiene i file da convertire o carica più file audio. I file convertiti finiranno nella cartella specificata. (default: opt) ",
"指定输出主人声文件夹": "Specifica la cartella di output per le voci:",
"指定输出文件夹": "Specifica la cartella di output:",
"指定输出非主人声文件夹": "Specificare la cartella di output per l'accompagnamento:",
"推理时间(ms):": "Tempo di inferenza (ms):",
"推理音色": "Voce di inferenza:",
"提取": "Estrai",
"提取音高和处理数据使用的CPU进程数": "Numero di processi CPU utilizzati per l'estrazione del tono e l'elaborazione dei dati:",
"是": "SÌ",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Salva solo l'ultimo file '.ckpt' per risparmiare spazio su disco:",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Salva un piccolo modello finale nella cartella \"weights\" in ogni punto di salvataggio:",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Memorizza nella cache tutti i set di addestramento nella memoria della GPU. ",
"显卡信息": "Informazioni GPU",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Questo software è open source con licenza MIT. <br>Se non si accetta questa clausola, non è possibile utilizzare o fare riferimento a codici e file all'interno del pacchetto software. <b>Contratto-LICENZA.txt</b> per dettagli.",
"查看": "Visualizzazione",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Visualizza le informazioni sul modello (supportato solo per file di modello piccoli estratti dalla cartella 'weights')",
"检索特征占比": "Rapporto funzionalità di ricerca (controlla la forza dell'accento, troppo alto ha artefatti):",
"(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;": "(1)MDX-Net (onnx_dereverb): È la scelta migliore per la riverberazione a due canali, ma non può rimuovere la riverberazione a canale singolo;",
"(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。": "(234)DeEcho: Rimuove gli effetti di ritardo. Aggressive è più completo di Normal nella rimozione, DeReverb rimuove ulteriormente la riverberazione, può rimuovere la riverberazione a canale singolo, ma non rimuove completamente la riverberazione a piastra ad alta frequenza.",
"*GPT模型列表": "*Lista dei modelli GPT",
"*SoVITS模型列表": "*Lista dei modelli SoVITS",
"*实验/模型名": "*Nome dell'esperimento/modello",
"*文本标注文件": "*File di annotazione del testo",
"*训练集音频文件目录": "*Directory dei file audio del set di addestramento",
"*请上传并填写参考信息": "*Carica e compila le informazioni di riferimento",
"*请填写需要合成的目标文本和语种模式": "*Si prega di inserire il testo di destinazione da sintetizzare e la modalità lingua",
".list标注文件的路径": "Percorso del file di annotazione .list",
".限制范围越小判别效果越好。": "Meno multilingue è meglio",
"0-前置数据集获取工具": "0-Strumento di acquisizione del dataset preliminare",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-Strumento di separazione voce e accompagnamento UVR5 & Rimozione riverbero e ritardo",
"0b-语音切分工具": "0b-Strumento di segmentazione vocale",
"0bb-语音降噪工具": "0bb-Strumento di riduzione del rumore vocale",
"0c-中文批量离线ASR工具": "0c-Strumento di ASR offline batch in cinese",
"0d-语音文本校对标注工具": "0d-Strumento di correzione e annotazione testo vocale",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"1A-训练集格式化工具": "1A-Strumento di formattazione del set di addestramento",
"1Aa-文本内容": "1Aa-Contenuto del testo",
"1Aabc-训练集格式化一键三连": "1Aabc-Strumento di formattazione del set di addestramento con tre passaggi",
"1Ab-SSL自监督特征提取": "1Ab-Estrazione di caratteristiche auto-supervisionata SSL",
"1Ac-语义token提取": "1Ac-Estrazione del token semantico",
"1B-微调训练": "1B-Allenamento di affinamento",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-Allenamento di SoVITS. I file del modello destinati alla condivisione sono salvati in SoVITS_weights.",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-Allenamento di GPT. I file del modello destinati alla condivisione sono salvati in GPT_weights.",
"1C-推理": "1C-Inferenza",
"1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍": "1. Il tempo di elaborazione del modello DeEcho-DeReverb è quasi il doppio di quello degli altri due modelli DeEcho;",
"1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点": "1. Conserva la voce principale: scegli questa opzione per audio senza armonie, poiché conserva meglio la voce principale rispetto al modello HP5. Include due modelli integrati, HP2 e HP3. HP3 potrebbe far passare leggermente l'accompagnamento ma conserva meglio la voce principale rispetto a HP2;",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-Voce modificata",
"2、MDX-Net-Dereverb模型挺慢的": "2. Il modello MDX-Net-Dereverb è piuttosto lento;",
"2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型": "2. Solo conserva la voce principale: scegli questa opzione per audio con armonie, poiché potrebbe indebolire la voce principale. Include un modello HP5;",
"3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "3. La configurazione più pulita consigliata è MDX-Net seguito da DeEcho-Aggressive.",
"3、去混响、去延迟模型by FoxJoy": "3. Modello per rimuovere la riverberazione e il ritardo (by FoxJoy):",
"ASR 模型": "Modello ASR",
"ASR 模型尺寸": "Dimensioni del modello ASR",
"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",
"SoVITS模型列表": "Elenco dei modelli SoVITS",
"SoVITS训练进程输出信息": "Informazioni sull'output del processo di allenamento di SoVITS",
"TTS推理WebUI进程输出信息": "Informazioni sull'output del processo dell'interfaccia utente Web per l'inferenza TTS",
"TTS推理进程已关闭": "Il processo di inferenza TTS è stato chiuso",
"TTS推理进程已开启": "Il processo di inferenza TTS è stato avviato",
"UVR5已关闭": "UVR5 è disattivato",
"UVR5已开启": "UVR5 è attivato",
"UVR5进程输出信息": "Informazioni sull'output del processo UVR5",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: Quanta proporzione dell'audio normalizzato deve essere miscelata",
"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",
"min_interval:最短切割间隔": "min_interval: Intervallo minimo di taglio",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length: Lunghezza minima per segmento; se il primo segmento è troppo corto, sarà unito ai segmenti successivi fino a superare questo valore",
"temperature": "temperatura",
"threshold:音量小于这个值视作静音的备选切割点": "threshold: Punto di taglio alternativo considerato silenzioso se il volume è inferiore a questo valore",
"top_k": "top_k",
"top_p": "top_p",
"一键三连进程输出信息": "Informazioni sull'output del processo di 'One Click Three Connect'",
"不切": "Nessuna suddivisione",
"中文": "Cinese",
"中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e": "Documentazione del tutorial in cinesehttps://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e",
"中英混合": "Cinese e inglese misti",
"也可批量输入音频文件, 二选一, 优先读文件夹": "È 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 File o Cartella di Questo Tipo",
"以下模型不存在:": "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",
"关闭TTS推理WebUI": "Chiudere TTS Inference WebUI",
"关闭UVR5-WebUI": "Chiudere UVR5-WebUI",
"关闭打标WebUI": "Chiudere Labeling WebUI",
"凑50字一切": "Riempire con 50 caratteri per tutto",
"凑四句一切": "Riempire con quattro frasi per tutto",
"切分后的子音频的输出根目录": "Directory radice di output per gli audio segmentati",
"切割使用的进程数": "Numero di processi utilizzati per il taglio",
"刷新模型路径": "Aggiorna il percorso del modello",
"前端处理后的文本(每句):": "Testo elaborato dal front-end (per frase):",
"去混响/去延迟,附:": "Rimozione della riverberazione/ritardo, allegato:",
"参考音频在3~10秒范围外请更换": "L'audio di riferimento è al di fuori dell'intervallo di 3-10 secondi. Si prega di cambiarlo!",
"参考音频的文本": "Testo dell'audio di riferimento",
"参考音频的语种": "Lingua dell'audio di riferimento",
"可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。": "Opzionale: Carica più file audio di riferimento trascinandoli (si consiglia dello stesso genere) e media il loro tono. Se questa opzione è lasciata vuota, il tono sarà controllato dal singolo file audio di riferimento a sinistra. Se si sta perfezionando il modello, è consigliato che tutti i file audio di riferimento abbiano toni presenti nel set di addestramento per il perfezionamento; il modello pre-addestrato può essere ignorato.",
"合成语音": "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).",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-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):",
"实际输入的目标文本:": "Testo di destinazione effettivamente inserito:",
"导出文件格式": "Formato di esportazione del file",
"开启GPT训练": "Attivare l'allenamento di GPT",
"开启SSL提取": "Attivare l'estrazione SSL",
"开启SoVITS训练": "Attivare l'allenamento di SoVITS",
"开启TTS推理WebUI": "Aprire TTS Inference WebUI",
"开启UVR5-WebUI": "Aprire UVR5-WebUI",
"开启一键三连": "Attivare la formattazione con tre passaggi",
"开启打标WebUI": "Aprire Labeling WebUI",
"开启文本获取": "Attivare l'estrazione del testo",
"开启无参考文本模式。不填参考文本亦相当于开启。": "Attivare la modalità senza testo di riferimento. Anche se non inserisci un testo di riferimento, la modalità verrà attivata.",
"开启离线批量ASR": "Attivare ASR offline batch",
"开启语义token提取": "Attivare l'estrazione del token semantico",
"开启语音切割": "Attivare la segmentazione vocale",
"开启语音降噪": "Attivare la riduzione del rumore vocale",
"怎么切": "Come tagliare",
"总训练轮数total_epoch": "Numero totale di epoche di addestramento",
"总训练轮数total_epoch不建议太高": "Numero totale di epoche di addestramento, non raccomandato troppo alto",
"打标工具WebUI已关闭": "L'interfaccia utente Web dello strumento di annotazione è stata chiusa",
"打标工具WebUI已开启": "L'interfaccia utente Web dello strumento di annotazione è stata avviata",
"打标工具进程输出信息": "Informazioni sull'output del processo di annotazione",
"指定输出主人声文件夹": "Specifica la cartella di output per la voce principale",
"指定输出非主人声文件夹": "Specifica la cartella di output per la non voce principale",
"按中文句号。切": "Taglia secondo il punto cinese.",
"按标点符号切": "Taglia secondo i segni di punteggiatura",
"按英文句号.切": "Taglia secondo il punto inglese",
"数据类型精度": "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",
"日文": "Giapponese",
"日英混合": "Mix giapponese e inglese",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Salvare solo il file ckpt più recente per risparmiare spazio su disco",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Salvare il modello finale più piccolo nella cartella weights ad ogni punto di salvataggio",
"是否开启dpo训练选项(实验性)": "Attivare l'opzione di addestramento DPO (sperimentale)",
"是否直接对上次合成结果调整语速和音色。防止随机性。": "Regola la velocità del parlato e il tono dell'ultimo risultato di sintesi per prevenire la casualità.",
"显卡信息": "Informazioni sulla scheda grafica",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Questo software è open source con licenza MIT. L'autore non ha alcun controllo sul software. L'utente che utilizza il software o diffonde i suoni derivati dal software ne è responsabile. <br>Se non accetti questi termini, non puoi utilizzare o citare alcun codice o file all'interno del pacchetto software. Vedi la cartella principale<b>LICENSE</b> per i dettagli.",
"模型": "Modello",
"模型推理": "Inferenza del modello",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Estrazione del modello (inserire il percorso del modello di file di grandi dimensioni nella cartella \"logs\"). ",
"模型是否带音高指导": "Se il modello ha una guida del tono:",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Se il modello ha una guida del tono (necessario per il canto, facoltativo per il parlato):",
"模型是否带音高指导,1是0否": "Se il modello ha una guida del tono (1: sì, 0: no):",
"模型版本型号": "Versione dell'architettura del modello:",
"模型融合, 可用于测试音色融合": "Model fusion, può essere utilizzato per testare la fusione timbrica",
"模型路径": "Percorso al modello:",
"每张显卡的batch_size": "Dimensione batch per GPU:",
"淡入淡出长度": "Lunghezza dissolvenza",
"模型分为三类:": "I modelli sono divisi in tre categorie:",
"模型切换": "Cambio del modello",
"每张显卡的batch_size": "Batch size per ogni scheda grafica",
"版本": "Versione",
"特征提取": "Estrazione delle caratteristiche",
"特征检索库文件路径,为空则使用下拉的选择结果": "Percorso del file di indice delle caratteristiche. ",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Tonalità +12 consigliata per la conversione da maschio a femmina e tonalità -12 per la conversione da femmina a maschio. ",
"目标采样率": "Frequenza di campionamento target:",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "Rileva automaticamente il percorso dell'indice e seleziona dal menu a tendina:",
"融合": "Fusione",
"要改的模型信息": "Informazioni sul modello da modificare:",
"要置入的模型信息": "Informazioni sul modello da posizionare:",
"训练": "Addestramento",
"训练模型": "Addestra modello",
"训练特征索引": "Addestra indice delle caratteristiche",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Addestramento completato. ",
"请指定说话人id": "Si prega di specificare l'ID del locutore/cantante:",
"请选择index文件": "请选择index文件",
"请选择pth文件": "请选择pth 文件",
"请选择说话人id": "Seleziona ID locutore/cantante:",
"转换": "Convertire",
"输入实验名": "Inserisci il nome dell'esperimento:",
"输入待处理音频文件夹路径": "Immettere il percorso della cartella audio da elaborare:",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Immettere il percorso della cartella audio da elaborare (copiarlo dalla barra degli indirizzi del file manager):",
"输入待处理音频文件路径(默认是正确格式示例)": "Immettere il percorso del file audio da elaborare (l'impostazione predefinita è l'esempio di formato corretto):",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Regola il ridimensionamento dell'inviluppo del volume. ",
"输入监听": "输入监听",
"输入训练文件夹路径": "Inserisci il percorso della cartella di addestramento:",
"输入设备": "Dispositivo di input",
"输入降噪": "Riduzione del rumore in ingresso",
"输出信息": "Informazioni sull'uscita",
"输出变声": "输出变声",
"输出设备": "Dispositivo di uscita",
"输出降噪": "Riduzione del rumore in uscita",
"输出音频(右下角三个点,点了可以下载)": "Esporta audio (clicca sui tre puntini in basso a destra per scaricarlo)",
"选择.index文件": "Seleziona il file .index",
"选择.pth文件": "Seleziona il file .pth",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "Seleziona l'algoritmo di estrazione del tono (\"pm\": estrazione più veloce ma risultato di qualità inferiore; \"harvest\": bassi migliori ma estremamente lenti; \"crepe\": qualità migliore ma utilizzo intensivo della GPU):",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU",
"采样率:": "采样率:",
"采样长度": "Lunghezza del campione",
"重载设备列表": "Ricaricare l'elenco dei dispositivi",
"音调设置": "Impostazioni del tono",
"音频设备(请使用同种类驱动)": "Dispositivo audio (utilizzare lo stesso tipo di driver)",
"音高算法": "音高算法",
"额外推理时长": "Tempo di inferenza extra"
"粤英混合": "Misto Cantonese-Inglese",
"粤语": "Cantonese",
"终止ASR进程": "Terminare il processo ASR",
"终止GPT训练": "Terminare l'allenamento di GPT",
"终止SSL提取进程": "Terminare il processo di estrazione SSL",
"终止SoVITS训练": "Terminare l'allenamento di SoVITS",
"终止一键三连": "Terminare la formattazione con tre passaggi",
"终止文本获取进程": "Terminare il processo di estrazione del testo",
"终止语义token提取进程": "Terminare il processo di estrazione del token semantico",
"终止语音切割": "Terminare la segmentazione vocale",
"终止语音降噪进程": "Termina il processo di riduzione del rumore vocale",
"缺少Hubert数据集": "Dataset di Hubert Mancante",
"缺少语义数据集": "Dataset Semantico Mancante",
"缺少音素数据集": "Dataset di Fonemi Mancante",
"缺少音频数据集": "Dataset Audio Mancante",
"英文": "Inglese",
"语义token提取进程输出信息": "Informazioni sull'output del processo di estrazione del token semantico",
"语速": "Velocità della voce",
"语速调整,高为更快": "Regolare la velocità della voce, più alta per più veloce",
"语音切割进程输出信息": "Informazioni sull'output del processo di segmentazione vocale",
"语音降噪进程输出信息": "Informazioni sull'output del processo di riduzione del rumore vocale",
"请上传3~10秒内参考音频超过会报错": "Carica un audio di riferimento della durata compresa tra 3 e 10 secondi. Superiore a questo, verrà generato un errore!",
"请上传参考音频": "Si prega di caricare l'audio di riferimento",
"请填入推理文本": "Si prega di inserire il testo di destinazione",
"请填入正确的List路径": "Si Prega di Inserire il Percorso Corretto della Lista",
"请填入正确的音频文件夹路径": "Si Prega di Inserire il Percorso Corretto della Cartella Audio",
"请输入有效文本": "Inserisci un testo valido",
"路径不能为空": "Percorso Vuoto Non Consentito",
"路径错误": "Errore di Percorso",
"转换": "Converti",
"输入待处理音频文件夹路径": "Inserisci il percorso della cartella dei file audio da elaborare",
"输入文件夹路径": "Inserisci il percorso della cartella",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "Nella cartella logs/nome dell'esperimento dovrebbero esserci file e cartelle che iniziano con 23456",
"输出信息": "Informazioni di output",
"输出文件夹路径": "Percorso della cartella di output",
"输出的语音": "Audio di output",
"选择训练完存放在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",
"需要合成的语种": "Lingua da sintetizzare",
"韩文": "Coreano",
"韩英混合": "Misto Coreano-Inglese",
"音频加载失败": "Caricamento Audio Fallito",
"音频自动切分输入路径,可文件可文件夹": "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",
"预训练的SoVITS-D模型路径": "Percorso del modello preaddestrato SoVITS-D",
"预训练的SoVITS-G模型路径": "Percorso del modello preaddestrato SoVITS-G",
"预训练的中文BERT模型路径": "Percorso del modello BERT cinese preaddestrato"
}

View File

@ -1,135 +1,192 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": ">=3 次に、harvestピッチの認識結果に対してメディアンフィルタを使用します。値はフィルター半径で、ミュートを減衰させるために使用します。",
"A模型权重": "Aモデルの重み",
"A模型路径": "Aモデルのパス",
"B模型路径": "Bモデルのパス",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0(最低共振周波数)カーブファイル(オプション、1行に1ピッチ、デフォルトのF0(最低共振周波数)とエレベーションを置き換えます。)",
"Index Rate": "Index Rate",
"Onnx导出": "Onnxエクスポート",
"Onnx输出路径": "Onnx出力パス",
"RVC模型路径": "RVCモデルパス",
"ckpt处理": "ckptファイルの処理",
"harvest进程数": "harvestプロセス数",
"index文件路径不可包含中文": "indexファイルのパスに漢字を含んではいけません",
"pth文件路径不可包含中文": "pthファイルのパスに漢字を含んではいけません",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpeカード番号設定異なるプロセスに使用するカード番号を入力する。例えば、0-0-1でカード0に2つのプロセス、カード1に1つのプロセスを実行する。",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "ステップ1:実験設定を入力します。実験データはlogsに保存され、各実験にはフォルダーがあります。実験名のパスを手動で入力する必要があり、実験設定、ログ、トレーニングされたモデルファイルが含まれます。",
"step1:正在处理数据": "step1:処理中のデータ",
"step2:正在提取音高&正在提取特征": "step2:ピッチ抽出と特徴抽出",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "ステップ2a: 訓練フォルダー内のすべての音声ファイルを自動的に探索し、スライスと正規化を行い、2つのwavフォルダーを実験ディレクトリに生成します。現在は一人でのトレーニングのみをサポートしています。",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "ステップ2b: CPUを使用して音高を抽出する(モデルに音高がある場合)、GPUを使用して特徴を抽出する(GPUの番号を選択する)",
"step3: 填写训练设置, 开始训练模型和索引": "ステップ3: トレーニング設定を入力して、モデルとインデックスのトレーニングを開始します",
"step3a:正在训练模型": "step3a:トレーニング中のモデル",
"一键训练": "ワンクリックトレーニング",
"也可批量输入音频文件, 二选一, 优先读文件夹": "複数のオーディオファイルをインポートすることもできます。フォルダパスが存在する場合、この入力は無視されます。",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "UVR5モデルを使用したボーカル伴奏の分離バッチ処理。<br>有効なフォルダーパスフォーマットの例: D:\\path\\to\\input\\folder (エクスプローラーのアドレスバーからコピーします)。<br>モデルは三つのカテゴリに分かれています:<br>1. ボーカルを保持: ハーモニーのないオーディオに対してこれを選択します。HP5よりもボーカルをより良く保持します。HP2とHP3の二つの内蔵モデルが含まれています。HP3は伴奏をわずかに漏らす可能性がありますが、HP2よりもわずかにボーカルをより良く保持します。<br>2. 主なボーカルのみを保持: ハーモニーのあるオーディオに対してこれを選択します。主なボーカルを弱める可能性があります。HP5の一つの内蔵モデルが含まれています。<br>3. ディリバーブとディレイモデル (by FoxJoy):<br>(1) MDX-Net: ステレオリバーブの除去に最適な選択肢ですが、モノリバーブは除去できません;<br>&emsp;(234) DeEcho: ディレイ効果を除去します。AggressiveモードはNormalモードよりも徹底的に除去します。DeReverbはさらにリバーブを除去し、モリバーブを除去することができますが、高周波のリバーブが強い内容に対しては非常に効果的ではありません。<br>ディリバーブ/ディレイに関する注意点:<br>1. DeEcho-DeReverbモデルの処理時間は、他の二つのDeEchoモデルの約二倍です。<br>2. MDX-Net-Dereverbモデルは非常に遅いです。<br>3. 推奨される最もクリーンな設定は、最初にMDX-Netを適用し、その後にDeEcho-Aggressiveを適用することです。",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "ハイフンで区切って使用するGPUの番号を入力します。例えば0-1-2はGPU0、GPU1、GPU2を使用します",
"伴奏人声分离&去混响&去回声": "伴奏ボーカル分離&残響除去&エコー除去",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "保存ファイル名",
"保存的文件名, 默认空为和源文件同名": "保存するファイル名、デフォルトでは空欄で元のファイル名と同じ名前になります",
"保存的模型名不带后缀": "拡張子のない保存するモデル名",
"保存频率save_every_epoch": "エポックごとの保存頻度",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "明確な子音と呼吸音を保護し、電子音の途切れやその他のアーティファクトを防止します。0.5でオフになります。下げると保護が強化されますが、indexの効果が低下する可能性があります。",
"修改": "変更",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "モデル情報の修正(weightsフォルダから抽出された小さなモデルファイルのみ対応)",
"停止音频转换": "音声変換を停止",
"全流程结束!": "全工程が完了!",
"刷新音色列表和索引路径": "音源リストとインデックスパスの更新",
"加载模型": "モデルをロード",
"加载预训练底模D路径": "事前学習済みのDモデルのパス",
"加载预训练底模G路径": "事前学習済みのGモデルのパス",
"单次推理": "单次推理",
"卸载音色省显存": "音源を削除してメモリを節約",
"变调(整数, 半音数量, 升八度12降八度-12)": "ピッチ変更(整数、半音数、上下オクターブ12-12)",
"后处理重采样至最终采样率0为不进行重采样": "最終的なサンプリングレートへのポストプロセッシングのリサンプリング リサンプリングしない場合は0",
"否": "いいえ",
"启用相位声码器": "启用相位声码器",
"响应阈值": "反応閾値",
"响度因子": "ラウドネス係数",
"处理数据": "データ処理",
"导出Onnx模型": "Onnxに変換",
"导出文件格式": "エクスポート形式",
"常见问题解答": "よくある質問",
"常规设置": "一般設定",
"开始音频转换": "音声変換を開始",
"很遗憾您这没有能用的显卡来支持您训练": "トレーニングに対応したGPUが動作しないのは残念です。",
"性能设置": "パフォーマンス設定",
"总训练轮数total_epoch": "総エポック数",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "一括変換、変換する音声フォルダを入力、または複数の音声ファイルをアップロードし、指定したフォルダ(デフォルトのopt)に変換した音声を出力します。",
"指定输出主人声文件夹": "マスターの出力音声フォルダーを指定する",
"指定输出文件夹": "出力フォルダを指定してください",
"指定输出非主人声文件夹": "マスター以外の出力音声フォルダーを指定する",
"推理时间(ms):": "推論時間(ms):",
"推理音色": "音源推論",
"提取": "抽出",
"提取音高和处理数据使用的CPU进程数": "ピッチの抽出やデータ処理に使用するCPUスレッド数",
"是": "はい",
"是否仅保存最新的ckpt文件以节省硬盘空间": "ハードディスク容量を節約するため、最新のckptファイルのみを保存しますか",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "各保存時点の小モデルを全部weightsフォルダに保存するかどうか",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "すべてのトレーニングデータをメモリにキャッシュするかどうか。10分以下の小さなデータはキャッシュしてトレーニングを高速化できますが、大きなデータをキャッシュするとメモリが破裂し、あまり速度が上がりません。",
"显卡信息": "GPU情報",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本ソフトウェアはMITライセンスに基づくオープンソースであり、製作者は本ソフトウェアに対していかなる責任を持ちません。本ソフトウェアの利用者および本ソフトウェアから派生した音源(成果物)を配布する者は、本ソフトウェアに対して自身で責任を負うものとします。 <br>この条項に同意しない場合、パッケージ内のコードやファイルを使用や参照を禁じます。詳しくは<b>LICENSE</b>をご覧ください。",
"查看": "表示",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "モデル情報を表示する(小さいモデルファイルはweightsフォルダーからのみサポートされています)",
"检索特征占比": "検索特徴率",
"(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;": "(1)MDX-Net(onnx_dereverb):二重チャンネルのリバーブに最適な選択ですが、単一チャンネルのリバーブは除去できません;",
"(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。": "(234)DeEcho:遅延効果を除去します。AggressiveはNormalよりも徹底的に除去し、DeReverbは追加でリバーブを除去し、モラルリバーブを除去できますが、高周波数のプレートリバーブは完全には除去できません。",
"*GPT模型列表": "*GPTモデルリスト",
"*SoVITS模型列表": "*SoVITSモデルリスト",
"*实验/模型名": "*実験/モデル名",
"*文本标注文件": "*テキスト注釈ファイル",
"*训练集音频文件目录": "*トレーニングデータのオーディオファイルディレクトリ",
"*请上传并填写参考信息": "*参照情報をアップロードして記入してください",
"*请填写需要合成的目标文本和语种模式": "*合成対象テキストと言語モードを入力してください",
".list标注文件的路径": ".listアテーションファイルのパス",
".限制范围越小判别效果越好。": "多言語対応を減らした方が良い",
"0-前置数据集获取工具": "0-データセット取得ツールの事前処理",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5ボーカルアカンパニメント分離リバーブおよびディレイ除去ツール",
"0b-语音切分工具": "0b-音声分割ツール",
"0bb-语音降噪工具": "0bb-音声ノイズ除去ツール",
"0c-中文批量离线ASR工具": "0c-中国語バッチオフラインASRツール",
"0d-语音文本校对标注工具": "0d-音声テキストの校正アノテーションツール",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"1A-训练集格式化工具": "1A-トレーニングデータのフォーマットツール",
"1Aa-文本内容": "1Aa-テキストの内容",
"1Aabc-训练集格式化一键三连": "1Aabc-トレーニングデータのフォーマットワンクリック三連",
"1Ab-SSL自监督特征提取": "1Ab-SSLセルフスーパーバイズ特徴抽出",
"1Ac-语义token提取": "1Ac-セマンティックトークン抽出",
"1B-微调训练": "1B-ファインチューニングトレーニング",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITSトレーニング。共有用のモデルファイルはSoVITS_weightsディレクトリに出力されます。",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPTトレーニング。共有用のモデルファイルはGPT_weightsディレクトリに出力されます。",
"1C-推理": "1C-推論",
"1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍": "1、DeEcho-DeReverbモデルの処理時間は、他の2つのDeEchoモデルのほぼ2倍です",
"1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点": "1、主音を保持: ハーモニーなしの音声にはこのオプションを選択し、HP5よりも主音の保持が優れています。HP2とHP3の2つのモデルが内蔵されており、HP3はわずかに伴奏を漏らす可能性がありますが、HP2よりも主音の保持がわずかに良いです",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-ボイスチェンジャー",
"2、MDX-Net-Dereverb模型挺慢的": "2、MDX-Net-Dereverbモデルはかなり遅いです",
"2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型": "2、主音のみを保持: ハーモニー付きの音声にはこのオプションを選択し、主音が弱くなる可能性があります。HP5モデルが1つ内蔵されています",
"3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "3、最もクリーンな設定は、MDX-Netの後にDeEcho-Aggressiveを使用することをお勧めします。",
"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プロセスの出力情報",
"SoVITS模型列表": "SoVITSモデルリスト",
"SoVITS训练进程输出信息": "SoVITSトレーニングプロセスの出力情報",
"TTS推理WebUI进程输出信息": "TTS推論WebUIプロセスの出力情報",
"TTS推理进程已关闭": "TTS推論プロセスが終了しました",
"TTS推理进程已开启": "TTS推論プロセスが開始されました",
"UVR5已关闭": "UVR5がオフになっています",
"UVR5已开启": "UVR5がオンになっています",
"UVR5进程输出信息": "UVR5プロセスの出力情報",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix正規化後のオーディオが入る割合",
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size: 音量曲線の計算方法、小さいほど精度が高くなりますが、計算量が増加します(精度が高いほど必ずしも効果が良いわけではありません)",
"max:归一化后最大值多少": "max正規化後の最大値",
"max_sil_kept:切完后静音最多留多长": "max_sil_kept切り終えた後、最大でどれだけ静かにするか",
"min_interval:最短切割间隔": "min_interval最短カット間隔",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length各セグメントの最小長さ。最初のセグメントが短すぎる場合、連続して後続のセグメントに接続され、この値を超えるまで続きます。",
"temperature": "temperature",
"threshold:音量小于这个值视作静音的备选切割点": "閾値:この値未満の音量は静音と見なされ、代替のカットポイントとして扱われます",
"top_k": "top_k",
"top_p": "top_p",
"一键三连进程输出信息": "ワンクリック三連プロセスの出力情報",
"不切": "切らない",
"中文": "中国語",
"中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e": "中国語チュートリアルドキュメントhttps://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e",
"中英混合": "中英混合",
"也可批量输入音频文件, 二选一, 优先读文件夹": "複数のオーディオファイルもインポートできます。フォルダパスが存在する場合、この入力は無視されます。",
"人声伴奏分离批量处理, 使用UVR5模型。": "人声と伴奏の分離をバッチ処理で行い、UVR5モデルを使用します。",
"人声提取激进程度": "人声抽出の積極性",
"以下文件或文件夹不存在": "そのようなファイルまたはフォルダは存在しません",
"以下模型不存在:": "モデルが存在しません:",
"伴奏人声分离&去混响&去回声": "ボーカル/伴奏の分離と残響の除去",
"使用无参考文本模式时建议使用微调的GPT听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "参考テキストなしモードを使用する場合は、微調整されたGPTの使用をお勧めします。参考音声が聞き取れない場合何を書けば良いかわからない場合は、有効にすると、入力した参考テキストを無視します。",
"保存频率save_every_epoch": "保存頻度save_every_epoch",
"关闭TTS推理WebUI": "TTS Inference WebUIを閉じる",
"关闭UVR5-WebUI": "UVR5-WebUIを閉じる",
"关闭打标WebUI": "ラベリングWebUIを閉じる",
"凑50字一切": "50文字ずつカット",
"凑四句一切": "4つの文で埋める",
"切分后的子音频的输出根目录": "分割後のサブオーディオの出力ルートディレクトリ",
"切割使用的进程数": "分割に使用されるプロセス数",
"刷新模型路径": "モデルのパスを更新",
"前端处理后的文本(每句):": "フロントエンド処理後のテキスト(文ごと):",
"去混响/去延迟,附:": "残響除去/遅延除去、附:",
"参考音频在3~10秒范围外请更换": "参照音声が310秒の範囲外です。別の音声に変更してください",
"参考音频的文本": "参照オーディオのテキスト",
"参考音频的语种": "参照オーディオの言語",
"可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。": "オプション:複数の参照オーディオファイルをドラッグ&ドロップしてアップロードし、それらのトーンを平均化します(同性推奨)。このオプションを空白のままにした場合、トーンは左側の単一の参照オーディオによって制御されます。モデルを微調整する場合、すべての参照オーディオファイルが微調整のトレーニングセット内のトーンを持つことをお勧めします。プリトレーニングモデルは無視しても構いません。",
"合成语音": "推論を開始",
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "適切なフォルダパスの例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华テストサンプル(ファイルマネージャのアドレスバーからコピーしてください)。",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。如果留空则使用.list文件里的绝对全路径。": "切断後の音声ファイルが格納されているディレクトリを入力してください!読み取り対象の音声ファイルの完全パス = このディレクトリ - 結合 - listファイル内の波形に対応するファイル名完全パスではありません。空白の場合、.listファイル内の絶対完全パスを使用します。",
"多语种混合": "多言語混合",
"多语种混合(粤语)": "多言語混合(粤語)",
"实际输入的参考文本:": "実際に入力された参照テキスト:",
"实际输入的目标文本(切句后):": "実際に入力された目標テキスト(文分割後):",
"实际输入的目标文本(每句):": "実際に入力された目標テキスト(文ごと):",
"实际输入的目标文本:": "実際に入力された目標テキスト:",
"导出文件格式": "エクスポートファイル形式",
"开启GPT训练": "GPTトレーニングを開始",
"开启SSL提取": "SSL抽出を開始",
"开启SoVITS训练": "SoVITSトレーニングを開始",
"开启TTS推理WebUI": "TTS Inference WebUIを開く",
"开启UVR5-WebUI": "UVR5-WebUIを開く",
"开启一键三连": "ワンクリック三連を開始",
"开启打标WebUI": "ラベリングWebUIを開く",
"开启文本获取": "テキストの取得を開始",
"开启无参考文本模式。不填参考文本亦相当于开启。": "参照テキストなしモードを有効にします。参照テキストを入力しない場合も同様に有効になります。",
"开启离线批量ASR": "オフラインバッチASRを開始",
"开启语义token提取": "セマンティックトークン抽出を開始",
"开启语音切割": "音声の分割を開始",
"开启语音降噪": "音声ノイズ除去を有効にする",
"怎么切": "どうやって切るか",
"总训练轮数total_epoch": "総トレーニングエポック数total_epoch",
"总训练轮数total_epoch不建议太高": "総トレーニングエポック数total_epoch、高すぎないようにお勧めします",
"打标工具WebUI已关闭": "校正ツールWebUIが終了しました",
"打标工具WebUI已开启": "校正ツールWebUIが開始されました",
"打标工具进程输出信息": "アノテーションツールプロセスの出力情報",
"指定输出主人声文件夹": "ボーカルの出力フォルダを指定:",
"指定输出非主人声文件夹": "伴奏の出力フォルダを指定:",
"按中文句号。切": "中国語の句点でカット",
"按标点符号切": "句読点で分割",
"按英文句号.切": "英文のピリオドで切ってください",
"数据类型精度": "データ型の精度",
"文本模块学习率权重": "テキストモジュールの学習率の重み",
"文本进程输出信息": "テキストプロセスの出力情報",
"施工中,请静候佳音": "施工中、お待ちください",
"日文": "日本語",
"日英混合": "日英混合",
"是否仅保存最新的ckpt文件以节省硬盘空间": "最新のckptファイルのみを保存してディスクスペースを節約するかどうか",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "各保存時間点で最終的な小さなモデルをweightsフォルダに保存するかどうか",
"是否开启dpo训练选项(实验性)": "DPOトレーニングオプションを有効にするかどうか実験的",
"是否直接对上次合成结果调整语速和音色。防止随机性。": "ランダム性を防ぐために、前回の合成結果のスピーチ速度とトーンを調整します。",
"显卡信息": "グラフィックカード情報",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "このソフトウェアはMITライセンスでオープンソース化されており、作者はソフトウェアに対して一切の制御権を持っていません。ソフトウェアを使用する者、ソフトウェアから導出される音声を広める者は、自己責任で行ってください。<br>この条件を認めない場合、ソフトウェアパッケージ内の任意のコードやファイルを使用または引用することはできません。詳細はルートディレクトリの<b>LICENSE</b>を参照してください。",
"模型": "モデル",
"模型推理": "モデル推論",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "モデル抽出(ログフォルダー内の大きなファイルのモデルパスを入力)、モデルを半分までトレーニングし、自動的に小さいファイルモデルを保存しなかったり、中間モデルをテストしたい場合に適用されます。",
"模型是否带音高指导": "モデルに音高ガイドを付けるかどうか",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "モデルに音高ガイドがあるかどうか(歌唱には必要ですが、音声には必要ありません)",
"模型是否带音高指导,1是0否": "モデルに音高ガイドを付けるかどうか、1は付ける、0は付けない",
"模型版本型号": "モデルのバージョン",
"模型融合, 可用于测试音色融合": "モデルのマージ、音源のマージテストに使用できます",
"模型路径": "モデルパス",
"每张显卡的batch_size": "GPUごとのバッチサイズ",
"淡入淡出长度": "フェードイン/フェードアウト長",
"模型分为三类:": "モデルは3種類に分かれています",
"模型切换": "モデル切り替え",
"每张显卡的batch_size": "各グラフィックカードのバッチサイズ",
"版本": "バージョン",
"特征提取": "特徴抽出",
"特征检索库文件路径,为空则使用下拉的选择结果": "特徴検索ライブラリへのパス 空の場合はドロップダウンで選択",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性から女性へは+12キーをお勧めします。女性から男性へは-12キーをお勧めします。音域が広すぎて音質が劣化した場合は、適切な音域に自分で調整してください。",
"目标采样率": "目標サンプリングレート",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "インデックスパスの自動検出 ドロップダウンで選択",
"融合": "マージ",
"要改的模型信息": "変更するモデル情報",
"要置入的模型信息": "挿入するモデル情報",
"训练": "トレーニング",
"训练模型": "モデルのトレーニング",
"训练特征索引": "特徴インデックスのトレーニング",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "トレーニング終了時に、トレーニングログやフォルダ内のtrain.logを確認することができます",
"请指定说话人id": "話者IDを指定してください",
"请选择index文件": "indexファイルを選択してください",
"请选择pth文件": "pthファイルを選択してください",
"请选择说话人id": "話者IDを選択してください",
"粤英混合": "粤英混合",
"粤语": "粤語",
"终止ASR进程": "ASRプロセスを停止",
"终止GPT训练": "GPTトレーニングを停止",
"终止SSL提取进程": "SSL抽出プロセスを停止",
"终止SoVITS训练": "SoVITSトレーニングを停止",
"终止一键三连": "ワンクリック三連を停止",
"终止文本获取进程": "テキスト取得プロセスを停止",
"终止语义token提取进程": "セマンティックトークン抽出プロセスを停止",
"终止语音切割": "音声の分割を停止",
"终止语音降噪进程": "音声ノイズ除去プロセスを終了する",
"缺少Hubert数据集": "Hubertデータセットが欠落しています",
"缺少语义数据集": "セマンティクスデータセットが欠落しています",
"缺少音素数据集": "音素データセットが欠落しています",
"缺少音频数据集": "オーディオデータセットが欠落しています",
"英文": "英語",
"语义token提取进程输出信息": "セマンティックトークン抽出プロセスの出力情報",
"语速": "話速",
"语速调整,高为更快": "話速調整、高いほど速く",
"语音切割进程输出信息": "音声分割プロセスの出力情報",
"语音降噪进程输出信息": "音声ノイズ除去プロセスの出力情報",
"请上传3~10秒内参考音频超过会报错": "310秒以内の参照音声をアップロードしてください。それを超えるとエラーが発生します",
"请上传参考音频": "リファレンスオーディオをアップロードしてください",
"请填入推理文本": "ターゲットテキストを入力してください",
"请填入正确的List路径": "正しいリストパスを入力してください",
"请填入正确的音频文件夹路径": "正しいオーディオフォルダパスを入力してください",
"请输入有效文本": "有効なテキストを入力してください",
"路径不能为空": "空のパスは予期されていません",
"路径错误": "パスエラー",
"转换": "変換",
"输入实验名": "モデル名",
"输入待处理音频文件夹路径": "処理するオーディオファイルのフォルダパスを入力してください",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "処理対象音声フォルダーのパスを入力してください(エクスプローラーのアドレスバーからコピーしてください)",
"输入待处理音频文件路径(默认是正确格式示例)": "処理対象音声ファイルのパスを入力してください(デフォルトは正しいフォーマットの例です)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "入力ソースの音量エンベロープと出力音量エンベロープの融合率 1に近づくほど、出力音量エンベロープの割合が高くなる",
"输入监听": "输入监听",
"输入训练文件夹路径": "トレーニング用フォルダのパスを入力してください",
"输入设备": "入力デバイス",
"输入降噪": "入力ノイズの低減",
"输入待处理音频文件夹路径": "処理するオーディオフォルダのパスを入力してください:",
"输入文件夹路径": "入力フォルダのパス",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "logs/実験名ディレクトリには23456で始まるファイルとフォルダが含まれている必要があります",
"输出信息": "出力情報",
"输出变声": "输出变声",
"输出设备": "出力デバイス",
"输出降噪": "出力ノイズの低減",
"输出音频(右下角三个点,点了可以下载)": "出力音声(右下の三点をクリックしてダウンロードできます)",
"选择.index文件": ".indexファイルを選択",
"选择.pth文件": ".pthファイルを選択",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "ピッチ抽出アルゴリズムの選択、歌声はpmで高速化でき、harvestは低音が良いが信じられないほど遅く、crepeは良く動くがGPUを食います。",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "ピッチ抽出アルゴリズムの選択、歌声はpmで高速化でき、harvestは低音が良いが信じられないほど遅く、crepeは良く動くがGPUを喰います",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "ピッチ抽出アルゴリズムの選択歌声はpmで高速化でき、入力した音声が高音質でCPUが貧弱な場合はdioで高速化でき、harvestの方が良いが遅く、rmvpeがベストだがCPU/GPUを若干食います。",
"采样率:": "采样率:",
"采样长度": "サンプル長",
"重载设备列表": "デバイスリストをリロードする",
"音调设置": "音程設定",
"音频设备(请使用同种类驱动)": "オーディオデバイス(同じ種類のドライバーを使用してください)",
"音高算法": "ピッチアルゴリズム",
"额外推理时长": "追加推論時間"
"输出文件夹路径": "出力フォルダのパス",
"输出的语音": "推論結果",
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。": "SoVITS_weightsおよびGPT_weightsに保存されたモデルを選択します。デフォルトのものはプレトレインであり、ゼロショットTTSを体験できます。",
"降噪结果输出文件夹": "ノイズ除去結果出力フォルダ",
"降噪音频文件输入文件夹": "ノイズ除去音声ファイル入力フォルダ",
"需要合成的文本": "推論テキスト",
"需要合成的语种": "推論テキストの言語",
"韩文": "韓国語",
"韩英混合": "韓英混合",
"音频加载失败": "音声の読み込みに失敗しました",
"音频自动切分输入路径,可文件可文件夹": "オーディオの自動分割入力パス、ファイルまたはフォルダを指定できます",
"预训练的GPT模型路径": "事前にトレーニングされたGPTモデルのパス",
"预训练的SSL模型路径": "事前にトレーニングされたSSLモデルのパス",
"预训练的SoVITS-D模型路径": "事前にトレーニングされたSoVITS-Dモデルのパス",
"预训练的SoVITS-G模型路径": "事前にトレーニングされたSoVITS-Gモデルのパス",
"预训练的中文BERT模型路径": "事前にトレーニングされた中文BERTモデルのパス"
}

View File

@ -1,285 +1,192 @@
{
"很遗憾您这没有能用的显卡来支持您训练": "죄송합니다. 훈련을 지원할 수 있는 그래픽 카드가 없습니다.",
"UVR5已开启": "UVR5가 활성화되었습니다",
"UVR5已关闭": "UVR5가 비활성화되었습니다",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "본 소프트웨어는 MIT 라이선스로 오픈 소스로 제공되며, 제작자는 소프트웨어에 대해 어떠한 제어력도 가지지 않습니다. 소프트웨어 사용자 및 소프트웨어에서 내보낸 소리를 전파하는 자는 전적으로 책임져야 합니다. <br>이 조항을 인정하지 않으면 소프트웨어의 코드 및 파일을 사용하거나 인용할 수 없습니다. 루트 디렉터리의 <b>LICENSE</b>를 참조하십시오.",
"0-前置数据集获取工具": "0-전방 데이터 세트 수집 도구",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5 보컬 및 반주 분리 및 에코 및 지연 제거 도구",
"是否开启UVR5-WebUI": "UVR5-WebUI를 여시겠습니까?",
"UVR5进程输出信息": "UVR5 프로세스 출력 정보",
"0b-语音切分工具": "0b-음성 분리 도구",
".list标注文件的路径": ".list 주석 파일 경로",
"GPT模型路径": "GPT 모델 경로",
"SoVITS模型列表": "SoVITS 모델 목록",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。": "분리된 오디오가 있는 디렉터리를 입력하십시오! 읽은 오디오 파일의 전체 경로 = 해당 디렉터리-연결-목록 파일에 해당하는 원본 이름 (전체 경로가 아님).",
"音频自动切分输入路径,可文件可文件夹": "오디오 자동 분리 입력 경로, 파일 또는 폴더 가능",
"切分后的子音频的输出根目录": "분리된 하위 오디오의 출력 기본 디렉터리",
"怎么切": "자르기 옵션",
"不切": "자르지 않음",
"凑四句一切": "네 문장의 세트를 완성하세요.",
"按英文句号.切": "영어 문장으로 분리하기",
"threshold:音量小于这个值视作静音的备选切割点": "임계 값: 이 값보다 작은 볼륨은 대체 분리 지점으로 간주됩니다.",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "최소 길이: 각 세그먼트의 최소 길이. 첫 번째 세그먼트가 너무 짧으면 계속해서 뒷부분과 연결하여 이 값 이상이 될 때까지",
"min_interval:最短切割间隔": "최소 분리 간격",
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop 크기: 볼륨 곡선을 계산하는 방법. 작을수록 정확도가 높아지지만 계산량이 높아집니다 (정확도가 높다고 효과가 좋아지지 않음)",
"max_sil_kept:切完后静音最多留多长": "최대 유지되는 정적 길이 (분리 후)",
"开启语音切割": "음성 분리 활성화",
"终止语音切割": "음성 분리 종료",
"max:归一化后最大值多少": "최대 값 (정규화 후)",
"alpha_mix:混多少比例归一化后音频进来": "알파 믹스: 정규화된 오디오가 들어오는 비율",
"切割使用的进程数": "사용되는 프로세스 수로 자르기",
"语音切割进程输出信息": "음성 분리 프로세스 출력 정보",
"0c-中文批量离线ASR工具": "0c-중국어 대량 오프라인 ASR 도구",
"开启离线批量ASR": "오프라인 대량 ASR 활성화",
"终止ASR进程": "ASR 프로세스 종료",
"批量ASR(中文only)输入文件夹路径": "대량 ASR (중국어 전용) 입력 폴더 경로",
"ASR进程输出信息": "ASR 프로세스 출력 정보",
"0d-语音文本校对标注工具": "0d-음성 텍스트 교정 주석 도구",
"是否开启打标WebUI": "웹 기반 주석 활성화 여부",
"打标数据标注文件路径": "주석 데이터 주석 파일 경로",
"打标工具进程输出信息": "주석 도구 프로세스 출력 정보",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"*实验/模型名": "*실험/모델 이름",
"显卡信息": "그래픽 카드 정보",
"预训练的SoVITS-G模型路径": "사전 훈련된 SoVITS-G 모델 경로",
"预训练的SoVITS-D模型路径": "사전 훈련된 SoVITS-D 모델 경로",
"预训练的GPT模型路径": "사전 훈련된 GPT 모델 경로",
"1A-训练集格式化工具": "1A-훈련 세트 형식 지정 도구",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "logs/실험 이름 디렉터리에는 23456으로 시작하는 파일과 폴더가 있어야 함",
"*文本标注文件": "*텍스트 주석 파일",
"*训练集音频文件目录": "*훈련 세트 오디오 파일 디렉터리",
"训练集音频文件目录 拼接 list文件里波形对应的文件名。": "훈련 세트 오디오 파일 디렉터리 - 목록 파일에 해당하는 원형 이름 연결",
"1Aa-文本内容": "1Aa-텍스트 내용",
"GPU卡号以-分割,每个卡号一个进程": "GPU 카드 번호는 -로 구분되며 각 카드 번호에 하나의 프로세스가 있어야 함",
"预训练的中文BERT模型路径": "사전 훈련된 중국어 BERT 모델 경로",
"开启文本获取": "텍스트 추출 활성화",
"终止文本获取进程": "텍스트 추출 프로세스 종료",
"文本进程输出信息": "텍스트 프로세스 출력 정보",
"1Ab-SSL自监督特征提取": "1Ab-SSL 자기 지도 특징 추출",
"预训练的SSL模型路径": "사전 훈련된 SSL 모델 경로",
"开启SSL提取": "SSL 추출 활성화",
"终止SSL提取进程": "SSL 추출 프로세스 종료",
"SSL进程输出信息": "SSL 프로세스 출력 정보",
"1Ac-语义token提取": "1Ac-의미 토큰 추출",
"开启语义token提取": "의미 토큰 추출 활성화",
"终止语义token提取进程": "의미 토큰 추출 프로세스 종료",
"语义token提取进程输出信息": "의미 토큰 추출 프로세스 출력 정보",
"1Aabc-训练集格式化一键三连": "1Aabc-훈련 세트 형식 지정 일괄 처리",
"开启一键三连": "일괄 처리 활성화",
"终止一键三连": "일괄 처리 종료",
"一键三连进程输出信息": "일괄 처리 프로세스 출력 정보",
"1B-微调训练": "1B-미세 조정 훈련",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITS 훈련. 공유 용 모델 파일은 SoVITS_weights 하위에 출력됩니다.",
"每张显卡的batch_size": "각 그래픽 카드의 배치 크기",
"总训练轮数total_epoch不建议太高": "총 훈련 라운드 수 (total_epoch), 너무 높지 않게 권장됨",
"文本模块学习率权重": "텍스트 모듈 학습률 가중치",
"保存频率save_every_epoch": "저장 빈도 (각 라운드마다)",
"是否仅保存最新的ckpt文件以节省硬盘空间": "디스크 공간을 절약하기 위해 최신 ckpt 파일만 저장할지 여부",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "각 저장 시간에 최종 작은 모델을 weights 폴더에 저장할지 여부",
"开启SoVITS训练": "SoVITS 훈련 활성화",
"终止SoVITS训练": "SoVITS 훈련 종료",
"SoVITS训练进程输出信息": "SoVITS 훈련 프로세스 출력 정보",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPT 훈련. 공유 용 모델 파일은 GPT_weights 하위에 출력됩니다.",
"总训练轮数total_epoch": "총 훈련 라운드 수 (total_epoch)",
"开启GPT训练": "GPT 훈련 활성화",
"终止GPT训练": "GPT 훈련 종료",
"GPT训练进程输出信息": "GPT 훈련 프로세스 출력 정보",
"1C-推理": "1C-추론",
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。": "SoVITS_weights 및 GPT_weights에 저장된 훈련 완료된 모델 중 선택. 기본적으로 하나는 기본 모델이며 5초 Zero Shot TTS를 체험할 수 있습니다.",
"*GPT模型列表": "*GPT 모델 목록",
"*SoVITS模型列表": "*SoVITS 모델 목록",
"GPU卡号,只能填1个整数": "GPU 카드 번호, 1개의 정수만 입력 가능",
"刷新模型路径": "모델 경로 새로 고침",
"是否开启TTS推理WebUI": "TTS 추론 WebUI 활성화 여부",
"TTS推理WebUI进程输出信息": "TTS 추론 WebUI 프로세스 출력 정보",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-음성 변환",
"施工中,请静候佳音": "공사 중입니다. 기다려주십시오.",
"参考音频在3~10秒范围外请更换": "참고 오디오가 3~10초 범위를 벗어났습니다. 다른 것으로 바꾸십시오!",
"请上传3~10秒内参考音频超过会报错": "3~10초 이내의 참고 오디오를 업로드하십시오. 초과하면 오류가 발생합니다!",
"TTS推理进程已开启": "TTS 추론 프로세스가 열렸습니다",
"TTS推理进程已关闭": "TTS 추론 프로세스가 닫혔습니다",
"打标工具WebUI已开启": "주석 도구 WebUI가 열렸습니다",
"打标工具WebUI已关闭": "주석 도구 WebUI가 닫혔습니다",
"*请填写需要合成的目标文本。中英混合选中文,日英混合选日文,中日混合暂不支持,非目标语言文本自动遗弃。": "*합성할 대상 텍스트를 입력하십시오. 중국어와 영어를 혼합하면 중국어를 선택하고 일본어와 영어를 혼합하면 일본어를 선택하십시오. 중국어와 일본어를 혼합하는 것은 아직 지원되지 않으며 대상 언어가 아닌 텍스트는 자동으로 버려집니다.",
"*请填写需要合成的目标文本": "*합성할 대상 텍스트를 입력하십시오",
"ASR任务开启%s": "ASR 작업 시작: %s",
"GPT训练完成": "GPT 훈련 완료",
"GPT训练开始%s": "GPT 훈련 시작: %s",
"SSL提取进程执行中": "SSL 추출 프로세스 실행 중",
"SSL提取进程结束": "SSL 추출 프로세스 종료",
"SoVITS训练完成": "SoVITS 훈련 완료",
"SoVITS训练开始%s": "SoVITS 훈련 시작: %s",
"一键三连中途报错": "일괄 처리 중 오류 발생",
"一键三连进程结束": "일괄 처리 프로세스 종료",
"中文": "중국어",
"凑50字一切": "50자를 채우십시오",
"凑五句一切": "다섯 문장을 채우십시오",
"切分后文本": "분리된 텍스트",
"切割执行中": "분리 진행 중",
"切割结束": "분리 종료",
"参考音频的文本": "참고 오디오의 텍스트",
"参考音频的语种": "참고 오디오의 언어",
"合成语音": "합성 음성",
"后续将支持混合语种编码文本输入。": "향후 혼합 언어 코딩 텍스트 입력을 지원할 예정입니다.",
"已有正在进行的ASR任务需先终止才能开启下一次任务": "이미 진행 중인 ASR 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的GPT训练任务需先终止才能开启下一次任务": "이미 진행 중인 GPT 훈련 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的SSL提取任务需先终止才能开启下一次任务": "이미 진행 중인 SSL 추출 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的SoVITS训练任务需先终止才能开启下一次任务": "이미 진행 중인 SoVITS 훈련 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的一键三连任务,需先终止才能开启下一次任务": "이미 진행 중인 일괄 처리 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的切割任务,需先终止才能开启下一次任务": "이미 진행 중인 분리 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的文本任务,需先终止才能开启下一次任务": "이미 진행 중인 텍스트 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已有正在进行的语义token提取任务需先终止才能开启下一次任务": "이미 진행 중인 의미 토큰 추출 작업이 있습니다. 다음 작업을 시작하려면 먼저 종료하십시오.",
"已终止ASR进程": "ASR 프로세스 종료됨",
"已终止GPT训练": "GPT 훈련 종료됨",
"已终止SoVITS训练": "SoVITS 훈련 종료됨",
"已终止所有1a进程": "모든 1a 프로세스 종료됨",
"已终止所有1b进程": "모든 1b 프로세스 종료됨",
"已终止所有一键三连进程": "모든 일괄 처리 프로세스 종료됨",
"已终止所有切割进程": "모든 분리 프로세스 종료됨",
"已终止所有语义token进程": "모든 의미 토큰 프로세스 종료됨",
"按中文句号。切": "중국어 문장으로 분리하십시오.",
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "텍스트 분리 도구. 너무 긴 텍스트는 합성 결과가 항상 좋지 않을 수 있으므로 너무 길면 먼저 분리하는 것이 좋습니다. 합성은 텍스트 줄 바꿈을 기준으로 분리되어 다시 조합됩니다.",
"文本进程执行中": "텍스트 프로세스 실행 중",
"文本进程结束": "텍스트 프로세스 종료",
"日文": "일본어",
"英文": "영어",
"语义token提取进程执行中": "의미 토큰 추출 프로세스 실행 중",
"语义token提取进程结束": "의미 토큰 추출 프로세스 종료",
"请上传参考音频": "참고 오디오를 업로드하십시오",
"输入路径不存在": "입력 경로가 존재하지 않습니다",
"输入路径存在但既不是文件也不是文件夹": "입력 경로가 파일이나 폴더가 아닙니다",
"输出的语音": "출력 음성",
"进度1a-done": "진행: 1a-done",
"进度1a-done, 1b-ing": "진행: 1a-done, 1b-ing",
"进度1a-ing": "진행: 1a-ing",
"进度1a1b-done": "진행: 1a1b-done",
"进度1a1b-done, 1cing": "진행: 1a1b-done, 1cing",
"进度all-done": "진행: all-done",
"需要合成的切分前文本": "합성해야 할 분할 전 텍스트",
"需要合成的文本": "합성해야 할 텍스트",
"需要合成的语种": "합성해야 할 언어",
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": ">=3이면 harvest 음고 인식 결과에 중앙값 필터를 사용하며, 값은 필터 반경이며 사용하면 소리를 약하게 할 수 있습니다",
"A模型权重": "A 모델 가중치",
"A模型路径": "A 모델 경로",
"B模型路径": "B 모델 경로",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\음성 오디오 + 주석\\Miyuki Kenshi\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0 곡선 파일, 선택 사항, 한 줄에 하나의 음고, 기본 F0 및 음조 대신 사용",
"Index Rate": "인덱스 비율",
"Onnx导出": "Onnx 내보내기",
"Onnx输出路径": "Onnx 출력 경로",
"RVC模型路径": "RVC 모델 경로",
"ckpt处理": "ckpt 처리",
"harvest进程数": "harvest 프로세스 수",
"index文件路径不可包含中文": "인덱스 파일 경로에는 중국어를 포함할 수 없습니다",
"pth文件路径不可包含中文": "pth 파일 경로에는 중국어를 포함할 수 없습니다",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe 카드 번호 구성: 각 입력에 사용되는 다른 프로세스 카드를 -로 구분하여 입력하십시오. 예: 0-0-1은 카드 0에서 2개의 프로세스를 실행하고 카드 1에서 1개의 프로세스를 실행합니다",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1: 실험 구성 입력. 실험 데이터는 logs 하위에 있으며 각 실험에 대한 폴더가 있어야합니다. 실험 이름 경로를 수동으로 입력해야하며 실험 구성, 로그, 훈련된 모델 파일이 포함되어 있습니다.",
"step1:正在处理数据": "step1: 데이터 처리 중",
"step2:正在提取音高&正在提取特征": "step2: 음고 추출 및 특징 추출 중",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a: 자동으로 훈련 폴더에서 오디오로 디코딩할 수 있는 모든 파일을 반복하고 슬라이스 정규화를 수행하여 실험 디렉토리에 2 개의 wav 폴더를 생성합니다. 현재 단일 훈련만 지원됩니다.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "step2b: CPU로 음고 추출(모델이 음고를 지원하는 경우), GPU로 특징 추출(카드 번호 선택)",
"step3: 填写训练设置, 开始训练模型和索引": "step3: 훈련 설정 입력, 모델 및 인덱스 훈련 시작",
"step3a:正在训练模型": "step3a: 모델 훈련 중",
"一键训练": "일괄 훈련",
"也可批量输入音频文件, 二选一, 优先读文件夹": "오디오 파일을 일괄로 입력할 수도 있습니다. 둘 중 하나를 선택하고 폴더를 읽기를 우선합니다.",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "-로 구분하여 입력에 사용되는 카드 번호를 지정하십시오. 예 : 0-1-2는 카드 0, 1 및 2를 사용합니다",
"伴奏人声分离&去混响&去回声": "반주 및 보컬 분리 & 리버브 제거 & 에코 제거",
"使用模型采样率": "모델 샘플링 속도 사용",
"使用设备采样率": "기기 샘플링 속도 사용",
"保存名": "저장 이름",
"保存的文件名, 默认空为和源文件同名": "저장할 파일 이름, 기본적으로 공백은 원본 파일과 동일한 이름입니다",
"保存的模型名不带后缀": "저장할 모델 이름에는 확장자가 없습니다",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "클리어 자음 및 숨소를 보호하여 전자 음향 찢김과 같은 아티팩트를 방지하려면 0.5로 설정하되, 보호 강도를 높이려면 0.5로 당기지 않고 낮추면 인덱스 효과가 감소할 수 있습니다",
"修改": "수정",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "모델 정보 수정 (weights 폴더에서 추출된 작은 모델 파일만 지원됨)",
"停止音频转换": "오디오 변환 중지",
"全流程结束!": "전체 프로세스 완료!",
"刷新音色列表和索引路径": "음색 목록 및 인덱스 경로 새로 고침",
"加载模型": "모델 로드",
"加载预训练底模D路径": "사전 훈련된 기본 모델 D 경로 로드",
"加载预训练底模G路径": "사전 훈련된 기본 모델 G 경로 로드",
"单次推理": "단일 추론",
"卸载音色省显存": "음색 언로드 및 GPU 메모리 절약",
"变调(整数, 半音数量, 升八度12降八度-12)": "음높이 변경(정수, 반음 수, 올림 높이 12 내림 높이 -12)",
"后处理重采样至最终采样率0为不进行重采样": "후 처리를 통한 최종 샘플링률 재샘플링, 0은 재샘플링 미실행",
"否": "아니오",
"启用相位声码器": "페이즈 보코더 사용",
"响应阈值": "응답 임계값",
"响度因子": "음량 요소",
"处理数据": "데이터 처리",
"导出Onnx模型": "Onnx 모델 내보내기",
"导出文件格式": "내보내기 파일 형식",
"常见问题解答": "자주 묻는 질문 해결",
"常规设置": "일반 설정",
"开始音频转换": "오디오 변환 시작",
"性能设置": "성능 설정",
"批量推理": "일괄 추론",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "일괄 변환, 변환 대기 중인 오디오 폴더를 입력하거나 여러 오디오 파일을 업로드하고 지정된 폴더(opt 기본값)에 변환된 오디오를 출력합니다.",
"指定输出主人声文件夹": "지정된 주인 목소리 출력 폴더",
"指定输出文件夹": "지정된 출력 폴더",
"指定输出非主人声文件夹": "지정된 비주인 목소리 출력 폴더",
"推理时间(ms):": "추론 시간(ms):",
"推理音色": "추론 음색",
"提取": "추출",
"提取音高和处理数据使用的CPU进程数": "음높이 추출 및 데이터 처리에 사용되는 CPU 프로세스 수 추출",
"是": "예",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "모든 훈련 세트를 GPU 메모리에 캐시할지 여부. 10분 미만의 소량 데이터는 훈련 속도를 높이기 위해 캐시할 수 있지만, 대량 데이터를 캐시하면 메모리가 터지고 속도가 크게 향상되지 않을 수 있습니다.",
"查看": "보기",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "모델 정보보기(작은 모델 파일로 추출된 weights 폴더에서만 지원)",
"检索特征占比": "특징 비율 검색",
"模型": "모델",
"模型推理": "모델 추론",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "모델 추출(로그 폴더에 대형 파일 모델 경로 입력), 반 훈련하고 싶지 않거나 모델이 자동으로 작은 파일 모델로 추출되지 않았거나 중간 모델을 테스트하려는 경우에 사용",
"模型是否带音高指导": "모델에 음높이 안내가 있는지 여부",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "모델에 음높이 안내가 있는지 여부(노래에는 필수, 음성은 선택 사항)",
"模型是否带音高指导,1是0否": "모델에 음높이 안내가 있는지 여부, 1이면 있음 0이면 없음",
"模型版本型号": "모델 버전 및 모델 번호",
"模型融合, 可用于测试音色融合": "모델 통합, 음색 통합 테스트에 사용 가능",
"模型路径": "모델 경로",
"淡入淡出长度": "페이드 인/아웃 길이",
"版本": "버전",
"特征提取": "특성 추출",
"特征检索库文件路径,为空则使用下拉的选择结果": "특성 검색 라이브러리 파일 경로, 비어 있으면 드롭다운 선택 결과 사용",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "남성을 여성으로 추천 +12키, 여성을 남성으로 추천 -12키, 음역 폭발로 음색이 왜곡되면 적절한 음역으로 직접 조절 가능",
"目标采样率": "목표 샘플링률",
"算法延迟(ms):": "알고리즘 지연 시간(ms):",
"自动检测index路径,下拉式选择(dropdown)": "자동으로 index 경로 감지, 드롭다운 선택",
"融合": "융합",
"要改的模型信息": "수정할 모델 정보",
"要置入的模型信息": "삽입할 모델 정보",
"训练": "훈련",
"训练模型": "모델 훈련",
"训练特征索引": "특성 인덱스 훈련",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "훈련 종료, 콘솔 훈련 로그 또는 실험 폴더의 train.log를 확인할 수 있습니다",
"请指定说话人id": "화자 ID 지정",
"请选择index文件": "index 파일 선택",
"请选择pth文件": "pth 파일 선택",
"请选择说话人id": "화자 ID 선택",
"转换": "변환",
"输入实验名": "실험명 입력",
"输入待处理音频文件夹路径": "처리 대기 중인 오디오 폴더 경로 입력",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "처리 대기 중인 오디오 폴더 경로 입력(파일 관리자 주소 표시 줄에서 복사하면 됨)",
"输入待处理音频文件路径(默认是正确格式示例)": "처리 대기 중인 오디오 파일 경로 입력(기본적으로 올바른 형식의 예제)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "소스 음량 에너벌롭을 입력하여 출력 음량 에너벌롭 합성 비율을 대체하면 1에 가까울수록 출력 에너벌롭 사용",
"输入监听": "입력 모니터링",
"输入训练文件夹路径": "훈련 폴더 경로 입력",
"输入设备": "입력 장치",
"输入降噪": "노이즈 감소 입력",
"输出信息": "출력 정보",
"输出变声": "음성 출력",
"输出设备": "출력 장치",
"输出降噪": "노이즈 감소 출력",
"输出音频(右下角三个点,点了可以下载)": "출력 오디오(우하단 세 점, 클릭하면 다운로드 가능)",
"选择.index文件": "index 파일 선택",
"选择.pth文件": "pth 파일 선택",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "음높이 추출 알고리즘 선택, 노래 입력에 pm 사용 가능, harvest는 저음이 좋지만 매우 느림, crepe 효과는 좋지만 GPU 사용",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "음높이 추출 알고리즘 선택, 노래 입력에 pm 사용 가능, harvest는 저음이 좋지만 매우 느림, crepe 효과는 좋지만 GPU 사용, rmvpe 효과가 가장 좋으며 약간의 GPU 사용",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "음높이 추출 알고리즘 선택: 노래 입력에 pm 사용 가능, 고품질 음성이지만 CPU가 낮음, dio 사용 가능, harvest 품질이 더 좋지만 느림, rmvpe 효과가 최고이며 CPU/GPU 약간 사용",
"采样率:": "샘플링률:",
"采样长度": "샘플링 길이",
"重载设备列表": "장치 목록 다시로드",
"音调设置": "음조 설정",
"音频设备(请使用同种类驱动)": "오디오 장치(동일한 유형의 드라이버 사용 권장)",
"音高算法": "음높이 알고리즘",
"额外推理时长": "추가 추론 시간"
"(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;": "(1)MDX-Net (onnx_dereverb): 듀얼 채널 리버브에는 가장 적합하지만, 싱글 채널 리버브는 제거할 수 없습니다",
"(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。": "(234)DeEcho:지연 효과를 제거합니다. Aggressive는 Normal보다 더 철저하게 제거하며, DeReverb는 추가로 리버브를 제거하여 단일 채널 리버브를 제거할 수 있지만 고주파 리버브는 완전히 제거하지 못합니다.",
"*GPT模型列表": "*GPT 모델 목록",
"*SoVITS模型列表": "*SoVITS 모델 목록",
"*实验/模型名": "*실험/모델 이름",
"*文本标注文件": "*텍스트 주석 파일",
"*训练集音频文件目录": "*훈련 세트 오디오 파일 디렉터리",
"*请上传并填写参考信息": "*참고 정보를 업로드하고 입력하십시오",
"*请填写需要合成的目标文本和语种模式": "*합성할 목표 텍스트와 언어 모드를 입력하세요",
".list标注文件的路径": ".list 주석 파일 경로",
".限制范围越小判别效果越好。": "다언어 지원을 줄이는 것이 더 좋습니다",
"0-前置数据集获取工具": "0-전방 데이터 세트 수집 도구",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5 보컬 및 반주 분리 및 에코 및 지연 제거 도구",
"0b-语音切分工具": "0b-음성 분리 도구",
"0bb-语音降噪工具": "0bb-음성 노이즈 제거 도구",
"0c-中文批量离线ASR工具": "0c-중국어 대량 오프라인 ASR 도구",
"0d-语音文本校对标注工具": "0d-음성 텍스트 교정 주석 도구",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"1A-训练集格式化工具": "1A-훈련 세트 형식 지정 도구",
"1Aa-文本内容": "1Aa-텍스트 내용",
"1Aabc-训练集格式化一键三连": "1Aabc-훈련 세트 형식 지정 일괄 처리",
"1Ab-SSL自监督特征提取": "1Ab-SSL 자기 지도 특징 추출",
"1Ac-语义token提取": "1Ac-의미 토큰 추출",
"1B-微调训练": "1B-미세 조정 훈련",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITS 훈련. 공유 용 모델 파일은 SoVITS_weights 하위에 출력됩니다.",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPT 훈련. 공유 용 모델 파일은 GPT_weights 하위에 출력됩니다.",
"1C-推理": "1C-추론",
"1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍": "1. DeEcho-DeReverb 모델의 처리 시간은 다른 두 DeEcho 모델의 거의 두 배입니다;",
"1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点": "1. 사람 목소리를 유지: 화음이 없는 오디오를 선택하면 HP5보다 사람 목소리를 더 잘 유지할 수 있습니다. 내장된 HP2와 HP3 모델이 있으며, HP3는 화음을 약간 놓칠 수 있지만 HP2보다 사람 목소리를 조금 더 잘 유지합니다;",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-음성 변환",
"2、MDX-Net-Dereverb模型挺慢的": "2. MDX-Net-Dereverb 모델은 꽤 느립니다;",
"2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型": "2. 주 목소리만 유지: 화음이 있는 오디오에 이 모델을 선택하면 주 목소리가 약해질 수 있습니다. 내장된 HP5 모델이 있습니다;",
"3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "3. 개인적으로 가장 깨끗한 설정은 먼저 MDX-Net을 사용하고 그 다음에 DeEcho-Aggressive를 사용하는 것입니다;",
"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 프로세스 출력 정보",
"SoVITS模型列表": "SoVITS 모델 목록",
"SoVITS训练进程输出信息": "SoVITS 훈련 프로세스 출력 정보",
"TTS推理WebUI进程输出信息": "TTS 추론 WebUI 프로세스 출력 정보",
"TTS推理进程已关闭": "TTS 추론 프로세스가 닫혔습니다",
"TTS推理进程已开启": "TTS 추론 프로세스가 열렸습니다",
"UVR5已关闭": "UVR5가 비활성화되었습니다",
"UVR5已开启": "UVR5가 활성화되었습니다",
"UVR5进程输出信息": "UVR5 프로세스 출력 정보",
"alpha_mix:混多少比例归一化后音频进来": "알파 믹스: 정규화된 오디오가 들어오는 비율",
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop 크기: 볼륨 곡선을 계산하는 방법. 작을수록 정확도가 높아지지만 계산량이 높아집니다 (정확도가 높다고 효과가 좋아지지 않음)",
"max:归一化后最大值多少": "최대 값 (정규화 후)",
"max_sil_kept:切完后静音最多留多长": "최대 유지되는 정적 길이 (분리 후)",
"min_interval:最短切割间隔": "최소 분리 간격",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length:각 부분의 최소 길이, 첫 번째 부분이 너무 짧으면 다음 부분과 계속 연결하여 이 값을 초과할 때까지",
"temperature": "temperature",
"threshold:音量小于这个值视作静音的备选切割点": "임계 값: 이 값보다 작은 볼륨은 대체 분리 지점으로 간주됩니다.",
"top_k": "top_k",
"top_p": "top_p",
"一键三连进程输出信息": "일괄 처리 프로세스 출력 정보",
"不切": "자르지 않음",
"中文": "중국어",
"中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e": "중국어 튜토리얼 문서https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e",
"中英混合": "중영 혼합",
"也可批量输入音频文件, 二选一, 优先读文件夹": "오디오 파일을 일괄로 입력할 수도 있습니다. 둘 중 하나를 선택하고 폴더를 읽기를 우선합니다.",
"人声伴奏分离批量处理, 使用UVR5模型。": "보컬과 반주 분리 배치 처리, UVR5 모델 사용.",
"人声提取激进程度": "보컬 추출의 공격성",
"以下文件或文件夹不存在": "해당 파일이나 폴더가 없습니다",
"以下模型不存在:": "해당 모델이 존재하지 않습니다:",
"伴奏人声分离&去混响&去回声": "반주 및 보컬 분리 & 리버브 제거 & 에코 제거",
"使用无参考文本模式时建议使用微调的GPT听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "참고 텍스트가 없을 때는 미세 조정된 GPT를 사용하는 것이 좋습니다. 참고 오디오에서 무엇을 말하는지 잘 들리지 않으면 이 모드를 켜서 입력한 참고 텍스트를 무시할 수 있습니다.",
"保存频率save_every_epoch": "저장 빈도 (각 라운드마다)",
"关闭TTS推理WebUI": "TTS Inference WebUI 닫기",
"关闭UVR5-WebUI": "UVR5-WebUI 닫기",
"关闭打标WebUI": "Labeling WebUI 닫기",
"凑50字一切": "50자를 채우십시오",
"凑四句一切": "네 문장의 세트를 완성하세요.",
"切分后的子音频的输出根目录": "분리된 하위 오디오의 출력 기본 디렉터리",
"切割使用的进程数": "사용되는 프로세스 수로 자르기",
"刷新模型路径": "모델 경로 새로 고침",
"前端处理后的文本(每句):": "프론트엔드 처리 후 텍스트(문장별):",
"去混响/去延迟,附:": "리버브 제거/지연 제거, 부록:",
"参考音频在3~10秒范围外请更换": "참고 오디오가 3~10초 범위를 벗어났습니다. 다른 것으로 바꾸십시오!",
"参考音频的文本": "참고 오디오의 텍스트",
"参考音频的语种": "참고 오디오의 언어",
"可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。": "선택 사항: 여러 참조 오디오 파일을 드래그하여 업로드하고 (동일한 성별을 권장), 그들의 톤을 평균화합니다. 이 옵션을 비워두면 톤은 왼쪽의 단일 참조 오디오로 제어됩니다. 모델을 미세 조정하는 경우 모든 참조 오디오 파일이 미세 조정 훈련 세트 내의 톤을 가지고 있는 것이 좋으며, 사전 훈련된 모델은 무시할 수 있습니다.",
"合成语音": "합성 음성",
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "적절한 폴더 경로 형식 예: E:\\codes\\py39\\vits_vc_gpu\\백로서리 테스트 샘플 (파일 관리자 주소 표시줄에서 복사하면 됩니다).",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。如果留空则使用.list文件里的绝对全路径。": "분리된 오디오가 위치한 디렉터리를 입력하세요! 읽어들인 오디오 파일의 전체 경로 = 이 디렉터리 - list 파일에서 파형에 해당하는 파일명(전체 경로가 아님). 비워 두면 .list 파일의 절대 전체 경로를 사용합니다.",
"多语种混合": "다국어 혼합",
"多语种混合(粤语)": "다국어 혼합(粤語)",
"实际输入的参考文本:": "실제 입력된 참고 텍스트:",
"实际输入的目标文本(切句后):": "실제 입력된 목표 텍스트(문장 분리 후):",
"实际输入的目标文本(每句):": "실제 입력된 목표 텍스트(문장별):",
"实际输入的目标文本:": "실제 입력된 목표 텍스트:",
"导出文件格式": "내보내기 파일 형식",
"开启GPT训练": "GPT 훈련 활성화",
"开启SSL提取": "SSL 추출 활성화",
"开启SoVITS训练": "SoVITS 훈련 활성화",
"开启TTS推理WebUI": "TTS Inference WebUI 열기",
"开启UVR5-WebUI": "UVR5-WebUI 열기",
"开启一键三连": "일괄 처리 활성화",
"开启打标WebUI": "Labeling WebUI 열기",
"开启文本获取": "텍스트 추출 활성화",
"开启无参考文本模式。不填参考文本亦相当于开启。": "참고 텍스트 없이 모드를 활성화합니다. 참고 텍스트를 입력하지 않으면 자동으로 활성화됩니다.",
"开启离线批量ASR": "오프라인 대량 ASR 활성화",
"开启语义token提取": "의미 토큰 추출 활성화",
"开启语音切割": "음성 분리 활성화",
"开启语音降噪": "음성 노이즈 제거 활성화",
"怎么切": "자르기 옵션",
"总训练轮数total_epoch": "총 훈련 라운드 수 (total_epoch)",
"总训练轮数total_epoch不建议太高": "총 훈련 라운드 수 (total_epoch), 너무 높지 않게 권장됨",
"打标工具WebUI已关闭": "주석 도구 WebUI가 닫혔습니다",
"打标工具WebUI已开启": "주석 도구 WebUI가 열렸습니다",
"打标工具进程输出信息": "주석 도구 프로세스 출력 정보",
"指定输出主人声文件夹": "지정된 주인 목소리 출력 폴더",
"指定输出非主人声文件夹": "지정된 비주인 목소리 출력 폴더",
"按中文句号。切": "중국어 문장으로 분리하십시오.",
"按标点符号切": "구두점을 기준으로 자르기",
"按英文句号.切": "영어 문장으로 분리하기",
"数据类型精度": "데이터 유형 정밀도",
"文本模块学习率权重": "텍스트 모듈 학습률 가중치",
"文本进程输出信息": "텍스트 프로세스 출력 정보",
"施工中,请静候佳音": "공사 중입니다. 기다려주십시오.",
"日文": "일본어",
"日英混合": "일본어와 영어 혼합",
"是否仅保存最新的ckpt文件以节省硬盘空间": "디스크 공간을 절약하기 위해 최신 ckpt 파일만 저장할지 여부",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "각 저장 시간에 최종 작은 모델을 weights 폴더에 저장할지 여부",
"是否开启dpo训练选项(实验性)": "dpo 훈련 옵션(실험적) 활성화 여부",
"是否直接对上次合成结果调整语速和音色。防止随机性。": "랜덤성을 방지하기 위해 마지막 합성 결과의 말하기 속도와 톤을 조정합니다.",
"显卡信息": "그래픽 카드 정보",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "본 소프트웨어는 MIT 라이선스로 오픈 소스로 제공되며, 제작자는 소프트웨어에 대해 어떠한 제어력도 가지지 않습니다. 소프트웨어 사용자 및 소프트웨어에서 내보낸 소리를 전파하는 자는 전적으로 책임져야 합니다. <br>이 조항을 인정하지 않으면 소프트웨어의 코드 및 파일을 사용하거나 인용할 수 없습니다. 루트 디렉터리의 <b>LICENSE</b>를 참조하십시오.",
"模型": "모델",
"模型分为三类:": "모델은 3가지로 나뉩니다:",
"模型切换": "모델 전환",
"每张显卡的batch_size": "각 그래픽 카드의 배치 크기",
"版本": "버전",
"粤英混合": "粤영 혼합",
"粤语": "粤語",
"终止ASR进程": "ASR 프로세스 종료",
"终止GPT训练": "GPT 훈련 종료",
"终止SSL提取进程": "SSL 추출 프로세스 종료",
"终止SoVITS训练": "SoVITS 훈련 종료",
"终止一键三连": "일괄 처리 종료",
"终止文本获取进程": "텍스트 추출 프로세스 종료",
"终止语义token提取进程": "의미 토큰 추출 프로세스 종료",
"终止语音切割": "음성 분리 종료",
"终止语音降噪进程": "음성 노이즈 제거 프로세스 종료",
"缺少Hubert数据集": "Hubert 데이터셋이 없습니다",
"缺少语义数据集": "의미론 데이터셋이 없습니다",
"缺少音素数据集": "음소 데이터셋이 없습니다",
"缺少音频数据集": "오디오 데이터셋이 없습니다",
"英文": "영어",
"语义token提取进程输出信息": "의미 토큰 추출 프로세스 출력 정보",
"语速": "언어 속도",
"语速调整,高为更快": "언어 속도 조정, 높을수록 빠름",
"语音切割进程输出信息": "음성 분리 프로세스 출력 정보",
"语音降噪进程输出信息": "음성 노이즈 제거 프로세스 출력 정보",
"请上传3~10秒内参考音频超过会报错": "3~10초 이내의 참고 오디오를 업로드하십시오. 초과하면 오류가 발생합니다!",
"请上传参考音频": "참고 오디오를 업로드하세요",
"请填入推理文本": "목표 텍스트를 입력하세요",
"请填入正确的List路径": "올바른 리스트 경로를 입력하세요",
"请填入正确的音频文件夹路径": "올바른 오디오 폴더 경로를 입력하세요",
"请输入有效文本": "유효한 텍스트를 입력하세요",
"路径不能为空": "경로가 비어 있을 수 없습니다",
"路径错误": "경로 오류",
"转换": "변환",
"输入待处理音频文件夹路径": "처리 대기 중인 오디오 폴더 경로 입력",
"输入文件夹路径": "폴더 경로 입력",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "logs/실험 이름 디렉터리에는 23456으로 시작하는 파일과 폴더가 있어야 함",
"输出信息": "출력 정보",
"输出文件夹路径": "출력 폴더 경로",
"输出的语音": "출력 음성",
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。": "SoVITS_weights 및 GPT_weights에 저장된 훈련 완료된 모델 중 선택. 기본적으로 하나는 기본 모델이며 5초 Zero Shot TTS를 체험할 수 있습니다.",
"降噪结果输出文件夹": "노이즈 제거 결과 출력 폴더",
"降噪音频文件输入文件夹": "노이즈 제거 오디오 파일 입력 폴더",
"需要合成的文本": "합성해야 할 텍스트",
"需要合成的语种": "합성해야 할 언어",
"韩文": "한국어",
"韩英混合": "한영 혼합",
"音频加载失败": "오디오 로드 실패",
"音频自动切分输入路径,可文件可文件夹": "오디오 자동 분리 입력 경로, 파일 또는 폴더 가능",
"预训练的GPT模型路径": "사전 훈련된 GPT 모델 경로",
"预训练的SSL模型路径": "사전 훈련된 SSL 모델 경로",
"预训练的SoVITS-D模型路径": "사전 훈련된 SoVITS-D 모델 경로",
"预训练的SoVITS-G模型路径": "사전 훈련된 SoVITS-G 모델 경로",
"预训练的中文BERT模型路径": "사전 훈련된 중국어 BERT 모델 경로"
}

View File

@ -0,0 +1,192 @@
{
"(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;": "(1)MDX-Net (onnx_dereverb): É a melhor opção para reverberação de dois canais, mas não pode remover a reverberação de um único canal;",
"(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。": "(234)DeEcho:Remove os efeitos de atraso. Aggressive é mais completo que Normal na remoção, DeReverb remove adicionalmente a reverberação, pode remover a reverberação de um canal único, mas não remove completamente a reverberação de placa de alta frequência.",
"*GPT模型列表": "*Lista de modelos GPT",
"*SoVITS模型列表": "*Lista de modelos Sovits",
"*实验/模型名": "*Nome do experimento/modelo",
"*文本标注文件": "*Arquivo de marcação de texto",
"*训练集音频文件目录": "*Diretório de arquivos de áudio do conjunto de treinamento",
"*请上传并填写参考信息": "Por favor, faça o upload e preencha as informações de referência",
"*请填写需要合成的目标文本和语种模式": "*Por favor, insira o texto alvo a ser sintetizado e o modo de idioma.",
".list标注文件的路径": "Caminho do arquivo de anotação .list",
".限制范围越小判别效果越好。": "Menos multilinguismo é melhor",
"0-前置数据集获取工具": "0- Ferramenta de aquisição de conjunto de dados pré-frontal",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0A-UVR5 separação de voz e acompanhamento instrumental & ferramenta para remover reverberação e atraso",
"0b-语音切分工具": "0b- Ferramenta de corte de voz",
"0bb-语音降噪工具": "0bb- Ferramenta de redução de ruído de voz",
"0c-中文批量离线ASR工具": "0c- Ferramenta chinesa de ASR offline em lote",
"0d-语音文本校对标注工具": "0d- Ferramenta de correção e marcação de texto de voz",
"1-GPT-SoVITS-TTS": "1-GPT-SOVITS-TTS",
"1A-训练集格式化工具": "1A-Ferramenta de formatação de conjunto de dados de treinamento",
"1Aa-文本内容": "1AA-Conteúdo do texto",
"1Aabc-训练集格式化一键三连": "1AABC-Formatação de conjunto de treinamento em um clique",
"1Ab-SSL自监督特征提取": "1AB-Extração de características auto-supervisionadas SSL",
"1Ac-语义token提取": "1AC-Extração de token semântico",
"1B-微调训练": "1B-Treinamento de ajuste fino",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1ba-Treinamento SoVITS. O arquivo de modelo para compartilhamento é gerado em SOVITS_WEIGHTS",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1BB-Treinamento GPT. O arquivo de modelo para compartilhamento é gerado em GPT_WEIGHTS",
"1C-推理": "1C-raciocínio",
"1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍": "1. O tempo de processamento do modelo DeEcho-DeReverb é quase o dobro dos outros dois modelos DeEcho;",
"1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点": "1. Manter a voz: selecione isso para áudio sem harmonia, que preserva melhor a voz principal do que o HP5. Inclui dois modelos, HP2 e HP3; o HP3 pode permitir um pequeno vazamento de acompanhamento, mas preserva a voz principal um pouco melhor do que o HP2;",
"2-GPT-SoVITS-变声": "2-gpt-sovits-mudança de voz",
"2、MDX-Net-Dereverb模型挺慢的": "2. O modelo MDX-Net-Dereverb é bastante lento;",
"2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型": "2. Manter apenas a voz principal: selecione isso para áudio com harmonia, pode haver uma redução na voz principal. Inclui um modelo HP5;",
"3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "3. A configuração mais limpa recomendada é usar primeiro o MDX-Net e depois o DeEcho-Aggressive.",
"3、去混响、去延迟模型by FoxJoy": "3. Modelo de remoção de reverberação e atraso (por FoxJoy):",
"ASR 模型": "Modelo ASR",
"ASR 模型尺寸": "Tamanho do modelo ASR",
"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",
"SoVITS模型列表": "Lista de modelos SoVITS",
"SoVITS训练进程输出信息": "Informações de saída do processo de treinamento SoVITS",
"TTS推理WebUI进程输出信息": "Informações de saída do processo webui de raciocínio TTS",
"TTS推理进程已关闭": "O processo de inferência TTS foi desativado",
"TTS推理进程已开启": "O processo de inferência TTS foi iniciado",
"UVR5已关闭": "UVR5 está desativado",
"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",
"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",
"min_interval:最短切割间隔": "min_interval: O intervalo de corte mínimo",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length: Comprimento mínimo de cada segmento. Se o primeiro segmento for muito curto, ele será unido aos segmentos seguintes até exceder este valor",
"temperature": "temperatura",
"threshold:音量小于这个值视作静音的备选切割点": "Limiar: O volume menor que este valor é considerado como um ponto de corte mudo alternativo",
"top_k": "top_k",
"top_p": "top_p",
"一键三连进程输出信息": "Informações de saída do processo de um clique",
"不切": "Não dividir",
"中文": "Chinês",
"中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e": "Documentação do tutorial em chinêshttps://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e",
"中英混合": "Mistura de Chinês e Inglês",
"也可批量输入音频文件, 二选一, 优先读文件夹": "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 Arquivo ou Pasta Encontrado",
"以下模型不存在:": "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",
"关闭TTS推理WebUI": "Fechar TTS Inference WebUI",
"关闭UVR5-WebUI": "Fechar UVR5-WebUI",
"关闭打标WebUI": "Fechar Labeling WebUI",
"凑50字一切": "Complete com 50 caracteres",
"凑四句一切": "Complete com quatro frases",
"切分后的子音频的输出根目录": "Diretório raiz de saída do sub-áudio após o corte",
"切割使用的进程数": "Número de processos para corte",
"刷新模型路径": "Atualizar caminho do modelo",
"前端处理后的文本(每句):": "Texto após processamento front-end (por frase):",
"去混响/去延迟,附:": "Remoção de reverberação/remoção de atraso, anexo:",
"参考音频在3~10秒范围外请更换": "O áudio de referência está fora do intervalo de 3 a 10 segundos. Por favor, substitua!",
"参考音频的文本": "Texto do áudio de referência",
"参考音频的语种": "Idioma do áudio de referência",
"可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。": "Opcional: Faça upload de vários arquivos de áudio de referência arrastando e soltando-os (recomendado que sejam do mesmo gênero) e faça uma média dos seus tons. Se essa opção for deixada em branco, o tom será controlado pelo único áudio de referência à esquerda. Se estiver ajustando o modelo, é recomendado que todos os arquivos de áudio de referência tenham tons dentro do conjunto de treinamento de ajuste; o modelo pré-treinado pode ser ignorado.",
"合成语音": "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).",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-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):",
"实际输入的目标文本:": "Texto alvo realmente inserido:",
"导出文件格式": "Formato de arquivo de exportação",
"开启GPT训练": "Ativar treinamento GPT",
"开启SSL提取": "Ativar extração SSL",
"开启SoVITS训练": "Ativar treinamento SoVITS",
"开启TTS推理WebUI": "Abrir TTS Inference WebUI",
"开启UVR5-WebUI": "Abrir UVR5-WebUI",
"开启一键三连": "Ativar um clique",
"开启打标WebUI": "Abrir Labeling WebUI",
"开启文本获取": "Ativar obtenção de texto",
"开启无参考文本模式。不填参考文本亦相当于开启。": "Ativar o modo sem texto de referência. Não preencher o texto de referência também equivale a ativar.",
"开启离线批量ASR": "Ativar ASR offline em lote",
"开启语义token提取": "Ativar extração de token semântico",
"开启语音切割": "Ativar corte de voz",
"开启语音降噪": "Ativar redução de ruído de voz",
"怎么切": "Como cortar",
"总训练轮数total_epoch": "Total de epoch de treinamento",
"总训练轮数total_epoch不建议太高": "Total de epoch de treinamento, não é recomendável um valor muito alto",
"打标工具WebUI已关闭": "A ferramenta de marcação WebUI foi desativado",
"打标工具WebUI已开启": "A ferramenta de marcação WebUI está ativada",
"打标工具进程输出信息": "Informações de saída do processo da ferramenta de marcação",
"指定输出主人声文件夹": "Especificar a pasta de saída da voz principal",
"指定输出非主人声文件夹": "Especificar a pasta de saída da voz secundária",
"按中文句号。切": "Dividir por ponto final chinês",
"按标点符号切": "Dividir por sinais de pontuação",
"按英文句号.切": "Dividir por ponto final em inglês",
"数据类型精度": "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",
"日文": "Japonês",
"日英混合": "Mistura de Japonês e Inglês",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Se deve salvar apenas o último arquivo CKPT para economizar espaço em disco",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Se deve salvar o modelo pequeno final na pasta Weights em cada ponto de salvamento de tempo",
"是否开启dpo训练选项(实验性)": "Se deseja ativar a opção de treinamento DPO (experimental)",
"是否直接对上次合成结果调整语速和音色。防止随机性。": "Ajuste a velocidade da fala e o tom do último resultado de síntese para evitar aleatoriedade.",
"显卡信息": "Informações da placa de vídeo",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Este software é de código aberto sob a licença MIT. O autor não tem controle sobre o software. Aqueles que usam o software e difundem os sons exportados pelo software são totalmente responsáveis. <br>Se você não concorda com esta cláusula, não pode usar ou citar nenhum código e arquivo dentro do pacote de software. Consulte o diretório raiz <b>LICENSE</b> para mais detalhes.<br><br> Traduzido por Rafael Godoy Ebert",
"模型": "Modelo",
"模型分为三类:": "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",
"终止SoVITS训练": "Encerrar treinamento SoVITS",
"终止一键三连": "Encerrar um clique",
"终止文本获取进程": "Encerrar processo de obtenção de texto",
"终止语义token提取进程": "Encerrar processo de extração de token semântico",
"终止语音切割": "Encerrar corte de voz",
"终止语音降噪进程": "Encerrar o processo de redução de ruído de voz",
"缺少Hubert数据集": "Conjunto de Dados Hubert Ausente",
"缺少语义数据集": "Conjunto de Dados Semânticos Ausente",
"缺少音素数据集": "Conjunto de Dados de Fonemas Ausente",
"缺少音频数据集": "Conjunto de Dados de Áudio Ausente",
"英文": "Inglês",
"语义token提取进程输出信息": "Informações de saída do processo de extração de token semântico",
"语速": "Velocidade da fala",
"语速调整,高为更快": "Ajustar a velocidade da fala, mais alta para mais rápido",
"语音切割进程输出信息": "Informações de saída do processo de corte de voz",
"语音降噪进程输出信息": "Informações de saída do processo de redução de ruído de voz",
"请上传3~10秒内参考音频超过会报错": "Por favor, faça upload de um áudio de referência com duração entre 3 e 10 segundos. Áudios fora dessa faixa causarão erro!",
"请上传参考音频": "Por Favor, Carregue o Áudio de Referência",
"请填入推理文本": "Por Favor, Preencha o Texto de Inferência",
"请填入正确的List路径": "Por Favor, Insira o Caminho Correto da Lista",
"请填入正确的音频文件夹路径": "Por Favor, Insira o Caminho Correto da Pasta de Áudio",
"请输入有效文本": "Por favor, insira um texto válido",
"路径不能为空": "Esperado Caminho Não Vazio",
"路径错误": "Erro de Caminho",
"转换": "Converter",
"输入待处理音频文件夹路径": "Caminho da pasta de arquivos de áudio a ser processados",
"输入文件夹路径": "Caminho da pasta de entrada",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "Logs de saída/deve haver arquivos e pastas começando com 23456 no diretório do nome do experimento",
"输出信息": "Informações de saída",
"输出文件夹路径": "Caminho da pasta de saída",
"输出的语音": "Áudio de saída",
"选择训练完存放在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",
"需要合成的语种": "Idioma a ser sintetizado",
"韩文": "Coreano",
"韩英混合": "Mistura Coreano-Inglês",
"音频加载失败": "Falha ao Carregar o Áudio",
"音频自动切分输入路径,可文件可文件夹": "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",
"预训练的SoVITS-D模型路径": "Caminho do modelo SoVITS-D pre-train",
"预训练的SoVITS-G模型路径": "Caminho do modelo SoVITS-G pre-train",
"预训练的中文BERT模型路径": "Caminho do modelo BERT chinês pre-train"
}

View File

@ -1,135 +1,192 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "Если значение больше 3: применить медианную фильтрацию к вытащенным тональностям. Значение контролирует радиус фильтра и может уменьшить излишнее дыхание.",
"A模型权重": "Весы (w) модели А:",
"A模型路径": "Путь к модели А:",
"B模型路径": "Путь к модели Б:",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "Файл дуги F0 (не обязательно). Одна тональность на каждую строчку. Заменяет обычный F0 и модуляцию тональности:",
"Index Rate": "Темп индекса",
"Onnx导出": "Экспорт ONNX",
"Onnx输出路径": "Путь для сохранения модели в формате ONNX:",
"RVC模型路径": "Путь к модели RVC:",
"ckpt处理": "Обработка ckpt",
"harvest进程数": "Количество процессор harvest",
"index文件路径不可包含中文": "Путь к файлу индекса",
"pth文件路径不可包含中文": "Путь к файлу pth",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Введите номера графических процессоров, разделенные символом «-», например, 0-0-1, чтобы запустить два процесса на GPU 0 и один процесс на GPU 1:",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Шаг 1. Конфигурирование модели. Данные обучения модели сохраняются в папку 'logs', и для каждой модели создаётся отдельная папка. Введите вручную путь к настройкам для модели, в которой находятся логи и тренировочные файлы.",
"step1:正在处理数据": "Шаг 1. Переработка данных",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Шаг 2А. Автоматическая обработка исходных аудиозаписей для обучения и выполнение нормализации среза. Создаст 2 папки wav в папке модели. В данный момент поддерживается обучение только на одноголосных записях.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Шаг 2Б. Оценка и извлечение тональности в аудиофайлах с помощью процессора (если включена поддержка изменения высоты звука), извлечение черт с помощью GPU (выберите номер GPU):",
"step3: 填写训练设置, 开始训练模型和索引": "Шаг 3. Заполнение дополнительных настроек обучения и запуск обучения модели и индекса",
"step3a:正在训练模型": "Шаг 3. Запуск обучения модели",
"一键训练": "Обучение в одно нажатие",
"(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;": "(1)MDX-Net(onnx_dereverb):Это лучший выбор для реверберации с двумя каналами, но он не может устранить реверберацию с одним каналом;",
"(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。": "(234)DeEcho:Устраняет эффект задержки. Aggressive устраняет более тщательно, чем Normal, DeReverb дополнительно устраняет реверберацию, может устранить реверберацию с одного канала, но не полностью устраняет высокочастотную реверберацию.",
"*GPT模型列表": "*Список моделей GPT",
"*SoVITS模型列表": "*Список моделей SoVITS",
"*实验/模型名": "*Название эксперимента/модели",
"*文本标注文件": "*Файл текстовой аннотации",
"*训练集音频文件目录": "*Директория аудиофайлов обучающего набора",
"*请上传并填写参考信息": "*Пожалуйста, загрузите и заполните референтные данные",
"*请填写需要合成的目标文本和语种模式": "*Пожалуйста, введите целевой текст для синтеза и режим языка",
".list标注文件的路径": "Путь к файлу аннотации .list",
".限制范围越小判别效果越好。": "Чем меньше языков, тем лучше",
"0-前置数据集获取工具": "0-Инструмент для получения предварительного набора данных",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-Инструмент для разделения вокала и аккомпанемента UVR5 & устранения реверберации и задержек",
"0b-语音切分工具": "0b-Инструмент для разделения речи",
"0bb-语音降噪工具": "0bb-Инструмент для подавления шумов в голосе",
"0c-中文批量离线ASR工具": "0c-Инструмент для пакетной офлайн ASR на китайском",
"0d-语音文本校对标注工具": "0d-Инструмент для коррекции и аннотации текста речи",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"1A-训练集格式化工具": "1A-Инструмент для форматирования обучающего набора",
"1Aa-文本内容": "1Aa-Содержание текста",
"1Aabc-训练集格式化一键三连": "1Aabc-Форматирование обучающего набора одним нажатием",
"1Ab-SSL自监督特征提取": "1Ab-Самоконтролируемое извлечение признаков SSL",
"1Ac-语义token提取": "1Ac-Извлечение семантических токенов",
"1B-微调训练": "1B-Дообучение",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-Обучение SoVITS. Файлы моделей для распространения находятся в SoVITS_weights.",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-Обучение GPT. Файлы моделей для распространения находятся в GPT_weights.",
"1C-推理": "1C-Инференс",
"1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍": "1. Время обработки модели DeEcho-DeReverb почти вдвое больше, чем у двух других моделей DeEcho;",
"1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点": "1. Сохранение голоса: выберите этот для аудио без гармоний, сохранение голоса будет лучше, чем HP5. Встроенные модели HP2 и HP3, HP3 может немного пропускать сопровождение, но сохраняет голос немного лучше, чем HP2;",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-переозвучивание",
"2、MDX-Net-Dereverb模型挺慢的": "2. Модель MDX-Net-Dereverb довольно медленная;",
"2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型": "2. Сохранение только основного голоса: выберите это для аудио с гармониями, может ослабить основной голос. Встроенная модель HP5;",
"3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "3. Лично рекомендованная самая чистая конфигурация — сначала MDX-Net, затем DeEcho-Aggressive.",
"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",
"SoVITS模型列表": "Список моделей SoVITS",
"SoVITS训练进程输出信息": "Информация о процессе обучения SoVITS",
"TTS推理WebUI进程输出信息": "Информация о процессе TTS инференса WebUI",
"TTS推理进程已关闭": "Процесс TTS-инференции остановлен",
"TTS推理进程已开启": "Процесс TTS-инференции запущен",
"UVR5已关闭": "UVR5 выключен",
"UVR5已开启": "UVR5 включен",
"UVR5进程输出信息": "Вывод информации процесса UVR5",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix:Какая доля нормализованного аудио смешивается",
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size:Как рассчитывается кривая громкости, чем меньше, тем выше точность и больше вычислительная нагрузка (большая точность не всегда означает лучший результат)",
"max:归一化后最大值多少": "max:Максимальное значение после нормализации",
"max_sil_kept:切完后静音最多留多长": "max_sil_kept:Максимальная длительность тишины после разреза",
"min_interval:最短切割间隔": "min_interval:Минимальный интервал разреза",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length:Минимальная длина каждого отрезка; если первый отрезок слишком короткий, он будет соединен с последующими до достижения этого значения",
"temperature": "temperature",
"threshold:音量小于这个值视作静音的备选切割点": "threshold:Значение громкости ниже этого считается тишиной для альтернативной точки разреза",
"top_k": "top_k",
"top_p": "top_p",
"一键三连进程输出信息": "Информация о процессе одного нажатия",
"不切": "Не разрезать",
"中文": "Китайский",
"中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e": "Документация на китайском языкеhttps://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e",
"中英混合": "Китайский и английский",
"也可批量输入音频文件, 二选一, 优先读文件夹": "Можно также импортировать несколько аудиофайлов. Если путь к папке существует, то этот ввод игнорируется.",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "Пакетная обработка для разделения вокального сопровождения с использованием модели UVR5.<br>Пример допустимого формата пути к папке: D:\\path\\to\\input\\folder<br> Модель разделена на три категории:<br>1. Сохранить вокал: выберите этот вариант для звука без гармоний. Он сохраняет вокал лучше, чем HP5. Он включает в себя две встроенные модели: HP2 и HP3. HP3 может немного пропускать инструментал, но сохраняет вокал немного лучше, чем HP2.<br>2. Сохранить только основной вокал: выберите этот вариант для звука с гармониями. Это может ослабить основной вокал. Он включает одну встроенную модель: HP5.<br>3. Модели удаления реверберации и задержки (от FoxJoy):<br>(1) MDX-Net: лучший выбор для удаления стереореверберации, но он не может удалить монореверберацию;<br>&emsp;(234) DeEcho: удаляет эффекты задержки. Агрессивный режим удаляет более тщательно, чем Нормальный режим. DeReverb дополнительно удаляет реверберацию и может удалять монореверберацию, но не очень эффективно для сильно реверберированного высокочастотного контента.<br>Примечания по удалению реверберации/задержки:<br>1. Время обработки для модели DeEcho-DeReverb примерно в два раза больше, чем для двух других моделей DeEcho.<br>2. Модель MDX-Net-Dereverb довольно медленная.<br>3. Рекомендуемая самая чистая конфигурация — сначала применить MDX-Net, а затем DeEcho-Aggressive.",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Введите, какие(-ую) GPU(-у) хотите использовать через '-', например 0-1-2, чтобы использовать GPU с номерами 0, 1 и 2:",
"人声伴奏分离批量处理, 使用UVR5模型。": "Обработка разделения вокала и аккомпанемента пакетно с использованием модели UVR5.",
"人声提取激进程度": "Степень агрессивности извлечения вокала",
"以下文件或文件夹不存在": "Такого файла или папки не существует",
"以下模型不存在:": "Этот модель не существует",
"伴奏人声分离&去混响&去回声": "Разделение вокала/аккомпанемента и удаление эхо",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "Имя файла для сохранения:",
"保存的文件名, 默认空为和源文件同名": "Название сохранённого файла (по умолчанию: такое же, как и у входного):",
"保存的模型名不带后缀": "Имя файла модели для сохранения (без расширения):",
"保存频率save_every_epoch": "Частота сохранения (save_every_epoch):",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Защитить глухие согласные и звуки дыхания для предотвращения артефактов, например, разрывания в электронной музыке. Поставьте на 0.5, чтобы выключить. Уменьшите значение для повышения защиты, но учтите, что при этом может ухудшиться точность индексирования:",
"修改": "Изменить",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Изменить информацию о модели (работает только с маленькими моделями, взятыми из папки 'weights')",
"停止音频转换": "Закончить конвертацию аудио",
"全流程结束!": "Все процессы завершены!",
"刷新音色列表和索引路径": "Обновить список голосов и индексов",
"加载模型": "Загрузить модель",
"加载预训练底模D路径": "Путь к предварительно обученной базовой модели D:",
"加载预训练底模G路径": "Путь к предварительно обученной базовой модели G:",
"单次推理": "单次推理",
"卸载音色省显存": "Выгрузить модель из памяти GPU для освобождения ресурсов",
"变调(整数, 半音数量, 升八度12降八度-12)": "Изменить высоту голоса (укажите количество полутонов; чтобы поднять голос на октаву, выберите 12, понизить на октаву — -12):",
"后处理重采样至最终采样率0为不进行重采样": "Изменить частоту дискретизации в выходном файле на финальную. Поставьте 0, чтобы ничего не изменялось:",
"否": "Нет",
"启用相位声码器": "启用相位声码器",
"响应阈值": "Порог ответа",
"响度因子": "коэффициент громкости",
"处理数据": "Обработать данные",
"导出Onnx模型": "Экспортировать модель",
"使用无参考文本模式时建议使用微调的GPT听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "При использовании режима без референсного текста рекомендуется использовать настроенную модель GPT. Если не удается разобрать, что говорит референсное аудио (не знаете, что писать), можете включить этот режим, и он проигнорирует введенный референсный текст.",
"保存频率save_every_epoch": "Частота сохранения save_every_epoch",
"关闭TTS推理WebUI": "Закрыть TTS Inference WebUI",
"关闭UVR5-WebUI": "Закрыть UVR5-WebUI",
"关闭打标WebUI": "Закрыть Labeling WebUI",
"凑50字一切": "Соберите все в 50 символов",
"凑四句一切": "Собрать четыре предложения и разрезать",
"切分后的子音频的输出根目录": "Корневой каталог вывода для подаудио после разделения",
"切割使用的进程数": "Количество процессов, используемых для разрезания",
"刷新模型路径": "Обновить путь к модели",
"前端处理后的文本(每句):": "Текст после предварительной обработки (каждое предложение):",
"去混响/去延迟,附:": "Удаление реверберации/удаление задержки, примечание:",
"参考音频在3~10秒范围外请更换": "Референтное аудио вне диапазона 3~10 секунд, пожалуйста, замените!",
"参考音频的文本": "Текст референтного аудио",
"参考音频的语种": "Язык референтного аудио",
"可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。": "Необязательно: загрузите несколько файлов с эталонными аудиозаписями, перетащив их (рекомендуется одного пола), и усредните их тон. Если этот параметр не заполнен, тон будет контролироваться одной эталонной аудиозаписью слева. При тонкой настройке модели рекомендуется, чтобы все эталонные аудиозаписи имели тон в пределах обучающего набора для тонкой настройки; предварительно обученную модель можно игнорировать.",
"合成语音": "Синтезированный голос",
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "Пример допустимого формата пути к папке: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例 (просто скопируйте из адресной строки файлового менеджера).",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。如果留空则使用.list文件里的绝对全路径。": "Заполните каталог, где находятся аудиофайлы после разрезания! Полный путь к читаемым аудиофайлам = каталог - файл .list, имя файла соответствует волне (не полный путь). Если оставить пустым, будет использоваться абсолютный путь из файла .list.",
"多语种混合": "Смешанные языки",
"多语种混合(粤语)": "Многоязычная смесь (кантонский)",
"实际输入的参考文本:": "Фактически введенный референсный текст:",
"实际输入的目标文本(切句后):": "Фактически введенный целевой текст (после разбиения на предложения):",
"实际输入的目标文本(每句):": "Фактически введенный целевой текст (каждое предложение):",
"实际输入的目标文本:": "Фактически введенный целевой текст:",
"导出文件格式": "Формат выходных файлов",
"常见问题解答": "ЧаВо (часто задаваемые вопросы)",
"常规设置": "Основные настройки",
"开始音频转换": "Начать конвертацию аудио",
"很遗憾您这没有能用的显卡来支持您训练": "К сожалению, у вас нету графического процессора, который поддерживает обучение моделей.",
"性能设置": "Настройки быстроты",
"总训练轮数total_epoch": "Полное количество эпох (total_epoch):",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Массовое преобразование. Введите путь к папке, в которой находятся файлы для преобразования голоса или выгрузите несколько аудиофайлов. Сконвертированные файлы будут сохранены в указанной папке (по умолчанию: 'opt').",
"开启GPT训练": "Включить обучение GPT",
"开启SSL提取": "Включить извлечение SSL",
"开启SoVITS训练": "Включить обучение SoVITS",
"开启TTS推理WebUI": "Открыть TTS Inference WebUI",
"开启UVR5-WebUI": "Открыть UVR5-WebUI",
"开启一键三连": "Включить одно нажатие",
"开启打标WebUI": "Открыть Labeling WebUI",
"开启文本获取": "Включить получение текста",
"开启无参考文本模式。不填参考文本亦相当于开启。": "Включить режим без референтного текста. Не заполняя референтный текст, вы также включаете этот режим.",
"开启离线批量ASR": "Включить пакетную офлайн ASR",
"开启语义token提取": "Включить извлечение семантических токенов",
"开启语音切割": "Включить разрезание речи",
"开启语音降噪": "Включить шумоподавление",
"怎么切": "Как разрезать",
"总训练轮数total_epoch": "Общее количество эпох обучения total_epoch",
"总训练轮数total_epoch不建议太高": "Общее количество эпох обучения total_epoch, не рекомендуется слишком высокое",
"打标工具WebUI已关闭": "WebUI инструмента маркировки остановлен",
"打标工具WebUI已开启": "WebUI инструмента маркировки запущен",
"打标工具进程输出信息": "Информация о процессе аннотации",
"指定输出主人声文件夹": "Путь к папке для сохранения вокала:",
"指定输出文件夹": "Папка для результатов:",
"指定输出非主人声文件夹": "Путь к папке для сохранения аккомпанемента:",
"推理时间(ms):": "Время переработки (мс):",
"推理音色": "Желаемый голос:",
"提取": "Создать модель",
"提取音高和处理数据使用的CPU进程数": "Число процессов ЦП, используемое для оценки высоты голоса и обработки данных:",
"是": "Да",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Сохранять только последний файл '.ckpt', чтобы сохранить место на диске:",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Сохранять маленькую финальную модель в папку 'weights' на каждой точке сохранения:",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Кэшировать все тренировочные сеты в видеопамять. Кэширование маленький датасетов (меньше 10 минут) может ускорить тренировку, но кэширование больших, наоборот, займёт много видеопамяти и не сильно ускорит тренировку:",
"显卡信息": "Информация о графических процессорах (GPUs):",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Это программное обеспечение с открытым исходным кодом распространяется по лицензии MIT. Автор никак не контролирует это программное обеспечение. Пользователи, которые используют эту программу и распространяют аудиозаписи, полученные с помощью этой программы, несут полную ответственность за это. Если вы не согласны с этим, вы не можете использовать какие-либо коды и файлы в рамках этой программы или ссылаться на них. Подробнее в файле <b>Agreement-LICENSE.txt</b> в корневом каталоге программы.",
"查看": "Просмотреть информацию",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Просмотреть информацию о модели (работает только с маленькими моделями, взятыми из папки 'weights')",
"检索特征占比": "Соотношение поиска черт:",
"按中文句号。切": "Разделение по китайским точкам.",
"按标点符号切": "Разрезать по пунктуационным знакам",
"按英文句号.切": "Разрезать по английской точке.",
"数据类型精度": "точность типа данных",
"文本模块学习率权重": "Веса скорости обучения текстового модуля",
"文本进程输出信息": "Информация о процессе обработки текста",
"施工中,请静候佳音": "В разработке, ожидайте хороших новостей",
"日文": "Японский",
"日英混合": "Японский и английский",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Сохранять только последние файлы ckpt для экономии места на диске?",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Сохранять финальную версию модели в папке weights на каждом этапе сохранения?",
"是否开启dpo训练选项(实验性)": "Включить опцию тренировки dpo (экспериментально)",
"是否直接对上次合成结果调整语速和音色。防止随机性。": "Настройте скорость речи и тон последнего результата синтеза, чтобы избежать случайности.",
"显卡信息": "Информация о видеокарте",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Это программное обеспечение открыто по лицензии MIT, автор не имеет никакого контроля над программным обеспечением, пользователи программного обеспечения и те, кто распространяет звуки, экспортированные программным обеспечением, несут полную ответственность. <br>Если вы не согласны с этими условиями, вы не можете использовать или ссылаться на любой код и файлы в пакете программного обеспечения. Смотрите <b>LICENSE</b> в корневом каталоге.",
"模型": "Модели",
"模型推理": "Изменение голоса",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Создание модели из данных, полученных в процессе обучения (введите путь к большому файлу модели в папке 'logs'). Может пригодиться, если вам нужно завершить обучение и получить маленький файл готовой модели, или если вам нужно проверить недообученную модель:",
"模型是否带音高指导": "Поддерживает ли модель изменение высоты голоса (1: да, 0: нет):",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Поддержка изменения высоты звука (обязательно для пения, необязательно для речи):",
"模型是否带音高指导,1是0否": "Поддерживает ли модель изменение высоты голоса (1: да, 0: нет):",
"模型版本型号": "Версия архитектуры модели:",
"模型融合, 可用于测试音色融合": "Слияние моделей, может быть использовано для проверки слияния тембра",
"模型路径": "Путь к папке:",
"每张显卡的batch_size": "Размер пачки для GPU:",
"淡入淡出长度": "Длина затухания",
"版本": "Версия архитектуры модели:",
"特征提取": "Извлечь черты",
"特征检索库文件路径,为空则使用下拉的选择结果": "Путь к файлу индекса черт. Оставьте пустым, чтобы использовать выбранный вариант из списка ниже:",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Рекомендуется выбрать +12 для конвертирования мужского голоса в женский и -12 для конвертирования женского в мужской. Если диапазон голоса слишком велик, и голос искажается, можно выбрать значение на свой вкус.",
"目标采样率": "Частота дискретизации аудио:",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "Автоматически найденные файлы индексов черт (выберите вариант из списка):",
"融合": "Запустить слияние",
"要改的模型信息": "Информация, которая будет изменена:",
"要置入的模型信息": "Информация о модели:",
"训练": "Обучение модели",
"训练模型": "Обучить модель",
"训练特征索引": "Обучить индекс черт",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Обучение модели завершено. Журнал обучения можно просмотреть в консоли или в файле 'train.log' в папке с моделью.",
"请指定说话人id": "Номер говорящего/поющего:",
"请选择index文件": "Пожалуйста, выберите файл индекса",
"请选择pth文件": "Пожалуйста, выберите файл pth",
"请选择说话人id": "Номер говорящего:",
"模型分为三类:": "Модели делятся на три типа:",
"模型切换": "Переключение модели",
"每张显卡的batch_size": "Размер пакета для каждой видеокарты",
"版本": "Версия",
"粤英混合": "Кантоно-английская смесь",
"粤语": "Кантонийский",
"终止ASR进程": "Прекратить процесс ASR",
"终止GPT训练": "Прекратить обучение GPT",
"终止SSL提取进程": "Прекратить процесс извлечения SSL",
"终止SoVITS训练": "Прекратить обучение SoVITS",
"终止一键三连": "Прекратить одно нажатие",
"终止文本获取进程": "Прекратить процесс получения текста",
"终止语义token提取进程": "Прекратить процесс извлечения семантических токенов",
"终止语音切割": "Прекратить разрезание речи",
"终止语音降噪进程": "Прекратить процесс шумоподавления",
"缺少Hubert数据集": "Отсутствует набор данных Hubert",
"缺少语义数据集": "Отсутствует семантический набор данных",
"缺少音素数据集": "Отсутствует набор данных фонем",
"缺少音频数据集": "Отсутствует набор данных аудио",
"英文": "Английский",
"语义token提取进程输出信息": "Информация о процессе извлечения семантических токенов",
"语速": "Скорость речи",
"语速调整,高为更快": "Регулировка скорости речи, чем выше, тем быстрее",
"语音切割进程输出信息": "Информация о процессе разрезания речи",
"语音降噪进程输出信息": "Информация о процессе шумоподавления",
"请上传3~10秒内参考音频超过会报错": "Пожалуйста, загрузите референтное аудио длительностью от 3 до 10 секунд, иначе будет ошибка!",
"请上传参考音频": "Пожалуйста, загрузите эталонное аудио",
"请填入推理文本": "Пожалуйста, введите целевой текст",
"请填入正确的List路径": "Пожалуйста, укажите правильный путь к списку",
"请填入正确的音频文件夹路径": "Пожалуйста, укажите правильный путь к папке с аудио",
"请输入有效文本": "Введите действительный текст",
"路径不能为空": "Ожидается, что путь не будет пустым",
"路径错误": "Ошибка пути",
"转换": "Преобразовать",
"输入实验名": "Название модели:",
"输入待处理音频文件夹路径": "Путь к папке с аудиофайлами для обработки:",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Путь к папке с аудиофайлами для переработки (можно скопировать путь из адресной строки файлового менеджера):",
"输入待处理音频文件路径(默认是正确格式示例)": "Путь к аудиофайлу, который хотите обработать (ниже указан пример пути к файлу):",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Использовать громкость входного файла для замены или перемешивания с громкостью выходного файла. Чем ближе соотношение к 1, тем больше используется звука из выходного файла:",
"输入监听": "输入监听",
"输入训练文件夹路径": "Путь к папке с аудиозаписями, на которых будет обучаться модель:",
"输入设备": "Входное устройство",
"输入降噪": "Уменьшение входного шума",
"输入文件夹路径": "Введите путь к папке",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "В директории logs/имя_эксперимента должны быть файлы и папки, начинающиеся с 23456",
"输出信息": "Статистика",
"输出变声": "输出变声",
"输出设备": "Выходное устройство",
"输出降噪": "Уменьшение выходного шума",
"输出音频(右下角三个点,点了可以下载)": "Аудиофайл (чтобы скачать, нажмите на три точки справа в плеере)",
"选择.index文件": "Выбрать файл .index",
"选择.pth文件": "Выбрать файл .pth",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "Выберите алгоритм оценки высоты голоса ('pm': работает быстро, но даёт низкое качество речи; 'harvest': басы лучше, но работает очень медленно; 'crepe': лучшее качество, но сильно нагружает GPU; 'rmvpe': лучшее качество и минимальная нагрузка на GPU):",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU",
"采样率:": "采样率:",
"采样长度": "Длина сэмпла",
"重载设备列表": "Обновить список устройств",
"音调设置": "Настройка высоты звука",
"音频设备(请使用同种类驱动)": "Аудиоустройство (пожалуйста, используйте такой же тип драйвера)",
"音高算法": "Алгоритм оценки высоты звука",
"额外推理时长": "Доп. время переработки"
"输出文件夹路径": "Путь к папке для вывода",
"输出的语音": "Выводимый звук",
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。": "Выберите модель, сохраненную в SoVITS_weights и GPT_weights после обучения. По умолчанию используется базовая модель для 5-секундного Zero Shot TTS.",
"降噪结果输出文件夹": "Папка для вывода результатов шумоподавления",
"降噪音频文件输入文件夹": "Папка для ввода аудиофайлов для шумоподавления",
"需要合成的文本": "Текст для синтеза",
"需要合成的语种": "Язык для синтеза",
"韩文": "Корейский",
"韩英混合": "Корейско-английская смесь",
"音频加载失败": "Не удалось загрузить аудио",
"音频自动切分输入路径,可文件可文件夹": "Путь ввода для автоматического разделения аудио, может быть файлом или папкой",
"预训练的GPT模型路径": "Путь к предварительно обученной модели GPT",
"预训练的SSL模型路径": "Путь к предварительно обученной модели SSL",
"预训练的SoVITS-D模型路径": "Путь к предварительно обученной модели SoVITS-D",
"预训练的SoVITS-G模型路径": "Путь к предварительно обученной модели SoVITS-G",
"预训练的中文BERT模型路径": "Путь к предварительно обученной китайской модели BERT"
}

View File

@ -1,135 +1,192 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "Eğer >=3 ise, elde edilen pitch sonuçlarına median filtreleme uygula. Bu değer, filtre yarıçapını temsil eder ve nefesliliği azaltabilir.",
"A模型权重": "A Modeli Ağırlığı:",
"A模型路径": "A Modeli Yolu:",
"B模型路径": "B Modeli Yolu:",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0 eğrisi dosyası (isteğe bağlı). Her satırda bir pitch değeri bulunur. Varsayılan F0 ve pitch modülasyonunu değiştirir:",
"Index Rate": "Index Oranı",
"Onnx导出": "Onnx Dışa Aktar",
"Onnx输出路径": "Onnx Dışa Aktarım Yolu:",
"RVC模型路径": "RVC Model Yolu:",
"ckpt处理": "ckpt İşleme",
"harvest进程数": "harvest进程数",
"index文件路径不可包含中文": ".index dosya yolu Çince karakter içeremez",
"pth文件路径不可包含中文": ".pth dosya yolu Çince karakter içeremez",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Adım 1: Deneysel yapılandırmayı doldurun. Deneysel veriler 'logs' klasöründe saklanır ve her bir deney için ayrı bir klasör vardır. Deneysel adı yolu manuel olarak girin; bu yol, deneysel yapılandırmayı, günlükleri ve eğitilmiş model dosyalarını içerir.",
"step1:正在处理数据": "Adım 1: Veri işleme",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Adım 2a: Eğitim klasöründe ses dosyalarını otomatik olarak gezinerek dilimleme normalizasyonu yapın. Deney dizini içinde 2 wav klasörü oluşturur. Şu anda sadece tek kişilik eğitim desteklenmektedir.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Adım 2b: Ses yüksekliği (Pitch) çıkartmak için CPU kullanın (eğer model ses yüksekliği içeriyorsa), özellikleri çıkartmak için GPU kullanın (GPU indeksini seçin):",
"step3: 填写训练设置, 开始训练模型和索引": "Adım 3: Eğitim ayarlarını doldurun ve modeli ve dizini eğitmeye başlayın",
"step3a:正在训练模型": "Adım 3a: Model eğitimi başladı",
"一键训练": "Tek Tuşla Eğit",
"(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;": "(1)MDX-Net(onnx_dereverb):İki kanallı yankılar için en iyi seçimdir, ancak tek kanallı yankıları ortadan kaldıramaz;",
"(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。": "(234)DeEcho:Gecikme etkilerini giderir. Aggressive, Normal'dan daha kapsamlı bir şekilde giderir, DeReverb ek olarak yankıyı giderir, tek kanallı yankıyı giderebilir, ancak yüksek frekanslı plaka yankısını tamamen gideremez.",
"*GPT模型列表": "*GPT model listesi",
"*SoVITS模型列表": "*SoVITS model listesi",
"*实验/模型名": "*Deney/model adı",
"*文本标注文件": "*Metin etiketleme dosyası",
"*训练集音频文件目录": "*Eğitim seti ses dosyası dizini",
"*请上传并填写参考信息": "*Lütfen referans bilgilerini yükleyin ve doldurun",
"*请填写需要合成的目标文本和语种模式": "*Lütfen sentezlenecek hedef metni ve dil modunu giriniz.",
".list标注文件的路径": ".list etiketleme dosyasının yolu",
".限制范围越小判别效果越好。": "Daha az çok dilli olmak daha iyidir",
"0-前置数据集获取工具": "0-Ön veri seti alma aracı",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5 vokal eşlik ayırma & yankıyı giderme gecikme aracı",
"0b-语音切分工具": "0b-Ses bölme aracı",
"0bb-语音降噪工具": "0bb-Ses gürültü azaltma aracı",
"0c-中文批量离线ASR工具": "0c-Çince toplu offline ASR aracı",
"0d-语音文本校对标注工具": "0d-Ses ve metin düzeltme etiketleme aracı",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"1A-训练集格式化工具": "1A-Eğitim seti formatlama aracı",
"1Aa-文本内容": "1Aa-Metin içeriği",
"1Aabc-训练集格式化一键三连": "1Aabc-Eğitim seti formatlama tek tuşla üçleme",
"1Ab-SSL自监督特征提取": "1Ab-SSL kendi kendine denetimli özellik çıkarma",
"1Ac-语义token提取": "1Ac-Anlamsal token çıkarma",
"1B-微调训练": "1B-Fine-tuning eğitimi",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITS eğitimi. Paylaşım için model dosyaları SoVITS_weights altında çıkarılır.",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPT eğitimi. Paylaşım için model dosyaları GPT_weights altında çıkarılır.",
"1C-推理": "1C-Çıkarım",
"1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍": "1. DeEcho-DeReverb modelinin işleme süresi, diğer iki DeEcho modelinin neredeyse iki katıdır;",
"1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点": "1. Ses koruma: Arka vokal içermeyen sesler için bu seçeneği kullanın, ana sesi HP5'ten daha iyi korur. HP2 ve HP3 adlı iki model içerir; HP3, arka vokali biraz kaçırabilir ancak ana sesi HP2'ye göre biraz daha iyi korur;",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-Ses Değiştirme",
"2、MDX-Net-Dereverb模型挺慢的": "2. MDX-Net-Dereverb modeli oldukça yavaştır;",
"2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型": "2. Sadece ana sesi koruma: Arka vokalleri içeren sesler için bu seçeneği kullanın, ana sesi zayıflatabilir. İçinde HP5 modeli var;",
"3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "3. Kişisel olarak en temiz konfigürasyon MDX-Net'in ardından DeEcho-Aggressive'dir.",
"3、去混响、去延迟模型by FoxJoy": "3. Yankı ve gecikme giderme modeli (FoxJoy tarafından):",
"ASR 模型": "ASR modeli",
"ASR 模型尺寸": "ASR model boyutu",
"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",
"SoVITS模型列表": "SoVITS model listesi",
"SoVITS训练进程输出信息": "SoVITS eğitimi işlemi çıktı bilgisi",
"TTS推理WebUI进程输出信息": "TTS çıkarımı WebUI işlemi çıktı bilgisi",
"TTS推理进程已关闭": "TTS çıkarım işlemi kapatıldı",
"TTS推理进程已开启": "TTS çıkarım işlemi başlatıldı",
"UVR5已关闭": "UVR5 kapandı",
"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",
"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",
"min_interval:最短切割间隔": "min_interval:Minimum kesim aralığı",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length: bölümün minimum uzunluğu, ilk bölüm çok kısa ise, bu değeri aşana kadar sonraki bölümlerle birleştirilir",
"temperature": "temperature",
"threshold:音量小于这个值视作静音的备选切割点": "threshold:Ses bu değerden düşükse sessiz olarak kabul edilen alternatif kesim noktası",
"top_k": "top_k",
"top_p": "top_p",
"一键三连进程输出信息": "Tek tuşla üçleme işlemi çıktı bilgisi",
"不切": "Kesme",
"中文": "Çince",
"中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e": "Çince öğretici belgehttps://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e",
"中英混合": "Çince ve İngilizce karışık",
"也可批量输入音频文件, 二选一, 优先读文件夹": "Ses dosyaları ayrıca toplu olarak, iki seçimle, öncelikli okuma klasörüyle içe aktarılabilir",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "Batch işleme kullanarak vokal eşlik ayrımı için UVR5 modeli kullanılır.<br>Geçerli bir klasör yol formatı örneği: D:\\path\\to\\input\\folder (dosya yöneticisi adres çubuğundan kopyalanır).<br>Model üç kategoriye ayrılır:<br>1. Vokalleri koru: Bu seçeneği, harmoni içermeyen sesler için kullanın. HP5'ten daha iyi bir şekilde vokalleri korur. İki dahili model içerir: HP2 ve HP3. HP3, eşlik sesini hafifçe sızdırabilir, ancak vokalleri HP2'den biraz daha iyi korur.<br>2. Sadece ana vokalleri koru: Bu seçeneği, harmoni içeren sesler için kullanın. Ana vokalleri zayıflatabilir. Bir dahili model içerir: HP5.<br>3. Reverb ve gecikme modelleri (FoxJoy tarafından):<br>(1) MDX-Net: Stereo reverb'i kaldırmak için en iyi seçenek, ancak mono reverb'i kaldıramaz;<br>(234) DeEcho: Gecikme efektlerini kaldırır. Agresif mod, Normal moda göre daha kapsamlı bir şekilde kaldırma yapar. DeReverb ayrıca reverb'i kaldırır ve mono reverb'i kaldırabilir, ancak yoğun yankılı yüksek frekanslı içerikler için çok etkili değildir.<br>Reverb/gecikme notları:<br>1. DeEcho-DeReverb modelinin işleme süresi diğer iki DeEcho modeline göre yaklaşık olarak iki kat daha uzundur.<br>2. MDX-Net-Dereverb modeli oldukça yavaştır.<br>3. Tavsiye edilen en temiz yapılandırma önce MDX-Net'i uygulamak ve ardından DeEcho-Aggressive uygulamaktır.",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "GPU indekslerini '-' ile ayırarak girin, örneğin 0-1-2, GPU 0, 1 ve 2'yi kullanmak için:",
"人声伴奏分离批量处理, 使用UVR5模型。": "Vokal ve akor ayırma toplu işleme, UVR5 modelini kullanarak.",
"人声提取激进程度": "Vokal çıkarma agresiflik derecesi",
"以下文件或文件夹不存在": "Böyle Bir Dosya veya Klasör Yok",
"以下模型不存在:": "Böyle bir model yok:",
"伴奏人声分离&去混响&去回声": "Vokal/Müzik Ayrıştırma ve Yankı Giderme",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "Kaydetme Adı:",
"保存的文件名, 默认空为和源文件同名": "Kaydedilecek dosya adı (varsayılan: kaynak dosya ile aynı):",
"保存的模型名不带后缀": "Kaydedilecek model adı (uzantı olmadan):",
"保存频率save_every_epoch": "Kaydetme sıklığı (save_every_epoch):",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Sessiz ünsüzleri ve nefes seslerini koruyarak elektronik müzikte yırtılma gibi sanal hataların oluşmasını engeller. 0.5 olarak ayarlandığında devre dışı kalır. Değerin azaltılması korumayı artırabilir, ancak indeksleme doğruluğunu azaltabilir:",
"修改": "Düzenle",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Model bilgilerini düzenle (sadece 'weights' klasöründen çıkarılan küçük model dosyaları desteklenir)",
"停止音频转换": "Ses dönüştürmeyi durdur",
"全流程结束!": "Tüm işlemler tamamlandı!",
"刷新音色列表和索引路径": "Ses listesini ve indeks yolunu yenile",
"加载模型": "Model yükle",
"加载预训练底模D路径": "Önceden eğitilmiş temel D modelini yükleme yolu:",
"加载预训练底模G路径": "Önceden eğitilmiş temel G modelini yükleme yolu:",
"单次推理": "单次推理",
"卸载音色省显存": "GPU bellek kullanımını azaltmak için sesi kaldır",
"变调(整数, 半音数量, 升八度12降八度-12)": "Transpoze et (tamsayı, yarıton sayısıyla; bir oktav yükseltmek için: 12, bir oktav düşürmek için: -12):",
"后处理重采样至最终采样率0为不进行重采样": "Son işleme aşamasında çıktı sesini son örnekleme hızına yeniden örnekle. 0 değeri için yeniden örnekleme yapılmaz:",
"否": "Hayır",
"启用相位声码器": "启用相位声码器",
"响应阈值": "Tepki eşiği",
"响度因子": "ses yüksekliği faktörü",
"处理数据": "Verileri işle",
"导出Onnx模型": "Onnx Modeli Dışa Aktar",
"使用无参考文本模式时建议使用微调的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",
"关闭TTS推理WebUI": "TTS Inference WebUI'yi Kapat",
"关闭UVR5-WebUI": "UVR5-WebUI'yi Kapat",
"关闭打标WebUI": "Labeling WebUI'yi Kapat",
"凑50字一切": "50 kelime birleştir ve kes",
"凑四句一切": "Dört cümleyi bir araya getirip kes",
"切分后的子音频的输出根目录": "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",
"前端处理后的文本(每句):": "Ön işleme tabi tutulan metin (her cümle):",
"去混响/去延迟,附:": "Yankı giderme/Geçikme giderme, ek:",
"参考音频在3~10秒范围外请更换": "Referans ses dosyası 3~10 saniye aralığının dışında, lütfen değiştirin!",
"参考音频的文本": "Referans ses dosyasının metni",
"参考音频的语种": "Referans ses dosyasının dili",
"可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。": "İsteğe bağlı: Birden fazla referans ses dosyasını sürükleyip bırakarak yükleyin (aynı cinsiyetten olmaları önerilir) ve tonlarını ortalayın. Bu seçenek boş bırakılırsa, ton soldaki tek referans ses dosyası tarafından kontrol edilir. Modeli ince ayar yapıyorsanız, tüm referans ses dosyalarının ince ayar eğitim seti içindeki tonlara sahip olması önerilir; önceden eğitilmiş model dikkate alınmayabilir.",
"合成语音": "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).",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-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):",
"实际输入的目标文本:": "Gerçekten girilen hedef metin:",
"导出文件格式": "Dışa aktarma dosya formatı",
"常见问题解答": "Sıkça Sorulan Sorular (SSS)",
"常规设置": "Genel ayarlar",
"开始音频转换": "Ses dönüştürmeyi başlat",
"很遗憾您这没有能用的显卡来支持您训练": "Maalesef, eğitiminizi desteklemek için uyumlu bir GPU bulunmamaktadır.",
"性能设置": "Performans ayarları",
"总训练轮数total_epoch": "Toplam eğitim turu (total_epoch):",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Toplu dönüştür. Dönüştürülecek ses dosyalarının bulunduğu klasörü girin veya birden çok ses dosyasını yükleyin. Dönüştürülen ses dosyaları belirtilen klasöre ('opt' varsayılan olarak) dönüştürülecektir",
"开启GPT训练": "GPT eğitimini başlat",
"开启SSL提取": "SSL çıkarmayı başlat",
"开启SoVITS训练": "SoVITS eğitimini başlat",
"开启TTS推理WebUI": "TTS Inference WebUI'yi Aç",
"开启UVR5-WebUI": "UVR5-WebUI'yi Aç",
"开启一键三连": "Tek tuşla üçlemeyi başlat",
"开启打标WebUI": "Labeling WebUI'yi Aç",
"开启文本获取": "Metin alma başlat",
"开启无参考文本模式。不填参考文本亦相当于开启。": "Referans metni olmayan mod açık. Referans metni doldurulmazsa bu mod otomatik olarak açılır.",
"开启离线批量ASR": "Offline toplu ASR başlat",
"开启语义token提取": "Anlamsal token çıkarmayı başlat",
"开启语音切割": "Ses kesimi başlat",
"开启语音降噪": "Ses gürültü azaltmayı başlat",
"怎么切": "Nasıl kesilir",
"总训练轮数total_epoch": "Toplam eğitim turu sayısı total_epoch",
"总训练轮数total_epoch不建议太高": "Toplam eğitim turu sayısı total_epoch, çok yüksek önerilmez",
"打标工具WebUI已关闭": "Etiketleme aracı WebUI'si kapatıldı",
"打标工具WebUI已开启": "Etiketleme aracı WebUI'si açıldı",
"打标工具进程输出信息": "Etiketleme aracı işlemi çıktı bilgisi",
"指定输出主人声文件夹": "Vokal için çıkış klasörünü belirtin:",
"指定输出文件夹": ıkış klasörünü belirt:",
"指定输出非主人声文件夹": "Müzik ve diğer sesler için çıkış klasörünü belirtin:",
"推理时间(ms):": ıkarsama süresi (ms):",
"推理音色": "Ses çıkartma (Inference):",
"提取": ıkart",
"提取音高和处理数据使用的CPU进程数": "Ses yüksekliği çıkartmak (Pitch) ve verileri işlemek için kullanılacak CPU işlemci sayısı:",
"是": "Evet",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Sadece en son '.ckpt' dosyasını kaydet:",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Her kaydetme noktasında son küçük bir modeli 'weights' klasörüne kaydetmek için:",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Tüm eğitim verilerini GPU belleğine önbelleğe alıp almayacağınızı belirtin. Küçük veri setlerini (10 dakikadan az) önbelleğe almak eğitimi hızlandırabilir, ancak büyük veri setlerini önbelleğe almak çok fazla GPU belleği tüketir ve çok fazla hız artışı sağlamaz:",
"显卡信息": "GPU Bilgisi",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Bu yazılım, MIT lisansı altında açık kaynaklıdır. Yazarın yazılım üzerinde herhangi bir kontrolü yoktur. Yazılımı kullanan ve yazılım tarafından dışa aktarılan sesleri dağıtan kullanıcılar sorumludur. <br>Eğer bu maddeyle aynı fikirde değilseniz, yazılım paketi içindeki herhangi bir kod veya dosyayı kullanamaz veya referans göremezsiniz. Detaylar için kök dizindeki <b>Agreement-LICENSE.txt</b> dosyasına bakınız.",
"查看": "Görüntüle",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Model bilgilerini görüntüle (sadece 'weights' klasöründen çıkarılan küçük model dosyaları desteklenir)",
"检索特征占比": "Arama özelliği oranı (vurgu gücünü kontrol eder, çok yüksek olması sanal etkilere neden olur)",
"按中文句号。切": "Çince dönem işaretine göre kes",
"按标点符号切": "Noktalama işaretlerine göre kes",
"按英文句号.切": "İngilizce nokta işaretine göre kes",
"数据类型精度": "veri türü doğruluğu",
"文本模块学习率权重": "Metin modülü öğrenme oranıırlığı",
"文本进程输出信息": "Metin işlemi çıktı bilgisi",
"施工中,请静候佳音": "Yapım aşamasında, lütfen iyi haberler için bekleyin",
"日文": "Japonca",
"日英混合": "Japonca ve İngilizce karışımı",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Sadece en yeni ckpt dosyasını kaydederek disk alanından tasarruf edilsin mi",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Her kayıt zamanında son küçük modelin weights klasörüne kaydedilmesi gerekiyor mu",
"是否开启dpo训练选项(实验性)": "dpo eğitim seçeneği açılsın mı? (deneysel)",
"是否直接对上次合成结果调整语速和音色。防止随机性。": "Rastgeleliği önlemek için son sentez sonucunun konuşma hızını ve tonunu ayarlayın.",
"显卡信息": "Ekran kartı bilgisi",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Bu yazılım MIT lisansı ile açık kaynaktır, yazar yazılım üzerinde herhangi bir kontrol gücüne sahip değildir, yazılımı kullanıcılar ve yazılım tarafından üretilen sesleri yayınlayanlar tüm sorumluluğu üstlenir. <br>Eğer bu şartları kabul etmiyorsanız, yazılım paketindeki hiçbir kodu veya dosyayı kullanamaz veya atıfta bulunamazsınız. Ayrıntılar için ana dizindeki <b>LICENSE</b>'ı görün.",
"模型": "Model",
"模型推理": "Model çıkartma (Inference)",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Model çıkartma (büyük dosya modeli yolunu 'logs' klasöründe girin). Bu, eğitimi yarıda bırakmak istediğinizde ve manuel olarak küçük bir model dosyası çıkartmak ve kaydetmek istediğinizde veya bir ara modeli test etmek istediğinizde kullanışlıdır:",
"模型是否带音高指导": "Modelin ses yüksekliği rehberi içerip içermediği:",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Modelin ses yüksekliği (Pitch) rehberliği içerip içermediği (şarkı söyleme için şarttır, konuşma için isteğe bağlıdır):",
"模型是否带音高指导,1是0否": "Modelin ses yüksekliği rehberi içerip içermediği (1: evet, 0: hayır):",
"模型版本型号": "Model mimari versiyonu:",
"模型融合, 可用于测试音色融合": "Model birleştirme, ses rengi birleştirmesi için kullanılabilir",
"模型路径": "Model Yolu:",
"每张显卡的batch_size": "Her GPU için yığın boyutu (batch_size):",
"淡入淡出长度": "Geçiş (Fade) uzunluğu",
"版本": "Sürüm",
"特征提取": "Özellik çıkartma",
"特征检索库文件路径,为空则使用下拉的选择结果": "Özellik indeksi dosyasının yolunu belirtin. Seçilen sonucu kullanmak için boş bırakın veya açılır menüden seçim yapın.",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Erkekten kadına çevirmek için +12 tuş önerilir, kadından erkeğe çevirmek için ise -12 tuş önerilir. Eğer ses aralığı çok fazla genişler ve ses bozulursa, isteğe bağlı olarak uygun aralığa kendiniz de ayarlayabilirsiniz.",
"目标采样率": "Hedef örnekleme oranı:",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "İndeks yolunu otomatik olarak tespit et ve açılır menüden seçim yap.",
"融合": "Birleştir",
"要改的模型信息": "Düzenlenecek model bilgileri:",
"要置入的模型信息": "Eklemek için model bilgileri:",
"训练": "Eğitim",
"训练模型": "Modeli Eğit",
"训练特征索引": "Özellik Dizinini Eğit",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Eğitim tamamlandı. Eğitim günlüklerini konsolda veya deney klasörü altındaki train.log dosyasında kontrol edebilirsiniz.",
"请指定说话人id": "Lütfen konuşmacı/sanatçı no belirtin:",
"请选择index文件": "Lütfen .index dosyası seçin",
"请选择pth文件": "Lütfen .pth dosyası seçin",
"请选择说话人id": "Konuşmacı/Şarkıcı No seçin:",
"模型分为三类:": "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",
"终止SoVITS训练": "SoVITS eğitimini durdur",
"终止一键三连": "Tek tuşla üçlemeyi durdur",
"终止文本获取进程": "Metin alma işlemini durdur",
"终止语义token提取进程": "Anlamsal token çıkarma işlemini durdur",
"终止语音切割": "Ses kesimini durdur",
"终止语音降噪进程": "Gürültü azaltma işlemini durdur",
"缺少Hubert数据集": "Hubert Veri Seti Eksik",
"缺少语义数据集": "Anlamsal Veri Seti Eksik",
"缺少音素数据集": "Fonem Veri Seti Eksik",
"缺少音频数据集": "Ses Veri Seti Eksik",
"英文": "İngilizce",
"语义token提取进程输出信息": "Anlamsal token çıkarma işlemi çıktı bilgisi",
"语速": "Konuşma hızı",
"语速调整,高为更快": "Konuşma hızını ayarla, yüksek daha hızlı",
"语音切割进程输出信息": "Ses kesim işlemi çıktı bilgisi",
"语音降噪进程输出信息": "Gürültü azaltma işlemi çıktı bilgisi",
"请上传3~10秒内参考音频超过会报错": "Lütfen 3~10 saniye arasında bir referans ses dosyası yükleyin, aşım durumunda hata verilecektir!",
"请上传参考音频": "Lütfen Referans Sesi Yükleyin",
"请填入推理文本": "Lütfen Hedef Metni Girin",
"请填入正确的List路径": "Lütfen Doğru Liste Yolunu Girin",
"请填入正确的音频文件夹路径": "Lütfen Doğru Ses Klasörü Yolunu Girin",
"请输入有效文本": "Geçerli metin girin",
"路径不能为空": "Boş Yol Beklenmiyor",
"路径错误": "Yol Hatası",
"转换": "Dönüştür",
"输入实验名": "Deneysel adı girin:",
"输入待处理音频文件夹路径": "İşlenecek ses klasörünün yolunu girin:",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "İşlenecek ses klasörünün yolunu girin (dosya yöneticisinin adres çubuğundan kopyalayın):",
"输入待处理音频文件路径(默认是正确格式示例)": "İşlenecek ses dosyasının yolunu girin (varsayılan doğru format örneğidir):",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Sesin hacim zarfını ayarlayın. 0'a yakın değerler, sesin orijinal vokallerin hacmine benzer olmasını sağlar. Düşük bir değerle ses gürültüsünü maskeleyebilir ve hacmi daha doğal bir şekilde duyulabilir hale getirebilirsiniz. 1'e yaklaştıkça sürekli bir yüksek ses seviyesi elde edilir:",
"输入监听": "输入监听",
"输入训练文件夹路径": "Eğitim klasörünün yolunu girin:",
"输入设备": "Giriş cihazı",
"输入降噪": "Giriş gürültü azaltma",
"输入文件夹路径": "Dosya klasörü yolu girin",
"输出logs/实验名目录下应有23456开头的文件和文件夹": ıktı logs/deney adı dizininde 23456 ile başlayan dosya ve klasörler olmalı",
"输出信息": ıkış bilgisi",
"输出变声": "输出变声",
"输出设备": ıkış cihazı",
"输出降噪": ıkış gürültü azaltma",
"输出音频(右下角三个点,点了可以下载)": "Ses dosyasını dışa aktar (indirmek için sağ alt köşedeki üç noktaya tıklayın)",
"选择.index文件": ".index dosyası seç",
"选择.pth文件": ".pth dosyası seç",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "Pitch algoritmasını seçin ('pm': daha hızlı çıkarır ancak daha düşük kaliteli konuşma; 'harvest': daha iyi konuşma sesi ancak son derece yavaş; 'crepe': daha da iyi kalite ancak GPU yoğunluğu gerektirir):",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU",
"采样率:": "采样率:",
"采样长度": "Örnekleme uzunluğu",
"重载设备列表": "Cihaz listesini yeniden yükle",
"音调设置": "Pitch ayarları",
"音频设备(请使用同种类驱动)": "Ses cihazı (aynı tür sürücüyü kullanın)",
"音高算法": "音高算法",
"额外推理时长": "Ekstra çıkartma süresi"
"输出文件夹路径": ıktı klasörü yolu",
"输出的语音": ıktı sesi",
"选择训练完存放在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ü",
"需要合成的文本": "Sentezlenmesi gereken metin",
"需要合成的语种": "Sentezlenmesi gereken dil",
"韩文": "Korece",
"韩英混合": "Korece-İngilizce Karışık",
"音频加载失败": "Ses Yüklenemedi",
"音频自动切分输入路径,可文件可文件夹": "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",
"预训练的SoVITS-D模型路径": "Ön eğitilmiş SoVITS-D model yolu",
"预训练的SoVITS-G模型路径": "Ön eğitilmiş SoVITS-G model yolu",
"预训练的中文BERT模型路径": "Ön eğitilmiş Çince BERT model yolu"
}

View File

@ -1,135 +1,192 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": ">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音",
"A模型权重": "A模型权重",
"A模型路径": "A模型路径",
"B模型路径": "B模型路径",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调",
"Index Rate": "Index Rate",
"Onnx导出": "Onnx导出",
"Onnx输出路径": "Onnx输出路径",
"RVC模型路径": "RVC模型路径",
"ckpt处理": "ckpt处理",
"harvest进程数": "harvest进程数",
"index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ",
"step1:正在处理数据": "step1:正在处理数据",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)",
"step3: 填写训练设置, 开始训练模型和索引": "step3: 填写训练设置, 开始训练模型和索引",
"step3a:正在训练模型": "step3a:正在训练模型",
"一键训练": "一键训练",
"(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;": "(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;",
"(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。": "(234)DeEcho:去除延迟效果。Aggressive 比 Normal 去除得更彻底DeReverb 额外去除混响,可去除单声道混响,但是对高频重的板式混响去不干净。",
"*GPT模型列表": "*GPT模型列表",
"*SoVITS模型列表": "*SoVITS模型列表",
"*实验/模型名": "*实验/模型名",
"*文本标注文件": "*文本标注文件",
"*训练集音频文件目录": "*训练集音频文件目录",
"*请上传并填写参考信息": "*请上传并填写参考信息",
"*请填写需要合成的目标文本和语种模式": "*请填写需要合成的目标文本和语种模式",
".list标注文件的路径": ".list标注文件的路径",
".限制范围越小判别效果越好。": ".限制范围越小判别效果越好。",
"0-前置数据集获取工具": "0-前置数据集获取工具",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5人声伴奏分离&去混响去延迟工具",
"0b-语音切分工具": "0b-语音切分工具",
"0bb-语音降噪工具": "0bb-语音降噪工具",
"0c-中文批量离线ASR工具": "0c-中文批量离线ASR工具",
"0d-语音文本校对标注工具": "0d-语音文本校对标注工具",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"1A-训练集格式化工具": "1A-训练集格式化工具",
"1Aa-文本内容": "1Aa-文本内容",
"1Aabc-训练集格式化一键三连": "1Aabc-训练集格式化一键三连",
"1Ab-SSL自监督特征提取": "1Ab-SSL自监督特征提取",
"1Ac-语义token提取": "1Ac-语义token提取",
"1B-微调训练": "1B-微调训练",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。",
"1C-推理": "1C-推理",
"1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍": "1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍",
"1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点": "1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-变声",
"2、MDX-Net-Dereverb模型挺慢的": "2、MDX-Net-Dereverb模型挺慢的",
"2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型": "2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型",
"3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。",
"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进程输出信息",
"SoVITS模型列表": "SoVITS模型列表",
"SoVITS训练进程输出信息": "SoVITS训练进程输出信息",
"TTS推理WebUI进程输出信息": "TTS推理WebUI进程输出信息",
"TTS推理进程已关闭": "TTS推理进程已关闭",
"TTS推理进程已开启": "TTS推理进程已开启",
"UVR5已关闭": "UVR5已关闭",
"UVR5已开启": "UVR5已开启",
"UVR5进程输出信息": "UVR5进程输出信息",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix:混多少比例归一化后音频进来",
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)",
"max:归一化后最大值多少": "max:归一化后最大值多少",
"max_sil_kept:切完后静音最多留多长": "max_sil_kept:切完后静音最多留多长",
"min_interval:最短切割间隔": "min_interval:最短切割间隔",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值",
"temperature": "temperature",
"threshold:音量小于这个值视作静音的备选切割点": "threshold:音量小于这个值视作静音的备选切割点",
"top_k": "top_k",
"top_p": "top_p",
"一键三连进程输出信息": "一键三连进程输出信息",
"不切": "不切",
"中文": "中文",
"中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e": "中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e",
"中英混合": "中英混合",
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2",
"人声伴奏分离批量处理, 使用UVR5模型。": "人声伴奏分离批量处理, 使用UVR5模型。",
"人声提取激进程度": "人声提取激进程度",
"以下文件或文件夹不存在": "以下文件或文件夹不存在",
"以下模型不存在:": "以下模型不存在:",
"伴奏人声分离&去混响&去回声": "伴奏人声分离&去混响&去回声",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "保存名",
"保存的文件名, 默认空为和源文件同名": "保存的文件名, 默认空为和源文件同名",
"保存的模型名不带后缀": "保存的模型名不带后缀",
"使用无参考文本模式时建议使用微调的GPT听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "使用无参考文本模式时建议使用微调的GPT听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。",
"保存频率save_every_epoch": "保存频率save_every_epoch",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果",
"修改": "修改",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型信息(仅支持weights文件夹下提取的小模型文件)",
"停止音频转换": "停止音频转换",
"全流程结束!": "全流程结束!",
"刷新音色列表和索引路径": "刷新音色列表和索引路径",
"加载模型": "加载模型",
"加载预训练底模D路径": "加载预训练底模D路径",
"加载预训练底模G路径": "加载预训练底模G路径",
"单次推理": "单次推理",
"卸载音色省显存": "卸载音色省显存",
"变调(整数, 半音数量, 升八度12降八度-12)": "变调(整数, 半音数量, 升八度12降八度-12)",
"后处理重采样至最终采样率0为不进行重采样": "后处理重采样至最终采样率0为不进行重采样",
"否": "否",
"启用相位声码器": "启用相位声码器",
"响应阈值": "响应阈值",
"响度因子": "响度因子",
"处理数据": "处理数据",
"导出Onnx模型": "导出Onnx模型",
"关闭TTS推理WebUI": "关闭TTS推理WebUI",
"关闭UVR5-WebUI": "关闭UVR5-WebUI",
"关闭打标WebUI": "关闭打标WebUI",
"凑50字一切": "凑50字一切",
"凑四句一切": "凑四句一切",
"切分后的子音频的输出根目录": "切分后的子音频的输出根目录",
"切割使用的进程数": "切割使用的进程数",
"刷新模型路径": "刷新模型路径",
"前端处理后的文本(每句):": "前端处理后的文本(每句):",
"去混响/去延迟,附:": "去混响/去延迟,附:",
"参考音频在3~10秒范围外请更换": "参考音频在3~10秒范围外请更换",
"参考音频的文本": "参考音频的文本",
"参考音频的语种": "参考音频的语种",
"可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。": "可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。",
"合成语音": "合成语音",
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。如果留空则使用.list文件里的绝对全路径。": "填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。如果留空则使用.list文件里的绝对全路径。",
"多语种混合": "多语种混合",
"多语种混合(粤语)": "多语种混合(粤语)",
"实际输入的参考文本:": "实际输入的参考文本:",
"实际输入的目标文本(切句后):": "实际输入的目标文本(切句后):",
"实际输入的目标文本(每句):": "实际输入的目标文本(每句):",
"实际输入的目标文本:": "实际输入的目标文本:",
"导出文件格式": "导出文件格式",
"常见问题解答": "常见问题解答",
"常规设置": "常规设置",
"开始音频转换": "开始音频转换",
"很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练",
"性能设置": "性能设置",
"开启GPT训练": "开启GPT训练",
"开启SSL提取": "开启SSL提取",
"开启SoVITS训练": "开启SoVITS训练",
"开启TTS推理WebUI": "开启TTS推理WebUI",
"开启UVR5-WebUI": "开启UVR5-WebUI",
"开启一键三连": "开启一键三连",
"开启打标WebUI": "开启打标WebUI",
"开启文本获取": "开启文本获取",
"开启无参考文本模式。不填参考文本亦相当于开启。": "开启无参考文本模式。不填参考文本亦相当于开启。",
"开启离线批量ASR": "开启离线批量ASR",
"开启语义token提取": "开启语义token提取",
"开启语音切割": "开启语音切割",
"开启语音降噪": "开启语音降噪",
"怎么切": "怎么切",
"总训练轮数total_epoch": "总训练轮数total_epoch",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ",
"总训练轮数total_epoch不建议太高": "总训练轮数total_epoch不建议太高",
"打标工具WebUI已关闭": "打标工具WebUI已关闭",
"打标工具WebUI已开启": "打标工具WebUI已开启",
"打标工具进程输出信息": "打标工具进程输出信息",
"指定输出主人声文件夹": "指定输出主人声文件夹",
"指定输出文件夹": "指定输出文件夹",
"指定输出非主人声文件夹": "指定输出非主人声文件夹",
"推理时间(ms):": "推理时间(ms):",
"推理音色": "推理音色",
"提取": "提取",
"提取音高和处理数据使用的CPU进程数": "提取音高和处理数据使用的CPU进程数",
"是": "是",
"按中文句号。切": "按中文句号。切",
"按标点符号切": "按标点符号切",
"按英文句号.切": "按英文句号.切",
"数据类型精度": "数据类型精度",
"文本模块学习率权重": "文本模块学习率权重",
"文本进程输出信息": "文本进程输出信息",
"施工中,请静候佳音": "施工中,请静候佳音",
"日文": "日文",
"日英混合": "日英混合",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否仅保存最新的ckpt文件以节省硬盘空间",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存时间点将最终小模型保存至weights文件夹",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速",
"是否开启dpo训练选项(实验性)": "是否开启dpo训练选项(实验性)",
"是否直接对上次合成结果调整语速和音色。防止随机性。": "是否直接对上次合成结果调整语速和音色。防止随机性。",
"显卡信息": "显卡信息",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.",
"查看": "查看",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型信息(仅支持weights文件夹下提取的小模型文件)",
"检索特征占比": "检索特征占比",
"模型": "模型",
"模型推理": "模型推理",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况",
"模型是否带音高指导": "模型是否带音高指导",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否带音高指导(唱歌一定要, 语音可以不要)",
"模型是否带音高指导,1是0否": "模型是否带音高指导,1是0否",
"模型版本型号": "模型版本型号",
"模型融合, 可用于测试音色融合": "模型融合, 可用于测试音色融合",
"模型路径": "模型路径",
"模型分为三类:": "模型分为三类:",
"模型切换": "模型切换",
"每张显卡的batch_size": "每张显卡的batch_size",
"淡入淡出长度": "淡入淡出长度",
"版本": "版本",
"特征提取": "特征提取",
"特征检索库文件路径,为空则使用下拉的选择结果": "特征检索库文件路径,为空则使用下拉的选择结果",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ",
"目标采样率": "目标采样率",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "自动检测index路径,下拉式选择(dropdown)",
"融合": "融合",
"要改的模型信息": "要改的模型信息",
"要置入的模型信息": "要置入的模型信息",
"训练": "训练",
"训练模型": "训练模型",
"训练特征索引": "训练特征索引",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log",
"请指定说话人id": "请指定说话人id",
"请选择index文件": "请选择index文件",
"请选择pth文件": "请选择pth文件",
"请选择说话人id": "请选择说话人id",
"粤英混合": "粤英混合",
"粤语": "粤语",
"终止ASR进程": "终止ASR进程",
"终止GPT训练": "终止GPT训练",
"终止SSL提取进程": "终止SSL提取进程",
"终止SoVITS训练": "终止SoVITS训练",
"终止一键三连": "终止一键三连",
"终止文本获取进程": "终止文本获取进程",
"终止语义token提取进程": "终止语义token提取进程",
"终止语音切割": "终止语音切割",
"终止语音降噪进程": "终止语音降噪进程",
"缺少Hubert数据集": "缺少Hubert数据集",
"缺少语义数据集": "缺少语义数据集",
"缺少音素数据集": "缺少音素数据集",
"缺少音频数据集": "缺少音频数据集",
"英文": "英文",
"语义token提取进程输出信息": "语义token提取进程输出信息",
"语速": "语速",
"语速调整,高为更快": "语速调整,高为更快",
"语音切割进程输出信息": "语音切割进程输出信息",
"语音降噪进程输出信息": "语音降噪进程输出信息",
"请上传3~10秒内参考音频超过会报错": "请上传3~10秒内参考音频超过会报错",
"请上传参考音频": "请上传参考音频",
"请填入推理文本": "请填入推理文本",
"请填入正确的List路径": "请填入正确的List路径",
"请填入正确的音频文件夹路径": "请填入正确的音频文件夹路径",
"请输入有效文本": "请输入有效文本",
"路径不能为空": "路径不能为空",
"路径错误": "路径错误",
"转换": "转换",
"输入实验名": "输入实验名",
"输入待处理音频文件夹路径": "输入待处理音频文件夹路径",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)",
"输入待处理音频文件路径(默认是正确格式示例)": "输入待处理音频文件路径(默认是正确格式示例)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络",
"输入监听": "输入监听",
"输入训练文件夹路径": "输入训练文件夹路径",
"输入设备": "输入设备",
"输入降噪": "输入降噪",
"输入文件夹路径": "输入文件夹路径",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "输出logs/实验名目录下应有23456开头的文件和文件夹",
"输出信息": "输出信息",
"输出变声": "输出变声",
"输出设备": "输出设备",
"输出降噪": "输出降噪",
"输出音频(右下角三个点,点了可以下载)": "输出音频(右下角三个点,点了可以下载)",
"选择.index文件": "选择.index文件",
"选择.pth文件": "选择.pth文件",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU",
"采样率:": "采样率:",
"采样长度": "采样长度",
"重载设备列表": "重载设备列表",
"音调设置": "音调设置",
"音频设备(请使用同种类驱动)": "音频设备(请使用同种类驱动)",
"音高算法": "音高算法",
"额外推理时长": "额外推理时长"
"输出文件夹路径": "输出文件夹路径",
"输出的语音": "输出的语音",
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。": "选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。",
"降噪结果输出文件夹": "降噪结果输出文件夹",
"降噪音频文件输入文件夹": "降噪音频文件输入文件夹",
"需要合成的文本": "需要合成的文本",
"需要合成的语种": "需要合成的语种",
"韩文": "韩文",
"韩英混合": "韩英混合",
"音频加载失败": "音频加载失败",
"音频自动切分输入路径,可文件可文件夹": "音频自动切分输入路径,可文件可文件夹",
"预训练的GPT模型路径": "预训练的GPT模型路径",
"预训练的SSL模型路径": "预训练的SSL模型路径",
"预训练的SoVITS-D模型路径": "预训练的SoVITS-D模型路径",
"预训练的SoVITS-G模型路径": "预训练的SoVITS-G模型路径",
"预训练的中文BERT模型路径": "预训练的中文BERT模型路径"
}

View File

@ -1,135 +1,192 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": ">=3則使用對harvest音高識別的結果使用中值濾波數值為濾波半徑使用可以削弱啞音",
"A模型权重": "A模型權重",
"A模型路径": "A模型路徑",
"B模型路径": "B模型路徑",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲線檔案可選一行一個音高代替預設的F0及升降調",
"Index Rate": "Index Rate",
"Onnx导出": "Onnx导出",
"Onnx输出路径": "Onnx输出路径",
"RVC模型路径": "RVC模型路径",
"ckpt处理": "ckpt處理",
"harvest进程数": "harvest進程數",
"index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡號配置以-分隔輸入使用的不同進程卡號,例如0-0-1使用在卡0上跑2個進程並在卡1上跑1個進程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1填寫實驗配置。實驗數據放在logs下每個實驗一個資料夾需手動輸入實驗名路徑內含實驗配置、日誌、訓練得到的模型檔案。",
"step1:正在处理数据": "step1:正在处理数据",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a自動遍歷訓練資料夾下所有可解碼成音頻的檔案並進行切片歸一化在實驗目錄下生成2個wav資料夾暫時只支援單人訓練。",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "步驟2b: 使用CPU提取音高(如果模型帶音高), 使用GPU提取特徵(選擇卡號)",
"step3: 填写训练设置, 开始训练模型和索引": "步驟3: 填寫訓練設定, 開始訓練模型和索引",
"step3a:正在训练模型": "step3a:正在训练模型",
"一键训练": "一鍵訓練",
"(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;": "(1)MDX-Net(onnx_dereverb):對於雙通道混響是最佳選擇,但不能去除單通道混響;",
"(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。": "(234)DeEcho: 去除延遲效果。Aggressive 比 Normal 去除得更徹底DeReverb 額外去除混響,可去除單聲道混響,但對高頻重的板式混響去不乾淨。",
"*GPT模型列表": "*GPT模型列表",
"*SoVITS模型列表": "*SoVITS模型列表",
"*实验/模型名": "*實驗/模型名",
"*文本标注文件": "*文本標注文件",
"*训练集音频文件目录": "*訓練集音頻文件目錄",
"*请上传并填写参考信息": "*請上傳並填寫參考信息",
"*请填写需要合成的目标文本和语种模式": "請填寫需要合成的目標文本和語言模式",
".list标注文件的路径": ".list標註文件的路徑",
".限制范围越小判别效果越好。": ".限制范围越小判别效果越好。",
"0-前置数据集获取工具": "0-前置數據集獲取工具",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5人聲伴奏分離&去混響去延遲工具",
"0b-语音切分工具": "0b-語音切分工具",
"0bb-语音降噪工具": "0bb-語音降噪工具",
"0c-中文批量离线ASR工具": "0c-中文批量離線ASR工具",
"0d-语音文本校对标注工具": "0d-語音文本校對標注工具",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"1A-训练集格式化工具": "1A-訓練集格式化工具",
"1Aa-文本内容": "1Aa-文本內容",
"1Aabc-训练集格式化一键三连": "1Aabc-訓練集格式化一鍵三連",
"1Ab-SSL自监督特征提取": "1Ab-SSL自監督特徵提取",
"1Ac-语义token提取": "1Ac-語義token提取",
"1B-微调训练": "1B-微調訓練",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITS訓練。用於分享的模型文件輸出在SoVITS_weights下。",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPT訓練。用於分享的模型文件輸出在GPT_weights下。",
"1C-推理": "1C-推理",
"1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍": "1、DeEcho-DeReverb 模型的處理時間是另外兩個 DeEcho 模型的接近兩倍;",
"1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点": "1、保留人聲不帶和聲的音頻選這個對主人聲保留比HP5更好。內置HP2和HP3兩個模型HP3可能輕微漏伴奏但對主人聲保留比HP2稍微好一點點",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-變聲",
"2、MDX-Net-Dereverb模型挺慢的": "2、MDX-Net-Dereverb 模型的處理時間挺慢的;",
"2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型": "2、僅保留主人聲帶和聲的音頻選這個對主人聲可能有削弱。內置HP5一個模型",
"3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "3、個人推薦的最乾淨的配置是先 MDX-Net 再 DeEcho-Aggressive。",
"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進程輸出信息",
"SoVITS模型列表": "SoVITS模型列表",
"SoVITS训练进程输出信息": "SoVITS訓練進程輸出信息",
"TTS推理WebUI进程输出信息": "TTS推理WebUI進程輸出信息",
"TTS推理进程已关闭": "TTS推理進程已關閉",
"TTS推理进程已开启": "TTS推理進程已開啟",
"UVR5已关闭": "UVR5已關閉",
"UVR5已开启": "UVR5已開啟",
"UVR5进程输出信息": "UVR5進程輸出信息",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix:混多少比例歸一化後音頻進來",
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size:怎麼算音量曲線,越小精度越大計算量越高(不是精度越大效果越好)",
"max:归一化后最大值多少": "max:歸一化後最大值多少",
"max_sil_kept:切完后静音最多留多长": "max_sil_kept:切完後靜音最多留多長",
"min_interval:最短切割间隔": "min_interval:最短切割間隔",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length:每段最小多長,如果第一段太短一直和後面段連起來直到超過這個值",
"temperature": "temperature",
"threshold:音量小于这个值视作静音的备选切割点": "threshold:音量小於這個值視作靜音的備選切割點",
"top_k": "top_k",
"top_p": "top_p",
"一键三连进程输出信息": "一鍵三連進程輸出信息",
"不切": "不切",
"中文": "中文",
"中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e": "中文教程文檔https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e",
"中英混合": "中英混合",
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "使用UVR5模型進行人聲伴奏分離的批次處理。<br>有效資料夾路徑格式的例子D:\\path\\to\\input\\folder從檔案管理員地址欄複製。<br>模型分為三類:<br>1. 保留人聲選擇這個選項適用於沒有和聲的音訊。它比HP5更好地保留了人聲。它包括兩個內建模型HP2和HP3。HP3可能輕微漏出伴奏但比HP2更好地保留了人聲<br>2. 僅保留主人聲選擇這個選項適用於有和聲的音訊。它可能會削弱主人聲。它包括一個內建模型HP5。<br>3. 消除混響和延遲模型由FoxJoy提供<br>(1) MDX-Net對於立體聲混響的移除是最好的選擇但不能移除單聲道混響<br>&emsp;(234) DeEcho移除延遲效果。Aggressive模式比Normal模式移除得更徹底。DeReverb另外移除混響可以移除單聲道混響但對於高頻重的板式混響移除不乾淨。<br>消除混響/延遲注意事項:<br>1. DeEcho-DeReverb模型的處理時間是其他兩個DeEcho模型的近兩倍<br>2. MDX-Net-Dereverb模型相當慢<br>3. 個人推薦的最乾淨配置是先使用MDX-Net然後使用DeEcho-Aggressive。",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔輸入使用的卡號, 例如 0-1-2 使用卡0和卡1和卡2",
"人声伴奏分离批量处理, 使用UVR5模型。": "人聲伴奏分離批量處理, 使用UVR5模型。",
"人声提取激进程度": "人聲提取激進程度",
"以下文件或文件夹不存在": "沒有此文件或文件夾",
"以下模型不存在:": "以下模型不存在:",
"伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "儲存名",
"保存的文件名, 默认空为和源文件同名": "儲存的檔案名,預設空為與來源檔案同名",
"保存的模型名不带后缀": "儲存的模型名不帶副檔名",
"使用无参考文本模式时建议使用微调的GPT听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "使用無參考文本模式時建議使用微調的GPT聽不清參考音頻說的是啥不知道寫啥可以開啟開啟後無視填寫的參考文本。",
"保存频率save_every_epoch": "保存頻率save_every_epoch",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保護清輔音和呼吸聲防止電音撕裂等artifact拉滿0.5不開啟,調低加大保護力度但可能降低索引效果",
"修改": "修改",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"停止音频转换": "停止音訊轉換",
"全流程结束!": "全流程结束!",
"刷新音色列表和索引路径": "刷新音色列表和索引路徑",
"加载模型": "載入模型",
"加载预训练底模D路径": "加載預訓練底模D路徑",
"加载预训练底模G路径": "加載預訓練底模G路徑",
"单次推理": "单次推理",
"卸载音色省显存": "卸載音色節省 VRAM",
"变调(整数, 半音数量, 升八度12降八度-12)": "變調(整數、半音數量、升八度12降八度-12)",
"后处理重采样至最终采样率0为不进行重采样": "後處理重採樣至最終採樣率0為不進行重採樣",
"否": "否",
"启用相位声码器": "启用相位声码器",
"响应阈值": "響應閾值",
"响度因子": "響度因子",
"处理数据": "處理資料",
"导出Onnx模型": "导出Onnx模型",
"关闭TTS推理WebUI": "關閉 TTS Inference WebUI",
"关闭UVR5-WebUI": "關閉 UVR5-WebUI",
"关闭打标WebUI": "關閉 Labeling WebUI",
"凑50字一切": "湊50字一切",
"凑四句一切": "湊四句一切",
"切分后的子音频的输出根目录": "切分後的子音頻的輸出根目錄",
"切割使用的进程数": "切割使用的進程數",
"刷新模型路径": "刷新模型路徑",
"前端处理后的文本(每句):": "前端處理後的文本(每句):",
"去混响/去延迟,附:": "去混響/去延遲,附",
"参考音频在3~10秒范围外请更换": "參考音頻在3~10秒範圍外請更換",
"参考音频的文本": "參考音頻的文本",
"参考音频的语种": "參考音頻的語種",
"可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。": "可選項:通過拖曳多個文件上傳多個參考音頻(建議同性),平均融合他們的音色。如不填寫此項,音色由左側單個參考音頻控制。如是微調模型,建議參考音頻全部在微調訓練集音色內,底模不用管。",
"合成语音": "合成語音",
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "合格的文件夾路徑格式舉例: E:\\codes\\py39\\vits_vc_gpu\\白鷺霜華測試樣例(去文件管理器地址欄拷就行了)。",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。如果留空则使用.list文件里的绝对全路径。": "填切割後音頻所在目錄!讀取的音頻文件完整路徑=該目錄-拼接-list文件裡波形對應的文件名不是全路徑。如果留空則使用.list文件裡的絕對全路徑。",
"多语种混合": "多語種混合",
"多语种混合(粤语)": "多語種混合 (粵語)",
"实际输入的参考文本:": "實際輸入的參考文本:",
"实际输入的目标文本(切句后):": "實際輸入的目標文本(切句後):",
"实际输入的目标文本(每句):": "實際輸入的目標文本(每句):",
"实际输入的目标文本:": "實際輸入的目標文本:",
"导出文件格式": "導出檔格式",
"常见问题解答": "常見問題解答",
"常规设置": "一般設定",
"开始音频转换": "開始音訊轉換",
"很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练",
"性能设置": "效能設定",
"开启GPT训练": "開啟GPT訓練",
"开启SSL提取": "開啟SSL提取",
"开启SoVITS训练": "開啟SoVITS訓練",
"开启TTS推理WebUI": "開啟 TTS Inference WebUI",
"开启UVR5-WebUI": "開啟 UVR5-WebUI",
"开启一键三连": "開啟一鍵三連",
"开启打标WebUI": "開啟 Labeling WebUI",
"开启文本获取": "開啟文本獲取",
"开启无参考文本模式。不填参考文本亦相当于开启。": "開啟無參考文本模式。不填參考文本亦相當於開啟。",
"开启离线批量ASR": "開啟離線批量ASR",
"开启语义token提取": "開啟語義token提取",
"开启语音切割": "開啟語音切割",
"开启语音降噪": "開啟語音降噪",
"怎么切": "怎麼切",
"总训练轮数total_epoch": "總訓練輪數total_epoch",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量轉換,輸入待轉換音頻資料夾,或上傳多個音頻檔案,在指定資料夾(默認opt)下輸出轉換的音頻。",
"总训练轮数total_epoch不建议太高": "總訓練輪數total_epoch不建議太高",
"打标工具WebUI已关闭": "打標工具WebUI已關閉",
"打标工具WebUI已开启": "打標工具WebUI已開啟",
"打标工具进程输出信息": "打標工具進程輸出信息",
"指定输出主人声文件夹": "指定输出主人声文件夹",
"指定输出文件夹": "指定輸出資料夾",
"指定输出非主人声文件夹": "指定输出非主人声文件夹",
"推理时间(ms):": "推理時間(ms):",
"推理音色": "推理音色",
"提取": "提取",
"提取音高和处理数据使用的CPU进程数": "提取音高和處理數據使用的CPU進程數",
"是": "是",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt檔案以節省硬碟空間",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights檔夾",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否緩存所有訓練集至 VRAM。小於10分鐘的小數據可緩存以加速訓練大數據緩存會爆 VRAM 也加不了多少速度",
"显卡信息": "顯示卡資訊",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何程式碼和檔案。詳見根目錄<b>使用需遵守的協議-LICENSE.txt</b>。",
"查看": "查看",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"检索特征占比": "檢索特徵佔比",
"按中文句号。切": "按中文句號。切",
"按标点符号切": "按標點符號切",
"按英文句号.切": "按英文句號.切",
"数据类型精度": "數據類型精度",
"文本模块学习率权重": "文本模塊學習率權重",
"文本进程输出信息": "文本進程輸出信息",
"施工中,请静候佳音": "施工中,請靜候佳音",
"日文": "日文",
"日英混合": "日英混合",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt文件以節省硬碟空間",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights文件夾",
"是否开启dpo训练选项(实验性)": "是否開啟dpo訓練選項(實驗性)",
"是否直接对上次合成结果调整语速和音色。防止随机性。": "是否直接對上次合成結果調整語速和音色,以防止隨機性。",
"显卡信息": "顯卡信息",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟件以MIT協議開源, 作者不對軟件具備任何控制力, 使用軟件者、傳播軟件導出的聲音者自負全責. <br>如不認可該條款, 則不能使用或引用軟件包內任何代碼和文件. 詳見根目錄<b>LICENSE</b>.",
"模型": "模型",
"模型推理": "模型推理",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(輸入logs資料夾下大檔案模型路徑),適用於訓一半不想訓了模型沒有自動提取儲存小檔案模型,或者想測試中間模型的情況",
"模型是否带音高指导": "模型是否帶音高指導",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否帶音高指導(唱歌一定要,語音可以不要)",
"模型是否带音高指导,1是0否": "模型是否帶音高指導1是0否",
"模型版本型号": "模型版本型號",
"模型融合, 可用于测试音色融合": "模型融合,可用於測試音色融合",
"模型路径": "模型路徑",
"每张显卡的batch_size": "每张显卡的batch_size",
"淡入淡出长度": "淡入淡出長度",
"模型分为三类:": "模型分為三類:",
"模型切换": "模型切換",
"每张显卡的batch_size": "每張顯卡的batch_size",
"版本": "版本",
"特征提取": "特徵提取",
"特征检索库文件路径,为空则使用下拉的选择结果": "特徵檢索庫檔路徑,為空則使用下拉的選擇結果",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性轉女性推薦+12key女性轉男性推薦-12key如果音域爆炸導致音色失真也可以自己調整到合適音域。",
"目标采样率": "目標取樣率",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "自動檢測index路徑,下拉式選擇(dropdown)",
"融合": "融合",
"要改的模型信息": "要改的模型資訊",
"要置入的模型信息": "要置入的模型資訊",
"训练": "訓練",
"训练模型": "訓練模型",
"训练特征索引": "訓練特徵索引",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log",
"请指定说话人id": "請指定說話人id",
"请选择index文件": "请选择index文件",
"请选择pth文件": "请选择pth文件",
"请选择说话人id": "請選擇說話人ID",
"粤英混合": "粵英混合",
"粤语": "粵語",
"终止ASR进程": "終止ASR進程",
"终止GPT训练": "終止GPT訓練",
"终止SSL提取进程": "終止SSL提取進程",
"终止SoVITS训练": "終止SoVITS訓練",
"终止一键三连": "終止一鍵三連",
"终止文本获取进程": "終止文本獲取進程",
"终止语义token提取进程": "終止語義token提取進程",
"终止语音切割": "終止語音切割",
"终止语音降噪进程": "終止語音降噪進程",
"缺少Hubert数据集": "缺少Hubert數據集",
"缺少语义数据集": "缺少語義數據集",
"缺少音素数据集": "缺少音素數據集",
"缺少音频数据集": "缺少音頻數據集",
"英文": "英文",
"语义token提取进程输出信息": "語義token提取進程輸出信息",
"语速": "語速",
"语速调整,高为更快": "調整語速,高為更快",
"语音切割进程输出信息": "語音切割進程輸出信息",
"语音降噪进程输出信息": "語音降噪進程輸出信息",
"请上传3~10秒内参考音频超过会报错": "請上傳3~10秒內參考音頻超過會報錯",
"请上传参考音频": "請上傳參考音頻",
"请填入推理文本": "請填入推理文本",
"请填入正确的List路径": "請填寫正確的列表路徑",
"请填入正确的音频文件夹路径": "請填寫正確的音頻文件夾路徑",
"请输入有效文本": "請輸入有效文本",
"路径不能为空": "路徑不應該為空",
"路径错误": "路徑錯誤",
"转换": "轉換",
"输入实验名": "輸入實驗名稱",
"输入待处理音频文件夹路径": "輸入待處理音頻資料夾路徑",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "輸入待處理音頻資料夾路徑(去檔案管理器地址欄拷貝即可)",
"输入待处理音频文件路径(默认是正确格式示例)": "輸入待處理音頻檔案路徑(預設是正確格式示例)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "輸入源音量包絡替換輸出音量包絡融合比例越靠近1越使用輸出包絡",
"输入监听": "输入监听",
"输入训练文件夹路径": "輸入訓練檔案夾路徑",
"输入设备": "輸入設備",
"输入降噪": "輸入降噪",
"输入文件夹路径": "輸入文件夾路徑",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "輸出logs/實驗名目錄下應有23456開頭的文件和文件夾",
"输出信息": "輸出訊息",
"输出变声": "输出变声",
"输出设备": "輸出設備",
"输出降噪": "輸出降噪",
"输出音频(右下角三个点,点了可以下载)": "輸出音頻(右下角三個點,點了可以下載)",
"选择.index文件": "選擇 .index 檔案",
"选择.pth文件": "選擇 .pth 檔案",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "選擇音高提取演算法,輸入歌聲可用pm提速,harvest低音好但巨慢無比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU",
"采样率:": "采样率:",
"采样长度": "取樣長度",
"重载设备列表": "重載設備列表",
"音调设置": "音調設定",
"音频设备(请使用同种类驱动)": "音訊設備 (請使用同種類驅動)",
"音高算法": "音高演算法",
"额外推理时长": "額外推理時長"
"输出文件夹路径": "輸出文件夾路徑",
"输出的语音": "輸出的語音",
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。": "選擇訓練完存放在SoVITS_weights和GPT_weights下的模型。默認的一個是底模體驗5秒Zero Shot TTS用。",
"降噪结果输出文件夹": "降噪結果輸出文件夾",
"降噪音频文件输入文件夹": "降噪音頻文件輸入文件夾",
"需要合成的文本": "需要合成的文本",
"需要合成的语种": "需要合成的語種",
"韩文": "韓文",
"韩英混合": "韓英混合",
"音频加载失败": "無法加載音頻",
"音频自动切分输入路径,可文件可文件夹": "音頻自動切分輸入路徑,可文件可文件夾",
"预训练的GPT模型路径": "預訓練的GPT模型路徑",
"预训练的SSL模型路径": "預訓練的SSL模型路徑",
"预训练的SoVITS-D模型路径": "預訓練的SoVITS-D模型路徑",
"预训练的SoVITS-G模型路径": "預訓練的SoVITS-G模型路徑",
"预训练的中文BERT模型路径": "預訓練的中文BERT模型路徑"
}

View File

@ -1,135 +1,192 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": ">=3則使用對harvest音高識別的結果使用中值濾波數值為濾波半徑使用可以削弱啞音",
"A模型权重": "A模型權重",
"A模型路径": "A模型路徑",
"B模型路径": "B模型路徑",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲線檔案可選一行一個音高代替預設的F0及升降調",
"Index Rate": "Index Rate",
"Onnx导出": "Onnx导出",
"Onnx输出路径": "Onnx输出路径",
"RVC模型路径": "RVC模型路径",
"ckpt处理": "ckpt處理",
"harvest进程数": "harvest進程數",
"index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡號配置以-分隔輸入使用的不同進程卡號,例如0-0-1使用在卡0上跑2個進程並在卡1上跑1個進程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1填寫實驗配置。實驗數據放在logs下每個實驗一個資料夾需手動輸入實驗名路徑內含實驗配置、日誌、訓練得到的模型檔案。",
"step1:正在处理数据": "step1:正在处理数据",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a自動遍歷訓練資料夾下所有可解碼成音頻的檔案並進行切片歸一化在實驗目錄下生成2個wav資料夾暫時只支援單人訓練。",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "步驟2b: 使用CPU提取音高(如果模型帶音高), 使用GPU提取特徵(選擇卡號)",
"step3: 填写训练设置, 开始训练模型和索引": "步驟3: 填寫訓練設定, 開始訓練模型和索引",
"step3a:正在训练模型": "step3a:正在训练模型",
"一键训练": "一鍵訓練",
"(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;": "(1)MDX-Net(onnx_dereverb):對於雙通道混響是最好的選擇,不能去除單通道混響;",
"(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。": "(234)DeEcho: Aggressive 比 Normal 去除得更徹底DeReverb 額外去除混響,可去除單聲道混響,但是對高頻重的板式混響去不乾淨。",
"*GPT模型列表": "*GPT模型列表",
"*SoVITS模型列表": "*SoVITS模型列表",
"*实验/模型名": "*實驗/模型名",
"*文本标注文件": "*文本標註文件",
"*训练集音频文件目录": "*訓練集音頻文件目錄",
"*请上传并填写参考信息": "*請上傳並填寫參考信息",
"*请填写需要合成的目标文本和语种模式": "請填寫需要合成的目標文本和語言模式",
".list标注文件的路径": ".list標註文件的路徑",
".限制范围越小判别效果越好。": ".限制范围越小判别效果越好。",
"0-前置数据集获取工具": "0-前置數據集獲取工具",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5人聲伴奏分離&去混響去延遲工具",
"0b-语音切分工具": "0b-語音切分工具",
"0bb-语音降噪工具": "0bb-語音降噪工具",
"0c-中文批量离线ASR工具": "0c-中文批量離線ASR工具",
"0d-语音文本校对标注工具": "0d-語音文本校對標註工具",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"1A-训练集格式化工具": "1A-訓練集格式化工具",
"1Aa-文本内容": "1Aa-文本內容",
"1Aabc-训练集格式化一键三连": "1Aabc-訓練集格式化一鍵三連",
"1Ab-SSL自监督特征提取": "1Ab-SSL自監督特徵提取",
"1Ac-语义token提取": "1Ac-語義token提取",
"1B-微调训练": "1B-微調訓練",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITS訓練。用於分享的模型文件輸出在SoVITS_weights下。",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPT訓練。用於分享的模型文件輸出在GPT_weights下。",
"1C-推理": "1C-推理",
"1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍": "1、DeEcho-DeReverb 模型的耗時是另外兩個 DeEcho 模型的接近兩倍;",
"1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点": "1、保留人聲不帶和聲的音頻選這個對主人聲保留比HP5更好。內置HP2和HP3兩個模型HP3可能輕微漏伴奏但對主人聲保留比HP2稍微好一丁點",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-變聲",
"2、MDX-Net-Dereverb模型挺慢的": "2、MDX-Net-Dereverb 模型的處理時間挺慢的;",
"2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型": "2、僅保留主人聲帶和聲的音頻選這個對主人聲可能有削弱。內置HP5一個模型",
"3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "3、個人推薦的最乾淨的配置是先 MDX-Net 再 DeEcho-Aggressive。",
"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進程輸出資訊",
"SoVITS模型列表": "SoVITS模型列表",
"SoVITS训练进程输出信息": "SoVITS訓練進程輸出資訊",
"TTS推理WebUI进程输出信息": "TTS推理WebUI進程輸出資訊",
"TTS推理进程已关闭": "TTS推理進程已關閉",
"TTS推理进程已开启": "TTS推理進程已開啟",
"UVR5已关闭": "UVR5已關閉",
"UVR5已开启": "UVR5已開啟",
"UVR5进程输出信息": "UVR5進程輸出資訊",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix:混多少比例歸一化後音頻進來",
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size:怎麼算音量曲線,越小精度越大計算量越高(不是精度越大效果越好)",
"max:归一化后最大值多少": "max:歸一化後最大值多少",
"max_sil_kept:切完后静音最多留多长": "max_sil_kept:切完後靜音最多留多長",
"min_interval:最短切割间隔": "min_interval:最短切割間隔",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length:每段最小多長,如果第一段太短一直和後面段連起來直到超過這個值",
"temperature": "temperature",
"threshold:音量小于这个值视作静音的备选切割点": "threshold:音量小於這個值視作靜音的備選切割點",
"top_k": "top_k",
"top_p": "top_p",
"一键三连进程输出信息": "一鍵三連進程輸出資訊",
"不切": "不切",
"中文": "中文",
"中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e": "中文教程文檔https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e",
"中英混合": "中英混合",
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "使用UVR5模型進行人聲伴奏分離的批次處理。<br>有效資料夾路徑格式的例子D:\\path\\to\\input\\folder從檔案管理員地址欄複製。<br>模型分為三類:<br>1. 保留人聲選擇這個選項適用於沒有和聲的音訊。它比HP5更好地保留了人聲。它包括兩個內建模型HP2和HP3。HP3可能輕微漏出伴奏但比HP2更好地保留了人聲<br>2. 僅保留主人聲選擇這個選項適用於有和聲的音訊。它可能會削弱主人聲。它包括一個內建模型HP5。<br>3. 消除混響和延遲模型由FoxJoy提供<br>(1) MDX-Net對於立體聲混響的移除是最好的選擇但不能移除單聲道混響<br>&emsp;(234) DeEcho移除延遲效果。Aggressive模式比Normal模式移除得更徹底。DeReverb另外移除混響可以移除單聲道混響但對於高頻重的板式混響移除不乾淨。<br>消除混響/延遲注意事項:<br>1. DeEcho-DeReverb模型的處理時間是其他兩個DeEcho模型的近兩倍<br>2. MDX-Net-Dereverb模型相當慢<br>3. 個人推薦的最乾淨配置是先使用MDX-Net然後使用DeEcho-Aggressive。",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔輸入使用的卡號, 例如 0-1-2 使用卡0和卡1和卡2",
"人声伴奏分离批量处理, 使用UVR5模型。": "人聲伴奏分離批量處理, 使用UVR5模型。",
"人声提取激进程度": "人聲提取激進程度",
"以下文件或文件夹不存在": "沒有此文件或文件夾",
"以下模型不存在:": "以下模型不存在",
"伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "儲存名",
"保存的文件名, 默认空为和源文件同名": "儲存的檔案名,預設空為與來源檔案同名",
"保存的模型名不带后缀": "儲存的模型名不帶副檔名",
"使用无参考文本模式时建议使用微调的GPT听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "使用無參考文本模式時建議使用微調的GPT聽不清參考音頻說的啥(不曉得寫啥)可以開,開啟後無視填寫的參考文本。",
"保存频率save_every_epoch": "保存頻率save_every_epoch",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保護清輔音和呼吸聲防止電音撕裂等artifact拉滿0.5不開啟,調低加大保護力度但可能降低索引效果",
"修改": "修改",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"停止音频转换": "停止音訊轉換",
"全流程结束!": "全流程结束!",
"刷新音色列表和索引路径": "刷新音色列表和索引路徑",
"加载模型": "載入模型",
"加载预训练底模D路径": "加載預訓練底模D路徑",
"加载预训练底模G路径": "加載預訓練底模G路徑",
"单次推理": "单次推理",
"卸载音色省显存": "卸載音色節省 VRAM",
"变调(整数, 半音数量, 升八度12降八度-12)": "變調(整數、半音數量、升八度12降八度-12)",
"后处理重采样至最终采样率0为不进行重采样": "後處理重採樣至最終採樣率0為不進行重採樣",
"否": "否",
"启用相位声码器": "启用相位声码器",
"响应阈值": "響應閾值",
"响度因子": "響度因子",
"处理数据": "處理資料",
"导出Onnx模型": "导出Onnx模型",
"关闭TTS推理WebUI": "關閉 TTS Inference WebUI",
"关闭UVR5-WebUI": "關閉 UVR5-WebUI",
"关闭打标WebUI": "關閉 Labeling WebUI",
"凑50字一切": "湊50字一切",
"凑四句一切": "湊四句一切",
"切分后的子音频的输出根目录": "切分後的子音頻的輸出根目錄",
"切割使用的进程数": "切割使用的進程數",
"刷新模型路径": "刷新模型路徑",
"前端处理后的文本(每句):": "前端處理後的文本(每句):",
"去混响/去延迟,附:": "去混響/去延遲,附:",
"参考音频在3~10秒范围外请更换": "參考音頻在3~10秒範圍外請更換",
"参考音频的文本": "參考音頻的文本",
"参考音频的语种": "參考音頻的語種",
"可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。": "可選項:通過拖曳多個文件上傳多個參考音頻(建議同性),平均融合他們的音色。如不填寫此項,音色由左側單個參考音頻控制。如是微調模型,建議參考音頻全部在微調訓練集音色內,底模不用管。",
"合成语音": "合成語音",
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "合格的資料夾路徑格式舉例: E:\\codes\\py39\\vits_vc_gpu\\白鷺霜華測試範例(去文件管理器地址欄拷就行了)。",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。如果留空则使用.list文件里的绝对全路径。": "填切割後音頻所在目錄!讀取的音頻檔案完整路徑=該目錄-拼接-list檔案裡波形對應的檔案名不是全路徑。如果留空則使用.list檔案裡的絕對全路徑。",
"多语种混合": "多語種混合",
"多语种混合(粤语)": "多語種混合 (粵語)",
"实际输入的参考文本:": "實際輸入的參考文本:",
"实际输入的目标文本(切句后):": "實際輸入的目標文本(切句後):",
"实际输入的目标文本(每句):": "實際輸入的目標文本(每句):",
"实际输入的目标文本:": "實際輸入的目標文本:",
"导出文件格式": "導出檔格式",
"常见问题解答": "常見問題解答",
"常规设置": "一般設定",
"开始音频转换": "開始音訊轉換",
"很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练",
"性能设置": "效能設定",
"开启GPT训练": "開啟GPT訓練",
"开启SSL提取": "開啟SSL提取",
"开启SoVITS训练": "開啟SoVITS訓練",
"开启TTS推理WebUI": "開啟 TTS Inference WebUI",
"开启UVR5-WebUI": "開啟 UVR5-WebUI",
"开启一键三连": "開啟一鍵三連",
"开启打标WebUI": "開啟 Labeling WebUI",
"开启文本获取": "開啟文本獲取",
"开启无参考文本模式。不填参考文本亦相当于开启。": "開啟無參考文本模式。不填參考文本亦相當於開啟。",
"开启离线批量ASR": "開啟離線批量ASR",
"开启语义token提取": "開啟語義token提取",
"开启语音切割": "開啟語音切割",
"开启语音降噪": "開啟語音降噪",
"怎么切": "怎麼切",
"总训练轮数total_epoch": "總訓練輪數total_epoch",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量轉換,輸入待轉換音頻資料夾,或上傳多個音頻檔案,在指定資料夾(默認opt)下輸出轉換的音頻。",
"总训练轮数total_epoch不建议太高": "總訓練輪數total_epoch不建議太高",
"打标工具WebUI已关闭": "打標工具WebUI已關閉",
"打标工具WebUI已开启": "打標工具WebUI已開啟",
"打标工具进程输出信息": "打標工具進程輸出資訊",
"指定输出主人声文件夹": "指定输出主人声文件夹",
"指定输出文件夹": "指定輸出資料夾",
"指定输出非主人声文件夹": "指定输出非主人声文件夹",
"推理时间(ms):": "推理時間(ms):",
"推理音色": "推理音色",
"提取": "提取",
"提取音高和处理数据使用的CPU进程数": "提取音高和處理數據使用的CPU進程數",
"是": "是",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt檔案以節省硬碟空間",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights檔夾",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否緩存所有訓練集至 VRAM。小於10分鐘的小數據可緩存以加速訓練大數據緩存會爆 VRAM 也加不了多少速度",
"显卡信息": "顯示卡資訊",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何程式碼和檔案。詳見根目錄<b>使用需遵守的協議-LICENSE.txt</b>。",
"查看": "查看",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"检索特征占比": "檢索特徵佔比",
"按中文句号。切": "按中文句號。切",
"按标点符号切": "按標點符號切",
"按英文句号.切": "按英文句號.切",
"数据类型精度": "數據類型精度",
"文本模块学习率权重": "文本模塊學習率權重",
"文本进程输出信息": "文本進程輸出資訊",
"施工中,请静候佳音": "施工中,請靜候佳音",
"日文": "日文",
"日英混合": "日英混合",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt文件以節省硬盤空間",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights文件夾",
"是否开启dpo训练选项(实验性)": "是否開啟dpo訓練選項(實驗性)",
"是否直接对上次合成结果调整语速和音色。防止随机性。": "是否直接對上次合成結果調整語速和音色,以防止隨機性。",
"显卡信息": "顯卡資訊",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何代碼和文件。詳見根目錄<b>LICENSE</b>。",
"模型": "模型",
"模型推理": "模型推理",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(輸入logs資料夾下大檔案模型路徑),適用於訓一半不想訓了模型沒有自動提取儲存小檔案模型,或者想測試中間模型的情況",
"模型是否带音高指导": "模型是否帶音高指導",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否帶音高指導(唱歌一定要,語音可以不要)",
"模型是否带音高指导,1是0否": "模型是否帶音高指導1是0否",
"模型版本型号": "模型版本型號",
"模型融合, 可用于测试音色融合": "模型融合,可用於測試音色融合",
"模型路径": "模型路徑",
"每张显卡的batch_size": "每张显卡的batch_size",
"淡入淡出长度": "淡入淡出長度",
"模型分为三类:": "模型分為三類:",
"模型切换": "模型切換",
"每张显卡的batch_size": "每張顯卡的batch_size",
"版本": "版本",
"特征提取": "特徵提取",
"特征检索库文件路径,为空则使用下拉的选择结果": "特徵檢索庫檔路徑,為空則使用下拉的選擇結果",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性轉女性推薦+12key女性轉男性推薦-12key如果音域爆炸導致音色失真也可以自己調整到合適音域。",
"目标采样率": "目標取樣率",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "自動檢測index路徑,下拉式選擇(dropdown)",
"融合": "融合",
"要改的模型信息": "要改的模型資訊",
"要置入的模型信息": "要置入的模型資訊",
"训练": "訓練",
"训练模型": "訓練模型",
"训练特征索引": "訓練特徵索引",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log",
"请指定说话人id": "請指定說話人id",
"请选择index文件": "请选择index文件",
"请选择pth文件": "请选择pth文件",
"请选择说话人id": "請選擇說話人ID",
"粤英混合": "粵英混合",
"粤语": "粵語",
"终止ASR进程": "終止ASR進程",
"终止GPT训练": "終止GPT訓練",
"终止SSL提取进程": "終止SSL提取進程",
"终止SoVITS训练": "終止SoVITS訓練",
"终止一键三连": "終止一鍵三連",
"终止文本获取进程": "終止文本獲取進程",
"终止语义token提取进程": "終止語義token提取進程",
"终止语音切割": "終止語音切割",
"终止语音降噪进程": "終止語音降噪進程",
"缺少Hubert数据集": "缺少Hubert數據集",
"缺少语义数据集": "缺少語義數據集",
"缺少音素数据集": "缺少音素數據集",
"缺少音频数据集": "缺少音頻數據集",
"英文": "英文",
"语义token提取进程输出信息": "語義token提取進程輸出資訊",
"语速": "語速",
"语速调整,高为更快": "調整語速,高為更快",
"语音切割进程输出信息": "語音切割進程輸出資訊",
"语音降噪进程输出信息": "語音降噪進程輸出資訊",
"请上传3~10秒内参考音频超过会报错": "請上傳3~10秒內參考音頻超過會報錯",
"请上传参考音频": "請上傳參考音頻",
"请填入推理文本": "請填入推理文本",
"请填入正确的List路径": "請填寫正確的列表路徑",
"请填入正确的音频文件夹路径": "請填寫正確的音頻文件夾路徑",
"请输入有效文本": "請輸入有效文本",
"路径不能为空": "路徑不應該為空",
"路径错误": "路徑錯誤",
"转换": "轉換",
"输入实验名": "輸入實驗名稱",
"输入待处理音频文件夹路径": "輸入待處理音頻資料夾路徑",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "輸入待處理音頻資料夾路徑(去檔案管理器地址欄拷貝即可)",
"输入待处理音频文件路径(默认是正确格式示例)": "輸入待處理音頻檔案路徑(預設是正確格式示例)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "輸入源音量包絡替換輸出音量包絡融合比例越靠近1越使用輸出包絡",
"输入监听": "输入监听",
"输入训练文件夹路径": "輸入訓練檔案夾路徑",
"输入设备": "輸入設備",
"输入降噪": "輸入降噪",
"输入文件夹路径": "輸入文件夾路徑",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "輸出logs/實驗名目錄下應有23456開頭的文件和文件夾",
"输出信息": "輸出訊息",
"输出变声": "输出变声",
"输出设备": "輸出設備",
"输出降噪": "輸出降噪",
"输出音频(右下角三个点,点了可以下载)": "輸出音頻(右下角三個點,點了可以下載)",
"选择.index文件": "選擇 .index 檔案",
"选择.pth文件": "選擇 .pth 檔案",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "選擇音高提取演算法,輸入歌聲可用pm提速,harvest低音好但巨慢無比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU",
"采样率:": "采样率:",
"采样长度": "取樣長度",
"重载设备列表": "重載設備列表",
"音调设置": "音調設定",
"音频设备(请使用同种类驱动)": "音訊設備 (請使用同種類驅動)",
"音高算法": "音高演算法",
"额外推理时长": "額外推理時長"
"输出文件夹路径": "輸出文件夾路徑",
"输出的语音": "輸出的語音",
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。": "選擇訓練完存放在SoVITS_weights和GPT_weights下的模型。默認的一個是底模體驗5秒Zero Shot TTS用。",
"降噪结果输出文件夹": "降噪結果輸出文件夾",
"降噪音频文件输入文件夹": "降噪音頻文件輸入文件夾",
"需要合成的文本": "需要合成的文本",
"需要合成的语种": "需要合成的語種",
"韩文": "韓文",
"韩英混合": "韓英混合",
"音频加载失败": "無法加載音頻",
"音频自动切分输入路径,可文件可文件夹": "音頻自動切分輸入路徑,可文件可文件夾",
"预训练的GPT模型路径": "預訓練的GPT模型路徑",
"预训练的SSL模型路径": "預訓練的SSL模型路徑",
"预训练的SoVITS-D模型路径": "預訓練的SoVITS-D模型路徑",
"预训练的SoVITS-G模型路径": "預訓練的SoVITS-G模型路徑",
"预训练的中文BERT模型路径": "預訓練的中文BERT模型路徑"
}

View File

@ -1,135 +1,192 @@
{
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": ">=3則使用對harvest音高識別的結果使用中值濾波數值為濾波半徑使用可以削弱啞音",
"A模型权重": "A模型權重",
"A模型路径": "A模型路徑",
"B模型路径": "B模型路徑",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲線檔案可選一行一個音高代替預設的F0及升降調",
"Index Rate": "Index Rate",
"Onnx导出": "Onnx导出",
"Onnx输出路径": "Onnx输出路径",
"RVC模型路径": "RVC模型路径",
"ckpt处理": "ckpt處理",
"harvest进程数": "harvest進程數",
"index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡號配置以-分隔輸入使用的不同進程卡號,例如0-0-1使用在卡0上跑2個進程並在卡1上跑1個進程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1填寫實驗配置。實驗數據放在logs下每個實驗一個資料夾需手動輸入實驗名路徑內含實驗配置、日誌、訓練得到的模型檔案。",
"step1:正在处理数据": "step1:正在处理数据",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a自動遍歷訓練資料夾下所有可解碼成音頻的檔案並進行切片歸一化在實驗目錄下生成2個wav資料夾暫時只支援單人訓練。",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "步驟2b: 使用CPU提取音高(如果模型帶音高), 使用GPU提取特徵(選擇卡號)",
"step3: 填写训练设置, 开始训练模型和索引": "步驟3: 填寫訓練設定, 開始訓練模型和索引",
"step3a:正在训练模型": "step3a:正在训练模型",
"一键训练": "一鍵訓練",
"(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;": "(1)MDX-Net(onnx_dereverb):對於雙通道混響是最好的選擇,不能去除單通道混響;",
"(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。": "(234)DeEcho去除延遲效果。Aggressive 比 Normal 去除得更徹底DeReverb 額外去除混響,可去除單聲道混響,但是對高頻重的板式混響去不乾淨。",
"*GPT模型列表": "*GPT模型列表",
"*SoVITS模型列表": "*SoVITS模型列表",
"*实验/模型名": "*實驗/模型名",
"*文本标注文件": "*文本標注文件",
"*训练集音频文件目录": "*訓練集音頻文件目錄",
"*请上传并填写参考信息": "*請上傳並填寫參考資訊",
"*请填写需要合成的目标文本和语种模式": "請填寫需要合成的目標文本和語言模式",
".list标注文件的路径": ".list標注文件的路徑",
".限制范围越小判别效果越好。": ".限制范围越小判别效果越好。",
"0-前置数据集获取工具": "0-前置數據集獲取工具",
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5人聲伴奏分離&去混響去延遲工具",
"0b-语音切分工具": "0b-語音切分工具",
"0bb-语音降噪工具": "0bb-語音降噪工具",
"0c-中文批量离线ASR工具": "0c-中文批量離線ASR工具",
"0d-语音文本校对标注工具": "0d-語音文本校對標注工具",
"1-GPT-SoVITS-TTS": "1-GPT-SoVITS-TTS",
"1A-训练集格式化工具": "1A-訓練集格式化工具",
"1Aa-文本内容": "1Aa-文本內容",
"1Aabc-训练集格式化一键三连": "1Aabc-訓練集格式化一鍵三連",
"1Ab-SSL自监督特征提取": "1Ab-SSL自監督特徵提取",
"1Ac-语义token提取": "1Ac-語義token提取",
"1B-微调训练": "1B-微調訓練",
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITS訓練。用於分享的模型文件輸出在SoVITS_weights下。",
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPT訓練。用於分享的模型文件輸出在GPT_weights下。",
"1C-推理": "1C-推理",
"1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍": "1、DeEcho-DeReverb 模型的耗時是另外兩個 DeEcho 模型的接近兩倍;",
"1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点": "1、保留人聲不帶和聲的音頻選這個對主人聲保留比HP5更好。內置HP2和HP3兩個模型HP3可能輕微漏伴奏但對主人聲保留比HP2稍微好一丁點",
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-變聲",
"2、MDX-Net-Dereverb模型挺慢的": "2、MDX-Net-Dereverb模型挺慢的",
"2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型": "2、僅保留主人聲帶和聲的音頻選這個對主人聲可能有削弱。內置HP5一個模型",
"3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "3、個人推薦的最乾淨的配置是先 MDX-Net 再 DeEcho-Aggressive。",
"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進程輸出資訊",
"SoVITS模型列表": "SoVITS模型列表",
"SoVITS训练进程输出信息": "SoVITS訓練進程輸出資訊",
"TTS推理WebUI进程输出信息": "TTS推理WebUI進程輸出資訊",
"TTS推理进程已关闭": "TTS推理進程已關閉",
"TTS推理进程已开启": "TTS推理進程已開啟",
"UVR5已关闭": "UVR5已關閉",
"UVR5已开启": "UVR5已開啟",
"UVR5进程输出信息": "UVR5進程輸出資訊",
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix:混多少比例歸一化後音頻進來",
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size:怎麼算音量曲線,越小精度越大計算量越高(不是精度越大效果越好)",
"max:归一化后最大值多少": "max:歸一化後最大值多少",
"max_sil_kept:切完后静音最多留多长": "max_sil_kept:切完後靜音最多留多長",
"min_interval:最短切割间隔": "min_interval:最短切割間隔",
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "min_length:每段最小多長,如果第一段太短一直和後面段連起來直到超過這個值",
"temperature": "temperature",
"threshold:音量小于这个值视作静音的备选切割点": "threshold:音量小於這個值視作靜音的備選切割點",
"top_k": "top_k",
"top_p": "top_p",
"一键三连进程输出信息": "一鍵三連進程輸出資訊",
"不切": "不切",
"中文": "中文",
"中文教程文档https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e": "中文教程文檔https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e",
"中英混合": "中英混合",
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
"人声伴奏分离批量处理, 使用UVR5模型。 <br>合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。 <br>模型分为三类: <br>1、保留人声不带和声的音频选这个对主人声保留比HP5更好。内置HP2和HP3两个模型HP3可能轻微漏伴奏但对主人声保留比HP2稍微好一丁点 <br>2、仅保留主人声带和声的音频选这个对主人声可能有削弱。内置HP5一个模型 <br> 3、去混响、去延迟模型by FoxJoy<br>(1)MDX-Net(onnx_dereverb):对于双通道混响是最好的选择,不能去除单通道混响;<br>&emsp;(234)DeEcho:去除延迟效果。Aggressive比Normal去除得更彻底DeReverb额外去除混响可去除单声道混响但是对高频重的板式混响去不干净。<br>去混响/去延迟,附:<br>1、DeEcho-DeReverb模型的耗时是另外2个DeEcho模型的接近2倍<br>2、MDX-Net-Dereverb模型挺慢的<br>3、个人推荐的最干净的配置是先MDX-Net再DeEcho-Aggressive。": "使用UVR5模型進行人聲伴奏分離的批次處理。<br>有效資料夾路徑格式的例子D:\\path\\to\\input\\folder從檔案管理員地址欄複製。<br>模型分為三類:<br>1. 保留人聲選擇這個選項適用於沒有和聲的音訊。它比HP5更好地保留了人聲。它包括兩個內建模型HP2和HP3。HP3可能輕微漏出伴奏但比HP2更好地保留了人聲<br>2. 僅保留主人聲選擇這個選項適用於有和聲的音訊。它可能會削弱主人聲。它包括一個內建模型HP5。<br>3. 消除混響和延遲模型由FoxJoy提供<br>(1) MDX-Net對於立體聲混響的移除是最好的選擇但不能移除單聲道混響<br>&emsp;(234) DeEcho移除延遲效果。Aggressive模式比Normal模式移除得更徹底。DeReverb另外移除混響可以移除單聲道混響但對於高頻重的板式混響移除不乾淨。<br>消除混響/延遲注意事項:<br>1. DeEcho-DeReverb模型的處理時間是其他兩個DeEcho模型的近兩倍<br>2. MDX-Net-Dereverb模型相當慢<br>3. 個人推薦的最乾淨配置是先使用MDX-Net然後使用DeEcho-Aggressive。",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔輸入使用的卡號, 例如 0-1-2 使用卡0和卡1和卡2",
"人声伴奏分离批量处理, 使用UVR5模型。": "人聲伴奏分離批量處理, 使用UVR5模型。",
"人声提取激进程度": "人聲提取激進程度",
"以下文件或文件夹不存在": "沒有此文件或文件夾",
"以下模型不存在:": "#以下模型不存在",
"伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲",
"使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率",
"保存名": "儲存名",
"保存的文件名, 默认空为和源文件同名": "儲存的檔案名,預設空為與來源檔案同名",
"保存的模型名不带后缀": "儲存的模型名不帶副檔名",
"使用无参考文本模式时建议使用微调的GPT听不清参考音频说的啥(不晓得写啥)可以开。<br>开启后无视填写的参考文本。": "使用無參考文本模式時建議使用微調的GPT聽不清參考音頻說的啥(不曉得寫啥)可以開,開啟後無視填寫的參考文本。",
"保存频率save_every_epoch": "保存頻率save_every_epoch",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保護清輔音和呼吸聲防止電音撕裂等artifact拉滿0.5不開啟,調低加大保護力度但可能降低索引效果",
"修改": "修改",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"停止音频转换": "停止音訊轉換",
"全流程结束!": "全流程结束!",
"刷新音色列表和索引路径": "刷新音色列表和索引路徑",
"加载模型": "載入模型",
"加载预训练底模D路径": "加載預訓練底模D路徑",
"加载预训练底模G路径": "加載預訓練底模G路徑",
"单次推理": "单次推理",
"卸载音色省显存": "卸載音色節省 VRAM",
"变调(整数, 半音数量, 升八度12降八度-12)": "變調(整數、半音數量、升八度12降八度-12)",
"后处理重采样至最终采样率0为不进行重采样": "後處理重採樣至最終採樣率0為不進行重採樣",
"否": "否",
"启用相位声码器": "启用相位声码器",
"响应阈值": "響應閾值",
"响度因子": "響度因子",
"处理数据": "處理資料",
"导出Onnx模型": "导出Onnx模型",
"关闭TTS推理WebUI": "關閉 TTS Inference WebUI",
"关闭UVR5-WebUI": "關閉 UVR5-WebUI",
"关闭打标WebUI": "關閉 Labeling WebUI",
"凑50字一切": "湊50字一切",
"凑四句一切": "湊四句一切",
"切分后的子音频的输出根目录": "切分後的子音頻的輸出根目錄",
"切割使用的进程数": "切割使用的進程數",
"刷新模型路径": "刷新模型路徑",
"前端处理后的文本(每句):": "前端處理後的文本(每句):",
"去混响/去延迟,附:": "去混響/去延遲,附:",
"参考音频在3~10秒范围外请更换": "參考音頻在3~10秒範圍外請更換",
"参考音频的文本": "參考音頻的文本",
"参考音频的语种": "參考音頻的語種",
"可选项:通过拖拽多个文件上传多个参考音频(建议同性),平均融合他们的音色。如不填写此项,音色由左侧单个参考音频控制。如是微调模型,建议参考音频全部在微调训练集音色内,底模不用管。": "可選項:通過拖曳多個文件上傳多個參考音頻(建議同性),平均融合他們的音色。如不填寫此項,音色由左側單個參考音頻控制。如是微調模型,建議參考音頻全部在微調訓練集音色內,底模不用管。",
"合成语音": "合成語音",
"合格的文件夹路径格式举例: E:\\codes\\py39\\vits_vc_gpu\\白鹭霜华测试样例(去文件管理器地址栏拷就行了)。": "合格的資料夾路徑格式舉例: E:\\codes\\py39\\vits_vc_gpu\\白鷺霜華測試範例(去文件管理器地址欄拷就行了)。",
"填切割后音频所在目录!读取的音频文件完整路径=该目录-拼接-list文件里波形对应的文件名不是全路径。如果留空则使用.list文件里的绝对全路径。": "填切割後音頻所在目錄!讀取的音頻檔案完整路徑=該目錄-拼接-list檔案裡波形對應的檔案名不是全路徑。如果留空則使用.list檔案裡的絕對全路徑。",
"多语种混合": "多語種混合",
"多语种混合(粤语)": "多語種混合 (粵語)",
"实际输入的参考文本:": "實際輸入的參考文本:",
"实际输入的目标文本(切句后):": "實際輸入的目標文本(切句後):",
"实际输入的目标文本(每句):": "實際輸入的目標文本(每句):",
"实际输入的目标文本:": "實際輸入的目標文本:",
"导出文件格式": "導出檔格式",
"常见问题解答": "常見問題解答",
"常规设置": "一般設定",
"开始音频转换": "開始音訊轉換",
"很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练",
"性能设置": "效能設定",
"开启GPT训练": "開啟GPT訓練",
"开启SSL提取": "開啟SSL提取",
"开启SoVITS训练": "開啟SoVITS訓練",
"开启TTS推理WebUI": "開啟 TTS Inference WebUI",
"开启UVR5-WebUI": "開啟 UVR5-WebUI",
"开启一键三连": "開啟一鍵三連",
"开启打标WebUI": "開啟 Labeling WebUI",
"开启文本获取": "開啟文本獲取",
"开启无参考文本模式。不填参考文本亦相当于开启。": "開啟無參考文本模式。不填參考文本亦相當於開啟。",
"开启离线批量ASR": "開啟離線批量ASR",
"开启语义token提取": "開啟語義token提取",
"开启语音切割": "開啟語音切割",
"开启语音降噪": "開啟語音降噪",
"怎么切": "怎麼切",
"总训练轮数total_epoch": "總訓練輪數total_epoch",
"批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量轉換,輸入待轉換音頻資料夾,或上傳多個音頻檔案,在指定資料夾(默認opt)下輸出轉換的音頻。",
"总训练轮数total_epoch不建议太高": "總訓練輪數total_epoch不建議太高",
"打标工具WebUI已关闭": "打標工具WebUI已關閉",
"打标工具WebUI已开启": "打標工具WebUI已開啟",
"打标工具进程输出信息": "打標工具進程輸出資訊",
"指定输出主人声文件夹": "指定输出主人声文件夹",
"指定输出文件夹": "指定輸出資料夾",
"指定输出非主人声文件夹": "指定输出非主人声文件夹",
"推理时间(ms):": "推理時間(ms):",
"推理音色": "推理音色",
"提取": "提取",
"提取音高和处理数据使用的CPU进程数": "提取音高和處理數據使用的CPU進程數",
"是": "是",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt檔案以節省硬碟空間",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights檔夾",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否緩存所有訓練集至 VRAM。小於10分鐘的小數據可緩存以加速訓練大數據緩存會爆 VRAM 也加不了多少速度",
"显卡信息": "顯示卡資訊",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何程式碼和檔案。詳見根目錄<b>使用需遵守的協議-LICENSE.txt</b>。",
"查看": "查看",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"检索特征占比": "檢索特徵佔比",
"按中文句号。切": "按中文句號。切",
"按标点符号切": "按標點符號切",
"按英文句号.切": "按英文句號.切",
"数据类型精度": "數據類型精度",
"文本模块学习率权重": "文本模塊學習率權重",
"文本进程输出信息": "文本進程輸出資訊",
"施工中,请静候佳音": "施工中,請靜候佳音",
"日文": "日文",
"日英混合": "日英混合",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt文件以節省硬盤空間",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights文件夾",
"是否开启dpo训练选项(实验性)": "是否開啟dpo訓練選項(實驗性)",
"是否直接对上次合成结果调整语速和音色。防止随机性。": "是否直接對上次合成結果調整語速和音色,以防止隨機性。",
"显卡信息": "顯卡資訊",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何代碼和文件。詳見根目錄<b>LICENSE</b>。",
"模型": "模型",
"模型推理": "模型推理",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(輸入logs資料夾下大檔案模型路徑),適用於訓一半不想訓了模型沒有自動提取儲存小檔案模型,或者想測試中間模型的情況",
"模型是否带音高指导": "模型是否帶音高指導",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否帶音高指導(唱歌一定要,語音可以不要)",
"模型是否带音高指导,1是0否": "模型是否帶音高指導1是0否",
"模型版本型号": "模型版本型號",
"模型融合, 可用于测试音色融合": "模型融合,可用於測試音色融合",
"模型路径": "模型路徑",
"每张显卡的batch_size": "每张显卡的batch_size",
"淡入淡出长度": "淡入淡出長度",
"模型分为三类:": "模型分為三類:",
"模型切换": "模型切換",
"每张显卡的batch_size": "每張顯卡的batch_size",
"版本": "版本",
"特征提取": "特徵提取",
"特征检索库文件路径,为空则使用下拉的选择结果": "特徵檢索庫檔路徑,為空則使用下拉的選擇結果",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性轉女性推薦+12key女性轉男性推薦-12key如果音域爆炸導致音色失真也可以自己調整到合適音域。",
"目标采样率": "目標取樣率",
"算法延迟(ms):": "算法延迟(ms):",
"自动检测index路径,下拉式选择(dropdown)": "自動檢測index路徑,下拉式選擇(dropdown)",
"融合": "融合",
"要改的模型信息": "要改的模型資訊",
"要置入的模型信息": "要置入的模型資訊",
"训练": "訓練",
"训练模型": "訓練模型",
"训练特征索引": "訓練特徵索引",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log",
"请指定说话人id": "請指定說話人id",
"请选择index文件": "请选择index文件",
"请选择pth文件": "请选择pth文件",
"请选择说话人id": "請選擇說話人ID",
"粤英混合": "粵英混合",
"粤语": "粵語",
"终止ASR进程": "終止ASR進程",
"终止GPT训练": "終止GPT訓練",
"终止SSL提取进程": "終止SSL提取進程",
"终止SoVITS训练": "終止SoVITS訓練",
"终止一键三连": "終止一鍵三連",
"终止文本获取进程": "終止文本獲取進程",
"终止语义token提取进程": "終止語義token提取進程",
"终止语音切割": "終止語音切割",
"终止语音降噪进程": "終止語音降噪進程",
"缺少Hubert数据集": "缺少Hubert數據集",
"缺少语义数据集": "缺少語義數據集",
"缺少音素数据集": "缺少音素數據集",
"缺少音频数据集": "缺少音頻數據集",
"英文": "英文",
"语义token提取进程输出信息": "語義token提取進程輸出資訊",
"语速": "語速",
"语速调整,高为更快": "調整語速,高為更快",
"语音切割进程输出信息": "語音切割進程輸出資訊",
"语音降噪进程输出信息": "語音降噪進程輸出資訊",
"请上传3~10秒内参考音频超过会报错": "請上傳3~10秒內參考音頻超過會報錯",
"请上传参考音频": "請上傳參考音頻",
"请填入推理文本": "請填入推理文本",
"请填入正确的List路径": "請填寫正確的列表路徑",
"请填入正确的音频文件夹路径": "請填寫正確的音頻文件夾路徑",
"请输入有效文本": "請輸入有效文本",
"路径不能为空": "路徑不應該為空",
"路径错误": "路徑錯誤",
"转换": "轉換",
"输入实验名": "輸入實驗名稱",
"输入待处理音频文件夹路径": "輸入待處理音頻資料夾路徑",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "輸入待處理音頻資料夾路徑(去檔案管理器地址欄拷貝即可)",
"输入待处理音频文件路径(默认是正确格式示例)": "輸入待處理音頻檔案路徑(預設是正確格式示例)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "輸入源音量包絡替換輸出音量包絡融合比例越靠近1越使用輸出包絡",
"输入监听": "输入监听",
"输入训练文件夹路径": "輸入訓練檔案夾路徑",
"输入设备": "輸入設備",
"输入降噪": "輸入降噪",
"输入文件夹路径": "輸入文件夾路徑",
"输出logs/实验名目录下应有23456开头的文件和文件夹": "輸出logs/實驗名目錄下應有23456開頭的文件和文件夾",
"输出信息": "輸出訊息",
"输出变声": "输出变声",
"输出设备": "輸出設備",
"输出降噪": "輸出降噪",
"输出音频(右下角三个点,点了可以下载)": "輸出音頻(右下角三個點,點了可以下載)",
"选择.index文件": "選擇 .index 檔案",
"选择.pth文件": "選擇 .pth 檔案",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU",
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU": "選擇音高提取演算法,輸入歌聲可用pm提速,harvest低音好但巨慢無比,crepe效果好但吃GPU,rmvpe效果最好且微吃GPU",
"选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU": "选择音高提取算法:输入歌声可用pm提速,高质量语音但CPU差可用dio提速,harvest质量更好但慢,rmvpe效果最好且微吃CPU/GPU",
"采样率:": "采样率:",
"采样长度": "取樣長度",
"重载设备列表": "重載設備列表",
"音调设置": "音調設定",
"音频设备(请使用同种类驱动)": "音訊設備 (請使用同種類驅動)",
"音高算法": "音高演算法",
"额外推理时长": "額外推理時長"
"输出文件夹路径": "輸出文件夾路徑",
"输出的语音": "輸出的語音",
"选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。": "選擇訓練完存放在SoVITS_weights和GPT_weights下的模型。默認的一個是底模體驗5秒Zero Shot TTS用。",
"降噪结果输出文件夹": "降噪結果輸出文件夾",
"降噪音频文件输入文件夹": "降噪音頻文件輸入文件夾",
"需要合成的文本": "需要合成的文本",
"需要合成的语种": "需要合成的語種",
"韩文": "韓文",
"韩英混合": "韓英混合",
"音频加载失败": "無法加載音頻",
"音频自动切分输入路径,可文件可文件夹": "音頻自動切分輸入路徑,可文件可文件夾",
"预训练的GPT模型路径": "預訓練的GPT模型路徑",
"预训练的SSL模型路径": "預訓練的SSL模型路徑",
"预训练的SoVITS-D模型路径": "預訓練的SoVITS-D模型路徑",
"预训练的SoVITS-G模型路径": "預訓練的SoVITS-G模型路徑",
"预训练的中文BERT模型路径": "預訓練的中文BERT模型路徑"
}

View File

@ -1,47 +0,0 @@
import json
import os
from collections import OrderedDict
# Define the standard file name
standard_file = "locale/zh_CN.json"
# Find all JSON files in the directory
dir_path = "locale/"
languages = [
os.path.join(dir_path, f)
for f in os.listdir(dir_path)
if f.endswith(".json") and f != standard_file
]
# Load the standard file
with open(standard_file, "r", encoding="utf-8") as f:
standard_data = json.load(f, object_pairs_hook=OrderedDict)
# Loop through each language file
for lang_file in languages:
# Load the language file
with open(lang_file, "r", encoding="utf-8") as f:
lang_data = json.load(f, object_pairs_hook=OrderedDict)
# Find the difference between the language file and the standard file
diff = set(standard_data.keys()) - set(lang_data.keys())
miss = set(lang_data.keys()) - set(standard_data.keys())
# Add any missing keys to the language file
for key in diff:
lang_data[key] = key
# Del any extra keys to the language file
for key in miss:
del lang_data[key]
# Sort the keys of the language file to match the order of the standard file
lang_data = OrderedDict(
sorted(lang_data.items(), key=lambda x: list(standard_data.keys()).index(x[0]))
)
# Save the updated language file
with open(lang_file, "w", encoding="utf-8") as f:
json.dump(lang_data, f, ensure_ascii=False, indent=4, sort_keys=True)
f.write("\n")

View File

@ -1,8 +1,15 @@
import ast
import glob
import json
import os
from collections import OrderedDict
I18N_JSON_DIR : os.PathLike = os.path.join(os.path.dirname(os.path.relpath(__file__)), 'locale')
DEFAULT_LANGUAGE: str = "zh_CN" # 默认语言
TITLE_LEN : int = 60 # 标题显示长度
KEY_LEN : int = 30 # 键名显示长度
SHOW_KEYS : bool = False # 是否显示键信息
SORT_KEYS : bool = False # 是否按全局键名写入文件
def extract_i18n_strings(node):
i18n_strings = []
@ -21,55 +28,99 @@ def extract_i18n_strings(node):
return i18n_strings
def scan_i18n_strings():
"""
scan the directory for all .py files (recursively)
for each file, parse the code into an AST
for each AST, extract the i18n strings
"""
strings = []
print(" Scanning Files and Extracting i18n Strings ".center(TITLE_LEN, "="))
for filename in glob.iglob("**/*.py", recursive=True):
with open(filename, "r", encoding="utf-8") as f:
code = f.read()
if "I18nAuto" in code:
tree = ast.parse(code)
i18n_strings = extract_i18n_strings(tree)
print(f"{filename.ljust(30)}: {len(i18n_strings)}")
strings.extend(i18n_strings)
# scan the directory for all .py files (recursively)
# for each file, parse the code into an AST
# for each AST, extract the i18n strings
code_keys = set(strings)
print(f"{'Total Unique'.ljust(30)}: {len(code_keys)}")
return code_keys
strings = []
for filename in glob.iglob("**/*.py", recursive=True):
with open(filename, "r") as f:
code = f.read()
if "I18nAuto" in code:
tree = ast.parse(code)
i18n_strings = extract_i18n_strings(tree)
print(filename, len(i18n_strings))
strings.extend(i18n_strings)
code_keys = set(strings)
"""
n_i18n.py
gui_v1.py 26
app.py 16
infer-web.py 147
scan_i18n.py 0
i18n.py 0
lib/train/process_ckpt.py 1
"""
print()
print("Total unique:", len(code_keys))
def update_i18n_json(json_file, standard_keys):
standard_keys = sorted(standard_keys)
print(f" Process {json_file} ".center(TITLE_LEN, "="))
# 读取 JSON 文件
with open(json_file, "r", encoding="utf-8") as f:
json_data = json.load(f, object_pairs_hook=OrderedDict)
# 打印处理前的 JSON 条目数
len_before = len(json_data)
print(f"{'Total Keys'.ljust(KEY_LEN)}: {len_before}")
# 识别缺失的键并补全
miss_keys = set(standard_keys) - set(json_data.keys())
if len(miss_keys) > 0:
print(f"{'Missing Keys (+)'.ljust(KEY_LEN)}: {len(miss_keys)}")
for key in miss_keys:
if DEFAULT_LANGUAGE in json_file:
# 默认语言的键值相同.
json_data[key] = key
else:
# 其他语言的值设置为 #! + 键名以标注未被翻译.
json_data[key] = "#!" + key
if SHOW_KEYS:
print(f"{'Added Missing Key'.ljust(KEY_LEN)}: {key}")
# 识别多余的键并删除
diff_keys = set(json_data.keys()) - set(standard_keys)
if len(diff_keys) > 0:
print(f"{'Unused Keys (-)'.ljust(KEY_LEN)}: {len(diff_keys)}")
for key in diff_keys:
del json_data[key]
if SHOW_KEYS:
print(f"{'Removed Unused Key'.ljust(KEY_LEN)}: {key}")
# 按键顺序排序
json_data = OrderedDict(
sorted(
json_data.items(),
key=lambda x: (
list(standard_keys).index(x[0]) if x[0] in standard_keys and not x[1].startswith('#!') else len(json_data),
)
)
)
# 打印处理后的 JSON 条目数
if len(miss_keys) != 0 or len(diff_keys) != 0:
print(f"{'Total Keys (After)'.ljust(KEY_LEN)}: {len(json_data)}")
# 识别有待翻译的键
num_miss_translation = 0
duplicate_items = {}
for key, value in json_data.items():
if value.startswith("#!"):
num_miss_translation += 1
if SHOW_KEYS:
print(f"{'Missing Translation'.ljust(KEY_LEN)}: {key}")
if value in duplicate_items:
duplicate_items[value].append(key)
else:
duplicate_items[value] = [key]
# 打印是否有重复的值
for value, keys in duplicate_items.items():
if len(keys) > 1:
print("\n".join([f"\033[31m{'[Failed] Duplicate Value'.ljust(KEY_LEN)}: {key} -> {value}\033[0m" for key in keys]))
if num_miss_translation > 0:
print(f"\033[31m{'[Failed] Missing Translation'.ljust(KEY_LEN)}: {num_miss_translation}\033[0m")
else:
print(f"\033[32m[Passed] All Keys Translated\033[0m")
# 将处理后的结果写入 JSON 文件
with open(json_file, "w", encoding="utf-8") as f:
json.dump(json_data, f, ensure_ascii=False, indent=4, sort_keys=SORT_KEYS)
f.write("\n")
print(f" Updated {json_file} ".center(TITLE_LEN, "=") + '\n')
standard_file = "i18n/locale/zh_CN.json"
with open(standard_file, "r", encoding="utf-8") as f:
standard_data = json.load(f, object_pairs_hook=OrderedDict)
standard_keys = set(standard_data.keys())
# Define the standard file name
unused_keys = standard_keys - code_keys
print("Unused keys:", len(unused_keys))
for unused_key in unused_keys:
print("\t", unused_key)
missing_keys = code_keys - standard_keys
print("Missing keys:", len(missing_keys))
for missing_key in missing_keys:
print("\t", missing_key)
code_keys_dict = OrderedDict()
for s in strings:
code_keys_dict[s] = s
# write back
with open(standard_file, "w", encoding="utf-8") as f:
json.dump(code_keys_dict, f, ensure_ascii=False, indent=4, sort_keys=True)
f.write("\n")
if __name__ == "__main__":
code_keys = scan_i18n_strings()
for json_file in os.listdir(I18N_JSON_DIR):
if json_file.endswith(r".json"):
json_file = os.path.join(I18N_JSON_DIR, json_file)
update_i18n_json(json_file, code_keys)

View File

@ -1,7 +1,10 @@
import platform,os,traceback
import ffmpeg
import numpy as np
import gradio as gr
from tools.i18n.i18n import I18nAuto
import pandas as pd
i18n = I18nAuto(language=os.environ.get('language','Auto'))
def load_audio(file, sr):
try:
@ -20,12 +23,93 @@ def load_audio(file, sr):
)
except Exception as e:
traceback.print_exc()
raise RuntimeError(f"Failed to load audio: {e}")
raise RuntimeError(i18n("音频加载失败"))
return np.frombuffer(out, np.float32).flatten()
def clean_path(path_str):
if platform.system() == 'Windows':
path_str = path_str.replace('/', '\\')
return path_str.strip(" ").strip('"').strip("\n").strip('"').strip(" ").strip("\u202a")
def clean_path(path_str:str):
if path_str.endswith(('\\','/')):
return clean_path(path_str[0:-1])
path_str = path_str.replace('/', os.sep).replace('\\', os.sep)
return path_str.strip(" ").strip('\'').strip("\n").strip('"').strip(" ").strip("\u202a")
def check_for_existance(file_list:list=None,is_train=False,is_dataset_processing=False):
files_status=[]
if is_train == True and file_list:
file_list.append(os.path.join(file_list[0],'2-name2text.txt'))
file_list.append(os.path.join(file_list[0],'3-bert'))
file_list.append(os.path.join(file_list[0],'4-cnhubert'))
file_list.append(os.path.join(file_list[0],'5-wav32k'))
file_list.append(os.path.join(file_list[0],'6-name2semantic.tsv'))
for file in file_list:
if os.path.exists(file):files_status.append(True)
else:files_status.append(False)
if sum(files_status)!=len(files_status):
if is_train:
for file,status in zip(file_list,files_status):
if status:pass
else:gr.Warning(file)
gr.Warning(i18n('以下文件或文件夹不存在'))
return False
elif is_dataset_processing:
if files_status[0]:
return True
elif not files_status[0]:
gr.Warning(file_list[0])
elif not files_status[1] and file_list[1]:
gr.Warning(file_list[1])
gr.Warning(i18n('以下文件或文件夹不存在'))
return False
else:
if file_list[0]:
gr.Warning(file_list[0])
gr.Warning(i18n('以下文件或文件夹不存在'))
else:
gr.Warning(i18n('路径不能为空'))
return False
return True
def check_details(path_list=None,is_train=False,is_dataset_processing=False):
if is_dataset_processing:
list_path, audio_path = path_list
if (not list_path.endswith('.list')):
gr.Warning(i18n('请填入正确的List路径'))
return
if audio_path:
if not os.path.isdir(audio_path):
gr.Warning(i18n('请填入正确的音频文件夹路径'))
return
with open(list_path,"r",encoding="utf8")as f:
line=f.readline().strip("\n").split("\n")
wav_name, _, __, ___ = line[0].split("|")
wav_name=clean_path(wav_name)
if (audio_path != "" and audio_path != None):
wav_name = os.path.basename(wav_name)
wav_path = "%s/%s"%(audio_path, wav_name)
else:
wav_path=wav_name
if os.path.exists(wav_path):
...
else:
gr.Warning(i18n('路径错误'))
return
if is_train:
path_list.append(os.path.join(path_list[0],'2-name2text.txt'))
path_list.append(os.path.join(path_list[0],'4-cnhubert'))
path_list.append(os.path.join(path_list[0],'5-wav32k'))
path_list.append(os.path.join(path_list[0],'6-name2semantic.tsv'))
phone_path, hubert_path, wav_path, semantic_path = path_list[1:]
with open(phone_path,'r',encoding='utf-8') as f:
if f.read(1):...
else:gr.Warning(i18n('缺少音素数据集'))
if os.listdir(hubert_path):...
else:gr.Warning(i18n('缺少Hubert数据集'))
if os.listdir(wav_path):...
else:gr.Warning(i18n('缺少音频数据集'))
df = pd.read_csv(
semantic_path, delimiter="\t", encoding="utf-8"
)
if len(df) >= 1:...
else:gr.Warning(i18n('缺少语义数据集'))

View File

@ -3,7 +3,7 @@ import traceback
from scipy.io import wavfile
# parent_directory = os.path.dirname(os.path.abspath(__file__))
# sys.path.append(parent_directory)
from my_utils import load_audio
from tools.my_utils import load_audio
from slicer2 import Slicer
def slice(inp,opt_root,threshold,min_length,min_interval,hop_size,max_sil_kept,_max,alpha,i_part,all_part):

Some files were not shown because too many files have changed in this diff Show More