Merge pull request #107 from RafaelGodoyEbert/main

Fix of the i18n implementation + pt_BR
This commit is contained in:
RVC-Boss 2024-01-21 16:03:04 +08:00 committed by GitHub
commit b82259b905
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 456 additions and 368 deletions

View File

@ -1,282 +1,277 @@
{ {
"本软件以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.", '': 'Unfortunately, there is no compatible GPU available to support your training.',
"*GPT模型列表": "*GPT models list", 'UVR5': 'UVR5 opened ',
"*SoVITS模型列表": "*SoVITS models list", 'UVR5': 'UVR5 closed',
"*实验/模型名": "*Experiment/model name", '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.',
"*文本标注文件": "*Text labelling file", '0-': '0-Fech dataset',
"*训练集音频文件目录": "*Audio dataset folder", '0a-UVR5&': '0a-UVR5 webui (for vocal separation, deecho, dereverb and denoise)',
"*请上传并填写参考信息": "*Please upload and fill reference information", 'UVR5-WebUI': 'Open UVR5-WebUI',
"*请填写需要合成的目标文本": "*Please fill the text that needs inference", 'UVR5': 'UVR5 process output log',
"0-前置数据集获取工具": "0-Fech dataset", '0b-': '0b-Audio slicer',
"0a-UVR5人声伴奏分离&去混响去延迟工具": "0a-UVR5 webui (for vocal separation, deecho, dereverb and denoise)", '': 'Audio slicer input (file or folder)',
"0b-语音切分工具": "0b-Audio slicer", '': 'Audio slicer output folder',
"0c-中文批量离线ASR工具": "0c-Chinese ASR tool", 'threshold:': 'Noise gate threshold (loudness below this value will be treated as noise',
"0d-语音文本校对标注工具": "0d-Speech to text proofreading tool", 'min_length:': 'Minimum length',
"1A-训练集格式化工具": "1A-Dataset formatting", 'min_interval:': 'Minumum interval for audio cutting',
"1Aa-文本内容": "1Aa-Text", 'hop_size:线': 'hop_size: FO hop size, the smaller the value, the higher the accuracy',
"1Aabc-训练集格式化一键三连": "1Aabc-One-click formatting", 'max_sil_kept:': 'Maximum length for silence to be kept',
"1Ab-SSL自监督特征提取": "1Ab-SSL self-supervised feature extraction", '': 'Start audio slicer',
"1Ac-语义token提取": "1Ac-semantics token extraction", '': 'Stop audio cutting',
"1B-微调训练": "1B-Fine-tuned training", 'max:': 'Loudness multiplier after normalized',
"1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。": "1Ba-SoVITS training. The model is located in SoVITS_weights.", 'alpha_mix:': 'alpha_mix: proportion of normalized audio merged into dataset',
"1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。": "1Bb-GPT training. The model is located in GPT_weights.", '使': 'CPU threads used for audio slicing',
"1C-推理": "1C-inference", '': 'Audio slicer output log',
"2-GPT-SoVITS-变声": "2-GPT-SoVITS-Voice Changer", '0c-线ASR': '0c-Chinese ASR tool',
"ASR任务开启%s": "ASR training started: %s", '线ASR': 'Start batch ASR',
"ASR进程输出信息": "ASR output log", 'ASR': 'Stop ASR task',
"GPT训练完成": "Finished GPT training", 'ASR(only)': 'Batch ASR (Chinese only) input folder',
"GPT训练开始%s": "GPT training started: %s", 'ASR': 'ASR output log',
"GPT训练进程输出信息": "GPT training output log", '0d-': '0d-Speech to text proofreading tool',
"GPU卡号,只能填1个整数": "GPU number, can only input ONE integer", 'WebUI': 'Open labelling WebUI',
"GPU卡号以-分割,每个卡号一个进程": "GPU number is separated by -, each GPU will run one process ", '': 'path to proofreading text file',
"SSL提取进程执行中": "SSL extracting", '': 'Proofreading tool output log',
"SSL提取进程结束": "SSL extraction finished", '1-GPT-SoVITS-TTS': '1-GPT-SOVITS-TTS',
"SSL进程输出信息": "SSL output log", '*/': '*Experiment/model name',
"SoVITS训练完成": "SoVITS training finished", '': 'GPU Information',
"SoVITS训练开始%s": "SoVITS training started%s", 'SoVITS-G': 'Pretrained SoVITS-G model path',
"SoVITS训练进程输出信息": "SoVITS training output log", 'SoVITS-D': 'Pretrained SoVITS-D model path',
"TTS推理WebUI进程输出信息": "TTS inference webui output log", 'GPT': 'Pretrained GPT model path',
"TTS推理进程已关闭": "TTS inference process closed", '1A-': '1A-Dataset formatting',
"TTS推理进程已开启": "TTS inference process is opened", 'logs/23456': 'output folder (logs/{experiment name}) should have files and folders starts with 23456.',
"UVR5已关闭": "UVR5 closed", '*': '*Text labelling file',
"UVR5已开启": "UVR5 opened ", '*': '*Audio dataset folder',
"UVR5进程输出信息": "UVR5 process output log", ' list': 'Training the file name corresponding to the waveform of the waveform in the List file of the audio file',
"alpha_mix:混多少比例归一化后音频进来": "alpha_mix: proportion of normalized audio merged into dataset", '1Aa-': '1Aa-Text',
"hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)": "hop_size: FO hop size, the smaller the value, the higher the accuracy", 'GPU-': 'GPU number is separated by -, each GPU will run one process ',
"max:归一化后最大值多少": "Loudness multiplier after normalized", 'BERT': ' Pretrained BERT model path',
"max_sil_kept:切完后静音最多留多长": "Maximum length for silence to be kept", '': 'Start speech-to-text',
"min_interval:最短切割间隔": "Minumum interval for audio cutting", '': 'Stop speech-to-text',
"min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值": "Minimum length", '': 'Text processing output',
"threshold:音量小于这个值视作静音的备选切割点": "Noise gate threshold (loudness below this value will be treated as noise", '1Ab-SSL': '1Ab-SSL self-supervised feature extraction',
"一键三连中途报错": "An error has occured during One-click formatting", 'SSL': 'Pretrained SSL model path',
"一键三连进程结束": "Finished one-click formatting", 'SSL': 'Start SSL extracting',
"一键三连进程输出信息": "One-click formatting output", 'SSL': 'Stop SSL extraction',
"中文": "Chinese", 'SSL': 'SSL output log',
"保存频率save_every_epoch": "Save frequency (save_every_epoch):", '1Ac-token': '1Ac-semantics token extraction',
"凑50字一切": "Cut per 50 characters", 'token': 'Start semantics token extraction',
"凑五句一切": "Cut per 5 sentences", 'token': 'Stop semantics token extraction',
"切分后文本": "Text after sliced", 'token': 'Sematics token extraction output log',
"切分后的子音频的输出根目录": "Audio slicer output folder", '1Aabc-': '1Aabc-One-click formatting',
"切割使用的进程数": "CPU threads used for audio slicing", '': 'Start one-click formatting',
"切割执行中": "Slicing audio", '': 'Stop one-click formatting',
"切割结束": "finished audio slicing", '': 'One-click formatting output',
"刷新模型路径": "refreshing model paths", '1B-': '1B-Fine-tuned training',
"参考音频的文本": "Text for reference audio", '1Ba-SoVITSSoVITS_weights': '1Ba-SoVITS training. The model is located in SoVITS_weights.',
"参考音频的语种": "Language for reference audio", 'batch_size': 'Batch size per GPU:',
"合成语音": "Start inference", 'total_epoch': 'Total epochs, do not increase to a value that is too high',
"后续将支持混合语种编码文本输入。": "Mixed languages input will be supported soon.", '': 'Text model learning rate weighting',
"已有正在进行的ASR任务需先终止才能开启下一次任务": " An ASR task is already in progress, please stop before starting the next task", 'save_every_epoch': 'Save frequency (save_every_epoch):',
"已有正在进行的GPT训练任务需先终止才能开启下一次任务": "A GPT training task is already in progress, please stop before starting the next task", 'ckpt': "Save only the latest '.ckpt' file to save disk space:",
"已有正在进行的SSL提取任务需先终止才能开启下一次任务": "A SSL extraction task is already in progress, please stop before starting the next task", 'weights': "Save a small final model to the 'weights' folder at each save point:",
"已有正在进行的SoVITS训练任务需先终止才能开启下一次任务": "A SoVITS training task is already in progress, please stop before starting the next task", 'SoVITS': 'Start SoVITS training',
"已有正在进行的一键三连任务,需先终止才能开启下一次任务": "An ASR task is already in progress, please stop before starting the next task", 'SoVITS': 'Stop SoVITS training',
"已有正在进行的切割任务,需先终止才能开启下一次任务": "An audio slicing task is already in progress, please stop before starting the next task", 'SoVITS': 'SoVITS training output log',
"已有正在进行的文本任务,需先终止才能开启下一次任务": "A TTS proofreading task is already in progress, please stop before starting the next task", '1Bb-GPTGPT_weights': '1Bb-GPT training. The model is located in GPT_weights.',
"已有正在进行的语义token提取任务需先终止才能开启下一次任务": "A semantics token extraction task is already in progress, please stop before starting the next task", 'total_epoch': 'Total training epochs (total_epoch):',
"已终止ASR进程": "ASR task has been stopped", 'GPT': 'Start GPT training',
"已终止GPT训练": "GPT training has been stopped", 'GPT': 'Stop GPT training',
"已终止SoVITS训练": "SoVITS training has been stopped", 'GPT': 'GPT training output log',
"已终止所有1a进程": "All 1a tasks has been stopped", '1C-': '1C-inference',
"已终止所有1b进程": "All 1b tasks has been stopped", 'SoVITS_weightsGPT_weights5Zero Shot TTS': 'Choose the models from SoVITS_weights and GPT_weights. The default one is a pretrain, so you can experience zero shot TTS.',
"已终止所有一键三连进程": "All one-clicking formatting tasks has been stopped", '*GPT': '*GPT models list',
"已终止所有切割进程": "All audio slicing tasks has been stopped", '*SoVITS': '*SoVITS models list',
"已终止所有语义token进程": "All semantics token tasks has been stopped", 'GPU,1': 'GPU number, can only input ONE integer',
"开启GPT训练": "Start GPT training", '': 'refreshing model paths',
"开启SSL提取": "Start SSL extracting", 'TTSWebUI': 'Open TTS inference WEBUI',
"开启SoVITS训练": "Start SoVITS training", 'TTSWebUI': 'TTS inference webui output log',
"开启一键三连": "Start one-click formatting", '2-GPT-SoVITS-': '2-GPT-SoVITS-Voice Changer',
"开启文本获取": "Start speech-to-text", '': 'In construction, please wait',
"开启离线批量ASR": "Start batch ASR", 'TTS': 'TTS inference process is opened',
"开启语义token提取": "Start semantics token extraction", 'TTS': 'TTS inference process closed',
"开启语音切割": "Start audio slicer", 'WebUI': 'proofreading tool webui is opened',
"很遗憾您这没有能用的显卡来支持您训练": "Unfortunately, there is no compatible GPU available to support your training.", 'WebUI': 'proofreading tool webui is closed',
"总训练轮数total_epoch": "Total training epochs (total_epoch):", '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.',
"总训练轮数total_epoch不建议太高": "Total epochs, do not increase to a value that is too high", '*': '*Please upload and fill reference information',
"打标工具WebUI已关闭": "proofreading tool webui is closed", '*': '*Please fill the text that needs inference',
"打标工具WebUI已开启": "proofreading tool webui is opened", 'ASR%s': 'ASR training started: %s',
"打标工具进程输出信息": "Proofreading tool output log", 'GPT': 'Finished GPT training',
"打标数据标注文件路径": "path to proofreading text file", 'GPT%s': 'GPT training started: %s',
"批量ASR(中文only)输入文件夹路径": "Batch ASR (Chinese only) input folder", 'SSL': 'SSL extracting',
"按中文句号。切": "按中文句号。切", 'SSL': 'SSL extraction finished',
"文本切分工具。太长的文本合成出来效果不一定好,所以太长建议先切。合成会根据文本的换行分开合成再拼起来。": "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.", 'SoVITS': 'SoVITS training finished',
"文本模块学习率权重": "Text model learning rate weighting", 'SoVITS%s': 'SoVITS training started%s',
"文本进程执行中": "Text processing", '': 'An error has occured during One-click formatting',
"文本进程结束": "Finished text processing", '': 'Finished one-click formatting',
"文本进程输出信息": "Text processing output", '': 'Chinese',
"施工中,请静候佳音": "In construction, please wait", '50': 'Cut per 50 characters',
"日文": "Japanese", '': 'Cut per 5 sentences',
"是否仅保存最新的ckpt文件以节省硬盘空间": "Save only the latest '.ckpt' file to save disk space:", '': 'Text after sliced',
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Save a small final model to the 'weights' folder at each save point:", '': 'Slicing audio',
"是否开启TTS推理WebUI": "Open TTS inference WEBUI", '': 'finished audio slicing',
"是否开启UVR5-WebUI": "Open UVR5-WebUI", '': 'Text for reference audio',
"是否开启打标WebUI": "Open labelling WebUI", '': 'Language for reference audio',
"显卡信息": "GPU Information", '': 'Start inference',
"每张显卡的batch_size": "Batch size per GPU:", '': 'Mixed languages input will be supported soon.',
"终止ASR进程": "Stop ASR task", 'ASR': ' An ASR task is already in progress, please stop before starting the next task',
"终止GPT训练": "Stop GPT training", 'GPT': 'A GPT training task is already in progress, please stop before starting the next task',
"终止SSL提取进程": "Stop SSL extraction", 'SSL': 'A SSL extraction task is already in progress, please stop before starting the next task',
"终止SoVITS训练": "Stop SoVITS training", 'SoVITS': 'A SoVITS training task is already in progress, please stop before starting the next task',
"终止一键三连": "Stop one-click formatting", '': 'An ASR task is already in progress, please stop before starting the next task',
"终止文本获取进程": "Stop speech-to-text", '': 'An audio slicing task is already in progress, please stop before starting the next task',
"终止语义token提取进程": "Stop semantics token extraction", '': 'A TTS proofreading task is already in progress, please stop before starting the next task',
"终止语音切割": "Stop audio cutting", 'token': 'A semantics token extraction task is already in progress, please stop before starting the next task',
"英文": "English", 'ASR': 'ASR task has been stopped',
"语义token提取进程执行中": "Semantics token extracting", 'GPT': 'GPT training has been stopped',
"语义token提取进程结束": "Finished semantics token extraction", 'SoVITS': 'SoVITS training has been stopped',
"语义token提取进程输出信息": "Sematics token extraction output log", '1a': 'All 1a tasks has been stopped',
"语音切割进程输出信息": "Audio slicer output log", '1b': 'All 1b tasks has been stopped',
"请上传参考音频": "Please upload reference audio", '': 'All one-clicking formatting tasks has been stopped',
"输入路径不存在": "No input file or directory", '': 'All audio slicing tasks has been stopped',
"输入路径存在但既不是文件也不是文件夹": "Input directory exists, but it is not a file or a folder", 'token': 'All semantics token tasks has been stopped',
"输出logs/实验名目录下应有23456开头的文件和文件夹": "output folder (logs/{experiment name}) should have files and folders starts with 23456.", '': '',
"输出的语音": "Inference Result", '': '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.',
"进度1a-done": "Progress1a-done", '': 'Text processing',
"进度1a-done, 1b-ing": "Progress1a-done, 1b-ing", '': 'Finished text processing',
"进度1a-ing": "Progress1a-ing", '': 'Japanese',
"进度1a1b-done": "Progress1a1b-done", '': 'English',
"进度1a1b-done, 1cing": "Progress1a1b-done, 1cing", 'token': 'Semantics token extracting',
"进度all-done": "Progressall-done", 'token': 'Finished semantics token extraction',
"选择训练完存放在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.", '': 'Please upload reference audio',
"需要合成的切分前文本": "Inference text that needs to be sliced", '': 'No input file or directory',
"需要合成的文本": "Inference text", '': 'Input directory exists, but it is not a file or a folder',
"需要合成的语种": "Inference text language", '': 'Inference Result',
"音频自动切分输入路径,可文件可文件夹": "Audio slicer input (file or folder)", '1a-done': 'Progress1a-done',
"预训练的GPT模型路径": "Pretrained GPT model path", '1a-done, 1b-ing': 'Progress1a-done, 1b-ing',
"预训练的SSL模型路径": "Pretrained SSL model path", '1a-ing': 'Progress1a-ing',
"预训练的SoVITS-D模型路径": "Pretrained SoVITS-D model path", '1a1b-done': 'Progress1a1b-done',
"预训练的SoVITS-G模型路径": "Pretrained SoVITS-G model path", '1a1b-done, 1cing': 'Progress1a1b-done, 1cing',
"预训练的中文BERT模型路径": " Pretrained BERT model path", 'all-done': 'Progressall-done',
">=3则使用对harvest音高识别的结果使用中值滤波数值为滤波半径使用可以削弱哑音": "If >=3: apply median filtering to the harvested pitch results. The value represents the filter radius and can reduce breathiness.", '': 'Inference text that needs to be sliced',
"A模型权重": "Weight (w) for Model A:", '': 'Inference text',
"A模型路径": "Path to Model A:", '': 'Inference text language',
"B模型路径": "Path to Model B:", '>=3使harvest使使': 'If >=3: apply median filtering to the harvested pitch results. The value represents the filter radius and can reduce breathiness.',
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src", 'A': 'Weight (w) for Model A:',
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0 curve file (optional). One pitch per line. Replaces the default F0 and pitch modulation:", 'A': 'Path to Model A:',
"Index Rate": "Index Rate", 'B': 'Path to Model B:',
"Onnx导出": "Export Onnx", 'E:\\+\\\\src': 'C:\\Users\\Desktop\\src',
"Onnx输出路径": "Onnx Export Path:", 'F0线, , , F0': 'F0 curve file (optional). One pitch per line. Replaces the default F0 and pitch modulation:',
"RVC模型路径": "RVC Model Path:", 'Index Rate': 'Index Rate',
"ckpt处理": "ckpt Processing", 'Onnx': 'Export Onnx',
"harvest进程数": "Number of CPU processes used for harvest pitch algorithm", 'Onnx': 'Onnx Export Path:',
"index文件路径不可包含中文": "index文件路径不可包含中文", 'RVC': 'RVC Model Path:',
"pth文件路径不可包含中文": "pth文件路径不可包含中文", 'ckpt': 'ckpt Processing',
"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", 'harvest': 'Number of CPU processes used for harvest pitch algorithm',
"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.", 'index': 'index',
"step1:正在处理数据": "Step 1: Processing data", 'pth': 'pth',
"step2:正在提取音高&正在提取特征": "step2:Pitch extraction & feature extraction", 'rmvpe-使,0-0-1使0211': "Enter the GPU index(es) separated by '-', e.g., 0-0-1 to use 2 processes in GPU0 and 1 process in GPU1",
"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.", '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.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Step 2b: Use CPU to extract pitch (if the model has pitch), use GPU to extract features (select GPU index):", 'step1:': 'Step 1: Processing data',
"step3: 填写训练设置, 开始训练模型和索引": "Step 3: Fill in the training settings and start training the model and index", 'step2:&': 'step2:Pitch extraction & feature extraction',
"step3a:正在训练模型": "Step 3a: Model training started", 'step2a: , 2wav; . ': '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.',
"一键训练": "One-click training", 'step2b: 使CPU(), 使GPU()': 'Step 2b: Use CPU to extract pitch (if the model has pitch), use GPU to extract features (select GPU index):',
"也可批量输入音频文件, 二选一, 优先读文件夹": "Multiple audio files can also be imported. If a folder path exists, this input is ignored.", 'step3: , ': 'Step 3: Fill in the training settings and start training the model and index',
"人声伴奏分离批量处理, 使用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.", 'step3a:': 'Step 3a: Model training started',
"以-分隔输入使用的卡号, 例如 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:", '': 'One-click training',
"伴奏人声分离&去混响&去回声": "Vocals/Accompaniment Separation & Reverberation Removal", ', , ': '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>1HP5HP2HP3HP3HP2 <br>2HP5 <br> 3by FoxJoy<br>\u2003\u2003(1)MDX-Net(onnx_dereverb):<br>&emsp;(234)DeEcho:AggressiveNormalDeReverb<br>/<br>1DeEcho-DeReverb2DeEcho2<br>2MDX-Net-Dereverb<br>3MDX-NetDeEcho-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 使012': "Enter the GPU index(es) separated by '-', e.g., 0-1-2 to use GPU 0, 1, and 2:",
"保存名": "Save name:", '&&': 'Vocals/Accompaniment Separation & Reverberation Removal',
"保存的文件名, 默认空为和源文件同名": "Save file name (default: same as the source file):", '使': '使',
"保存的模型名不带后缀": "Saved model name (without extension):", '使': '使',
"保存频率save_every_epoch": "Save frequency (save_every_epoch):", '': 'Save name:',
"保护清辅音和呼吸声防止电音撕裂等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:", ', ': 'Save file name (default: same as the source file):',
"修改": "Modify", '': 'Saved model name (without extension):',
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modify model information (only supported for small model files extracted from the 'weights' folder)", 'artifact0.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:',
"停止音频转换": "Stop audio conversion", '': 'Modify',
"全流程结束!": "All processes have been completed!", '(weights)': "Modify model information (only supported for small model files extracted from the 'weights' folder)",
"刷新音色列表和索引路径": "Refresh voice list and index path", '': 'Stop audio conversion',
"加载模型": "Load model", '': 'All processes have been completed!',
"加载预训练底模D路径": "Load pre-trained base model D path:", '': 'Refresh voice list and index path',
"加载预训练底模G路径": "Load pre-trained base model G path:", '': 'Load model',
"单次推理": "Single Inference", 'D': 'Load pre-trained base model D path:',
"卸载音色省显存": "Unload voice to save GPU memory:", 'G': 'Load pre-trained base model G path:',
"变调(整数, 半音数量, 升八度12降八度-12)": "Transpose (integer, number of semitones, raise by an octave: 12, lower by an octave: -12):", '': 'Single Inference',
"后处理重采样至最终采样率0为不进行重采样": "Resample the output audio in post-processing to the final sample rate. Set to 0 for no resampling:", '': 'Unload voice to save GPU memory:',
"否": "No", '(, , 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:',
"响应阈值": "Response threshold", '': 'No',
"响度因子": "loudness factor", '': '',
"处理数据": "Process data", '': 'Response threshold',
"导出Onnx模型": "Export Onnx Model", '': 'loudness factor',
"导出文件格式": "Export file format", '': 'Process data',
"常见问题解答": "FAQ (Frequently Asked Questions)", 'Onnx': 'Export Onnx Model',
"常规设置": "General settings", '': 'Export file format',
"开始音频转换": "Start audio conversion", '': 'FAQ (Frequently Asked Questions)',
"很遗憾您这没有能用的显卡来支持您训练": "Unfortunately, there is no compatible GPU available to support your training.", '': 'General settings',
"性能设置": "Performance settings", '': 'Start audio conversion',
"总训练轮数total_epoch": "Total training epochs (total_epoch):", '': 'Performance settings',
"批量推理": "Batch Inference", '': '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').", ', , , (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 the output folder for vocals:',
"指定输出文件夹": "Specify output folder:", '': 'Specify output folder:',
"指定输出非主人声文件夹": "Specify the output folder for accompaniment:", '': 'Specify the output folder for accompaniment:',
"推理时间(ms):": "Inference time (ms):", '(ms):': 'Inference time (ms):',
"推理音色": "Inferencing voice:", '': 'Inferencing voice:',
"提取": "Extract", '': 'Extract',
"提取音高和处理数据使用的CPU进程数": "Number of CPU processes used for pitch extraction and data processing:", '使CPU': 'Number of CPU processes used for pitch extraction and data processing:',
"是": "Yes", '': 'Yes',
"是否仅保存最新的ckpt文件以节省硬盘空间": "Save only the latest '.ckpt' file to save disk space:", '. 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:',
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Save a small final model to the 'weights' folder at each save point:", '': 'View',
"是否缓存所有训练集至显存. 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:", '(weights)': "View model information (only supported for small model files extracted from the 'weights' folder)",
"显卡信息": "GPU Information", '': '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.txt</b> for details.", '': 'Model',
"查看": "View", '': 'Model Inference',
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "View model information (only supported for small model files extracted from the 'weights' folder)", '(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:",
"检索特征占比": "Search feature ratio (controls accent strength, too high has artifacting):", '': 'Whether the model has pitch guidance:',
"模型": "Model", '(, )': 'Whether the model has pitch guidance (required for singing, optional for speech):',
"模型推理": "Model Inference", ',10': 'Whether the model has pitch guidance (1: yes, 0: no):',
"模型提取(输入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:", '': 'Model architecture version:',
"模型是否带音高指导": "Whether the model has pitch guidance:", ', ': 'Model fusion, can be used to test timbre fusion',
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Whether the model has pitch guidance (required for singing, optional for speech):", '': 'Path to Model:',
"模型是否带音高指导,1是0否": "Whether the model has pitch guidance (1: yes, 0: no):", '': 'Fade length',
"模型版本型号": "Model architecture version:", '': 'Version',
"模型融合, 可用于测试音色融合": "Model fusion, can be used to test timbre fusion", '': 'Feature extraction',
"模型路径": "Path to Model:", ',使': 'Path to the feature index file. Leave blank to use the selected result from the dropdown:',
"每张显卡的batch_size": "Batch size per GPU:", '+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.',
"淡入淡出长度": "Fade length", '': 'Target sample rate:',
"版本": "Version", '(ms):': 'Algorithmic delays(ms):',
"特征提取": "Feature extraction", 'index,(dropdown)': 'Auto-detect index path and select from the dropdown:',
"特征检索库文件路径,为空则使用下拉的选择结果": "Path to the feature index file. Leave blank to use the selected result from the dropdown:", '': 'Fusion',
"男转女推荐+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.", '': 'Model information to be modified:',
"目标采样率": "Target sample rate:", '': 'Model information to be placed:',
"算法延迟(ms):": "Algorithmic delays(ms):", '': 'Train',
"自动检测index路径,下拉式选择(dropdown)": "Auto-detect index path and select from the dropdown:", '': 'Train model',
"融合": "Fusion", '': 'Train feature index',
"要改的模型信息": "Model information to be modified:", ', train.log': "Training complete. You can check the training logs in the console or the 'train.log' file under the experiment folder.",
"要置入的模型信息": "Model information to be placed:", 'id': 'Please specify the speaker/singer ID:',
"训练": "Train", 'index': 'Please choose the .index file',
"训练模型": "Train model", 'pth': 'Please choose the .pth file',
"训练特征索引": "Train feature index", 'id': 'Select Speaker/Singer ID:',
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Training complete. You can check the training logs in the console or the 'train.log' file under the experiment folder.", '': 'Convert',
"请指定说话人id": "Please specify the speaker/singer ID:", '': 'Enter the experiment name:',
"请选择index文件": "Please choose the .index file", '': 'Enter the path of the audio folder to be processed:',
"请选择pth文件": "Please choose the .pth file", '()': 'Enter the path of the audio folder to be processed (copy it from the address bar of the file manager):',
"请选择说话人id": "Select Speaker/Singer ID:", '()': 'Enter the path of the audio file to be processed (default is the correct format example):',
"转换": "Convert", '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:',
"输入实验名": "Enter the experiment name:", '': 'Input voice monitor',
"输入待处理音频文件夹路径": "Enter the path of the audio folder to be processed:", '': 'Enter the path of the training folder:',
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Enter the path of the audio folder to be processed (copy it from the address bar of the file manager):", '': 'Input device',
"输入待处理音频文件路径(默认是正确格式示例)": "Enter the path of the audio file to be processed (default is the correct format example):", '': 'Input noise reduction',
"输入源音量包络替换输出音量包络融合比例越靠近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:", '': 'Output information',
"输入监听": "Input voice monitor", '': 'Output converted voice',
"输入训练文件夹路径": "Enter the path of the training folder:", '': 'Output device',
"输入设备": "Input device", '': 'Output noise reduction',
"输入降噪": "Input noise reduction", '(,)': 'Export audio (click on the three dots in the lower right corner to download)',
"输出信息": "Output information", '.index': 'Select the .index file',
"输出变声": "Output converted voice", '.pth': 'Select the .pth file',
"输出设备": "Output device", ',pm,harvest,crepeGPU': ',pm,harvest,crepeGPU',
"输出降噪": "Output noise reduction", ',pm,harvest,crepeGPU,rmvpeGPU': "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",
"输出音频(右下角三个点,点了可以下载)": "Export audio (click on the three dots in the lower right corner to download)", ':pm,CPUdio,harvest,rmvpeCPU/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",
"选择.index文件": "Select the .index file", ':': ':',
"选择.pth文件": "Select the .pth file", '': 'Sample length',
"选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU": "选择音高提取算法,输入歌声可用pm提速,harvest低音好但巨慢无比,crepe效果好但吃GPU", '': 'Reload device list',
"选择音高提取算法,输入歌声可用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", '': 'Pitch settings',
"选择音高提取算法:输入歌声可用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", '(使)': 'Audio device (please use the same type of driver)',
"采样率:": "采样率:", '': 'pitch detection algorithm',
"采样长度": "Sample length", '': 'Extra inference time'
"重载设备列表": "Reload device list",
"音调设置": "Pitch settings",
"音频设备(请使用同种类驱动)": "Audio device (please use the same type of driver)",
"音高算法": "pitch detection algorithm",
"额外推理时长": "Extra inference time"
} }

93
i18n/locale/pt_BR.json Normal file
View File

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

174
webui.py
View File

@ -120,25 +120,25 @@ def change_label(if_label,path_list):
global p_label global p_label
if(if_label==True and p_label==None): if(if_label==True and p_label==None):
cmd = '"%s" tools/subfix_webui.py --load_list "%s" --webui_port %s'%(python_exec,path_list,webui_port_subfix) cmd = '"%s" tools/subfix_webui.py --load_list "%s" --webui_port %s'%(python_exec,path_list,webui_port_subfix)
yield "打标工具WebUI已开启" yield i18n("打标工具WebUI已开启")
print(cmd) print(cmd)
p_label = Popen(cmd, shell=True) p_label = Popen(cmd, shell=True)
elif(if_label==False and p_label!=None): elif(if_label==False and p_label!=None):
kill_process(p_label.pid) kill_process(p_label.pid)
p_label=None p_label=None
yield "打标工具WebUI已关闭" yield i18n("打标工具WebUI已关闭")
def change_uvr5(if_uvr5): def change_uvr5(if_uvr5):
global p_uvr5 global p_uvr5
if(if_uvr5==True and p_uvr5==None): if(if_uvr5==True and p_uvr5==None):
cmd = '"%s" tools/uvr5/webui.py "%s" %s %s'%(python_exec,infer_device,is_half,webui_port_uvr5) cmd = '"%s" tools/uvr5/webui.py "%s" %s %s'%(python_exec,infer_device,is_half,webui_port_uvr5)
yield "UVR5已开启" yield i18n("UVR5已开启")
print(cmd) print(cmd)
p_uvr5 = Popen(cmd, shell=True) p_uvr5 = Popen(cmd, shell=True)
elif(if_uvr5==False and p_uvr5!=None): elif(if_uvr5==False and p_uvr5!=None):
kill_process(p_uvr5.pid) kill_process(p_uvr5.pid)
p_uvr5=None p_uvr5=None
yield "UVR5已关闭" yield i18n("UVR5已关闭")
def change_tts_inference(if_tts,bert_path,cnhubert_base_path,gpu_number,gpt_path,sovits_path): def change_tts_inference(if_tts,bert_path,cnhubert_base_path,gpu_number,gpt_path,sovits_path):
global p_tts_inference global p_tts_inference
@ -151,13 +151,13 @@ def change_tts_inference(if_tts,bert_path,cnhubert_base_path,gpu_number,gpt_path
os.environ["is_half"]=str(is_half) os.environ["is_half"]=str(is_half)
os.environ["infer_ttswebui"]=str(webui_port_infer_tts) os.environ["infer_ttswebui"]=str(webui_port_infer_tts)
cmd = '"%s" GPT_SoVITS/inference_webui.py'%(python_exec) cmd = '"%s" GPT_SoVITS/inference_webui.py'%(python_exec)
yield "TTS推理进程已开启" yield i18n("TTS推理进程已开启")
print(cmd) print(cmd)
p_tts_inference = Popen(cmd, shell=True) p_tts_inference = Popen(cmd, shell=True)
elif(if_tts==False and p_tts_inference!=None): elif(if_tts==False and p_tts_inference!=None):
kill_process(p_tts_inference.pid) kill_process(p_tts_inference.pid)
p_tts_inference=None p_tts_inference=None
yield "TTS推理进程已关闭" yield i18n("TTS推理进程已关闭")
def open_asr(asr_inp_dir): def open_asr(asr_inp_dir):
@ -591,98 +591,98 @@ def close1abc():
with gr.Blocks(title="GPT-SoVITS WebUI") as app: with gr.Blocks(title="GPT-SoVITS WebUI") as app:
gr.Markdown( gr.Markdown(
value= value=
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>." i18n("本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.")
) )
with gr.Tabs(): with gr.Tabs():
with gr.TabItem("0-前置数据集获取工具"):#提前随机切片防止uvr5爆内存->uvr5->slicer->asr->打标 with gr.TabItem(i18n("0-前置数据集获取工具")):#提前随机切片防止uvr5爆内存->uvr5->slicer->asr->打标
gr.Markdown(value="0a-UVR5人声伴奏分离&去混响去延迟工具") gr.Markdown(value=i18n("0a-UVR5人声伴奏分离&去混响去延迟工具"))
with gr.Row(): with gr.Row():
if_uvr5 = gr.Checkbox(label="是否开启UVR5-WebUI",show_label=True) if_uvr5 = gr.Checkbox(label=i18n("是否开启UVR5-WebUI"),show_label=True)
uvr5_info = gr.Textbox(label="UVR5进程输出信息") uvr5_info = gr.Textbox(label=i18n("UVR5进程输出信息"))
gr.Markdown(value="0b-语音切分工具") gr.Markdown(value=i18n("0b-语音切分工具"))
with gr.Row(): with gr.Row():
with gr.Row(): with gr.Row():
slice_inp_path=gr.Textbox(label="音频自动切分输入路径,可文件可文件夹",value="") slice_inp_path=gr.Textbox(label=i18n("音频自动切分输入路径,可文件可文件夹"),value="")
slice_opt_root=gr.Textbox(label="切分后的子音频的输出根目录",value="output/slicer_opt") slice_opt_root=gr.Textbox(label=i18n("切分后的子音频的输出根目录"),value="output/slicer_opt")
threshold=gr.Textbox(label="threshold:音量小于这个值视作静音的备选切割点",value="-34") threshold=gr.Textbox(label=i18n("threshold:音量小于这个值视作静音的备选切割点"),value="-34")
min_length=gr.Textbox(label="min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值",value="4000") min_length=gr.Textbox(label=i18n("min_length:每段最小多长,如果第一段太短一直和后面段连起来直到超过这个值"),value="4000")
min_interval=gr.Textbox(label="min_interval:最短切割间隔",value="300") min_interval=gr.Textbox(label=i18n("min_interval:最短切割间隔"),value="300")
hop_size=gr.Textbox(label="hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)",value="10") hop_size=gr.Textbox(label=i18n("hop_size:怎么算音量曲线,越小精度越大计算量越高(不是精度越大效果越好)"),value="10")
max_sil_kept=gr.Textbox(label="max_sil_kept:切完后静音最多留多长",value="500") max_sil_kept=gr.Textbox(label=i18n("max_sil_kept:切完后静音最多留多长"),value="500")
with gr.Row(): with gr.Row():
open_slicer_button=gr.Button("开启语音切割", variant="primary",visible=True) open_slicer_button=gr.Button(i18n("开启语音切割"), variant="primary",visible=True)
close_slicer_button=gr.Button("终止语音切割", variant="primary",visible=False) close_slicer_button=gr.Button(i18n("终止语音切割"), variant="primary",visible=False)
_max=gr.Slider(minimum=0,maximum=1,step=0.05,label="max:归一化后最大值多少",value=0.9,interactive=True) _max=gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("max:归一化后最大值多少"),value=0.9,interactive=True)
alpha=gr.Slider(minimum=0,maximum=1,step=0.05,label="alpha_mix:混多少比例归一化后音频进来",value=0.25,interactive=True) alpha=gr.Slider(minimum=0,maximum=1,step=0.05,label=i18n("alpha_mix:混多少比例归一化后音频进来"),value=0.25,interactive=True)
n_process=gr.Slider(minimum=1,maximum=n_cpu,step=1,label="切割使用的进程数",value=4,interactive=True) n_process=gr.Slider(minimum=1,maximum=n_cpu,step=1,label=i18n("切割使用的进程数"),value=4,interactive=True)
slicer_info = gr.Textbox(label="语音切割进程输出信息") slicer_info = gr.Textbox(label=i18n("语音切割进程输出信息"))
gr.Markdown(value="0c-中文批量离线ASR工具") gr.Markdown(value=i18n("0c-中文批量离线ASR工具"))
with gr.Row(): with gr.Row():
open_asr_button = gr.Button("开启离线批量ASR", variant="primary",visible=True) open_asr_button = gr.Button(i18n("开启离线批量ASR"), variant="primary",visible=True)
close_asr_button = gr.Button("终止ASR进程", variant="primary",visible=False) close_asr_button = gr.Button(i18n("终止ASR进程"), variant="primary",visible=False)
asr_inp_dir = gr.Textbox( asr_inp_dir = gr.Textbox(
label="批量ASR(中文only)输入文件夹路径", label=i18n("批量ASR(中文only)输入文件夹路径"),
value="D:\\RVC1006\\GPT-SoVITS\\raw\\xxx", value="D:\\RVC1006\\GPT-SoVITS\\raw\\xxx",
interactive=True, interactive=True,
) )
asr_info = gr.Textbox(label="ASR进程输出信息") asr_info = gr.Textbox(label=i18n("ASR进程输出信息"))
gr.Markdown(value="0d-语音文本校对标注工具") gr.Markdown(value=i18n("0d-语音文本校对标注工具"))
with gr.Row(): with gr.Row():
if_label = gr.Checkbox(label="是否开启打标WebUI",show_label=True) if_label = gr.Checkbox(label=i18n("是否开启打标WebUI"),show_label=True)
path_list = gr.Textbox( path_list = gr.Textbox(
label="打标数据标注文件路径", label=i18n("打标数据标注文件路径"),
value="D:\\RVC1006\\GPT-SoVITS\\raw\\xxx.list", value="D:\\RVC1006\\GPT-SoVITS\\raw\\xxx.list",
interactive=True, interactive=True,
) )
label_info = gr.Textbox(label="打标工具进程输出信息") label_info = gr.Textbox(label=i18n("打标工具进程输出信息"))
if_label.change(change_label, [if_label,path_list], [label_info]) if_label.change(change_label, [if_label,path_list], [label_info])
if_uvr5.change(change_uvr5, [if_uvr5], [uvr5_info]) if_uvr5.change(change_uvr5, [if_uvr5], [uvr5_info])
open_asr_button.click(open_asr, [asr_inp_dir], [asr_info,open_asr_button,close_asr_button]) open_asr_button.click(open_asr, [asr_inp_dir], [asr_info,open_asr_button,close_asr_button])
close_asr_button.click(close_asr, [], [asr_info,open_asr_button,close_asr_button]) close_asr_button.click(close_asr, [], [asr_info,open_asr_button,close_asr_button])
open_slicer_button.click(open_slice, [slice_inp_path,slice_opt_root,threshold,min_length,min_interval,hop_size,max_sil_kept,_max,alpha,n_process], [slicer_info,open_slicer_button,close_slicer_button]) open_slicer_button.click(open_slice, [slice_inp_path,slice_opt_root,threshold,min_length,min_interval,hop_size,max_sil_kept,_max,alpha,n_process], [slicer_info,open_slicer_button,close_slicer_button])
close_slicer_button.click(close_slice, [], [slicer_info,open_slicer_button,close_slicer_button]) close_slicer_button.click(close_slice, [], [slicer_info,open_slicer_button,close_slicer_button])
with gr.TabItem("1-GPT-SoVITS-TTS"): with gr.TabItem(i18n("1-GPT-SoVITS-TTS")):
with gr.Row(): with gr.Row():
exp_name = gr.Textbox(label="*实验/模型名", value="xxx", interactive=True) exp_name = gr.Textbox(label=i18n("*实验/模型名"), value="xxx", interactive=True)
gpu_info = gr.Textbox(label="显卡信息", value=gpu_info, visible=True, interactive=False) gpu_info = gr.Textbox(label=i18n("显卡信息"), value=gpu_info, visible=True, interactive=False)
pretrained_s2G = gr.Textbox(label="预训练的SoVITS-G模型路径", value="GPT_SoVITS/pretrained_models/s2G488k.pth", interactive=True) pretrained_s2G = gr.Textbox(label=i18n("预训练的SoVITS-G模型路径"), value="GPT_SoVITS/pretrained_models/s2G488k.pth", interactive=True)
pretrained_s2D = gr.Textbox(label="预训练的SoVITS-D模型路径", value="GPT_SoVITS/pretrained_models/s2D488k.pth", interactive=True) pretrained_s2D = gr.Textbox(label=i18n("预训练的SoVITS-D模型路径"), value="GPT_SoVITS/pretrained_models/s2D488k.pth", interactive=True)
pretrained_s1 = gr.Textbox(label="预训练的GPT模型路径", value="GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt", interactive=True) pretrained_s1 = gr.Textbox(label=i18n("预训练的GPT模型路径"), value="GPT_SoVITS/pretrained_models/s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt", interactive=True)
with gr.TabItem("1A-训练集格式化工具"): with gr.TabItem(i18n("1A-训练集格式化工具")):
gr.Markdown(value="输出logs/实验名目录下应有23456开头的文件和文件夹") gr.Markdown(value=i18n("输出logs/实验名目录下应有23456开头的文件和文件夹"))
with gr.Row(): with gr.Row():
inp_text = gr.Textbox(label="*文本标注文件",value=r"D:\RVC1006\GPT-SoVITS\raw\xxx.list",interactive=True) inp_text = gr.Textbox(label=i18n("*文本标注文件"),value=r"D:\RVC1006\GPT-SoVITS\raw\xxx.list",interactive=True)
inp_wav_dir = gr.Textbox( inp_wav_dir = gr.Textbox(
label="*训练集音频文件目录", label=i18n("*训练集音频文件目录"),
# value=r"D:\RVC1006\GPT-SoVITS\raw\xxx", # value=r"D:\RVC1006\GPT-SoVITS\raw\xxx",
interactive=True, interactive=True,
placeholder="训练集音频文件目录 拼接 list文件里波形对应的文件名。" placeholder=i18n("训练集音频文件目录 拼接 list文件里波形对应的文件名。")
) )
gr.Markdown(value="1Aa-文本内容") gr.Markdown(value=i18n("1Aa-文本内容"))
with gr.Row(): with gr.Row():
gpu_numbers1a = gr.Textbox(label="GPU卡号以-分割,每个卡号一个进程",value="%s-%s"%(gpus,gpus),interactive=True) gpu_numbers1a = gr.Textbox(label=i18n("GPU卡号以-分割,每个卡号一个进程"),value="%s-%s"%(gpus,gpus),interactive=True)
bert_pretrained_dir = gr.Textbox(label="预训练的中文BERT模型路径",value="GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large",interactive=False) bert_pretrained_dir = gr.Textbox(label=i18n("预训练的中文BERT模型路径"),value="GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large",interactive=False)
button1a_open = gr.Button("开启文本获取", variant="primary",visible=True) button1a_open = gr.Button(i18n("开启文本获取"), variant="primary",visible=True)
button1a_close = gr.Button("终止文本获取进程", variant="primary",visible=False) button1a_close = gr.Button(i18n("终止文本获取进程"), variant="primary",visible=False)
info1a=gr.Textbox(label="文本进程输出信息") info1a=gr.Textbox(label=i18n("文本进程输出信息"))
gr.Markdown(value="1Ab-SSL自监督特征提取") gr.Markdown(value=i18n("1Ab-SSL自监督特征提取"))
with gr.Row(): with gr.Row():
gpu_numbers1Ba = gr.Textbox(label="GPU卡号以-分割,每个卡号一个进程",value="%s-%s"%(gpus,gpus),interactive=True) gpu_numbers1Ba = gr.Textbox(label=i18n("GPU卡号以-分割,每个卡号一个进程"),value="%s-%s"%(gpus,gpus),interactive=True)
cnhubert_base_dir = gr.Textbox(label="预训练的SSL模型路径",value="GPT_SoVITS/pretrained_models/chinese-hubert-base",interactive=False) cnhubert_base_dir = gr.Textbox(label=i18n("预训练的SSL模型路径"),value="GPT_SoVITS/pretrained_models/chinese-hubert-base",interactive=False)
button1b_open = gr.Button("开启SSL提取", variant="primary",visible=True) button1b_open = gr.Button(i18n("开启SSL提取"), variant="primary",visible=True)
button1b_close = gr.Button("终止SSL提取进程", variant="primary",visible=False) button1b_close = gr.Button(i18n("终止SSL提取进程"), variant="primary",visible=False)
info1b=gr.Textbox(label="SSL进程输出信息") info1b=gr.Textbox(label=i18n("SSL进程输出信息"))
gr.Markdown(value="1Ac-语义token提取") gr.Markdown(value=i18n("1Ac-语义token提取"))
with gr.Row(): with gr.Row():
gpu_numbers1c = gr.Textbox(label="GPU卡号以-分割,每个卡号一个进程",value="%s-%s"%(gpus,gpus),interactive=True) gpu_numbers1c = gr.Textbox(label=i18n("GPU卡号以-分割,每个卡号一个进程"),value="%s-%s"%(gpus,gpus),interactive=True)
button1c_open = gr.Button("开启语义token提取", variant="primary",visible=True) button1c_open = gr.Button(i18n("开启语义token提取"), variant="primary",visible=True)
button1c_close = gr.Button("终止语义token提取进程", variant="primary",visible=False) button1c_close = gr.Button(i18n("终止语义token提取进程"), variant="primary",visible=False)
info1c=gr.Textbox(label="语义token提取进程输出信息") info1c=gr.Textbox(label=i18n("语义token提取进程输出信息"))
gr.Markdown(value="1Aabc-训练集格式化一键三连") gr.Markdown(value=i18n("1Aabc-训练集格式化一键三连"))
with gr.Row(): with gr.Row():
button1abc_open = gr.Button("开启一键三连", variant="primary",visible=True) button1abc_open = gr.Button(i18n("开启一键三连"), variant="primary",visible=True)
button1abc_close = gr.Button("终止一键三连", variant="primary",visible=False) button1abc_close = gr.Button(i18n("终止一键三连"), variant="primary",visible=False)
info1abc=gr.Textbox(label="一键三连进程输出信息") info1abc=gr.Textbox(label=i18n("一键三连进程输出信息"))
button1a_open.click(open1a, [inp_text,inp_wav_dir,exp_name,gpu_numbers1a,bert_pretrained_dir], [info1a,button1a_open,button1a_close]) button1a_open.click(open1a, [inp_text,inp_wav_dir,exp_name,gpu_numbers1a,bert_pretrained_dir], [info1a,button1a_open,button1a_close])
button1a_close.click(close1a, [], [info1a,button1a_open,button1a_close]) button1a_close.click(close1a, [], [info1a,button1a_open,button1a_close])
button1b_open.click(open1b, [inp_text,inp_wav_dir,exp_name,gpu_numbers1Ba,cnhubert_base_dir], [info1b,button1b_open,button1b_close]) button1b_open.click(open1b, [inp_text,inp_wav_dir,exp_name,gpu_numbers1Ba,cnhubert_base_dir], [info1b,button1b_open,button1b_close])
@ -691,49 +691,49 @@ with gr.Blocks(title="GPT-SoVITS WebUI") as app:
button1c_close.click(close1c, [], [info1c,button1c_open,button1c_close]) button1c_close.click(close1c, [], [info1c,button1c_open,button1c_close])
button1abc_open.click(open1abc, [inp_text,inp_wav_dir,exp_name,gpu_numbers1a,gpu_numbers1Ba,gpu_numbers1c,bert_pretrained_dir,cnhubert_base_dir,pretrained_s2G], [info1abc,button1abc_open,button1abc_close]) button1abc_open.click(open1abc, [inp_text,inp_wav_dir,exp_name,gpu_numbers1a,gpu_numbers1Ba,gpu_numbers1c,bert_pretrained_dir,cnhubert_base_dir,pretrained_s2G], [info1abc,button1abc_open,button1abc_close])
button1abc_close.click(close1abc, [], [info1abc,button1abc_open,button1abc_close]) button1abc_close.click(close1abc, [], [info1abc,button1abc_open,button1abc_close])
with gr.TabItem("1B-微调训练"): with gr.TabItem(i18n("1B-微调训练")):
gr.Markdown(value="1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。") gr.Markdown(value=i18n("1Ba-SoVITS训练。用于分享的模型文件输出在SoVITS_weights下。"))
with gr.Row(): with gr.Row():
batch_size = gr.Slider(minimum=1,maximum=40,step=1,label=i18n("每张显卡的batch_size"),value=default_batch_size,interactive=True) batch_size = gr.Slider(minimum=1,maximum=40,step=1,label=i18n("每张显卡的batch_size"),value=default_batch_size,interactive=True)
total_epoch = gr.Slider(minimum=1,maximum=20,step=1,label=i18n("总训练轮数total_epoch不建议太高"),value=8,interactive=True) total_epoch = gr.Slider(minimum=1,maximum=20,step=1,label=i18n("总训练轮数total_epoch不建议太高"),value=8,interactive=True)
text_low_lr_rate = gr.Slider(minimum=0.2,maximum=0.6,step=0.05,label="文本模块学习率权重",value=0.4,interactive=True) text_low_lr_rate = gr.Slider(minimum=0.2,maximum=0.6,step=0.05,label=i18n("文本模块学习率权重"),value=0.4,interactive=True)
save_every_epoch = gr.Slider(minimum=1,maximum=50,step=1,label=i18n("保存频率save_every_epoch"),value=4,interactive=True) save_every_epoch = gr.Slider(minimum=1,maximum=50,step=1,label=i18n("保存频率save_every_epoch"),value=4,interactive=True)
if_save_latest = gr.Checkbox(label=i18n("是否仅保存最新的ckpt文件以节省硬盘空间"), value=True, interactive=True, show_label=True) if_save_latest = gr.Checkbox(label=i18n("是否仅保存最新的ckpt文件以节省硬盘空间"), value=True, interactive=True, show_label=True)
if_save_every_weights = gr.Checkbox(label=i18n("是否在每次保存时间点将最终小模型保存至weights文件夹"), value=True, interactive=True, show_label=True) if_save_every_weights = gr.Checkbox(label=i18n("是否在每次保存时间点将最终小模型保存至weights文件夹"), value=True, interactive=True, show_label=True)
gpu_numbers1Ba = gr.Textbox(label="GPU卡号以-分割,每个卡号一个进程", value="%s" % (gpus), interactive=True) gpu_numbers1Ba = gr.Textbox(label=i18n("GPU卡号以-分割,每个卡号一个进程"), value="%s" % (gpus), interactive=True)
with gr.Row(): with gr.Row():
button1Ba_open = gr.Button("开启SoVITS训练", variant="primary",visible=True) button1Ba_open = gr.Button(i18n("开启SoVITS训练"), variant="primary",visible=True)
button1Ba_close = gr.Button("终止SoVITS训练", variant="primary",visible=False) button1Ba_close = gr.Button(i18n("终止SoVITS训练"), variant="primary",visible=False)
info1Ba=gr.Textbox(label="SoVITS训练进程输出信息") info1Ba=gr.Textbox(label=i18n("SoVITS训练进程输出信息"))
gr.Markdown(value="1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。") gr.Markdown(value=i18n("1Bb-GPT训练。用于分享的模型文件输出在GPT_weights下。"))
with gr.Row(): with gr.Row():
batch_size1Bb = gr.Slider(minimum=1,maximum=40,step=1,label=i18n("每张显卡的batch_size"),value=default_batch_size,interactive=True) batch_size1Bb = gr.Slider(minimum=1,maximum=40,step=1,label=i18n("每张显卡的batch_size"),value=default_batch_size,interactive=True)
total_epoch1Bb = gr.Slider(minimum=2,maximum=100,step=1,label=i18n("总训练轮数total_epoch"),value=15,interactive=True) total_epoch1Bb = gr.Slider(minimum=2,maximum=100,step=1,label=i18n("总训练轮数total_epoch"),value=15,interactive=True)
if_save_latest1Bb = gr.Checkbox(label=i18n("是否仅保存最新的ckpt文件以节省硬盘空间"), value=True, interactive=True, show_label=True) if_save_latest1Bb = gr.Checkbox(label=i18n("是否仅保存最新的ckpt文件以节省硬盘空间"), value=True, interactive=True, show_label=True)
if_save_every_weights1Bb = gr.Checkbox(label=i18n("是否在每次保存时间点将最终小模型保存至weights文件夹"), value=True, interactive=True, show_label=True) if_save_every_weights1Bb = gr.Checkbox(label=i18n("是否在每次保存时间点将最终小模型保存至weights文件夹"), value=True, interactive=True, show_label=True)
save_every_epoch1Bb = gr.Slider(minimum=1,maximum=50,step=1,label=i18n("保存频率save_every_epoch"),value=5,interactive=True) save_every_epoch1Bb = gr.Slider(minimum=1,maximum=50,step=1,label=i18n("保存频率save_every_epoch"),value=5,interactive=True)
gpu_numbers1Bb = gr.Textbox(label="GPU卡号以-分割,每个卡号一个进程", value="%s" % (gpus), interactive=True) gpu_numbers1Bb = gr.Textbox(label=i18n("GPU卡号以-分割,每个卡号一个进程"), value="%s" % (gpus), interactive=True)
with gr.Row(): with gr.Row():
button1Bb_open = gr.Button("开启GPT训练", variant="primary",visible=True) button1Bb_open = gr.Button(i18n("开启GPT训练"), variant="primary",visible=True)
button1Bb_close = gr.Button("终止GPT训练", variant="primary",visible=False) button1Bb_close = gr.Button(i18n("终止GPT训练"), variant="primary",visible=False)
info1Bb=gr.Textbox(label="GPT训练进程输出信息") info1Bb=gr.Textbox(label=i18n("GPT训练进程输出信息"))
button1Ba_open.click(open1Ba, [batch_size,total_epoch,exp_name,text_low_lr_rate,if_save_latest,if_save_every_weights,save_every_epoch,gpu_numbers1Ba,pretrained_s2G,pretrained_s2D], [info1Ba,button1Ba_open,button1Ba_close]) button1Ba_open.click(open1Ba, [batch_size,total_epoch,exp_name,text_low_lr_rate,if_save_latest,if_save_every_weights,save_every_epoch,gpu_numbers1Ba,pretrained_s2G,pretrained_s2D], [info1Ba,button1Ba_open,button1Ba_close])
button1Ba_close.click(close1Ba, [], [info1Ba,button1Ba_open,button1Ba_close]) button1Ba_close.click(close1Ba, [], [info1Ba,button1Ba_open,button1Ba_close])
button1Bb_open.click(open1Bb, [batch_size1Bb,total_epoch1Bb,exp_name,if_save_latest1Bb,if_save_every_weights1Bb,save_every_epoch1Bb,gpu_numbers1Bb,pretrained_s1], [info1Bb,button1Bb_open,button1Bb_close]) button1Bb_open.click(open1Bb, [batch_size1Bb,total_epoch1Bb,exp_name,if_save_latest1Bb,if_save_every_weights1Bb,save_every_epoch1Bb,gpu_numbers1Bb,pretrained_s1], [info1Bb,button1Bb_open,button1Bb_close])
button1Bb_close.click(close1Bb, [], [info1Bb,button1Bb_open,button1Bb_close]) button1Bb_close.click(close1Bb, [], [info1Bb,button1Bb_open,button1Bb_close])
with gr.TabItem("1C-推理"): with gr.TabItem(i18n("1C-推理")):
gr.Markdown(value="选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。") gr.Markdown(value=i18n("选择训练完存放在SoVITS_weights和GPT_weights下的模型。默认的一个是底模体验5秒Zero Shot TTS用。"))
with gr.Row(): with gr.Row():
GPT_dropdown = gr.Dropdown(label="*GPT模型列表", choices=sorted(GPT_names),value=pretrained_gpt_name) GPT_dropdown = gr.Dropdown(label=i18n("*GPT模型列表"), choices=sorted(GPT_names),value=pretrained_gpt_name)
SoVITS_dropdown = gr.Dropdown(label="*SoVITS模型列表", choices=sorted(SoVITS_names),value=pretrained_sovits_name) SoVITS_dropdown = gr.Dropdown(label=i18n("*SoVITS模型列表"), choices=sorted(SoVITS_names),value=pretrained_sovits_name)
gpu_number_1C=gr.Textbox(label="GPU卡号,只能填1个整数", value=gpus, interactive=True) gpu_number_1C=gr.Textbox(label=i18n("GPU卡号,只能填1个整数"), value=gpus, interactive=True)
refresh_button = gr.Button("刷新模型路径", variant="primary") refresh_button = gr.Button(i18n("刷新模型路径"), variant="primary")
refresh_button.click(fn=change_choices,inputs=[],outputs=[SoVITS_dropdown,GPT_dropdown]) refresh_button.click(fn=change_choices,inputs=[],outputs=[SoVITS_dropdown,GPT_dropdown])
with gr.Row(): with gr.Row():
if_tts = gr.Checkbox(label="是否开启TTS推理WebUI", show_label=True) if_tts = gr.Checkbox(label=i18n("是否开启TTS推理WebUI"), show_label=True)
tts_info = gr.Textbox(label="TTS推理WebUI进程输出信息") tts_info = gr.Textbox(label=i18n("TTS推理WebUI进程输出信息"))
if_tts.change(change_tts_inference, [if_tts,bert_pretrained_dir,cnhubert_base_dir,gpu_number_1C,GPT_dropdown,SoVITS_dropdown], [tts_info]) if_tts.change(change_tts_inference, [if_tts,bert_pretrained_dir,cnhubert_base_dir,gpu_number_1C,GPT_dropdown,SoVITS_dropdown], [tts_info])
with gr.TabItem("2-GPT-SoVITS-变声"):gr.Markdown(value="施工中,请静候佳音") with gr.TabItem(i18n("2-GPT-SoVITS-变声")):gr.Markdown(value=i18n("施工中,请静候佳音"))
app.queue(concurrency_count=511, max_size=1022).launch( app.queue(concurrency_count=511, max_size=1022).launch(
server_name="0.0.0.0", server_name="0.0.0.0",
inbrowser=True, inbrowser=True,