Use GPU processing for UVR5 and input audio loading and resampling where possible to improve inference efficiency and reduce CPU usage

This commit is contained in:
RVC-Boss
2026-07-21 21:23:25 +08:00
parent 6ce75e3a4a
commit 54465d6519
26 changed files with 4666 additions and 4126 deletions

View File

@@ -1,263 +1,265 @@
{ {
"人声提取激进程度": "Vocal extraction aggressiveness", "人声提取激进程度": "Vocal extraction aggressiveness",
"%s → 成功": "%s → Success", "%s → 成功": "%s → Success",
"%s运行中请先停止该任务": "%s is running; stop it before starting another task", "%s运行中请先停止该任务": "%s is running; stop it before starting another task",
"%s进程已终止": "The %s process has been terminated", "%s进程已终止": "The %s process has been terminated",
"====> 轮次:{} {}": "====> Epoch: {} {}", "====> 轮次:{} {}": "====> Epoch: {} {}",
"A模型权重": "Weight (w) for Model A:", "A模型权重": "Weight (w) for Model A:",
"A模型路径": "Path to Model A:", "A模型路径": "Path to Model A:",
"B模型路径": "Path to Model B:", "B模型路径": "Path to Model B:",
"CUDA可用%s": "CUDA available: %s", "CUDA可用%s": "CUDA available: %s",
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src", "E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src",
"F0与HuBERT特征提取": "F0 and HuBERT feature extraction", "F0与HuBERT特征提取": "F0 and HuBERT feature extraction",
"F0提取": "F0 extraction", "F0提取": "F0 extraction",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0 curve file (optional). One pitch per line. Replaces the default F0 and pitch modulation:", "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0 curve file (optional). One pitch per line. Replaces the default F0 and pitch modulation:",
"HuBERT特征": "HuBERT features", "HuBERT特征": "HuBERT features",
"Index Rate": "Index Rate", "Index Rate": "Index Rate",
"RVC模型路径": "RVC Model Path:", "RVC模型路径": "RVC Model Path:",
"SOLA偏移%d": "SOLA offset: %d", "SOLA偏移%d": "SOLA offset: %d",
"[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0 extraction] Completed | Success: %s | Skipped: %s | Failed: %s", "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0 extraction] Completed | Success: %s | Skipped: %s | Failed: %s",
"[F0提取] 待处理:%s": "[F0 extraction] Pending: %s", "[F0提取] 待处理:%s": "[F0 extraction] Pending: %s",
"[F0提取] 无待处理音频,已全部跳过": "[F0 extraction] No pending audio; all files were skipped", "[F0提取] 无待处理音频,已全部跳过": "[F0 extraction] No pending audio; all files were skipped",
"[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0 extraction] Progress: %s/%s | Success: %s | Skipped: %s | %s", "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0 extraction] Progress: %s/%s | Success: %s | Skipped: %s | %s",
"[F0提取][失败] %s": "[F0 extraction][Failed] %s", "[F0提取][失败] %s": "[F0 extraction][Failed] %s",
"[F0提取][失败] %s\n%s": "[F0 extraction][Failed] %s\n%s", "[F0提取][失败] %s\n%s": "[F0 extraction][Failed] %s\n%s",
"[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT features] Completed | Success: %s | Skipped: %s | Failed: %s", "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT features] Completed | Success: %s | Skipped: %s | Failed: %s",
"[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT features] No pending audio; skipped: %s", "[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT features] No pending audio; skipped: %s",
"[HuBERT特征] 正在加载模型:%s": "[HuBERT features] Loading model: %s", "[HuBERT特征] 正在加载模型:%s": "[HuBERT features] Loading model: %s",
"[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT features] Device: %s | Pending: %s | Skipped: %s", "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT features] Device: %s | Pending: %s | Skipped: %s",
"[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT features] Progress: %s/%s | Success: %s | Failed: %s | %s | %s", "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT features] Progress: %s/%s | Success: %s | Failed: %s | %s | %s",
"[HuBERT特征][失败] %s\n%s": "[HuBERT features][Failed] %s\n%s", "[HuBERT特征][失败] %s\n%s": "[HuBERT features][Failed] %s\n%s",
"[HuBERT特征][失败] %s 包含NaN": "[HuBERT features][Failed] %s contains NaN values", "[HuBERT特征][失败] %s 包含NaN": "[HuBERT features][Failed] %s contains NaN values",
"[HuBERT特征][失败] 模型不存在:%s": "[HuBERT features][Failed] Model not found: %s", "[HuBERT特征][失败] 模型不存在:%s": "[HuBERT features][Failed] Model not found: %s",
"[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[Data slicing] Worker completed | Success: %s | Failed: %s", "[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[Data slicing] Worker completed | Success: %s | Failed: %s",
"[数据切分] 完成": "[Data slicing] Completed", "[数据切分] 完成": "[Data slicing] Completed",
"[数据切分] 开始": "[Data slicing] Started", "[数据切分] 开始": "[Data slicing] Started",
"[数据切分] 待处理:%s | 进程数:%s": "[Data slicing] Pending: %s | Processes: %s", "[数据切分] 待处理:%s | 进程数:%s": "[Data slicing] Pending: %s | Processes: %s",
"[数据切分] 进度:%s/%s | %s": "[Data slicing] Progress: %s/%s | %s", "[数据切分] 进度:%s/%s | %s": "[Data slicing] Progress: %s/%s | %s",
"[数据切分][失败] %s": "[Data slicing][Failed] %s", "[数据切分][失败] %s": "[Data slicing][Failed] %s",
"[数据切分][失败] %s\n%s": "[Data slicing][Failed] %s\n%s", "[数据切分][失败] %s\n%s": "[Data slicing][Failed] %s\n%s",
"[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[Data slicing][Skipped] Invalid or abnormal audio segment: %s_%s | Peak: %s", "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[Data slicing][Skipped] Invalid or abnormal audio segment: %s_%s | Peak: %s",
"[索引训练] 写入进度:%s/%s": "[Index training] Write progress: %s/%s", "[索引训练] 写入进度:%s/%s": "[Index training] Write progress: %s/%s",
"[索引训练] 已链接索引到外部目录:%s": "[Index training] Linked index to external directory: %s", "[索引训练] 已链接索引到外部目录:%s": "[Index training] Linked index to external directory: %s",
"[索引训练] 成功构建索引:%s": "[Index training] Index built successfully: %s", "[索引训练] 成功构建索引:%s": "[Index training] Index built successfully: %s",
"[索引训练] 正在写入特征向量": "[Index training] Adding feature vectors", "[索引训练] 正在写入特征向量": "[Index training] Adding feature vectors",
"[索引训练] 正在将%s条特征聚类为10000个中心": "[Index training] Clustering %s feature vectors into 10,000 centers", "[索引训练] 正在将%s条特征聚类为10000个中心": "[Index training] Clustering %s feature vectors into 10,000 centers",
"[索引训练] 正在训练索引": "[Index training] Training index", "[索引训练] 正在训练索引": "[Index training] Training index",
"[索引训练] 特征形状:%s | IVF数量%s": "[Index training] Feature shape: %s | IVF count: %s", "[索引训练] 特征形状:%s | IVF数量%s": "[Index training] Feature shape: %s | IVF count: %s",
"[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[Index training][Failed] Could not link index to external directory: %s\n%s", "[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[Index training][Failed] Could not link index to external directory: %s\n%s",
"[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[Index training][Failed] Clustering failed; continuing with the original features\n%s", "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[Index training][Failed] Clustering failed; continuing with the original features\n%s",
"[索引训练][失败] 请先进行特征提取": "[Index training][Failed] Extract features first", "[索引训练][失败] 请先进行特征提取": "[Index training][Failed] Extract features first",
"ckpt处理": "ckpt Processing", "ckpt处理": "ckpt Processing",
"index文件路径不可包含中文": "The index file path cannot contain Chinese characters", "index文件路径不可包含中文": "The index file path cannot contain Chinese characters",
"pth文件路径不可包含中文": "The .pth file path cannot contain Chinese characters", "pth文件路径不可包含中文": "The .pth file path cannot contain Chinese characters",
"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", "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: 填写实验配置. 实验数据放在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", "step1:正在处理数据": "Step 1: Processing data",
"step2:正在提取音高&正在提取特征": "step2:Pitch extraction & feature extraction", "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.", "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):", "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", "step3: 填写训练设置, 开始训练模型和索引": "Step 3: Fill in the training settings and start training the model and index",
"step3a:正在训练模型": "Step 3a: Model training started", "step3a:正在训练模型": "Step 3a: Model training started",
"step3b:正在训练索引": "step 3b: training the index", "step3b:正在训练索引": "step 3b: training the index",
"……仅显示最近10条失败记录": "…Showing only the 10 most recent failures", "……仅显示最近10条失败记录": "…Showing only the 10 most recent failures",
"……已省略前%s行仅显示最新状态": "…Omitted the first %s lines; showing the latest status only", "……已省略前%s行仅显示最新状态": "…Omitted the first %s lines; showing the latest status only",
"一键训练": "One-click training", "一键训练": "One-click training",
"也可批量输入音频文件, 二选一, 优先读文件夹": "Multiple audio files can also be imported. If a folder path exists, this input is ignored.", "也可批量输入音频文件, 二选一, 优先读文件夹": "Multiple audio files can also be imported. If a folder path exists, this input is ignored.",
"人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "Batch vocal/accompaniment separation using UVR5 models.<br>You can choose a vocal-preserving model, or use DeEcho/DeReverb models to remove echo and reverb.", "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "Batch vocal/accompaniment separation using UVR5 models.<br>You can choose a vocal-preserving model, or use DeEcho/DeReverb models to remove echo and reverb.",
"仅支持pm和rmvpe音高提取算法": "Only the pm and rmvpe pitch extraction methods are supported", "仅支持pm和rmvpe音高提取算法": "Only the pm and rmvpe pitch extraction methods are supported",
"从训练检查点提取的模型": "Model extracted from a training checkpoint", "从训练检查点提取的模型": "Model extracted from a training checkpoint",
"以-分隔输入使用的卡号, 例如 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:", "以-分隔输入使用的卡号, 例如 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:",
"任务": "Task", "任务": "Task",
"伴奏人声分离&去混响&去回声": "Vocals/Accompaniment Separation & Reverberation Removal", "伴奏人声分离&去混响&去回声": "Vocals/Accompaniment Separation & Reverberation Removal",
"使用显卡:%s": "GPUs in use: %s", "使用显卡:%s": "GPUs in use: %s",
"使用模型采样率": "Use model sample rate", "使用模型采样率": "Use model sample rate",
"使用设备采样率": "Use device sample rate", "使用设备采样率": "Use device sample rate",
"保存名": "Save name:", "保存名": "Save name:",
"保存的文件名, 默认空为和源文件同名": "Save file name (default: same as the source file):", "保存的文件名, 默认空为和源文件同名": "Save file name (default: same as the source file):",
"保存的模型名不带后缀": "Saved model name (without extension):", "保存的模型名不带后缀": "Saved model name (without extension):",
"保存频率save_every_epoch": "Save frequency (save_every_epoch):", "保存频率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:", "保护清辅音和呼吸声防止电音撕裂等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", "修改": "Modify",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modify model information (only supported for small model files extracted from the 'weights' folder)", "修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modify model information (only supported for small model files extracted from the 'weights' folder)",
"停止一键训练": "Stop one-click training", "停止一键训练": "Stop one-click training",
"停止处理数据": "Stop data preprocessing", "停止处理数据": "Stop data preprocessing",
"停止特征提取": "Stop feature extraction", "停止特征提取": "Stop feature extraction",
"停止训练模型": "Stop model training", "停止训练模型": "Stop model training",
"停止训练索引": "Stop index training", "停止训练索引": "Stop index training",
"停止音频转换": "Stop audio conversion", "停止音频转换": "Stop audio conversion",
"全流程结束!": "All processes have been completed!", "全流程结束!": "All processes have been completed!",
"判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth", "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth",
"加载模型": "Load model", "加载模型": "Load model",
"加载预训练底模D路径": "Load pre-trained base model D path:", "加载预训练底模D路径": "Load pre-trained base model D path:",
"加载预训练底模G路径": "Load pre-trained base model G path:", "加载预训练底模G路径": "Load pre-trained base model G path:",
"单次推理": "Single Inference", "单次推理": "Single Inference",
"卸载音色省显存": "Unload voice to save GPU memory:", "卸载音色省显存": "Unload voice to save GPU memory:",
"变调(整数, 半音数量, 升八度12降八度-12)": "Transpose (integer, number of semitones, raise by an octave: 12, lower by an octave: -12):", "变调(整数, 半音数量, 升八度12降八度-12)": "Transpose (integer, number of semitones, raise by an octave: 12, lower by an octave: -12):",
"合成": "Synthesis", "合成": "Synthesis",
"后处理重采样至最终采样率0为不进行重采样": "Resample the output audio in post-processing to the final sample rate. Set to 0 for no resampling:", "后处理重采样至最终采样率0为不进行重采样": "Resample the output audio in post-processing to the final sample rate. Set to 0 for no resampling:",
"否": "No", "否": "No",
"响应阈值": "Response threshold", "响应阈值": "Response threshold",
"响度因子": "loudness factor", "响度因子": "loudness factor",
"处理中": "Processing", "处理中": "Processing",
"处理数据": "Process data", "处理数据": "Process data",
"失败": "Failed", "失败": "Failed",
"失败记录": "Failure records", "失败记录": "Failure records",
"子进程执行失败,返回码:%s": "Child process failed with exit code: %s", "子进程执行失败,返回码:%s": "Child process failed with exit code: %s",
"导出文件格式": "Export file format", "导出文件格式": "Export file format",
"已停止": "Stopped", "已停止": "Stopped",
"已加载判别器预训练模型:%s": "Loaded discriminator pretrained model: %s", "已加载判别器预训练模型:%s": "Loaded discriminator pretrained model: %s",
"已加载生成器预训练模型:%s": "Loaded generator pretrained model: %s", "已加载生成器预训练模型:%s": "Loaded generator pretrained model: %s",
"已启用索引检索": "Index search enabled", "已启用索引检索": "Index search enabled",
"已完成": "Completed", "已完成": "Completed",
"已恢复判别器检查点": "Restored discriminator checkpoint", "已恢复判别器检查点": "Restored discriminator checkpoint",
"常见问题解答": "FAQ (Frequently Asked Questions)", "常见问题解答": "FAQ (Frequently Asked Questions)",
"常规设置": "General settings", "常规设置": "General settings",
"开始音频转换": "Start audio conversion", "开始音频转换": "Start audio conversion",
"当前": "Current", "当前": "Current",
"当前阶段": "Current stage", "当前阶段": "Current stage",
"很遗憾您这没有能用的显卡来支持您训练": "Unfortunately, there is no compatible GPU available to support your training.", "很遗憾您这没有能用的显卡来支持您训练": "Unfortunately, there is no compatible GPU available to support your training.",
"性别因子/声线粗细": "Gender factor / voice thickness", "性别因子/声线粗细": "Gender factor / voice thickness",
"性能设置": "Performance settings", "性能设置": "Performance settings",
"总训练轮数total_epoch": "Total training epochs (total_epoch):", "总训练轮数total_epoch": "Total training epochs (total_epoch):",
"成功": "Success", "成功": "Success",
"执行命令": "Command", "执行命令": "Command",
"批量推理": "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').",
"拖拽或点击上传待处理音频": "Drag and drop or click to upload audio for processing", "拖拽或点击上传待处理音频": "Drag and drop or click to upload audio for processing",
"指定输出主人声文件夹": "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):",
"推理耗时:%.2f秒": "Inference time: %.2f seconds", "推理耗时:%.2f秒": "Inference time: %.2f seconds",
"推理音色": "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:",
"数据切分": "Data slicing", "数据切分": "Data slicing",
"无法停止": "Cannot stop", "无法停止": "Cannot stop",
"无法读取音频:%s": "Could not read audio: %s", "无法读取音频:%s": "Could not read audio: %s",
"是": "Yes", "是": "Yes",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Save only the latest '.ckpt' file to save disk space:", "是否仅保存最新的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:", "是否在每次保存时间点将最终小模型保存至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:", "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Cache all training sets to GPU memory. Caching small datasets (less than 10 minutes) can speed up training, but caching large datasets will consume a lot of GPU memory and may not provide much speed improvement:",
"显卡信息": "GPU Information", "显卡信息": "GPU Information",
"未使用": "Not used", "未使用": "Not used",
"未使用判别器预训练模型": "Discriminator pretrained model not used", "未使用判别器预训练模型": "Discriminator pretrained model not used",
"未使用生成器预训练模型": "Generator pretrained model not used", "未使用生成器预训练模型": "Generator pretrained model not used",
"未找到Roformer模型配置文件正在使用内置默认配置": "Roformer model configuration not found; using the built-in defaults", "未找到Roformer模型配置文件正在使用内置默认配置": "Roformer model configuration not found; using the built-in defaults",
"未检测到可用显卡将使用CPU训练耗时可能较长": "No supported GPU detected; training on the CPU may take much longer", "未检测到可用显卡将使用CPU训练耗时可能较长": "No supported GPU detected; training on the CPU may take much longer",
"未运行": "Not running", "未运行": "Not running",
"本软件以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.", "本软件以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", "查看": "View",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "View model information (only supported for small model files extracted from the 'weights' folder)", "查看模型信息(仅支持weights文件夹下提取的小模型文件)": "View model information (only supported for small model files extracted from the 'weights' folder)",
"检测到模型类型:%s": "Detected model type: %s", "检测到模型类型:%s": "Detected model type: %s",
"检索特征占比": "Search feature ratio (controls accent strength, too high has artifacting):", "检索特征占比": "Search feature ratio (controls accent strength, too high has artifacting):",
"模型": "Model", "模型": "Model",
"模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Model information: %s\nSample rate: %s\nPitch guidance: %s\nVersion: %s", "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Model information: %s\nSample rate: %s\nPitch guidance: %s\nVersion: %s",
"模型推理": "Model Inference", "模型推理": "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:", "模型提取(输入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:",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Whether the model has pitch guidance (required for singing, optional for speech):", "模型是否带音高指导(唱歌一定要, 语音可以不要)": "Whether the model has pitch guidance (required for singing, optional for speech):",
"模型是否带音高指导,1是0否": "Whether the model has pitch guidance (1: yes, 0: no):", "模型是否带音高指导,1是0否": "Whether the model has pitch guidance (1: yes, 0: no):",
"模型版本型号": "Model architecture version:", "模型版本型号": "Model architecture version:",
"模型融合, 可用于测试音色融合": "Model fusion, can be used to test timbre fusion", "模型融合, 可用于测试音色融合": "Model fusion, can be used to test timbre fusion",
"模型融合失败:两个模型的结构不一致": "Model merge failed: the two model architectures do not match", "模型融合失败:两个模型的结构不一致": "Model merge failed: the two model architectures do not match",
"模型训练": "Model training", "模型训练": "Model training",
"模型路径": "Path to Model:", "模型路径": "Path to Model:",
"正在保存最终检查点:%s": "Saving final checkpoint: %s", "正在保存最终检查点:%s": "Saving final checkpoint: %s",
"正在保存检查点 %s_e%s%s": "Saving checkpoint %s_e%s: %s", "正在保存检查点 %s_e%s%s": "Saving checkpoint %s_e%s: %s",
"正在加载RMVPE模型": "Loading RMVPE model", "正在加载RMVPE模型": "Loading RMVPE model",
"正在加载模型": "Loading model", "正在加载模型": "Loading model",
"正在启动": "Starting", "正在启动": "Starting",
"正在收尾": "Finalizing", "正在收尾": "Finalizing",
"每张显卡的batch_size": "Batch size per GPU:", "每张显卡的batch_size": "Batch size per GPU:",
"淡入淡出长度": "Fade length", "淡入淡出长度": "Fade length",
"清理模型缓存": "Clearing model cache", "清理模型缓存": "Clearing model cache",
"版本": "Version", "版本": "Version",
"特征": "Features", "特征": "Features",
"特征提取": "Feature extraction", "特征提取": "Feature extraction",
"状态": "Status", "状态": "Status",
"独占 WASAPI 设备": "Exclusive WASAPI device", "独占 WASAPI 设备": "Exclusive WASAPI device",
"生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth", "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth",
"男转女推荐+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.", "男转女推荐+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:", "目标采样率": "Target sample rate:",
"等待中": "Waiting", "等待中": "Waiting",
"等待输入": "Waiting for input", "等待输入": "Waiting for input",
"算法延迟(ms):": "Algorithmic delays(ms):", "算法延迟(ms):": "Algorithmic delays(ms):",
"索引": "Index", "索引": "Index",
"索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Invalid index: use added_xxxx.index, not trained_xxxx.index", "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Invalid index: use added_xxxx.index, not trained_xxxx.index",
"索引检索失败": "Index search failed", "索引检索失败": "Index search failed",
"索引检索失败或未启用": "Index search failed or is disabled", "索引检索失败或未启用": "Index search failed or is disabled",
"索引训练": "Index training", "索引训练": "Index training",
"耗时": "Elapsed time", "耗时": "Elapsed time",
"耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Elapsed time: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs", "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Elapsed time: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs",
"融合": "Fusion", "融合": "Fusion",
"要改的模型信息": "Model information to be modified:", "要改的模型信息": "Model information to be modified:",
"要置入的模型信息": "Model information to be placed:", "要置入的模型信息": "Model information to be placed:",
"训练": "Train", "训练": "Train",
"训练已完成,正在保存最终模型": "Training completed; saving the final model", "训练已完成,正在保存最终模型": "Training completed; saving the final model",
"训练文件列表写入完成": "Training file list written successfully", "训练文件列表写入完成": "Training file list written successfully",
"训练模型": "Train model", "训练模型": "Train model",
"训练特征索引": "Train feature index", "训练特征索引": "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.", "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Training complete. You can check the training logs in the console or the 'train.log' file under the experiment folder.",
"训练设备规则选择的精度:%s": "Training precision selected by device rules: %s", "训练设备规则选择的精度:%s": "Training precision selected by device rules: %s",
"训练轮次:{} [{:.0f}%]": "Training epoch: {} [{:.0f}%]", "训练轮次:{} [{:.0f}%]": "Training epoch: {} [{:.0f}%]",
"设备类型": "Device type", "设备类型": "Device type",
"请上传音频文件": "Upload an audio file", "请上传音频文件": "Upload an audio file",
"请填写输出文件夹路径": "Enter the output folder path", "请填写输出文件夹路径": "Enter the output folder path",
"请指定说话人id": "Please specify the speaker/singer ID:", "请指定说话人id": "Please specify the speaker/singer ID:",
"请选择index文件": "Please choose the .index file", "请选择index文件": "Please choose the .index file",
"请选择pth文件": "Please choose the .pth file", "请选择pth文件": "Please choose the .pth file",
"请选择说话人id": "Select Speaker/Singer ID:", "请选择说话人id": "Select Speaker/Singer ID:",
"转换": "Convert", "转换": "Convert",
"输入实验名": "Enter the experiment name:", "输入实验名": "Enter the experiment name:",
"输入待处理音频文件夹路径": "Enter the path of the audio folder to be processed:", "输入待处理音频文件夹路径": "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 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):", "输入待处理音频文件路径(默认是正确格式示例)": "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:", "输入源音量包络替换输出音量包络融合比例越靠近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", "输入监听": "Input voice monitor",
"输入训练文件夹路径": "Enter the path of the training folder:", "输入训练文件夹路径": "Enter the path of the training folder:",
"输入设备": "Input device", "输入设备": "Input device",
"输入设备:%s:%s": "Input device: %s:%s", "输入设备:%s:%s": "Input device: %s:%s",
"输入降噪": "Input noise reduction", "输入降噪": "Input noise reduction",
"输出信息": "Output information", "输出信息": "Output information",
"输出变声": "Output converted voice", "输出变声": "Output converted voice",
"输出设备": "Output device", "输出设备": "Output device",
"输出设备:%s:%s": "Output device: %s:%s", "输出设备:%s:%s": "Output device: %s:%s",
"输出降噪": "Output noise reduction", "输出降噪": "Output noise reduction",
"输出音频(右下角三个点,点了可以下载)": "Export audio (click on the three dots in the lower right corner to download)", "输出音频(右下角三个点,点了可以下载)": "Export audio (click on the three dots in the lower right corner to download)",
"运行中": "Running", "运行中": "Running",
"进度": "Progress", "进度": "Progress",
"选择.index文件": "Select the .index file", "选择.index文件": "Select the .index file",
"选择.pth文件": "Select the .pth file", "选择.pth文件": "Select the .pth file",
"选择模型": "Select model", "选择模型": "Select model",
"选择索引": "Select index", "选择索引": "Select index",
"选择音高提取算法": "Select the pitch extraction algorithm", "选择音高提取算法": "Select the pitch extraction algorithm",
"采样率:": "Sample rate:", "采样率:": "Sample rate:",
"采样长度": "Sample length", "采样长度": "Sample length",
"重载设备列表": "Reload device list", "重载设备列表": "Reload device list",
"错误信息:%s": "Error details: %s", "错误信息:%s": "Error details: %s",
"错误:未知模型:%s": "Error: Unknown model: %s", "错误:未知模型:%s": "Error: Unknown model: %s",
"音调设置": "Pitch settings", "音调设置": "Pitch settings",
"音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "The audio has multiple channels, but the model is mono; all channels will be averaged", "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "The audio has multiple channels, but the model is mono; all channels will be averaged",
"音频设备": "Audio device", "音频设备": "Audio device",
"音高全部为0该音频无意义跳过%s": "All pitch values are zero; this audio is unusable and will be skipped: %s", "音高全部为0该音频无意义跳过%s": "All pitch values are zero; this audio is unusable and will be skipped: %s",
"音高算法": "pitch detection algorithm", "音高算法": "pitch detection algorithm",
"额外推理时长": "Extra inference time", "额外推理时长": "Extra inference time",
"数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "Dataset preprocessing produced no valid training audio. Check the dataset and preprocessing log.", "数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "Dataset preprocessing produced no valid training audio. Check the dataset and preprocessing log.",
"数据切分没有生成16k音频已停止后续特征提取和训练": "Dataset preprocessing produced no 16 kHz audio. Feature extraction and training have been stopped.", "数据切分没有生成16k音频已停止后续特征提取和训练": "Dataset preprocessing produced no 16 kHz audio. Feature extraction and training have been stopped.",
"数据切分输出文件不匹配,已停止后续特征提取和训练": "Dataset preprocessing outputs do not match. Feature extraction and training have been stopped.", "数据切分输出文件不匹配,已停止后续特征提取和训练": "Dataset preprocessing outputs do not match. Feature extraction and training have been stopped.",
"HuBERT特征提取没有生成有效结果已停止训练": "HuBERT feature extraction produced no valid results. Training has been stopped.", "HuBERT特征提取没有生成有效结果已停止训练": "HuBERT feature extraction produced no valid results. Training has been stopped.",
"F0提取没有生成有效结果已停止训练": "F0 extraction produced no valid results. Training has been stopped.", "F0提取没有生成有效结果已停止训练": "F0 extraction produced no valid results. Training has been stopped.",
"没有可用于训练的有效音频,请先完成数据切分和特征提取": "No valid audio is available for training. Complete dataset preprocessing and feature extraction first.", "没有可用于训练的有效音频,请先完成数据切分和特征提取": "No valid audio is available for training. Complete dataset preprocessing and feature extraction first.",
"已完成阶段": "Completed stages", "已完成阶段": "Completed stages",
"已成功": "Succeeded", "已成功": "Succeeded",
"刷新音色列表": "Refresh voice list", "刷新音色列表": "Refresh voice list",
"特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Feature index path (automatically matched after selecting a model; editable)", "特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Feature index path (automatically matched after selecting a model; editable)",
"[索引训练] 外部索引链接已存在:%s": "[Index training] External index link already exists: %s", "[索引训练] 外部索引链接已存在:%s": "[Index training] External index link already exists: %s",
"[索引训练][跳过] added索引已存在%s": "[Index training][Skipped] added index already exists: %s", "[索引训练][跳过] added索引已存在%s": "[Index training][Skipped] added index already exists: %s",
"[索引训练][跳过] trained索引已存在%s": "[Index training][Skipped] trained index already exists: %s", "[索引训练][跳过] trained索引已存在%s": "[Index training][Skipped] trained index already exists: %s",
"当前设备:%s | 推理精度:%s": "Current device: %s | Inference precision: %s", "当前设备:%s | 推理精度:%s": "Current device: %s | Inference precision: %s",
"正在预热CUDA Graph": "Warming up CUDA Graph", "正在预热CUDA Graph": "Warming up CUDA Graph",
"CUDA Graph预热完成": "CUDA Graph warm-up complete" "CUDA Graph预热完成": "CUDA Graph warm-up complete",
} "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s": "Data extraction started: start_time=%.6f, requested concurrency=%s, actual concurrency limit=%s",
"数据提取结束end_time=%.6f,总耗时=%.3f秒": "Data extraction finished: end_time=%.6f, total elapsed=%.3f seconds"
}

View File

@@ -1,263 +1,265 @@
{ {
"人声提取激进程度": "Intensidad de extracción vocal", "人声提取激进程度": "Intensidad de extracción vocal",
"%s → 成功": "%s → Éxito", "%s → 成功": "%s → Éxito",
"%s运行中请先停止该任务": "%s está en ejecución; deténgalo antes de iniciar otra tarea", "%s运行中请先停止该任务": "%s está en ejecución; deténgalo antes de iniciar otra tarea",
"%s进程已终止": "El proceso %s ha finalizado", "%s进程已终止": "El proceso %s ha finalizado",
"====> 轮次:{} {}": "====> Época: {} {}", "====> 轮次:{} {}": "====> Época: {} {}",
"A模型权重": "Un peso modelo para el modelo A.", "A模型权重": "Un peso modelo para el modelo A.",
"A模型路径": "Modelo A ruta.", "A模型路径": "Modelo A ruta.",
"B模型路径": "Modelo B ruta.", "B模型路径": "Modelo B ruta.",
"CUDA可用%s": "CUDA disponible: %s", "CUDA可用%s": "CUDA disponible: %s",
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src", "E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src",
"F0与HuBERT特征提取": "Extracción de F0 y características HuBERT", "F0与HuBERT特征提取": "Extracción de F0 y características HuBERT",
"F0提取": "Extracción F0", "F0提取": "Extracción F0",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "Archivo de curva F0, opcional, un tono por línea, en lugar de F0 predeterminado y cambio de tono", "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "Archivo de curva F0, opcional, un tono por línea, en lugar de F0 predeterminado y cambio de tono",
"HuBERT特征": "Características HuBERT", "HuBERT特征": "Características HuBERT",
"Index Rate": "Tasa de índice", "Index Rate": "Tasa de índice",
"RVC模型路径": "Ruta del modelo RVC", "RVC模型路径": "Ruta del modelo RVC",
"SOLA偏移%d": "Desplazamiento SOLA: %d", "SOLA偏移%d": "Desplazamiento SOLA: %d",
"[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Extracción F0] Completado | Éxito: %s | Omitidos: %s | Error: %s", "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Extracción F0] Completado | Éxito: %s | Omitidos: %s | Error: %s",
"[F0提取] 待处理:%s": "[Extracción F0] Pending: %s", "[F0提取] 待处理:%s": "[Extracción F0] Pending: %s",
"[F0提取] 无待处理音频,已全部跳过": "[Extracción F0] No hay audio pendiente; se omitieron todos los archivos", "[F0提取] 无待处理音频,已全部跳过": "[Extracción F0] No hay audio pendiente; se omitieron todos los archivos",
"[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[Extracción F0] Progreso: %s/%s | Éxito: %s | Omitidos: %s | %s", "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[Extracción F0] Progreso: %s/%s | Éxito: %s | Omitidos: %s | %s",
"[F0提取][失败] %s": "[Extracción F0][Error] %s", "[F0提取][失败] %s": "[Extracción F0][Error] %s",
"[F0提取][失败] %s\n%s": "[Extracción F0][Error] %s\n%s", "[F0提取][失败] %s\n%s": "[Extracción F0][Error] %s\n%s",
"[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Características HuBERT] Completado | Éxito: %s | Omitidos: %s | Error: %s", "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Características HuBERT] Completado | Éxito: %s | Omitidos: %s | Error: %s",
"[HuBERT特征] 无待处理音频,已全部跳过:%s": "[Características HuBERT] No hay audio pendiente; omitidos: %s", "[HuBERT特征] 无待处理音频,已全部跳过:%s": "[Características HuBERT] No hay audio pendiente; omitidos: %s",
"[HuBERT特征] 正在加载模型:%s": "[Características HuBERT] Cargando el modelo: %s", "[HuBERT特征] 正在加载模型:%s": "[Características HuBERT] Cargando el modelo: %s",
"[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[Características HuBERT] Dispositivo: %s | Pending: %s | Omitidos: %s", "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[Características HuBERT] Dispositivo: %s | Pending: %s | Omitidos: %s",
"[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[Características HuBERT] Progreso: %s/%s | Éxito: %s | Error: %s | %s | %s", "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[Características HuBERT] Progreso: %s/%s | Éxito: %s | Error: %s | %s | %s",
"[HuBERT特征][失败] %s\n%s": "[Características HuBERT][Error] %s\n%s", "[HuBERT特征][失败] %s\n%s": "[Características HuBERT][Error] %s\n%s",
"[HuBERT特征][失败] %s 包含NaN": "[Características HuBERT][Error] %s contains NaN values", "[HuBERT特征][失败] %s 包含NaN": "[Características HuBERT][Error] %s contains NaN values",
"[HuBERT特征][失败] 模型不存在:%s": "[Características HuBERT][Error] Modelo not found: %s", "[HuBERT特征][失败] 模型不存在:%s": "[Características HuBERT][Error] Modelo not found: %s",
"[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[División de datos] Subtarea completada | Éxito: %s | Error: %s", "[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[División de datos] Subtarea completada | Éxito: %s | Error: %s",
"[数据切分] 完成": "[División de datos] Completado", "[数据切分] 完成": "[División de datos] Completado",
"[数据切分] 开始": "[División de datos] Iniciado", "[数据切分] 开始": "[División de datos] Iniciado",
"[数据切分] 待处理:%s | 进程数:%s": "[División de datos] Pending: %s | Procesos: %s", "[数据切分] 待处理:%s | 进程数:%s": "[División de datos] Pending: %s | Procesos: %s",
"[数据切分] 进度:%s/%s | %s": "[División de datos] Progreso: %s/%s | %s", "[数据切分] 进度:%s/%s | %s": "[División de datos] Progreso: %s/%s | %s",
"[数据切分][失败] %s": "[División de datos][Error] %s", "[数据切分][失败] %s": "[División de datos][Error] %s",
"[数据切分][失败] %s\n%s": "[División de datos][Error] %s\n%s", "[数据切分][失败] %s\n%s": "[División de datos][Error] %s\n%s",
"[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[División de datos][Omitidos] Segmento de audio no válido o anómalo: %s_%s | Pico: %s", "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[División de datos][Omitidos] Segmento de audio no válido o anómalo: %s_%s | Pico: %s",
"[索引训练] 写入进度:%s/%s": "[Entrenamiento del índice] Progreso de escritura: %s/%s", "[索引训练] 写入进度:%s/%s": "[Entrenamiento del índice] Progreso de escritura: %s/%s",
"[索引训练] 已链接索引到外部目录:%s": "[Entrenamiento del índice] Índice enlazado al directorio externo: %s", "[索引训练] 已链接索引到外部目录:%s": "[Entrenamiento del índice] Índice enlazado al directorio externo: %s",
"[索引训练] 成功构建索引:%s": "[Entrenamiento del índice] Índice creado correctamente: %s", "[索引训练] 成功构建索引:%s": "[Entrenamiento del índice] Índice creado correctamente: %s",
"[索引训练] 正在写入特征向量": "[Entrenamiento del índice] Añadiendo vectores de características", "[索引训练] 正在写入特征向量": "[Entrenamiento del índice] Añadiendo vectores de características",
"[索引训练] 正在将%s条特征聚类为10000个中心": "[Entrenamiento del índice] Clustering %s feature vectors into 10,000 centers", "[索引训练] 正在将%s条特征聚类为10000个中心": "[Entrenamiento del índice] Clustering %s feature vectors into 10,000 centers",
"[索引训练] 正在训练索引": "[Entrenamiento del índice] Entrenando el índice", "[索引训练] 正在训练索引": "[Entrenamiento del índice] Entrenando el índice",
"[索引训练] 特征形状:%s | IVF数量%s": "[Entrenamiento del índice] Forma de características: %s | Cantidad de IVF: %s", "[索引训练] 特征形状:%s | IVF数量%s": "[Entrenamiento del índice] Forma de características: %s | Cantidad de IVF: %s",
"[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[Entrenamiento del índice][Error] No se pudo enlazar el índice al directorio externo: %s\n%s", "[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[Entrenamiento del índice][Error] No se pudo enlazar el índice al directorio externo: %s\n%s",
"[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[Entrenamiento del índice][Error] Falló el agrupamiento; se continuará con las características originales\n%s", "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[Entrenamiento del índice][Error] Falló el agrupamiento; se continuará con las características originales\n%s",
"[索引训练][失败] 请先进行特征提取": "[Entrenamiento del índice][Error] Extraiga primero las características", "[索引训练][失败] 请先进行特征提取": "[Entrenamiento del índice][Error] Extraiga primero las características",
"ckpt处理": "Procesamiento de recibos", "ckpt处理": "Procesamiento de recibos",
"index文件路径不可包含中文": "La ruta del archivo .index no debe contener caracteres chinos.", "index文件路径不可包含中文": "La ruta del archivo .index no debe contener caracteres chinos.",
"pth文件路径不可包含中文": "La ruta del archivo .pth 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.", "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: 填写实验配置. 实验数据放在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", "step1:正在处理数据": "Paso 1: Procesando datos",
"step2:正在提取音高&正在提取特征": "Paso 2: Extracción del tono y extracción de características", "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.", "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).", "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.", "step3: 填写训练设置, 开始训练模型和索引": "Paso 3: Complete la configuración de entrenamiento y comience a entrenar el modelo y el índice.",
"step3a:正在训练模型": "Paso 3a: Entrenando el modelo", "step3a:正在训练模型": "Paso 3a: Entrenando el modelo",
"step3b:正在训练索引": "paso 3b: entrenando el índice", "step3b:正在训练索引": "paso 3b: entrenando el índice",
"……仅显示最近10条失败记录": "…Se muestran solo los 10 errores más recientes", "……仅显示最近10条失败记录": "…Se muestran solo los 10 errores más recientes",
"……已省略前%s行仅显示最新状态": "…Se omitieron las primeras %s líneas; se muestra solo el estado más reciente", "……已省略前%s行仅显示最新状态": "…Se omitieron las primeras %s líneas; se muestra solo el estado más reciente",
"一键训练": "Entrenamiento con un clic", "一键训练": "Entrenamiento con un clic",
"也可批量输入音频文件, 二选一, 优先读文件夹": "También se pueden importar varios archivos de audio. Si existe una ruta de carpeta, esta entrada se ignora.", "也可批量输入音频文件, 二选一, 优先读文件夹": "También se pueden importar varios archivos de audio. Si existe una ruta de carpeta, esta entrada se ignora.",
"人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "Procesamiento por lotes para separar voces y acompañamiento mediante modelos UVR5.<br>Puede elegir un modelo que conserve las voces o usar modelos DeEcho/DeReverb para eliminar el eco y la reverberación.", "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "Procesamiento por lotes para separar voces y acompañamiento mediante modelos UVR5.<br>Puede elegir un modelo que conserve las voces o usar modelos DeEcho/DeReverb para eliminar el eco y la reverberación.",
"仅支持pm和rmvpe音高提取算法": "Solo se admiten los métodos de extracción de tono pm y rmvpe", "仅支持pm和rmvpe音高提取算法": "Solo se admiten los métodos de extracción de tono pm y rmvpe",
"从训练检查点提取的模型": "Modeloo extraído de un punto de control de entrenamiento", "从训练检查点提取的模型": "Modeloo extraído de un punto de control de entrenamiento",
"以-分隔输入使用的卡号, 例如 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.", "以-分隔输入使用的卡号, 例如 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.",
"任务": "Tarea", "任务": "Tarea",
"伴奏人声分离&去混响&去回声": "Separación de voz acompañante & eliminación de reverberación & eco", "伴奏人声分离&去混响&去回声": "Separación de voz acompañante & eliminación de reverberación & eco",
"使用显卡:%s": "GPU en uso: %s", "使用显卡:%s": "GPU en uso: %s",
"使用模型采样率": "Usar la frecuencia del modelo", "使用模型采样率": "Usar la frecuencia del modelo",
"使用设备采样率": "Usar la frecuencia del dispositivo", "使用设备采样率": "Usar la frecuencia del dispositivo",
"保存名": "Guardar nombre", "保存名": "Guardar nombre",
"保存的文件名, 默认空为和源文件同名": "Nombre del archivo que se guardará, el valor predeterminado es el mismo que el nombre del archivo de origen", "保存的文件名, 默认空为和源文件同名": "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.", "保存的模型名不带后缀": "Nombre del modelo guardado sin extensión.",
"保存频率save_every_epoch": "Frecuencia de guardado (save_every_epoch)", "保存频率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", "保护清辅音和呼吸声防止电音撕裂等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", "修改": "Modificar",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modificar la información del modelo (solo admite archivos de modelos pequeños extraídos en la carpeta weights)", "修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modificar la información del modelo (solo admite archivos de modelos pequeños extraídos en la carpeta weights)",
"停止一键训练": "Detener entrenamiento con un clic", "停止一键训练": "Detener entrenamiento con un clic",
"停止处理数据": "Detener preprocesamiento de datos", "停止处理数据": "Detener preprocesamiento de datos",
"停止特征提取": "Detener extracción de características", "停止特征提取": "Detener extracción de características",
"停止训练模型": "Detener entrenamiento del modelo", "停止训练模型": "Detener entrenamiento del modelo",
"停止训练索引": "Detener entrenamiento del índice", "停止训练索引": "Detener entrenamiento del índice",
"停止音频转换": "Detener la conversión de audio", "停止音频转换": "Detener la conversión de audio",
"全流程结束!": "¡Todo el proceso ha terminado!", "全流程结束!": "¡Todo el proceso ha terminado!",
"判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth", "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth",
"加载模型": "Cargar modelo", "加载模型": "Cargar modelo",
"加载预训练底模D路径": "Cargue la ruta del modelo D base pre-entrenada.", "加载预训练底模D路径": "Cargue la ruta del modelo D base pre-entrenada.",
"加载预训练底模G路径": "Cargue la ruta del modelo G base pre-entrenada.", "加载预训练底模G路径": "Cargue la ruta del modelo G base pre-entrenada.",
"单次推理": "Inferencia individual", "单次推理": "Inferencia individual",
"卸载音色省显存": "Descargue la voz para ahorrar memoria GPU", "卸载音色省显存": "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)", "变调(整数, 半音数量, 升八度12降八度-12)": "Cambio de tono (entero, número de semitonos, subir una octava +12 o bajar una octava -12)",
"合成": "Síntesis", "合成": "Síntesis",
"后处理重采样至最终采样率0为不进行重采样": "Remuestreo posterior al proceso a la tasa de muestreo final, 0 significa no remuestrear", "后处理重采样至最终采样率0为不进行重采样": "Remuestreo posterior al proceso a la tasa de muestreo final, 0 significa no remuestrear",
"否": "No", "否": "No",
"响应阈值": "Umbral de respuesta", "响应阈值": "Umbral de respuesta",
"响度因子": "factor de sonoridad", "响度因子": "factor de sonoridad",
"处理中": "Procesando", "处理中": "Procesando",
"处理数据": "Procesar datos", "处理数据": "Procesar datos",
"失败": "Error", "失败": "Error",
"失败记录": "Registro de errores", "失败记录": "Registro de errores",
"子进程执行失败,返回码:%s": "El subproceso falló con el código de salida: %s", "子进程执行失败,返回码:%s": "El subproceso falló con el código de salida: %s",
"导出文件格式": "Formato de archivo de exportación", "导出文件格式": "Formato de archivo de exportación",
"已停止": "Detenido", "已停止": "Detenido",
"已加载判别器预训练模型:%s": "Modeloo preentrenado del discriminador cargado: %s", "已加载判别器预训练模型:%s": "Modeloo preentrenado del discriminador cargado: %s",
"已加载生成器预训练模型:%s": "Modeloo preentrenado del generador cargado: %s", "已加载生成器预训练模型:%s": "Modeloo preentrenado del generador cargado: %s",
"已启用索引检索": "Búsqueda por índice activada", "已启用索引检索": "Búsqueda por índice activada",
"已完成": "Completado", "已完成": "Completado",
"已恢复判别器检查点": "Se restauró el punto de control del discriminador", "已恢复判别器检查点": "Se restauró el punto de control del discriminador",
"常见问题解答": "Preguntas frecuentes", "常见问题解答": "Preguntas frecuentes",
"常规设置": "Configuración general", "常规设置": "Configuración general",
"开始音频转换": "Iniciar conversión de audio", "开始音频转换": "Iniciar conversión de audio",
"当前": "Actual", "当前": "Actual",
"当前阶段": "Etapa actual", "当前阶段": "Etapa actual",
"很遗憾您这没有能用的显卡来支持您训练": "Lamentablemente, no tiene una tarjeta gráfica adecuada para soportar su entrenamiento", "很遗憾您这没有能用的显卡来支持您训练": "Lamentablemente, no tiene una tarjeta gráfica adecuada para soportar su entrenamiento",
"性别因子/声线粗细": "Factor de género / grosor de la voz", "性别因子/声线粗细": "Factor de género / grosor de la voz",
"性能设置": "Configuración de rendimiento", "性能设置": "Configuración de rendimiento",
"总训练轮数total_epoch": "Total de épocas de entrenamiento (total_epoch)", "总训练轮数total_epoch": "Total de épocas de entrenamiento (total_epoch)",
"成功": "Éxito", "成功": "Éxito",
"执行命令": "Comando", "执行命令": "Comando",
"批量推理": "Inferencia por lotes", "批量推理": "Inferencia por lotes",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认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).", "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认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).",
"拖拽或点击上传待处理音频": "Arrastre y suelte o haga clic para subir el audio que desea procesar", "拖拽或点击上传待处理音频": "Arrastre y suelte o haga clic para subir el audio que desea procesar",
"指定输出主人声文件夹": "Especifique la carpeta de salida para la voz principal", "指定输出主人声文件夹": "Especifique la carpeta de salida para la voz principal",
"指定输出文件夹": "Especificar carpeta de salida", "指定输出文件夹": "Especificar carpeta de salida",
"指定输出非主人声文件夹": "Especifique la carpeta de salida para las voces no principales", "指定输出非主人声文件夹": "Especifique la carpeta de salida para las voces no principales",
"推理时间(ms):": "Inferir tiempo (ms):", "推理时间(ms):": "Inferir tiempo (ms):",
"推理耗时:%.2f秒": "Tiempo de inferencia: %.2f seconds", "推理耗时:%.2f秒": "Tiempo de inferencia: %.2f seconds",
"推理音色": "inferencia de voz", "推理音色": "inferencia de voz",
"提取": "Extraer", "提取": "Extraer",
"提取音高和处理数据使用的CPU进程数": "Número de procesos de CPU utilizados para extraer el tono y procesar los datos", "提取音高和处理数据使用的CPU进程数": "Número de procesos de CPU utilizados para extraer el tono y procesar los datos",
"数据切分": "División de datos", "数据切分": "División de datos",
"无法停止": "No se puede detener", "无法停止": "No se puede detener",
"无法读取音频:%s": "No se pudo leer el audio: %s", "无法读取音频:%s": "No se pudo leer el audio: %s",
"是": "Sí", "是": "Sí",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Guardar solo el archivo ckpt más reciente para ahorrar espacio en disco", "是否仅保存最新的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", "是否在每次保存时间点将最终小模型保存至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.", "是否缓存所有训练集至显存. 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", "显卡信息": "información de la GPU",
"未使用": "No utilizado", "未使用": "No utilizado",
"未使用判别器预训练模型": "No se usó el modelo preentrenado del discriminador", "未使用判别器预训练模型": "No se usó el modelo preentrenado del discriminador",
"未使用生成器预训练模型": "No se usó el modelo preentrenado del generador", "未使用生成器预训练模型": "No se usó el modelo preentrenado del generador",
"未找到Roformer模型配置文件正在使用内置默认配置": "No se encontró la configuración del modelo Roformer; se usarán los valores integrados", "未找到Roformer模型配置文件正在使用内置默认配置": "No se encontró la configuración del modelo Roformer; se usarán los valores integrados",
"未检测到可用显卡将使用CPU训练耗时可能较长": "No se detectó una GPU compatible; entrenar con la CPU puede tardar mucho más", "未检测到可用显卡将使用CPU训练耗时可能较长": "No se detectó una GPU compatible; entrenar con la CPU puede tardar mucho más",
"未运行": "No iniciado", "未运行": "No iniciado",
"本软件以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.", "本软件以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", "查看": "Ver",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Ver información del modelo (solo aplicable a archivos de modelos pequeños extraídos de la carpeta 'pesos')", "查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Ver información del modelo (solo aplicable a archivos de modelos pequeños extraídos de la carpeta 'pesos')",
"检测到模型类型:%s": "Tipo de modelo detectado: %s", "检测到模型类型:%s": "Tipo de modelo detectado: %s",
"检索特征占比": "Proporción de función de búsqueda", "检索特征占比": "Proporción de función de búsqueda",
"模型": "Modelo", "模型": "Modelo",
"模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Información del modelo: %s\nFrecuencia de muestreo: %s\nGuía de tono: %s\nVersión: %s", "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Información del modelo: %s\nFrecuencia de muestreo: %s\nGuía de tono: %s\nVersión: %s",
"模型推理": "inferencia del 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", "模型提取(输入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.",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Si el modelo tiene guía de tono (necesaria para cantar, pero no para hablar)", "模型是否带音高指导(唱歌一定要, 语音可以不要)": "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", "模型是否带音高指导,1是0否": "Si el modelo tiene guía de tono, 1 para sí, 0 para no",
"模型版本型号": "Versión y modelo del modelo", "模型版本型号": "Versión y modelo del modelo",
"模型融合, 可用于测试音色融合": "Fusión de modelos, se puede utilizar para fusionar diferentes voces", "模型融合, 可用于测试音色融合": "Fusión de modelos, se puede utilizar para fusionar diferentes voces",
"模型融合失败:两个模型的结构不一致": "Error al fusionar modelos: las arquitecturas no coinciden", "模型融合失败:两个模型的结构不一致": "Error al fusionar modelos: las arquitecturas no coinciden",
"模型训练": "Entrenamiento del modelo", "模型训练": "Entrenamiento del modelo",
"模型路径": "Ruta del modelo", "模型路径": "Ruta del modelo",
"正在保存最终检查点:%s": "Guardando el punto de control final: %s", "正在保存最终检查点:%s": "Guardando el punto de control final: %s",
"正在保存检查点 %s_e%s%s": "Guardando el punto de control %s_e%s: %s", "正在保存检查点 %s_e%s%s": "Guardando el punto de control %s_e%s: %s",
"正在加载RMVPE模型": "Cargando el modelo RMVPE", "正在加载RMVPE模型": "Cargando el modelo RMVPE",
"正在加载模型": "Cargando el modelo", "正在加载模型": "Cargando el modelo",
"正在启动": "Iniciando", "正在启动": "Iniciando",
"正在收尾": "Finalizando", "正在收尾": "Finalizando",
"每张显卡的batch_size": "Tamaño del lote (batch_size) por tarjeta gráfica", "每张显卡的batch_size": "Tamaño del lote (batch_size) por tarjeta gráfica",
"淡入淡出长度": "Duración del fundido de entrada/salida", "淡入淡出长度": "Duración del fundido de entrada/salida",
"清理模型缓存": "Limpiando la caché del modelo", "清理模型缓存": "Limpiando la caché del modelo",
"版本": "Versión", "版本": "Versión",
"特征": "Características", "特征": "Características",
"特征提取": "Extracción de características", "特征提取": "Extracción de características",
"状态": "Estado", "状态": "Estado",
"独占 WASAPI 设备": "Dispositivo WASAPI exclusivo", "独占 WASAPI 设备": "Dispositivo WASAPI exclusivo",
"生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth", "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth",
"男转女推荐+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.", "男转女推荐+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", "目标采样率": "Tasa de muestreo objetivo",
"等待中": "En espera", "等待中": "En espera",
"等待输入": "Esperando entrada", "等待输入": "Esperando entrada",
"算法延迟(ms):": "Latencia del algoritmo (ms):", "算法延迟(ms):": "Latencia del algoritmo (ms):",
"索引": "Índice", "索引": "Índice",
"索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Índice no válido: use added_xxxx.index, not trained_xxxx.index", "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Índice no válido: use added_xxxx.index, not trained_xxxx.index",
"索引检索失败": "Falló la búsqueda por índice", "索引检索失败": "Falló la búsqueda por índice",
"索引检索失败或未启用": "La búsqueda por índice falló o está desactivada", "索引检索失败或未启用": "La búsqueda por índice falló o está desactivada",
"索引训练": "Entrenamiento del índice", "索引训练": "Entrenamiento del índice",
"耗时": "Tiempo transcurrido", "耗时": "Tiempo transcurrido",
"耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Tiempo transcurrido: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs", "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Tiempo transcurrido: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs",
"融合": "Fusión", "融合": "Fusión",
"要改的模型信息": "Información del modelo a modificar", "要改的模型信息": "Información del modelo a modificar",
"要置入的模型信息": "Información del modelo a colocar.", "要置入的模型信息": "Información del modelo a colocar.",
"训练": "Entrenamiento", "训练": "Entrenamiento",
"训练已完成,正在保存最终模型": "Entrenamiento completado; guardando el modelo final", "训练已完成,正在保存最终模型": "Entrenamiento completado; guardando el modelo final",
"训练文件列表写入完成": "Lista de archivos de entrenamiento guardada", "训练文件列表写入完成": "Lista de archivos de entrenamiento guardada",
"训练模型": "Entrenar Modelo", "训练模型": "Entrenar Modelo",
"训练特征索引": "Índice de características", "训练特征索引": "Í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", "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Entrenamiento finalizado, puede ver el registro de entrenamiento en la consola o en el archivo train.log en la carpeta del experimento",
"训练设备规则选择的精度:%s": "Precisión de entrenamiento elegida según las reglas del dispositivo: %s", "训练设备规则选择的精度:%s": "Precisión de entrenamiento elegida según las reglas del dispositivo: %s",
"训练轮次:{} [{:.0f}%]": "Época de entrenamiento: {} [{:.0f}%]", "训练轮次:{} [{:.0f}%]": "Época de entrenamiento: {} [{:.0f}%]",
"设备类型": "Tipo de dispositivo", "设备类型": "Tipo de dispositivo",
"请上传音频文件": "Suba un archivo de audio", "请上传音频文件": "Suba un archivo de audio",
"请填写输出文件夹路径": "Introduzca la ruta de la carpeta de salida", "请填写输出文件夹路径": "Introduzca la ruta de la carpeta de salida",
"请指定说话人id": "ID del modelo", "请指定说话人id": "ID del modelo",
"请选择index文件": "Seleccione el archivo .index", "请选择index文件": "Seleccione el archivo .index",
"请选择pth文件": "Seleccione el archivo .pth", "请选择pth文件": "Seleccione el archivo .pth",
"请选择说话人id": "Seleccione una identificación de altavoz", "请选择说话人id": "Seleccione una identificación de altavoz",
"转换": "Conversión", "转换": "Conversión",
"输入实验名": "Ingrese el nombre del modelo", "输入实验名": "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á",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "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 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)", "输入待处理音频文件路径(默认是正确格式示例)": "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", "输入源音量包络替换输出音量包络融合比例越靠近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",
"输入监听": "Monitorizar entrada", "输入监听": "Monitorizar entrada",
"输入训练文件夹路径": "Introduzca la ruta de la carpeta de entrenamiento", "输入训练文件夹路径": "Introduzca la ruta de la carpeta de entrenamiento",
"输入设备": "Dispositivo de entrada", "输入设备": "Dispositivo de entrada",
"输入设备:%s:%s": "Dispositivo de entrada: %s:%s", "输入设备:%s:%s": "Dispositivo de entrada: %s:%s",
"输入降噪": "Reducción de ruido de entrada", "输入降噪": "Reducción de ruido de entrada",
"输出信息": "Información de salida", "输出信息": "Información de salida",
"输出变声": "Conversión de salida", "输出变声": "Conversión de salida",
"输出设备": "Dispositivo de salida", "输出设备": "Dispositivo de salida",
"输出设备:%s:%s": "Dispositivo de salida: %s:%s", "输出设备:%s:%s": "Dispositivo de salida: %s:%s",
"输出降噪": "Reducción de ruido de salida", "输出降噪": "Reducción de ruido de salida",
"输出音频(右下角三个点,点了可以下载)": "Salida de audio (haga clic en los tres puntos en la esquina inferior derecha para descargar)", "输出音频(右下角三个点,点了可以下载)": "Salida de audio (haga clic en los tres puntos en la esquina inferior derecha para descargar)",
"运行中": "En ejecución", "运行中": "En ejecución",
"进度": "Progreso", "进度": "Progreso",
"选择.index文件": "Seleccione el archivo .index", "选择.index文件": "Seleccione el archivo .index",
"选择.pth文件": "Seleccione el archivo .pth", "选择.pth文件": "Seleccione el archivo .pth",
"选择模型": "Seleccionar modelo", "选择模型": "Seleccionar modelo",
"选择索引": "Seleccionar índice", "选择索引": "Seleccionar índice",
"选择音高提取算法": "Seleccione el algoritmo de extracción de tono", "选择音高提取算法": "Seleccione el algoritmo de extracción de tono",
"采样率:": "Frecuencia de muestreo:", "采样率:": "Frecuencia de muestreo:",
"采样长度": "Longitud de muestreo", "采样长度": "Longitud de muestreo",
"重载设备列表": "Actualizar lista de dispositivos", "重载设备列表": "Actualizar lista de dispositivos",
"错误信息:%s": "Detalles del error: %s", "错误信息:%s": "Detalles del error: %s",
"错误:未知模型:%s": "Error: modelo desconocido: %s", "错误:未知模型:%s": "Error: modelo desconocido: %s",
"音调设置": "Ajuste de tono", "音调设置": "Ajuste de tono",
"音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "El audio tiene varios canales, pero el modelo es mono; se promediarán todos los canales", "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "El audio tiene varios canales, pero el modelo es mono; se promediarán todos los canales",
"音频设备": "Dispositivo de audio", "音频设备": "Dispositivo de audio",
"音高全部为0该音频无意义跳过%s": "Todos los valores de tono son cero; este audio no es útil y se omitirá: %s", "音高全部为0该音频无意义跳过%s": "Todos los valores de tono son cero; este audio no es útil y se omitirá: %s",
"音高算法": "Algoritmo de tono", "音高算法": "Algoritmo de tono",
"额外推理时长": "Tiempo de inferencia adicional", "额外推理时长": "Tiempo de inferencia adicional",
"数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "El preprocesamiento no generó audio de entrenamiento válido. Revise el conjunto de datos y el registro.", "数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "El preprocesamiento no generó audio de entrenamiento válido. Revise el conjunto de datos y el registro.",
"数据切分没有生成16k音频已停止后续特征提取和训练": "El preprocesamiento no generó audio de 16 kHz. Se detuvieron la extracción de características y el entrenamiento.", "数据切分没有生成16k音频已停止后续特征提取和训练": "El preprocesamiento no generó audio de 16 kHz. Se detuvieron la extracción de características y el entrenamiento.",
"数据切分输出文件不匹配,已停止后续特征提取和训练": "Los archivos de salida del preprocesamiento no coinciden. Se detuvieron la extracción y el entrenamiento.", "数据切分输出文件不匹配,已停止后续特征提取和训练": "Los archivos de salida del preprocesamiento no coinciden. Se detuvieron la extracción y el entrenamiento.",
"HuBERT特征提取没有生成有效结果已停止训练": "La extracción de características HuBERT no generó resultados válidos. Se detuvo el entrenamiento.", "HuBERT特征提取没有生成有效结果已停止训练": "La extracción de características HuBERT no generó resultados válidos. Se detuvo el entrenamiento.",
"F0提取没有生成有效结果已停止训练": "La extracción de F0 no generó resultados válidos. Se detuvo el entrenamiento.", "F0提取没有生成有效结果已停止训练": "La extracción de F0 no generó resultados válidos. Se detuvo el entrenamiento.",
"没有可用于训练的有效音频,请先完成数据切分和特征提取": "No hay audio válido para entrenar. Complete primero el preprocesamiento y la extracción de características.", "没有可用于训练的有效音频,请先完成数据切分和特征提取": "No hay audio válido para entrenar. Complete primero el preprocesamiento y la extracción de características.",
"已完成阶段": "Etapas completadas", "已完成阶段": "Etapas completadas",
"已成功": "Correcto", "已成功": "Correcto",
"刷新音色列表": "Actualizar lista de voces", "刷新音色列表": "Actualizar lista de voces",
"特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Ruta del índice de características (se detecta al elegir el modelo; editable)", "特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Ruta del índice de características (se detecta al elegir el modelo; editable)",
"[索引训练] 外部索引链接已存在:%s": "[Entrenamiento de índice] El enlace externo ya existe: %s", "[索引训练] 外部索引链接已存在:%s": "[Entrenamiento de índice] El enlace externo ya existe: %s",
"[索引训练][跳过] added索引已存在%s": "[Entrenamiento de índice][Omitido] El índice added ya existe: %s", "[索引训练][跳过] added索引已存在%s": "[Entrenamiento de índice][Omitido] El índice added ya existe: %s",
"[索引训练][跳过] trained索引已存在%s": "[Entrenamiento de índice][Omitido] El índice trained ya existe: %s", "[索引训练][跳过] trained索引已存在%s": "[Entrenamiento de índice][Omitido] El índice trained ya existe: %s",
"当前设备:%s | 推理精度:%s": "Dispositivo actual: %s | Precisión de inferencia: %s", "当前设备:%s | 推理精度:%s": "Dispositivo actual: %s | Precisión de inferencia: %s",
"正在预热CUDA Graph": "Preparando CUDA Graph", "正在预热CUDA Graph": "Preparando CUDA Graph",
"CUDA Graph预热完成": "Preparación de CUDA Graph completada" "CUDA Graph预热完成": "Preparación de CUDA Graph completada",
} "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s": "Extracción de datos iniciada: start_time=%.6f, concurrencia solicitada=%s, límite real=%s",
"数据提取结束end_time=%.6f,总耗时=%.3f秒": "Extracción de datos finalizada: end_time=%.6f, tiempo total=%.3f segundos"
}

View File

@@ -1,263 +1,265 @@
{ {
"人声提取激进程度": "Intensité de lextraction vocale", "人声提取激进程度": "Intensité de lextraction vocale",
"%s → 成功": "%s → Réussite", "%s → 成功": "%s → Réussite",
"%s运行中请先停止该任务": "%s est en cours ; arrêtez cette tâche avant d'en démarrer une autre", "%s运行中请先停止该任务": "%s est en cours ; arrêtez cette tâche avant d'en démarrer une autre",
"%s进程已终止": "Le processus %s a été arrêté", "%s进程已终止": "Le processus %s a été arrêté",
"====> 轮次:{} {}": "====> Époque : {} {}", "====> 轮次:{} {}": "====> Époque : {} {}",
"A模型权重": "Poids (w) pour le modèle A :", "A模型权重": "Poids (w) pour le modèle A :",
"A模型路径": "Chemin d'accès au modèle A :", "A模型路径": "Chemin d'accès au modèle A :",
"B模型路径": "Chemin d'accès au modèle B :", "B模型路径": "Chemin d'accès au modèle B :",
"CUDA可用%s": "CUDA disponible : %s", "CUDA可用%s": "CUDA disponible : %s",
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src", "E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src",
"F0与HuBERT特征提取": "Extraction F0 et caractéristiques HuBERT", "F0与HuBERT特征提取": "Extraction F0 et caractéristiques HuBERT",
"F0提取": "Extraction F0", "F0提取": "Extraction F0",
"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 :", "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 :",
"HuBERT特征": "Caractéristiques HuBERT", "HuBERT特征": "Caractéristiques HuBERT",
"Index Rate": "Taux d'indexation", "Index Rate": "Taux d'indexation",
"RVC模型路径": "Chemin du modèle RVC :", "RVC模型路径": "Chemin du modèle RVC :",
"SOLA偏移%d": "Décalage SOLA : %d", "SOLA偏移%d": "Décalage SOLA : %d",
"[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Extraction F0] Terminé | Réussite: %s | Ignorés: %s | Échec: %s", "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Extraction F0] Terminé | Réussite: %s | Ignorés: %s | Échec: %s",
"[F0提取] 待处理:%s": "[Extraction F0] Pending: %s", "[F0提取] 待处理:%s": "[Extraction F0] Pending: %s",
"[F0提取] 无待处理音频,已全部跳过": "[Extraction F0] Aucun audio en attente ; tous les fichiers ont été ignorés", "[F0提取] 无待处理音频,已全部跳过": "[Extraction F0] Aucun audio en attente ; tous les fichiers ont été ignorés",
"[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[Extraction F0] Progression: %s/%s | Réussite: %s | Ignorés: %s | %s", "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[Extraction F0] Progression: %s/%s | Réussite: %s | Ignorés: %s | %s",
"[F0提取][失败] %s": "[Extraction F0][Échec] %s", "[F0提取][失败] %s": "[Extraction F0][Échec] %s",
"[F0提取][失败] %s\n%s": "[Extraction F0][Échec] %s\n%s", "[F0提取][失败] %s\n%s": "[Extraction F0][Échec] %s\n%s",
"[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Caractéristiques HuBERT] Terminé | Réussite: %s | Ignorés: %s | Échec: %s", "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Caractéristiques HuBERT] Terminé | Réussite: %s | Ignorés: %s | Échec: %s",
"[HuBERT特征] 无待处理音频,已全部跳过:%s": "[Caractéristiques HuBERT] Aucun audio en attente ; ignorés: %s", "[HuBERT特征] 无待处理音频,已全部跳过:%s": "[Caractéristiques HuBERT] Aucun audio en attente ; ignorés: %s",
"[HuBERT特征] 正在加载模型:%s": "[Caractéristiques HuBERT] Chargement du modèle: %s", "[HuBERT特征] 正在加载模型:%s": "[Caractéristiques HuBERT] Chargement du modèle: %s",
"[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[Caractéristiques HuBERT] Périphérique: %s | Pending: %s | Ignorés: %s", "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[Caractéristiques HuBERT] Périphérique: %s | Pending: %s | Ignorés: %s",
"[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[Caractéristiques HuBERT] Progression: %s/%s | Réussite: %s | Échec: %s | %s | %s", "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[Caractéristiques HuBERT] Progression: %s/%s | Réussite: %s | Échec: %s | %s | %s",
"[HuBERT特征][失败] %s\n%s": "[Caractéristiques HuBERT][Échec] %s\n%s", "[HuBERT特征][失败] %s\n%s": "[Caractéristiques HuBERT][Échec] %s\n%s",
"[HuBERT特征][失败] %s 包含NaN": "[Caractéristiques HuBERT][Échec] %s contains NaN values", "[HuBERT特征][失败] %s 包含NaN": "[Caractéristiques HuBERT][Échec] %s contains NaN values",
"[HuBERT特征][失败] 模型不存在:%s": "[Caractéristiques HuBERT][Échec] Modèle not found: %s", "[HuBERT特征][失败] 模型不存在:%s": "[Caractéristiques HuBERT][Échec] Modèle not found: %s",
"[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[Découpage des données] Sous-tâche terminée | Réussite: %s | Échec: %s", "[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[Découpage des données] Sous-tâche terminée | Réussite: %s | Échec: %s",
"[数据切分] 完成": "[Découpage des données] Terminé", "[数据切分] 完成": "[Découpage des données] Terminé",
"[数据切分] 开始": "[Découpage des données] Démarré", "[数据切分] 开始": "[Découpage des données] Démarré",
"[数据切分] 待处理:%s | 进程数:%s": "[Découpage des données] Pending: %s | Processus: %s", "[数据切分] 待处理:%s | 进程数:%s": "[Découpage des données] Pending: %s | Processus: %s",
"[数据切分] 进度:%s/%s | %s": "[Découpage des données] Progression: %s/%s | %s", "[数据切分] 进度:%s/%s | %s": "[Découpage des données] Progression: %s/%s | %s",
"[数据切分][失败] %s": "[Découpage des données][Échec] %s", "[数据切分][失败] %s": "[Découpage des données][Échec] %s",
"[数据切分][失败] %s\n%s": "[Découpage des données][Échec] %s\n%s", "[数据切分][失败] %s\n%s": "[Découpage des données][Échec] %s\n%s",
"[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[Découpage des données][Ignorés] Segment audio invalide ou anormal: %s_%s | Crête: %s", "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[Découpage des données][Ignorés] Segment audio invalide ou anormal: %s_%s | Crête: %s",
"[索引训练] 写入进度:%s/%s": "[Entraînement de l'index] Progressionion de l'écriture: %s/%s", "[索引训练] 写入进度:%s/%s": "[Entraînement de l'index] Progressionion de l'écriture: %s/%s",
"[索引训练] 已链接索引到外部目录:%s": "[Entraînement de l'index] Index lié au dossier externe: %s", "[索引训练] 已链接索引到外部目录:%s": "[Entraînement de l'index] Index lié au dossier externe: %s",
"[索引训练] 成功构建索引:%s": "[Entraînement de l'index] Index créé avec succès: %s", "[索引训练] 成功构建索引:%s": "[Entraînement de l'index] Index créé avec succès: %s",
"[索引训练] 正在写入特征向量": "[Entraînement de l'index] Ajout des vecteurs de caractéristiques", "[索引训练] 正在写入特征向量": "[Entraînement de l'index] Ajout des vecteurs de caractéristiques",
"[索引训练] 正在将%s条特征聚类为10000个中心": "[Entraînement de l'index] Clustering %s feature vectors into 10,000 centers", "[索引训练] 正在将%s条特征聚类为10000个中心": "[Entraînement de l'index] Clustering %s feature vectors into 10,000 centers",
"[索引训练] 正在训练索引": "[Entraînement de l'index] Entraînement de l'index", "[索引训练] 正在训练索引": "[Entraînement de l'index] Entraînement de l'index",
"[索引训练] 特征形状:%s | IVF数量%s": "[Entraînement de l'index] Forme des caractéristiques: %s | Nombre d'IVF: %s", "[索引训练] 特征形状:%s | IVF数量%s": "[Entraînement de l'index] Forme des caractéristiques: %s | Nombre d'IVF: %s",
"[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[Entraînement de l'index][Échec] Impossible de lier l'index au dossier externe: %s\n%s", "[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[Entraînement de l'index][Échec] Impossible de lier l'index au dossier externe: %s\n%s",
"[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[Entraînement de l'index][Échec] Échec du regroupement ; poursuite avec les caractéristiques d'origine\n%s", "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[Entraînement de l'index][Échec] Échec du regroupement ; poursuite avec les caractéristiques d'origine\n%s",
"[索引训练][失败] 请先进行特征提取": "[Entraînement de l'index][Échec] Extrayez d'abord les caractéristiques", "[索引训练][失败] 请先进行特征提取": "[Entraînement de l'index][Échec] Extrayez d'abord les caractéristiques",
"ckpt处理": "Traitement des fichiers .ckpt", "ckpt处理": "Traitement des fichiers .ckpt",
"index文件路径不可包含中文": "Le chemin du fichier d'index ne doit pas contenir de caractères chinois.", "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.", "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.", "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: 填写实验配置. 实验数据放在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.", "step1:正在处理数据": "Étape 1 : Traitement des données en cours.",
"step2:正在提取音高&正在提取特征": "Étape 2 : Extraction de la hauteur et extraction des caractéristiques 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.", "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) :", "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.", "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é.", "step3a:正在训练模型": "Étape 3a : L'entraînement du modèle a commencé.",
"step3b:正在训练索引": "étape 3b : entraînement de lindex", "step3b:正在训练索引": "étape 3b : entraînement de lindex",
"……仅显示最近10条失败记录": "…Seuls les 10 échecs les plus récents sont affichés", "……仅显示最近10条失败记录": "…Seuls les 10 échecs les plus récents sont affichés",
"……已省略前%s行仅显示最新状态": "…Les %s premières lignes ont été omises ; seul l'état récent est affiché", "……已省略前%s行仅显示最新状态": "…Les %s premières lignes ont été omises ; seul l'état récent est affiché",
"一键训练": "Entraînement en un clic", "一键训练": "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.", "也可批量输入音频文件, 二选一, 优先读文件夹": "Il est également possible d'importer plusieurs fichiers audio. Si un chemin de dossier existe, cette entrée est ignorée.",
"人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "Séparation par lot des voix et de laccompagnement à laide de modèles UVR5.<br>Vous pouvez choisir un modèle qui conserve les voix, ou utiliser les modèles DeEcho/DeReverb pour supprimer lécho et la réverbération.", "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "Séparation par lot des voix et de laccompagnement à laide de modèles UVR5.<br>Vous pouvez choisir un modèle qui conserve les voix, ou utiliser les modèles DeEcho/DeReverb pour supprimer lécho et la réverbération.",
"仅支持pm和rmvpe音高提取算法": "Seules les méthodes d'extraction de hauteur pm et rmvpe sont prises en charge", "仅支持pm和rmvpe音高提取算法": "Seules les méthodes d'extraction de hauteur pm et rmvpe sont prises en charge",
"从训练检查点提取的模型": "Modèle extrait d'un point de contrôle d'entraînement", "从训练检查点提取的模型": "Modèle extrait d'un point de contrôle d'entraînement",
"以-分隔输入使用的卡号, 例如 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 :", "以-分隔输入使用的卡号, 例如 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 :",
"任务": "Tâche", "任务": "Tâche",
"伴奏人声分离&去混响&去回声": "Séparation des voix/accompagnement et suppression de la réverbération", "伴奏人声分离&去混响&去回声": "Séparation des voix/accompagnement et suppression de la réverbération",
"使用显卡:%s": "GPU utilisés : %s", "使用显卡:%s": "GPU utilisés : %s",
"使用模型采样率": "Utiliser la fréquence du modèle", "使用模型采样率": "Utiliser la fréquence du modèle",
"使用设备采样率": "Utiliser la fréquence du périphérique", "使用设备采样率": "Utiliser la fréquence du périphérique",
"保存名": "Nom de sauvegarde :", "保存名": "Nom de sauvegarde :",
"保存的文件名, 默认空为和源文件同名": "Nom du fichier de sauvegarde (par défaut : identique au nom du fichier source) :", "保存的文件名, 默认空为和源文件同名": "Nom du fichier de sauvegarde (par défaut : identique au nom du fichier source) :",
"保存的模型名不带后缀": "Nom du modèle enregistré (sans extension) :", "保存的模型名不带后缀": "Nom du modèle enregistré (sans extension) :",
"保存频率save_every_epoch": "Fréquence de sauvegarde (save_every_epoch) :", "保存频率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 :", "保护清辅音和呼吸声防止电音撕裂等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", "修改": "Modifier",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modifier les informations du modèle (uniquement pris en charge pour les petits fichiers de modèle extraits du dossier 'weights')", "修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modifier les informations du modèle (uniquement pris en charge pour les petits fichiers de modèle extraits du dossier 'weights')",
"停止一键训练": "Arrêter lentraînement en un clic", "停止一键训练": "Arrêter lentraînement en un clic",
"停止处理数据": "Arrêter le prétraitement des données", "停止处理数据": "Arrêter le prétraitement des données",
"停止特征提取": "Arrêter lextraction des caractéristiques", "停止特征提取": "Arrêter lextraction des caractéristiques",
"停止训练模型": "Arrêter lentraînement du modèle", "停止训练模型": "Arrêter lentraînement du modèle",
"停止训练索引": "Arrêter lentraînement de lindex", "停止训练索引": "Arrêter lentraînement de lindex",
"停止音频转换": "Arrêter la conversion audio", "停止音频转换": "Arrêter la conversion audio",
"全流程结束!": "Toutes les étapes ont été terminées !", "全流程结束!": "Toutes les étapes ont été terminées !",
"判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth", "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth",
"加载模型": "Charger le modèle.", "加载模型": "Charger le modèle.",
"加载预训练底模D路径": "Charger le chemin du modèle de base pré-entraîné D :", "加载预训练底模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 :", "加载预训练底模G路径": "Charger le chemin du modèle de base pré-entraîné G :",
"单次推理": "Inférence unique", "单次推理": "Inférence unique",
"卸载音色省显存": "Décharger la voix pour économiser la mémoire GPU.", "卸载音色省显存": "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) :", "变调(整数, 半音数量, 升八度12降八度-12)": "Transposer (entier, nombre de demi-tons, monter d'une octave : 12, descendre d'une octave : -12) :",
"合成": "Synthèse", "合成": "Synthèse",
"后处理重采样至最终采样率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 :", "后处理重采样至最终采样率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", "否": "Non",
"响应阈值": "Seuil de réponse", "响应阈值": "Seuil de réponse",
"响度因子": "Facteur de volume sonore", "响度因子": "Facteur de volume sonore",
"处理中": "Traitement en cours", "处理中": "Traitement en cours",
"处理数据": "Traitement des données", "处理数据": "Traitement des données",
"失败": "Échec", "失败": "Échec",
"失败记录": "Détails des échecs", "失败记录": "Détails des échecs",
"子进程执行失败,返回码:%s": "Le sous-processus a échoué avec le code de sortie: %s", "子进程执行失败,返回码:%s": "Le sous-processus a échoué avec le code de sortie: %s",
"导出文件格式": "Format de fichier d'exportation", "导出文件格式": "Format de fichier d'exportation",
"已停止": "Arrêté", "已停止": "Arrêté",
"已加载判别器预训练模型:%s": "Modèle préentraîné du discriminateur chargé: %s", "已加载判别器预训练模型:%s": "Modèle préentraîné du discriminateur chargé: %s",
"已加载生成器预训练模型:%s": "Modèle préentraîné du générateur chargé: %s", "已加载生成器预训练模型:%s": "Modèle préentraîné du générateur chargé: %s",
"已启用索引检索": "Recherche par index activée", "已启用索引检索": "Recherche par index activée",
"已完成": "Terminé", "已完成": "Terminé",
"已恢复判别器检查点": "Point de contrôle du discriminateur restauré", "已恢复判别器检查点": "Point de contrôle du discriminateur restauré",
"常见问题解答": "FAQ (Foire Aux Questions)", "常见问题解答": "FAQ (Foire Aux Questions)",
"常规设置": "Paramètres généraux", "常规设置": "Paramètres généraux",
"开始音频转换": "Démarrer la conversion audio.", "开始音频转换": "Démarrer la conversion audio.",
"当前": "Actuel", "当前": "Actuel",
"当前阶段": "Étape actuelle", "当前阶段": "Étape actuelle",
"很遗憾您这没有能用的显卡来支持您训练": "Malheureusement, il n'y a pas de GPU compatible disponible pour prendre en charge votre entrainement.", "很遗憾您这没有能用的显卡来支持您训练": "Malheureusement, il n'y a pas de GPU compatible disponible pour prendre en charge votre entrainement.",
"性别因子/声线粗细": "Facteur de genre / épaisseur de la voix", "性别因子/声线粗细": "Facteur de genre / épaisseur de la voix",
"性能设置": "Paramètres de performance", "性能设置": "Paramètres de performance",
"总训练轮数total_epoch": "Nombre total d'époques d'entraînement (total_epoch) :", "总训练轮数total_epoch": "Nombre total d'époques d'entraînement (total_epoch) :",
"成功": "Réussite", "成功": "Réussite",
"执行命令": "Commande", "执行命令": "Commande",
"批量推理": "Inférence par lot", "批量推理": "Inférence par lot",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认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').", "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认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').",
"拖拽或点击上传待处理音频": "Glissez-déposez ou cliquez pour téléverser laudio à traiter", "拖拽或点击上传待处理音频": "Glissez-déposez ou cliquez pour téléverser laudio à traiter",
"指定输出主人声文件夹": "Spécifiez le dossier de sortie pour les fichiers de voix :", "指定输出主人声文件夹": "Spécifiez le dossier de sortie pour les fichiers de voix :",
"指定输出文件夹": "Spécifiez le dossier de sortie :", "指定输出文件夹": "Spécifiez le dossier de sortie :",
"指定输出非主人声文件夹": "Spécifiez le dossier de sortie pour l'accompagnement :", "指定输出非主人声文件夹": "Spécifiez le dossier de sortie pour l'accompagnement :",
"推理时间(ms):": "Temps d'inférence (ms) :", "推理时间(ms):": "Temps d'inférence (ms) :",
"推理耗时:%.2f秒": "Temps d'inférence: %.2f seconds", "推理耗时:%.2f秒": "Temps d'inférence: %.2f seconds",
"推理音色": "Voix pour l'inférence", "推理音色": "Voix pour l'inférence",
"提取": "Extraire", "提取": "Extraire",
"提取音高和处理数据使用的CPU进程数": "Nombre de processus CPU utilisés pour l'extraction de la hauteur et le traitement des données :", "提取音高和处理数据使用的CPU进程数": "Nombre de processus CPU utilisés pour l'extraction de la hauteur et le traitement des données :",
"数据切分": "Découpage des données", "数据切分": "Découpage des données",
"无法停止": "Impossible à arrêter", "无法停止": "Impossible à arrêter",
"无法读取音频:%s": "Impossible de lire l'audio: %s", "无法读取音频:%s": "Impossible de lire l'audio: %s",
"是": "Oui", "是": "Oui",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Enregistrer uniquement le dernier fichier '.ckpt' pour économiser de l'espace disque :", "是否仅保存最新的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 :", "是否在每次保存时间点将最终小模型保存至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 :", "是否缓存所有训练集至显存. 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)", "显卡信息": "Informations sur la carte graphique (GPU)",
"未使用": "Non utilisé", "未使用": "Non utilisé",
"未使用判别器预训练模型": "Modèle préentraîné du discriminateur non utilisé", "未使用判别器预训练模型": "Modèle préentraîné du discriminateur non utilisé",
"未使用生成器预训练模型": "Modèle préentraîné du générateur non utilisé", "未使用生成器预训练模型": "Modèle préentraîné du générateur non utilisé",
"未找到Roformer模型配置文件正在使用内置默认配置": "Configuration du modèle Roformer introuvable ; utilisation des valeurs intégrées", "未找到Roformer模型配置文件正在使用内置默认配置": "Configuration du modèle Roformer introuvable ; utilisation des valeurs intégrées",
"未检测到可用显卡将使用CPU训练耗时可能较长": "Aucun GPU compatible détecté ; l'entraînement sur CPU peut être beaucoup plus long", "未检测到可用显卡将使用CPU训练耗时可能较长": "Aucun GPU compatible détecté ; l'entraînement sur CPU peut être beaucoup plus long",
"未运行": "Non démarré", "未运行": "Non démarré",
"本软件以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.", "本软件以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", "查看": "Voir",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Afficher les informations sur le modèle (uniquement pour les petits fichiers de modèle extraits du dossier \"weights\")", "查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Afficher les informations sur le modèle (uniquement pour les petits fichiers de modèle extraits du dossier \"weights\")",
"检测到模型类型:%s": "Type de modèle détecté : %s", "检测到模型类型:%s": "Type de modèle détecté : %s",
"检索特征占比": "Rapport de recherche de caractéristiques (contrôle l'intensité de l'accent, un rapport trop élevé provoque des artefacts) :", "检索特征占比": "Rapport de recherche de caractéristiques (contrôle l'intensité de l'accent, un rapport trop élevé provoque des artefacts) :",
"模型": "Modèle", "模型": "Modèle",
"模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Informations du modèle: %s\nFréquence d'échantillonnage: %s\nGuidage de hauteur: %s\nVersion: %s", "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Informations du modèle: %s\nFréquence d'échantillonnage: %s\nGuidage de hauteur: %s\nVersion: %s",
"模型推理": "Inférence du 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 :", "模型提取(输入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 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) :", "模型是否带音高指导(唱歌一定要, 语音可以不要)": "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) ?", "模型是否带音高指导,1是0否": "Le modèle dispose-t-il d'un guide de hauteur (1 : oui, 0 : non) ?",
"模型版本型号": "Version de l'architecture du modèle :", "模型版本型号": "Version de l'architecture du modèle :",
"模型融合, 可用于测试音色融合": "Fusion de modèles, peut être utilisée pour tester la fusion de timbres", "模型融合, 可用于测试音色融合": "Fusion de modèles, peut être utilisée pour tester la fusion de timbres",
"模型融合失败:两个模型的结构不一致": "Échec de la fusion : les architectures des deux modèles diffèrent", "模型融合失败:两个模型的结构不一致": "Échec de la fusion : les architectures des deux modèles diffèrent",
"模型训练": "Entraînement du modèle", "模型训练": "Entraînement du modèle",
"模型路径": "Le chemin vers le modèle :", "模型路径": "Le chemin vers le modèle :",
"正在保存最终检查点:%s": "Enregistrement du point de contrôle final: %s", "正在保存最终检查点:%s": "Enregistrement du point de contrôle final: %s",
"正在保存检查点 %s_e%s%s": "Enregistrement du point de contrôle %s_e%s: %s", "正在保存检查点 %s_e%s%s": "Enregistrement du point de contrôle %s_e%s: %s",
"正在加载RMVPE模型": "Chargement du modèle RMVPE", "正在加载RMVPE模型": "Chargement du modèle RMVPE",
"正在加载模型": "Chargement du modèle", "正在加载模型": "Chargement du modèle",
"正在启动": "Démarrage", "正在启动": "Démarrage",
"正在收尾": "Finalisation", "正在收尾": "Finalisation",
"每张显卡的batch_size": "Taille du batch par GPU :", "每张显卡的batch_size": "Taille du batch par GPU :",
"淡入淡出长度": "Longueur de la transition", "淡入淡出长度": "Longueur de la transition",
"清理模型缓存": "Nettoyage du cache du modèle", "清理模型缓存": "Nettoyage du cache du modèle",
"版本": "Version", "版本": "Version",
"特征": "Caractéristiques", "特征": "Caractéristiques",
"特征提取": "Extraction des caractéristiques", "特征提取": "Extraction des caractéristiques",
"状态": "État", "状态": "État",
"独占 WASAPI 设备": "Périphérique WASAPI exclusif", "独占 WASAPI 设备": "Périphérique WASAPI exclusif",
"生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth", "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth",
"男转女推荐+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.", "男转女推荐+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 :", "目标采样率": "Taux d'échantillonnage cible :",
"等待中": "En attente", "等待中": "En attente",
"等待输入": "En attente d'une entrée", "等待输入": "En attente d'une entrée",
"算法延迟(ms):": "Latence de l'algorithme (ms) :", "算法延迟(ms):": "Latence de l'algorithme (ms) :",
"索引": "Index", "索引": "Index",
"索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Index invalide : utilisez added_xxxx.index, not trained_xxxx.index", "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Index invalide : utilisez added_xxxx.index, not trained_xxxx.index",
"索引检索失败": "Échec de la recherche par index", "索引检索失败": "Échec de la recherche par index",
"索引检索失败或未启用": "La recherche par index a échoué ou est désactivée", "索引检索失败或未启用": "La recherche par index a échoué ou est désactivée",
"索引训练": "Entraînement de l'index", "索引训练": "Entraînement de l'index",
"耗时": "Temps écoulé", "耗时": "Temps écoulé",
"耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Temps écoulé: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs", "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Temps écoulé: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs",
"融合": "Fusion", "融合": "Fusion",
"要改的模型信息": "Informations sur le modèle à modifier :", "要改的模型信息": "Informations sur le modèle à modifier :",
"要置入的模型信息": "Informations sur le modèle à placer :", "要置入的模型信息": "Informations sur le modèle à placer :",
"训练": "Entraîner", "训练": "Entraîner",
"训练已完成,正在保存最终模型": "Entraînement terminé ; enregistrement du modèle final", "训练已完成,正在保存最终模型": "Entraînement terminé ; enregistrement du modèle final",
"训练文件列表写入完成": "Liste des fichiers d'entraînement enregistrée", "训练文件列表写入完成": "Liste des fichiers d'entraînement enregistrée",
"训练模型": "Entraîner le modèle", "训练模型": "Entraîner le modèle",
"训练特征索引": "Entraîner l'index des caractéristiques", "训练特征索引": "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.", "训练结束, 您可查看控制台训练日志或实验文件夹下的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.",
"训练设备规则选择的精度:%s": "Précision d'entraînement choisie selon les règles du périphérique: %s", "训练设备规则选择的精度:%s": "Précision d'entraînement choisie selon les règles du périphérique: %s",
"训练轮次:{} [{:.0f}%]": "Époque d'entraînement : {} [{:.0f}%]", "训练轮次:{} [{:.0f}%]": "Époque d'entraînement : {} [{:.0f}%]",
"设备类型": "Type de périphérique", "设备类型": "Type de périphérique",
"请上传音频文件": "Téléversez un fichier audio", "请上传音频文件": "Téléversez un fichier audio",
"请填写输出文件夹路径": "Saisissez le chemin du dossier de sortie", "请填写输出文件夹路径": "Saisissez le chemin du dossier de sortie",
"请指定说话人id": "Veuillez spécifier l'ID de l'orateur ou du chanteur :", "请指定说话人id": "Veuillez spécifier l'ID de l'orateur ou du chanteur :",
"请选择index文件": "Veuillez sélectionner le fichier d'index", "请选择index文件": "Veuillez sélectionner le fichier d'index",
"请选择pth文件": "Veuillez sélectionner le fichier pth", "请选择pth文件": "Veuillez sélectionner le fichier pth",
"请选择说话人id": "Sélectionner l'ID de l'orateur ou du chanteur :", "请选择说话人id": "Sélectionner l'ID de l'orateur ou du chanteur :",
"转换": "Convertir", "转换": "Convertir",
"输入实验名": "Saisissez le nom de l'expérience :", "输入实验名": "Saisissez le nom de l'expérience :",
"输入待处理音频文件夹路径": "Entrez le chemin du dossier audio à traiter :", "输入待处理音频文件夹路径": "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 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) :", "输入待处理音频文件路径(默认是正确格式示例)": "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 :", "输入源音量包络替换输出音量包络融合比例越靠近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 :",
"输入监听": "Écouter l'entrée", "输入监听": "Écouter l'entrée",
"输入训练文件夹路径": "Indiquez le chemin d'accès au dossier d'entraînement :", "输入训练文件夹路径": "Indiquez le chemin d'accès au dossier d'entraînement :",
"输入设备": "Dispositif d'entrée", "输入设备": "Dispositif d'entrée",
"输入设备:%s:%s": "Périphérique d'entrée: %s:%s", "输入设备:%s:%s": "Périphérique d'entrée: %s:%s",
"输入降噪": "Réduction du bruit d'entrée", "输入降噪": "Réduction du bruit d'entrée",
"输出信息": "Informations sur la sortie", "输出信息": "Informations sur la sortie",
"输出变声": "Conversion de sortie", "输出变声": "Conversion de sortie",
"输出设备": "Dispositif de sortie", "输出设备": "Dispositif de sortie",
"输出设备:%s:%s": "Périphérique de sortie: %s:%s", "输出设备:%s:%s": "Périphérique de sortie: %s:%s",
"输出降噪": "Réduction du bruit 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)", "输出音频(右下角三个点,点了可以下载)": "Exporter l'audio (cliquer sur les trois points dans le coin inférieur droit pour télécharger)",
"运行中": "En cours", "运行中": "En cours",
"进度": "Progression", "进度": "Progression",
"选择.index文件": "Sélectionner le fichier .index", "选择.index文件": "Sélectionner le fichier .index",
"选择.pth文件": "Sélectionner le fichier .pth", "选择.pth文件": "Sélectionner le fichier .pth",
"选择模型": "Sélectionner le modèle", "选择模型": "Sélectionner le modèle",
"选择索引": "Sélectionner l'index", "选择索引": "Sélectionner l'index",
"选择音高提取算法": "Sélectionnez lalgorithme dextraction de la hauteur", "选择音高提取算法": "Sélectionnez lalgorithme dextraction de la hauteur",
"采样率:": "Fréquence d'échantillonnage :", "采样率:": "Fréquence d'échantillonnage :",
"采样长度": "Longueur de l'échantillon", "采样长度": "Longueur de l'échantillon",
"重载设备列表": "Recharger la liste des dispositifs", "重载设备列表": "Recharger la liste des dispositifs",
"错误信息:%s": "Détails de l'erreur: %s", "错误信息:%s": "Détails de l'erreur: %s",
"错误:未知模型:%s": "Erreur : modèle inconnu : %s", "错误:未知模型:%s": "Erreur : modèle inconnu : %s",
"音调设置": "Réglages de la hauteur", "音调设置": "Réglages de la hauteur",
"音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "L'audio comporte plusieurs canaux, mais le modèle est mono ; tous les canaux seront moyennés", "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "L'audio comporte plusieurs canaux, mais le modèle est mono ; tous les canaux seront moyennés",
"音频设备": "Périphérique audio", "音频设备": "Périphérique audio",
"音高全部为0该音频无意义跳过%s": "Toutes les valeurs de hauteur sont nulles ; cet audio est inutilisable et sera ignoré: %s", "音高全部为0该音频无意义跳过%s": "Toutes les valeurs de hauteur sont nulles ; cet audio est inutilisable et sera ignoré: %s",
"音高算法": "Algorithme de hauteur", "音高算法": "Algorithme de hauteur",
"额外推理时长": "Temps d'inférence supplémentaire", "额外推理时长": "Temps d'inférence supplémentaire",
"数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "Le prétraitement n'a produit aucun audio d'entraînement valide. Vérifiez le jeu de données et le journal.", "数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "Le prétraitement n'a produit aucun audio d'entraînement valide. Vérifiez le jeu de données et le journal.",
"数据切分没有生成16k音频已停止后续特征提取和训练": "Le prétraitement n'a produit aucun audio 16 kHz. L'extraction et l'entraînement ont été arrêtés.", "数据切分没有生成16k音频已停止后续特征提取和训练": "Le prétraitement n'a produit aucun audio 16 kHz. L'extraction et l'entraînement ont été arrêtés.",
"数据切分输出文件不匹配,已停止后续特征提取和训练": "Les fichiers de sortie du prétraitement ne correspondent pas. L'extraction et l'entraînement ont été arrêtés.", "数据切分输出文件不匹配,已停止后续特征提取和训练": "Les fichiers de sortie du prétraitement ne correspondent pas. L'extraction et l'entraînement ont été arrêtés.",
"HuBERT特征提取没有生成有效结果已停止训练": "L'extraction des caractéristiques HuBERT n'a produit aucun résultat valide. L'entraînement a été arrêté.", "HuBERT特征提取没有生成有效结果已停止训练": "L'extraction des caractéristiques HuBERT n'a produit aucun résultat valide. L'entraînement a été arrêté.",
"F0提取没有生成有效结果已停止训练": "L'extraction F0 n'a produit aucun résultat valide. L'entraînement a été arrêté.", "F0提取没有生成有效结果已停止训练": "L'extraction F0 n'a produit aucun résultat valide. L'entraînement a été arrêté.",
"没有可用于训练的有效音频,请先完成数据切分和特征提取": "Aucun audio valide n'est disponible pour l'entraînement. Terminez d'abord le prétraitement et l'extraction.", "没有可用于训练的有效音频,请先完成数据切分和特征提取": "Aucun audio valide n'est disponible pour l'entraînement. Terminez d'abord le prétraitement et l'extraction.",
"已完成阶段": "Étapes terminées", "已完成阶段": "Étapes terminées",
"已成功": "Réussi", "已成功": "Réussi",
"刷新音色列表": "Actualiser la liste des voix", "刷新音色列表": "Actualiser la liste des voix",
"特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Chemin de lindex de caractéristiques (détecté après sélection du modèle ; modifiable)", "特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Chemin de lindex de caractéristiques (détecté après sélection du modèle ; modifiable)",
"[索引训练] 外部索引链接已存在:%s": "[Entraînement de lindex] Le lien externe existe déjà : %s", "[索引训练] 外部索引链接已存在:%s": "[Entraînement de lindex] Le lien externe existe déjà : %s",
"[索引训练][跳过] added索引已存在%s": "[Entraînement de lindex][Ignoré] Lindex added existe déjà : %s", "[索引训练][跳过] added索引已存在%s": "[Entraînement de lindex][Ignoré] Lindex added existe déjà : %s",
"[索引训练][跳过] trained索引已存在%s": "[Entraînement de lindex][Ignoré] Lindex trained existe déjà : %s", "[索引训练][跳过] trained索引已存在%s": "[Entraînement de lindex][Ignoré] Lindex trained existe déjà : %s",
"当前设备:%s | 推理精度:%s": "Périphérique actuel : %s | Précision dinférence : %s", "当前设备:%s | 推理精度:%s": "Périphérique actuel : %s | Précision dinférence : %s",
"正在预热CUDA Graph": "Préchauffage de CUDA Graph", "正在预热CUDA Graph": "Préchauffage de CUDA Graph",
"CUDA Graph预热完成": "Préchauffage de CUDA Graph terminé" "CUDA Graph预热完成": "Préchauffage de CUDA Graph terminé",
} "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s": "Extraction des données démarrée : start_time=%.6f, parallélisme demandé=%s, limite réelle=%s",
"数据提取结束end_time=%.6f,总耗时=%.3f秒": "Extraction des données terminée : end_time=%.6f, durée totale=%.3f secondes"
}

View File

@@ -1,263 +1,265 @@
{ {
"人声提取激进程度": "Intensità dell'estrazione vocale", "人声提取激进程度": "Intensità dell'estrazione vocale",
"%s → 成功": "%s → Successo", "%s → 成功": "%s → Successo",
"%s运行中请先停止该任务": "%s è in esecuzione; interromperlo prima di avviare un'altra attività", "%s运行中请先停止该任务": "%s è in esecuzione; interromperlo prima di avviare un'altra attività",
"%s进程已终止": "Il processo %s è stato terminato", "%s进程已终止": "Il processo %s è stato terminato",
"====> 轮次:{} {}": "====> Epoca: {} {}", "====> 轮次:{} {}": "====> Epoca: {} {}",
"A模型权重": "Peso (w) per il modello A:", "A模型权重": "Peso (w) per il modello A:",
"A模型路径": "Percorso per il modello A:", "A模型路径": "Percorso per il modello A:",
"B模型路径": "Percorso per il modello B:", "B模型路径": "Percorso per il modello B:",
"CUDA可用%s": "CUDA disponibile: %s", "CUDA可用%s": "CUDA disponibile: %s",
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src", "E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src",
"F0与HuBERT特征提取": "Estrazione F0 e caratteristiche HuBERT", "F0与HuBERT特征提取": "Estrazione F0 e caratteristiche HuBERT",
"F0提取": "Estrazione F0", "F0提取": "Estrazione F0",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "File curva F0 (opzionale). ", "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "File curva F0 (opzionale). ",
"HuBERT特征": "Caratteristiche HuBERT", "HuBERT特征": "Caratteristiche HuBERT",
"Index Rate": "Tasso di indice", "Index Rate": "Tasso di indice",
"RVC模型路径": "Percorso modello RVC:", "RVC模型路径": "Percorso modello RVC:",
"SOLA偏移%d": "Offset SOLA: %d", "SOLA偏移%d": "Offset SOLA: %d",
"[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Estrazione F0] Completato | Successo: %s | Ignorati: %s | Errore: %s", "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Estrazione F0] Completato | Successo: %s | Ignorati: %s | Errore: %s",
"[F0提取] 待处理:%s": "[Estrazione F0] Pending: %s", "[F0提取] 待处理:%s": "[Estrazione F0] Pending: %s",
"[F0提取] 无待处理音频,已全部跳过": "[Estrazione F0] Nessun audio in attesa; tutti i file sono stati ignorati", "[F0提取] 无待处理音频,已全部跳过": "[Estrazione F0] Nessun audio in attesa; tutti i file sono stati ignorati",
"[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[Estrazione F0] Avanzamento: %s/%s | Successo: %s | Ignorati: %s | %s", "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[Estrazione F0] Avanzamento: %s/%s | Successo: %s | Ignorati: %s | %s",
"[F0提取][失败] %s": "[Estrazione F0][Errore] %s", "[F0提取][失败] %s": "[Estrazione F0][Errore] %s",
"[F0提取][失败] %s\n%s": "[Estrazione F0][Errore] %s\n%s", "[F0提取][失败] %s\n%s": "[Estrazione F0][Errore] %s\n%s",
"[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Caratteristiche HuBERT] Completato | Successo: %s | Ignorati: %s | Errore: %s", "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Caratteristiche HuBERT] Completato | Successo: %s | Ignorati: %s | Errore: %s",
"[HuBERT特征] 无待处理音频,已全部跳过:%s": "[Caratteristiche HuBERT] Nessun audio in attesa; ignorati: %s", "[HuBERT特征] 无待处理音频,已全部跳过:%s": "[Caratteristiche HuBERT] Nessun audio in attesa; ignorati: %s",
"[HuBERT特征] 正在加载模型:%s": "[Caratteristiche HuBERT] Caricamento del modello: %s", "[HuBERT特征] 正在加载模型:%s": "[Caratteristiche HuBERT] Caricamento del modello: %s",
"[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[Caratteristiche HuBERT] Dispositivo: %s | Pending: %s | Ignorati: %s", "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[Caratteristiche HuBERT] Dispositivo: %s | Pending: %s | Ignorati: %s",
"[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[Caratteristiche HuBERT] Avanzamento: %s/%s | Successo: %s | Errore: %s | %s | %s", "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[Caratteristiche HuBERT] Avanzamento: %s/%s | Successo: %s | Errore: %s | %s | %s",
"[HuBERT特征][失败] %s\n%s": "[Caratteristiche HuBERT][Errore] %s\n%s", "[HuBERT特征][失败] %s\n%s": "[Caratteristiche HuBERT][Errore] %s\n%s",
"[HuBERT特征][失败] %s 包含NaN": "[Caratteristiche HuBERT][Errore] %s contains NaN values", "[HuBERT特征][失败] %s 包含NaN": "[Caratteristiche HuBERT][Errore] %s contains NaN values",
"[HuBERT特征][失败] 模型不存在:%s": "[Caratteristiche HuBERT][Errore] Modello not found: %s", "[HuBERT特征][失败] 模型不存在:%s": "[Caratteristiche HuBERT][Errore] Modello not found: %s",
"[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[Suddivisione dati] Sottoattività completata | Successo: %s | Errore: %s", "[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[Suddivisione dati] Sottoattività completata | Successo: %s | Errore: %s",
"[数据切分] 完成": "[Suddivisione dati] Completato", "[数据切分] 完成": "[Suddivisione dati] Completato",
"[数据切分] 开始": "[Suddivisione dati] Avviato", "[数据切分] 开始": "[Suddivisione dati] Avviato",
"[数据切分] 待处理:%s | 进程数:%s": "[Suddivisione dati] Pending: %s | Processi: %s", "[数据切分] 待处理:%s | 进程数:%s": "[Suddivisione dati] Pending: %s | Processi: %s",
"[数据切分] 进度:%s/%s | %s": "[Suddivisione dati] Avanzamento: %s/%s | %s", "[数据切分] 进度:%s/%s | %s": "[Suddivisione dati] Avanzamento: %s/%s | %s",
"[数据切分][失败] %s": "[Suddivisione dati][Errore] %s", "[数据切分][失败] %s": "[Suddivisione dati][Errore] %s",
"[数据切分][失败] %s\n%s": "[Suddivisione dati][Errore] %s\n%s", "[数据切分][失败] %s\n%s": "[Suddivisione dati][Errore] %s\n%s",
"[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[Suddivisione dati][Ignorati] Segmento audio non valido o anomalo: %s_%s | Picco: %s", "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[Suddivisione dati][Ignorati] Segmento audio non valido o anomalo: %s_%s | Picco: %s",
"[索引训练] 写入进度:%s/%s": "[Addestramento indice] Avanzamento scrittura: %s/%s", "[索引训练] 写入进度:%s/%s": "[Addestramento indice] Avanzamento scrittura: %s/%s",
"[索引训练] 已链接索引到外部目录:%s": "[Addestramento indice] Indice collegato alla cartella esterna: %s", "[索引训练] 已链接索引到外部目录:%s": "[Addestramento indice] Indice collegato alla cartella esterna: %s",
"[索引训练] 成功构建索引:%s": "[Addestramento indice] Indice creato correttamente: %s", "[索引训练] 成功构建索引:%s": "[Addestramento indice] Indice creato correttamente: %s",
"[索引训练] 正在写入特征向量": "[Addestramento indice] Aggiunta dei vettori delle caratteristiche", "[索引训练] 正在写入特征向量": "[Addestramento indice] Aggiunta dei vettori delle caratteristiche",
"[索引训练] 正在将%s条特征聚类为10000个中心": "[Addestramento indice] Clustering %s feature vectors into 10,000 centers", "[索引训练] 正在将%s条特征聚类为10000个中心": "[Addestramento indice] Clustering %s feature vectors into 10,000 centers",
"[索引训练] 正在训练索引": "[Addestramento indice] Addestramento dell'indice", "[索引训练] 正在训练索引": "[Addestramento indice] Addestramento dell'indice",
"[索引训练] 特征形状:%s | IVF数量%s": "[Addestramento indice] Forma caratteristiche: %s | Numero IVF: %s", "[索引训练] 特征形状:%s | IVF数量%s": "[Addestramento indice] Forma caratteristiche: %s | Numero IVF: %s",
"[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[Addestramento indice][Errore] Impossibile collegare l'indice alla cartella esterna: %s\n%s", "[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[Addestramento indice][Errore] Impossibile collegare l'indice alla cartella esterna: %s\n%s",
"[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[Addestramento indice][Errore] Clustering non riuscito; continuazione con le caratteristiche originali\n%s", "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[Addestramento indice][Errore] Clustering non riuscito; continuazione con le caratteristiche originali\n%s",
"[索引训练][失败] 请先进行特征提取": "[Addestramento indice][Errore] Estrarre prima le caratteristiche", "[索引训练][失败] 请先进行特征提取": "[Addestramento indice][Errore] Estrarre prima le caratteristiche",
"ckpt处理": "Elaborazione ckpt", "ckpt处理": "Elaborazione ckpt",
"index文件路径不可包含中文": "Il percorso del file index non può contenere caratteri cinesi", "index文件路径不可包含中文": "Il percorso del file index non può contenere caratteri cinesi",
"pth文件路径不可包含中文": "pth è un'app per il futuro", "pth文件路径不可包含中文": "pth è un'app per il futuro",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Configurazione GPU RMVPE separata da trattini; ad esempio 0-0-1 avvia due processi sulla GPU 0 e uno sulla GPU 1", "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Configurazione GPU RMVPE separata da trattini; ad esempio 0-0-1 avvia due processi sulla GPU 0 e uno sulla GPU 1",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Passaggio 1: compilare la configurazione sperimentale. ", "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Passaggio 1: compilare la configurazione sperimentale. ",
"step1:正在处理数据": "Passaggio 1: elaborazione dei dati", "step1:正在处理数据": "Passaggio 1: elaborazione dei dati",
"step2:正在提取音高&正在提取特征": "step2:Estrazione dell'intonazione e delle caratteristiche", "step2:正在提取音高&正在提取特征": "step2:Estrazione dell'intonazione e delle caratteristiche",
"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. ", "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):", "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", "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", "step3a:正在训练模型": "Passaggio 3a: è iniziato l'addestramento del modello",
"step3b:正在训练索引": "passaggio 3b: addestramento dellindice", "step3b:正在训练索引": "passaggio 3b: addestramento dellindice",
"……仅显示最近10条失败记录": "…Vengono mostrati solo gli ultimi 10 errori", "……仅显示最近10条失败记录": "…Vengono mostrati solo gli ultimi 10 errori",
"……已省略前%s行仅显示最新状态": "…Omesse le prime %s righe; viene mostrato solo lo stato più recente", "……已省略前%s行仅显示最新状态": "…Omesse le prime %s righe; viene mostrato solo lo stato più recente",
"一键训练": "Addestramento con un clic", "一键训练": "Addestramento con un clic",
"也可批量输入音频文件, 二选一, 优先读文件夹": "È anche possibile scegliere più file audio; la cartella ha la priorità", "也可批量输入音频文件, 二选一, 优先读文件夹": "È anche possibile scegliere più file audio; la cartella ha la priorità",
"人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "Separazione in batch di voce e accompagnamento tramite modelli UVR5.<br>È possibile scegliere un modello che preserva la voce oppure usare i modelli DeEcho/DeReverb per rimuovere eco e riverbero.", "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "Separazione in batch di voce e accompagnamento tramite modelli UVR5.<br>È possibile scegliere un modello che preserva la voce oppure usare i modelli DeEcho/DeReverb per rimuovere eco e riverbero.",
"仅支持pm和rmvpe音高提取算法": "Sono supportati solo i metodi di estrazione dell'intonazione pm e rmvpe", "仅支持pm和rmvpe音高提取算法": "Sono supportati solo i metodi di estrazione dell'intonazione pm e rmvpe",
"从训练检查点提取的模型": "Modellolo estratto da un checkpoint di addestramento", "从训练检查点提取的模型": "Modellolo estratto da un checkpoint di addestramento",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Inserisci gli indici GPU separati da '-', ad esempio 0-1-2 per utilizzare GPU 0, 1 e 2:", "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Inserisci gli indici GPU separati da '-', ad esempio 0-1-2 per utilizzare GPU 0, 1 e 2:",
"任务": "Attività", "任务": "Attività",
"伴奏人声分离&去混响&去回声": "Separazione voce/accompagnamento", "伴奏人声分离&去混响&去回声": "Separazione voce/accompagnamento",
"使用显卡:%s": "GPU in uso: %s", "使用显卡:%s": "GPU in uso: %s",
"使用模型采样率": "Usa frequenza del modello", "使用模型采样率": "Usa frequenza del modello",
"使用设备采样率": "Usa frequenza del dispositivo", "使用设备采样率": "Usa frequenza del dispositivo",
"保存名": "Salva nome:", "保存名": "Salva nome:",
"保存的文件名, 默认空为和源文件同名": "Salva il nome del file (predefinito: uguale al file di origine):", "保存的文件名, 默认空为和源文件同名": "Salva il nome del file (predefinito: uguale al file di origine):",
"保存的模型名不带后缀": "Nome del modello salvato (senza estensione):", "保存的模型名不带后缀": "Nome del modello salvato (senza estensione):",
"保存频率save_every_epoch": "Frequenza di salvataggio (save_every_epoch):", "保存频率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. ", "保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Proteggi le consonanti senza voce e i suoni del respiro per evitare artefatti come il tearing nella musica elettronica. ",
"修改": "Modificare", "修改": "Modificare",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modifica le informazioni sul modello (supportato solo per i file di modello di piccole dimensioni estratti dalla cartella 'weights')", "修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modifica le informazioni sul modello (supportato solo per i file di modello di piccole dimensioni estratti dalla cartella 'weights')",
"停止一键训练": "Interrompi addestramento con un clic", "停止一键训练": "Interrompi addestramento con un clic",
"停止处理数据": "Interrompi pre-elaborazione dei dati", "停止处理数据": "Interrompi pre-elaborazione dei dati",
"停止特征提取": "Interrompi estrazione delle caratteristiche", "停止特征提取": "Interrompi estrazione delle caratteristiche",
"停止训练模型": "Interrompi addestramento del modello", "停止训练模型": "Interrompi addestramento del modello",
"停止训练索引": "Interrompi addestramento dellindice", "停止训练索引": "Interrompi addestramento dellindice",
"停止音频转换": "Arresta la conversione audio", "停止音频转换": "Arresta la conversione audio",
"全流程结束!": "Tutti i processi sono stati completati!", "全流程结束!": "Tutti i processi sono stati completati!",
"判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth", "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth",
"加载模型": "Carica modello", "加载模型": "Carica modello",
"加载预训练底模D路径": "Carica il percorso D del modello base pre-addestrato:", "加载预训练底模D路径": "Carica il percorso D del modello base pre-addestrato:",
"加载预训练底模G路径": "Carica il percorso G del modello base pre-addestrato:", "加载预训练底模G路径": "Carica il percorso G del modello base pre-addestrato:",
"单次推理": "Inferenza singola", "单次推理": "Inferenza singola",
"卸载音色省显存": "Scarica la voce per risparmiare memoria della GPU:", "卸载音色省显存": "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):", "变调(整数, 半音数量, 升八度12降八度-12)": "Trasposizione (numero intero, numero di semitoni, alza di un'ottava: 12, abbassa di un'ottava: -12):",
"合成": "Sintesi", "合成": "Sintesi",
"后处理重采样至最终采样率0为不进行重采样": "Ricampiona l'audio di output in post-elaborazione alla frequenza di campionamento finale. ", "后处理重采样至最终采样率0为不进行重采样": "Ricampiona l'audio di output in post-elaborazione alla frequenza di campionamento finale. ",
"否": "NO", "否": "NO",
"响应阈值": "Soglia di risposta", "响应阈值": "Soglia di risposta",
"响度因子": "fattore di sonorità", "响度因子": "fattore di sonorità",
"处理中": "Elaborazione", "处理中": "Elaborazione",
"处理数据": "Processa dati", "处理数据": "Processa dati",
"失败": "Errore", "失败": "Errore",
"失败记录": "Registro errori", "失败记录": "Registro errori",
"子进程执行失败,返回码:%s": "Il sottoprocesso non è riuscito, codice di uscita: %s", "子进程执行失败,返回码:%s": "Il sottoprocesso non è riuscito, codice di uscita: %s",
"导出文件格式": "Formato file di esportazione", "导出文件格式": "Formato file di esportazione",
"已停止": "Interrotto", "已停止": "Interrotto",
"已加载判别器预训练模型:%s": "Modellolo preaddestrato del discriminatore caricato: %s", "已加载判别器预训练模型:%s": "Modellolo preaddestrato del discriminatore caricato: %s",
"已加载生成器预训练模型:%s": "Modellolo preaddestrato del generatore caricato: %s", "已加载生成器预训练模型:%s": "Modellolo preaddestrato del generatore caricato: %s",
"已启用索引检索": "Ricerca nell'indice attivata", "已启用索引检索": "Ricerca nell'indice attivata",
"已完成": "Completato", "已完成": "Completato",
"已恢复判别器检查点": "Checkpoint del discriminatore ripristinato", "已恢复判别器检查点": "Checkpoint del discriminatore ripristinato",
"常见问题解答": "FAQ (Domande frequenti)", "常见问题解答": "FAQ (Domande frequenti)",
"常规设置": "Impostazioni generali", "常规设置": "Impostazioni generali",
"开始音频转换": "Avvia la conversione audio", "开始音频转换": "Avvia la conversione audio",
"当前": "Attuale", "当前": "Attuale",
"当前阶段": "Fase attuale", "当前阶段": "Fase attuale",
"很遗憾您这没有能用的显卡来支持您训练": "Sfortunatamente, non è disponibile alcuna GPU compatibile per supportare l'addestramento.", "很遗憾您这没有能用的显卡来支持您训练": "Sfortunatamente, non è disponibile alcuna GPU compatibile per supportare l'addestramento.",
"性别因子/声线粗细": "Fattore di genere / spessore della voce", "性别因子/声线粗细": "Fattore di genere / spessore della voce",
"性能设置": "Impostazioni delle prestazioni", "性能设置": "Impostazioni delle prestazioni",
"总训练轮数total_epoch": "Epoch totali di addestramento (total_epoch):", "总训练轮数total_epoch": "Epoch totali di addestramento (total_epoch):",
"成功": "Successo", "成功": "Successo",
"执行命令": "Comando", "执行命令": "Comando",
"批量推理": "Inferenza batch", "批量推理": "Inferenza batch",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认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) ", "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认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) ",
"拖拽或点击上传待处理音频": "Trascina qui o fai clic per caricare laudio da elaborare", "拖拽或点击上传待处理音频": "Trascina qui o fai clic per caricare laudio da elaborare",
"指定输出主人声文件夹": "Specifica la cartella di output per le voci:", "指定输出主人声文件夹": "Specifica la cartella di output per le voci:",
"指定输出文件夹": "Specifica la cartella di output:", "指定输出文件夹": "Specifica la cartella di output:",
"指定输出非主人声文件夹": "Specificare la cartella di output per l'accompagnamento:", "指定输出非主人声文件夹": "Specificare la cartella di output per l'accompagnamento:",
"推理时间(ms):": "Tempo di inferenza (ms):", "推理时间(ms):": "Tempo di inferenza (ms):",
"推理耗时:%.2f秒": "Tempo di inferenza: %.2f seconds", "推理耗时:%.2f秒": "Tempo di inferenza: %.2f seconds",
"推理音色": "Voce di inferenza:", "推理音色": "Voce di inferenza:",
"提取": "Estrai", "提取": "Estrai",
"提取音高和处理数据使用的CPU进程数": "Numero di processi CPU utilizzati per l'estrazione del tono e l'elaborazione dei dati:", "提取音高和处理数据使用的CPU进程数": "Numero di processi CPU utilizzati per l'estrazione del tono e l'elaborazione dei dati:",
"数据切分": "Suddivisione dati", "数据切分": "Suddivisione dati",
"无法停止": "Impossibile interrompere", "无法停止": "Impossibile interrompere",
"无法读取音频:%s": "Impossibile leggere l'audio: %s", "无法读取音频:%s": "Impossibile leggere l'audio: %s",
"是": "SÌ", "是": "SÌ",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Salva solo l'ultimo file '.ckpt' per risparmiare spazio su disco:", "是否仅保存最新的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:", "是否在每次保存时间点将最终小模型保存至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. ", "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Memorizza nella cache tutti i set di addestramento nella memoria della GPU. ",
"显卡信息": "Informazioni GPU", "显卡信息": "Informazioni GPU",
"未使用": "Non usato", "未使用": "Non usato",
"未使用判别器预训练模型": "Modello preaddestrato del discriminatore non usato", "未使用判别器预训练模型": "Modello preaddestrato del discriminatore non usato",
"未使用生成器预训练模型": "Modello preaddestrato del generatore non usato", "未使用生成器预训练模型": "Modello preaddestrato del generatore non usato",
"未找到Roformer模型配置文件正在使用内置默认配置": "Configurazione del modello Roformer non trovata; verranno usati i valori predefiniti integrati", "未找到Roformer模型配置文件正在使用内置默认配置": "Configurazione del modello Roformer non trovata; verranno usati i valori predefiniti integrati",
"未检测到可用显卡将使用CPU训练耗时可能较长": "Nessuna GPU supportata rilevata; l'addestramento sulla CPU può richiedere molto più tempo", "未检测到可用显卡将使用CPU训练耗时可能较长": "Nessuna GPU supportata rilevata; l'addestramento sulla CPU può richiedere molto più tempo",
"未运行": "Non avviato", "未运行": "Non avviato",
"本软件以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.", "本软件以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", "查看": "Visualizzazione",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Visualizza le informazioni sul modello (supportato solo per file di modello piccoli estratti dalla cartella 'weights')", "查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Visualizza le informazioni sul modello (supportato solo per file di modello piccoli estratti dalla cartella 'weights')",
"检测到模型类型:%s": "Tipo di modello rilevato: %s", "检测到模型类型:%s": "Tipo di modello rilevato: %s",
"检索特征占比": "Rapporto funzionalità di ricerca (controlla la forza dell'accento, troppo alto ha artefatti):", "检索特征占比": "Rapporto funzionalità di ricerca (controlla la forza dell'accento, troppo alto ha artefatti):",
"模型": "Modello", "模型": "Modello",
"模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Informazioni modello: %s\nFrequenza di campionamento: %s\nGuida intonazione: %s\nVersione: %s", "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Informazioni modello: %s\nFrequenza di campionamento: %s\nGuida intonazione: %s\nVersione: %s",
"模型推理": "Inferenza del modello", "模型推理": "Inferenza del modello",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Estrazione del modello (inserire il percorso del modello di file di grandi dimensioni nella cartella \"logs\"). ", "模型提取(输入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:",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Se il modello ha una guida del tono (necessario per il canto, facoltativo per il parlato):", "模型是否带音高指导(唱歌一定要, 语音可以不要)": "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):", "模型是否带音高指导,1是0否": "Se il modello ha una guida del tono (1: sì, 0: no):",
"模型版本型号": "Versione dell'architettura del modello:", "模型版本型号": "Versione dell'architettura del modello:",
"模型融合, 可用于测试音色融合": "Model fusion, può essere utilizzato per testare la fusione timbrica", "模型融合, 可用于测试音色融合": "Model fusion, può essere utilizzato per testare la fusione timbrica",
"模型融合失败:两个模型的结构不一致": "Unione dei modelli non riuscita: le architetture non corrispondono", "模型融合失败:两个模型的结构不一致": "Unione dei modelli non riuscita: le architetture non corrispondono",
"模型训练": "Addestramento modello", "模型训练": "Addestramento modello",
"模型路径": "Percorso al modello:", "模型路径": "Percorso al modello:",
"正在保存最终检查点:%s": "Salvataggio del checkpoint finale: %s", "正在保存最终检查点:%s": "Salvataggio del checkpoint finale: %s",
"正在保存检查点 %s_e%s%s": "Salvataggio del checkpoint %s_e%s: %s", "正在保存检查点 %s_e%s%s": "Salvataggio del checkpoint %s_e%s: %s",
"正在加载RMVPE模型": "Caricamento del modello RMVPE", "正在加载RMVPE模型": "Caricamento del modello RMVPE",
"正在加载模型": "Caricamento del modello", "正在加载模型": "Caricamento del modello",
"正在启动": "Avvio in corso", "正在启动": "Avvio in corso",
"正在收尾": "Finalizzazione", "正在收尾": "Finalizzazione",
"每张显卡的batch_size": "Dimensione batch per GPU:", "每张显卡的batch_size": "Dimensione batch per GPU:",
"淡入淡出长度": "Lunghezza dissolvenza", "淡入淡出长度": "Lunghezza dissolvenza",
"清理模型缓存": "Pulizia della cache del modello", "清理模型缓存": "Pulizia della cache del modello",
"版本": "Versione", "版本": "Versione",
"特征": "Caratteristiche", "特征": "Caratteristiche",
"特征提取": "Estrazione delle caratteristiche", "特征提取": "Estrazione delle caratteristiche",
"状态": "Stato", "状态": "Stato",
"独占 WASAPI 设备": "Dispositivo WASAPI esclusivo", "独占 WASAPI 设备": "Dispositivo WASAPI esclusivo",
"生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth", "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Tonalità +12 consigliata per la conversione da maschio a femmina e tonalità -12 per la conversione da femmina a maschio. ", "男转女推荐+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:", "目标采样率": "Frequenza di campionamento target:",
"等待中": "In attesa", "等待中": "In attesa",
"等待输入": "In attesa dell'input", "等待输入": "In attesa dell'input",
"算法延迟(ms):": "Latenza algoritmo (ms):", "算法延迟(ms):": "Latenza algoritmo (ms):",
"索引": "Indice", "索引": "Indice",
"索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Indice non valido: usare added_xxxx.index, not trained_xxxx.index", "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Indice non valido: usare added_xxxx.index, not trained_xxxx.index",
"索引检索失败": "Ricerca nell'indice non riuscita", "索引检索失败": "Ricerca nell'indice non riuscita",
"索引检索失败或未启用": "Ricerca nell'indice non riuscita o disattivata", "索引检索失败或未启用": "Ricerca nell'indice non riuscita o disattivata",
"索引训练": "Addestramento indice", "索引训练": "Addestramento indice",
"耗时": "Tempo trascorso", "耗时": "Tempo trascorso",
"耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Tempo trascorso: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs", "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Tempo trascorso: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs",
"融合": "Fusione", "融合": "Fusione",
"要改的模型信息": "Informazioni sul modello da modificare:", "要改的模型信息": "Informazioni sul modello da modificare:",
"要置入的模型信息": "Informazioni sul modello da posizionare:", "要置入的模型信息": "Informazioni sul modello da posizionare:",
"训练": "Addestramento", "训练": "Addestramento",
"训练已完成,正在保存最终模型": "Addestramento completato; salvataggio del modello finale", "训练已完成,正在保存最终模型": "Addestramento completato; salvataggio del modello finale",
"训练文件列表写入完成": "Elenco dei file di addestramento salvato", "训练文件列表写入完成": "Elenco dei file di addestramento salvato",
"训练模型": "Addestra modello", "训练模型": "Addestra modello",
"训练特征索引": "Addestra indice delle caratteristiche", "训练特征索引": "Addestra indice delle caratteristiche",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Addestramento completato. ", "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Addestramento completato. ",
"训练设备规则选择的精度:%s": "Precisione di addestramento scelta dalle regole del dispositivo: %s", "训练设备规则选择的精度:%s": "Precisione di addestramento scelta dalle regole del dispositivo: %s",
"训练轮次:{} [{:.0f}%]": "Epoca di addestramento: {} [{:.0f}%]", "训练轮次:{} [{:.0f}%]": "Epoca di addestramento: {} [{:.0f}%]",
"设备类型": "Tipo di dispositivo", "设备类型": "Tipo di dispositivo",
"请上传音频文件": "Caricare un file audio", "请上传音频文件": "Caricare un file audio",
"请填写输出文件夹路径": "Inserire il percorso della cartella di output", "请填写输出文件夹路径": "Inserire il percorso della cartella di output",
"请指定说话人id": "Si prega di specificare l'ID del locutore/cantante:", "请指定说话人id": "Si prega di specificare l'ID del locutore/cantante:",
"请选择index文件": "Selezionare un file .index", "请选择index文件": "Selezionare un file .index",
"请选择pth文件": "Selezionare un file .pth", "请选择pth文件": "Selezionare un file .pth",
"请选择说话人id": "Seleziona ID locutore/cantante:", "请选择说话人id": "Seleziona ID locutore/cantante:",
"转换": "Convertire", "转换": "Convertire",
"输入实验名": "Inserisci il nome dell'esperimento:", "输入实验名": "Inserisci il nome dell'esperimento:",
"输入待处理音频文件夹路径": "Immettere il percorso della cartella audio da elaborare:", "输入待处理音频文件夹路径": "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 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):", "输入待处理音频文件路径(默认是正确格式示例)": "Immettere il percorso del file audio da elaborare (l'impostazione predefinita è l'esempio di formato corretto):",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Regola il ridimensionamento dell'inviluppo del volume. ", "输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Regola il ridimensionamento dell'inviluppo del volume. ",
"输入监听": "Monitor ingresso", "输入监听": "Monitor ingresso",
"输入训练文件夹路径": "Inserisci il percorso della cartella di addestramento:", "输入训练文件夹路径": "Inserisci il percorso della cartella di addestramento:",
"输入设备": "Dispositivo di input", "输入设备": "Dispositivo di input",
"输入设备:%s:%s": "Dispositivo di ingresso: %s:%s", "输入设备:%s:%s": "Dispositivo di ingresso: %s:%s",
"输入降噪": "Riduzione del rumore in ingresso", "输入降噪": "Riduzione del rumore in ingresso",
"输出信息": "Informazioni sull'uscita", "输出信息": "Informazioni sull'uscita",
"输出变声": "Conversione uscita", "输出变声": "Conversione uscita",
"输出设备": "Dispositivo di uscita", "输出设备": "Dispositivo di uscita",
"输出设备:%s:%s": "Dispositivo di uscita: %s:%s", "输出设备:%s:%s": "Dispositivo di uscita: %s:%s",
"输出降噪": "Riduzione del rumore in uscita", "输出降噪": "Riduzione del rumore in uscita",
"输出音频(右下角三个点,点了可以下载)": "Esporta audio (clicca sui tre puntini in basso a destra per scaricarlo)", "输出音频(右下角三个点,点了可以下载)": "Esporta audio (clicca sui tre puntini in basso a destra per scaricarlo)",
"运行中": "In esecuzione", "运行中": "In esecuzione",
"进度": "Avanzamento", "进度": "Avanzamento",
"选择.index文件": "Seleziona il file .index", "选择.index文件": "Seleziona il file .index",
"选择.pth文件": "Seleziona il file .pth", "选择.pth文件": "Seleziona il file .pth",
"选择模型": "Seleziona modello", "选择模型": "Seleziona modello",
"选择索引": "Seleziona indice", "选择索引": "Seleziona indice",
"选择音高提取算法": "Seleziona lalgoritmo di estrazione dellintonazione", "选择音高提取算法": "Seleziona lalgoritmo di estrazione dellintonazione",
"采样率:": "Frequenza di campionamento:", "采样率:": "Frequenza di campionamento:",
"采样长度": "Lunghezza del campione", "采样长度": "Lunghezza del campione",
"重载设备列表": "Ricaricare l'elenco dei dispositivi", "重载设备列表": "Ricaricare l'elenco dei dispositivi",
"错误信息:%s": "Dettagli errore: %s", "错误信息:%s": "Dettagli errore: %s",
"错误:未知模型:%s": "Errore: modello sconosciuto: %s", "错误:未知模型:%s": "Errore: modello sconosciuto: %s",
"音调设置": "Impostazioni del tono", "音调设置": "Impostazioni del tono",
"音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "L'audio ha più canali, ma il modello è mono; verrà calcolata la media di tutti i canali", "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "L'audio ha più canali, ma il modello è mono; verrà calcolata la media di tutti i canali",
"音频设备": "Dispositivo audio", "音频设备": "Dispositivo audio",
"音高全部为0该音频无意义跳过%s": "Tutti i valori di intonazione sono zero; questo audio è inutilizzabile e verrà ignorato: %s", "音高全部为0该音频无意义跳过%s": "Tutti i valori di intonazione sono zero; questo audio è inutilizzabile e verrà ignorato: %s",
"音高算法": "Algoritmo di intonazione", "音高算法": "Algoritmo di intonazione",
"额外推理时长": "Tempo di inferenza extra", "额外推理时长": "Tempo di inferenza extra",
"数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "Il pre-processing non ha generato audio di addestramento valido. Controlla il dataset e il registro.", "数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "Il pre-processing non ha generato audio di addestramento valido. Controlla il dataset e il registro.",
"数据切分没有生成16k音频已停止后续特征提取和训练": "Il pre-processing non ha generato audio a 16 kHz. Estrazione e addestramento sono stati interrotti.", "数据切分没有生成16k音频已停止后续特征提取和训练": "Il pre-processing non ha generato audio a 16 kHz. Estrazione e addestramento sono stati interrotti.",
"数据切分输出文件不匹配,已停止后续特征提取和训练": "I file prodotti dal pre-processing non corrispondono. Estrazione e addestramento sono stati interrotti.", "数据切分输出文件不匹配,已停止后续特征提取和训练": "I file prodotti dal pre-processing non corrispondono. Estrazione e addestramento sono stati interrotti.",
"HuBERT特征提取没有生成有效结果已停止训练": "Estrazione HuBERT senza risultati validi. Addestramento interrotto.", "HuBERT特征提取没有生成有效结果已停止训练": "Estrazione HuBERT senza risultati validi. Addestramento interrotto.",
"F0提取没有生成有效结果已停止训练": "Estrazione F0 senza risultati validi. Addestramento interrotto.", "F0提取没有生成有效结果已停止训练": "Estrazione F0 senza risultati validi. Addestramento interrotto.",
"没有可用于训练的有效音频,请先完成数据切分和特征提取": "Nessun audio valido per laddestramento. Completa prima pre-processing ed estrazione delle caratteristiche.", "没有可用于训练的有效音频,请先完成数据切分和特征提取": "Nessun audio valido per laddestramento. Completa prima pre-processing ed estrazione delle caratteristiche.",
"已完成阶段": "Fasi completate", "已完成阶段": "Fasi completate",
"已成功": "Completato", "已成功": "Completato",
"刷新音色列表": "Aggiorna elenco voci", "刷新音色列表": "Aggiorna elenco voci",
"特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Percorso indice caratteristiche (rilevato dopo la scelta del modello; modificabile)", "特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Percorso indice caratteristiche (rilevato dopo la scelta del modello; modificabile)",
"[索引训练] 外部索引链接已存在:%s": "[Addestramento indice] Il collegamento esterno esiste già: %s", "[索引训练] 外部索引链接已存在:%s": "[Addestramento indice] Il collegamento esterno esiste già: %s",
"[索引训练][跳过] added索引已存在%s": "[Addestramento indice][Saltato] Lindice added esiste già: %s", "[索引训练][跳过] added索引已存在%s": "[Addestramento indice][Saltato] Lindice added esiste già: %s",
"[索引训练][跳过] trained索引已存在%s": "[Addestramento indice][Saltato] Lindice trained esiste già: %s", "[索引训练][跳过] trained索引已存在%s": "[Addestramento indice][Saltato] Lindice trained esiste già: %s",
"当前设备:%s | 推理精度:%s": "Dispositivo corrente: %s | Precisione di inferenza: %s", "当前设备:%s | 推理精度:%s": "Dispositivo corrente: %s | Precisione di inferenza: %s",
"正在预热CUDA Graph": "Riscaldamento di CUDA Graph", "正在预热CUDA Graph": "Riscaldamento di CUDA Graph",
"CUDA Graph预热完成": "Riscaldamento di CUDA Graph completato" "CUDA Graph预热完成": "Riscaldamento di CUDA Graph completato",
} "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s": "Estrazione dati avviata: start_time=%.6f, concorrenza richiesta=%s, limite effettivo=%s",
"数据提取结束end_time=%.6f,总耗时=%.3f秒": "Estrazione dati completata: end_time=%.6f, tempo totale=%.3f secondi"
}

View File

@@ -1,263 +1,265 @@
{ {
"人声提取激进程度": "ボーカル抽出の強度", "人声提取激进程度": "ボーカル抽出の強度",
"%s → 成功": "%s → 成功", "%s → 成功": "%s → 成功",
"%s运行中请先停止该任务": "%sを実行中です。先に停止してください", "%s运行中请先停止该任务": "%sを実行中です。先に停止してください",
"%s进程已终止": "%sプロセスを終了しました", "%s进程已终止": "%sプロセスを終了しました",
"====> 轮次:{} {}": "====> エポック: {} {}", "====> 轮次:{} {}": "====> エポック: {} {}",
"A模型权重": "Aモデルの重み", "A模型权重": "Aモデルの重み",
"A模型路径": "Aモデルのパス", "A模型路径": "Aモデルのパス",
"B模型路径": "Bモデルのパス", "B模型路径": "Bモデルのパス",
"CUDA可用%s": "CUDA利用可能: %s", "CUDA可用%s": "CUDA利用可能: %s",
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src", "E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src",
"F0与HuBERT特征提取": "F0とHuBERT特徴量の抽出", "F0与HuBERT特征提取": "F0とHuBERT特徴量の抽出",
"F0提取": "F0抽出", "F0提取": "F0抽出",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0(最低共振周波数)カーブファイル(オプション、1行に1ピッチ、デフォルトのF0(最低共振周波数)とエレベーションを置き換えます。)", "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0(最低共振周波数)カーブファイル(オプション、1行に1ピッチ、デフォルトのF0(最低共振周波数)とエレベーションを置き換えます。)",
"HuBERT特征": "HuBERT特徴量", "HuBERT特征": "HuBERT特徴量",
"Index Rate": "Index Rate", "Index Rate": "Index Rate",
"RVC模型路径": "RVCモデルパス", "RVC模型路径": "RVCモデルパス",
"SOLA偏移%d": "SOLAオフセット: %d", "SOLA偏移%d": "SOLAオフセット: %d",
"[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0抽出] 完了 | 成功: %s | スキップ: %s | 失敗: %s", "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0抽出] 完了 | 成功: %s | スキップ: %s | 失敗: %s",
"[F0提取] 待处理:%s": "[F0抽出] Pending: %s", "[F0提取] 待处理:%s": "[F0抽出] Pending: %s",
"[F0提取] 无待处理音频,已全部跳过": "[F0抽出] 処理対象の音声はなく、すべてスキップ済みです", "[F0提取] 无待处理音频,已全部跳过": "[F0抽出] 処理対象の音声はなく、すべてスキップ済みです",
"[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0抽出] 進捗: %s/%s | 成功: %s | スキップ: %s | %s", "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0抽出] 進捗: %s/%s | 成功: %s | スキップ: %s | %s",
"[F0提取][失败] %s": "[F0抽出][失敗] %s", "[F0提取][失败] %s": "[F0抽出][失敗] %s",
"[F0提取][失败] %s\n%s": "[F0抽出][失敗] %s\n%s", "[F0提取][失败] %s\n%s": "[F0抽出][失敗] %s\n%s",
"[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT特徴量] 完了 | 成功: %s | スキップ: %s | 失敗: %s", "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT特徴量] 完了 | 成功: %s | スキップ: %s | 失敗: %s",
"[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT特徴量] 処理対象の音声なし、スキップ済み: %s", "[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT特徴量] 処理対象の音声なし、スキップ済み: %s",
"[HuBERT特征] 正在加载模型:%s": "[HuBERT特徴量] モデルを読み込み中: %s", "[HuBERT特征] 正在加载模型:%s": "[HuBERT特徴量] モデルを読み込み中: %s",
"[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT特徴量] デバイス: %s | Pending: %s | スキップ: %s", "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT特徴量] デバイス: %s | Pending: %s | スキップ: %s",
"[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT特徴量] 進捗: %s/%s | 成功: %s | 失敗: %s | %s | %s", "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT特徴量] 進捗: %s/%s | 成功: %s | 失敗: %s | %s | %s",
"[HuBERT特征][失败] %s\n%s": "[HuBERT特徴量][失敗] %s\n%s", "[HuBERT特征][失败] %s\n%s": "[HuBERT特徴量][失敗] %s\n%s",
"[HuBERT特征][失败] %s 包含NaN": "[HuBERT特徴量][失敗] %s contains NaN values", "[HuBERT特征][失败] %s 包含NaN": "[HuBERT特徴量][失敗] %s contains NaN values",
"[HuBERT特征][失败] 模型不存在:%s": "[HuBERT特徴量][失敗] モデル not found: %s", "[HuBERT特征][失败] 模型不存在:%s": "[HuBERT特徴量][失敗] モデル not found: %s",
"[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[データ分割] サブタスク完了 | 成功: %s | 失敗: %s", "[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[データ分割] サブタスク完了 | 成功: %s | 失敗: %s",
"[数据切分] 完成": "[データ分割] 完了", "[数据切分] 完成": "[データ分割] 完了",
"[数据切分] 开始": "[データ分割] 開始", "[数据切分] 开始": "[データ分割] 開始",
"[数据切分] 待处理:%s | 进程数:%s": "[データ分割] Pending: %s | プロセス数: %s", "[数据切分] 待处理:%s | 进程数:%s": "[データ分割] Pending: %s | プロセス数: %s",
"[数据切分] 进度:%s/%s | %s": "[データ分割] 進捗: %s/%s | %s", "[数据切分] 进度:%s/%s | %s": "[データ分割] 進捗: %s/%s | %s",
"[数据切分][失败] %s": "[データ分割][失敗] %s", "[数据切分][失败] %s": "[データ分割][失敗] %s",
"[数据切分][失败] %s\n%s": "[データ分割][失敗] %s\n%s", "[数据切分][失败] %s\n%s": "[データ分割][失敗] %s\n%s",
"[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[データ分割][スキップ] 無効または異常な音声区間: %s_%s | ピーク: %s", "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[データ分割][スキップ] 無効または異常な音声区間: %s_%s | ピーク: %s",
"[索引训练] 写入进度:%s/%s": "[インデックス学習] 書き込み進捗: %s/%s", "[索引训练] 写入进度:%s/%s": "[インデックス学習] 書き込み進捗: %s/%s",
"[索引训练] 已链接索引到外部目录:%s": "[インデックス学習] インデックスを外部フォルダーへリンクしました: %s", "[索引训练] 已链接索引到外部目录:%s": "[インデックス学習] インデックスを外部フォルダーへリンクしました: %s",
"[索引训练] 成功构建索引:%s": "[インデックス学習] インデックスを作成しました: %s", "[索引训练] 成功构建索引:%s": "[インデックス学習] インデックスを作成しました: %s",
"[索引训练] 正在写入特征向量": "[インデックス学習] 特徴ベクトルを追加中", "[索引训练] 正在写入特征向量": "[インデックス学習] 特徴ベクトルを追加中",
"[索引训练] 正在将%s条特征聚类为10000个中心": "[インデックス学習] Clustering %s feature vectors into 10,000 centers", "[索引训练] 正在将%s条特征聚类为10000个中心": "[インデックス学習] Clustering %s feature vectors into 10,000 centers",
"[索引训练] 正在训练索引": "[インデックス学習] インデックスを学習中", "[索引训练] 正在训练索引": "[インデックス学習] インデックスを学習中",
"[索引训练] 特征形状:%s | IVF数量%s": "[インデックス学習] 特徴量形状: %s | IVF数: %s", "[索引训练] 特征形状:%s | IVF数量%s": "[インデックス学習] 特徴量形状: %s | IVF数: %s",
"[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[インデックス学習][失敗] インデックスを外部フォルダーへリンクできませんでした: %s\n%s", "[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[インデックス学習][失敗] インデックスを外部フォルダーへリンクできませんでした: %s\n%s",
"[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[インデックス学習][失敗] クラスタリングに失敗したため、元の特徴量で続行します\n%s", "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[インデックス学習][失敗] クラスタリングに失敗したため、元の特徴量で続行します\n%s",
"[索引训练][失败] 请先进行特征提取": "[インデックス学習][失敗] 先に特徴抽出を実行してください", "[索引训练][失败] 请先进行特征提取": "[インデックス学習][失敗] 先に特徴抽出を実行してください",
"ckpt处理": "ckptファイルの処理", "ckpt处理": "ckptファイルの処理",
"index文件路径不可包含中文": "indexファイルのパスに漢字を含んではいけません", "index文件路径不可包含中文": "indexファイルのパスに漢字を含んではいけません",
"pth文件路径不可包含中文": "pthファイルのパスに漢字を含んではいけません", "pth文件路径不可包含中文": "pthファイルのパスに漢字を含んではいけません",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpeカード番号設定異なるプロセスに使用するカード番号を入力する。例えば、0-0-1でカード0に2つのプロセス、カード1に1つのプロセスを実行する。", "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpeカード番号設定異なるプロセスに使用するカード番号を入力する。例えば、0-0-1でカード0に2つのプロセス、カード1に1つのプロセスを実行する。",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "ステップ1:実験設定を入力します。実験データはlogsに保存され、各実験にはフォルダーがあります。実験名のパスを手動で入力する必要があり、実験設定、ログ、トレーニングされたモデルファイルが含まれます。", "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "ステップ1:実験設定を入力します。実験データはlogsに保存され、各実験にはフォルダーがあります。実験名のパスを手動で入力する必要があり、実験設定、ログ、トレーニングされたモデルファイルが含まれます。",
"step1:正在处理数据": "step1:処理中のデータ", "step1:正在处理数据": "step1:処理中のデータ",
"step2:正在提取音高&正在提取特征": "step2:ピッチ抽出と特徴抽出", "step2:正在提取音高&正在提取特征": "step2:ピッチ抽出と特徴抽出",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "ステップ2a: 訓練フォルダー内のすべての音声ファイルを自動的に探索し、スライスと正規化を行い、2つのwavフォルダーを実験ディレクトリに生成します。現在は一人でのトレーニングのみをサポートしています。", "step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "ステップ2a: 訓練フォルダー内のすべての音声ファイルを自動的に探索し、スライスと正規化を行い、2つのwavフォルダーを実験ディレクトリに生成します。現在は一人でのトレーニングのみをサポートしています。",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "ステップ2b: CPUを使用して音高を抽出する(モデルに音高がある場合)、GPUを使用して特徴を抽出する(GPUの番号を選択する)", "step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "ステップ2b: CPUを使用して音高を抽出する(モデルに音高がある場合)、GPUを使用して特徴を抽出する(GPUの番号を選択する)",
"step3: 填写训练设置, 开始训练模型和索引": "ステップ3: トレーニング設定を入力して、モデルとインデックスのトレーニングを開始します", "step3: 填写训练设置, 开始训练模型和索引": "ステップ3: トレーニング設定を入力して、モデルとインデックスのトレーニングを開始します",
"step3a:正在训练模型": "step3a:トレーニング中のモデル", "step3a:正在训练模型": "step3a:トレーニング中のモデル",
"step3b:正在训练索引": "ステップ3bインデックスをトレーニング中", "step3b:正在训练索引": "ステップ3bインデックスをトレーニング中",
"……仅显示最近10条失败记录": "…直近10件の失敗のみ表示しています", "……仅显示最近10条失败记录": "…直近10件の失敗のみ表示しています",
"……已省略前%s行仅显示最新状态": "…先頭%s行を省略し、最新状態のみ表示しています", "……已省略前%s行仅显示最新状态": "…先頭%s行を省略し、最新状態のみ表示しています",
"一键训练": "ワンクリックトレーニング", "一键训练": "ワンクリックトレーニング",
"也可批量输入音频文件, 二选一, 优先读文件夹": "複数のオーディオファイルをインポートすることもできます。フォルダパスが存在する場合、この入力は無視されます。", "也可批量输入音频文件, 二选一, 优先读文件夹": "複数のオーディオファイルをインポートすることもできます。フォルダパスが存在する場合、この入力は無視されます。",
"人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "UVR5モデルを使用して、ボーカルと伴奏を一括分離します。<br>ボーカル保持モデルを選択するか、DeEchoDeReverbモデルでエコーや残響を除去できます。", "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "UVR5モデルを使用して、ボーカルと伴奏を一括分離します。<br>ボーカル保持モデルを選択するか、DeEchoDeReverbモデルでエコーや残響を除去できます。",
"仅支持pm和rmvpe音高提取算法": "ピッチ抽出方式はpmとrmvpeのみ対応しています", "仅支持pm和rmvpe音高提取算法": "ピッチ抽出方式はpmとrmvpeのみ対応しています",
"从训练检查点提取的模型": "学習チェックポイントから抽出したモデル", "从训练检查点提取的模型": "学習チェックポイントから抽出したモデル",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "ハイフンで区切って使用するGPUの番号を入力します。例えば0-1-2はGPU0、GPU1、GPU2を使用します", "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "ハイフンで区切って使用するGPUの番号を入力します。例えば0-1-2はGPU0、GPU1、GPU2を使用します",
"任务": "タスク", "任务": "タスク",
"伴奏人声分离&去混响&去回声": "伴奏ボーカル分離&残響除去&エコー除去", "伴奏人声分离&去混响&去回声": "伴奏ボーカル分離&残響除去&エコー除去",
"使用显卡:%s": "使用GPU: %s", "使用显卡:%s": "使用GPU: %s",
"使用模型采样率": "モデルのサンプルレートを使用", "使用模型采样率": "モデルのサンプルレートを使用",
"使用设备采样率": "デバイスのサンプルレートを使用", "使用设备采样率": "デバイスのサンプルレートを使用",
"保存名": "保存ファイル名", "保存名": "保存ファイル名",
"保存的文件名, 默认空为和源文件同名": "保存するファイル名、デフォルトでは空欄で元のファイル名と同じ名前になります", "保存的文件名, 默认空为和源文件同名": "保存するファイル名、デフォルトでは空欄で元のファイル名と同じ名前になります",
"保存的模型名不带后缀": "拡張子のない保存するモデル名", "保存的模型名不带后缀": "拡張子のない保存するモデル名",
"保存频率save_every_epoch": "エポックごとの保存頻度", "保存频率save_every_epoch": "エポックごとの保存頻度",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "明確な子音と呼吸音を保護し、電子音の途切れやその他のアーティファクトを防止します。0.5でオフになります。下げると保護が強化されますが、indexの効果が低下する可能性があります。", "保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "明確な子音と呼吸音を保護し、電子音の途切れやその他のアーティファクトを防止します。0.5でオフになります。下げると保護が強化されますが、indexの効果が低下する可能性があります。",
"修改": "変更", "修改": "変更",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "モデル情報の修正(weightsフォルダから抽出された小さなモデルファイルのみ対応)", "修改模型信息(仅支持weights文件夹下提取的小模型文件)": "モデル情報の修正(weightsフォルダから抽出された小さなモデルファイルのみ対応)",
"停止一键训练": "ワンクリック学習を停止", "停止一键训练": "ワンクリック学習を停止",
"停止处理数据": "データ前処理を停止", "停止处理数据": "データ前処理を停止",
"停止特征提取": "特徴抽出を停止", "停止特征提取": "特徴抽出を停止",
"停止训练模型": "モデル学習を停止", "停止训练模型": "モデル学習を停止",
"停止训练索引": "インデックス学習を停止", "停止训练索引": "インデックス学習を停止",
"停止音频转换": "音声変換を停止", "停止音频转换": "音声変換を停止",
"全流程结束!": "全工程が完了!", "全流程结束!": "全工程が完了!",
"判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth", "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth",
"加载模型": "モデルをロード", "加载模型": "モデルをロード",
"加载预训练底模D路径": "事前学習済みのDモデルのパス", "加载预训练底模D路径": "事前学習済みのDモデルのパス",
"加载预训练底模G路径": "事前学習済みのGモデルのパス", "加载预训练底模G路径": "事前学習済みのGモデルのパス",
"单次推理": "単発推論", "单次推理": "単発推論",
"卸载音色省显存": "音源を削除してメモリを節約", "卸载音色省显存": "音源を削除してメモリを節約",
"变调(整数, 半音数量, 升八度12降八度-12)": "ピッチ変更(整数、半音数、上下オクターブ12-12)", "变调(整数, 半音数量, 升八度12降八度-12)": "ピッチ変更(整数、半音数、上下オクターブ12-12)",
"合成": "合成", "合成": "合成",
"后处理重采样至最终采样率0为不进行重采样": "最終的なサンプリングレートへのポストプロセッシングのリサンプリング リサンプリングしない場合は0", "后处理重采样至最终采样率0为不进行重采样": "最終的なサンプリングレートへのポストプロセッシングのリサンプリング リサンプリングしない場合は0",
"否": "いいえ", "否": "いいえ",
"响应阈值": "反応閾値", "响应阈值": "反応閾値",
"响度因子": "ラウドネス係数", "响度因子": "ラウドネス係数",
"处理中": "処理中", "处理中": "処理中",
"处理数据": "データ処理", "处理数据": "データ処理",
"失败": "失敗", "失败": "失敗",
"失败记录": "失敗記録", "失败记录": "失敗記録",
"子进程执行失败,返回码:%s": "子プロセスが終了コード付きで失敗しました: %s", "子进程执行失败,返回码:%s": "子プロセスが終了コード付きで失敗しました: %s",
"导出文件格式": "エクスポート形式", "导出文件格式": "エクスポート形式",
"已停止": "停止済み", "已停止": "停止済み",
"已加载判别器预训练模型:%s": "識別器の事前学習モデルを読み込みました: %s", "已加载判别器预训练模型:%s": "識別器の事前学習モデルを読み込みました: %s",
"已加载生成器预训练模型:%s": "生成器の事前学習モデルを読み込みました: %s", "已加载生成器预训练模型:%s": "生成器の事前学習モデルを読み込みました: %s",
"已启用索引检索": "インデックス検索を有効化しました", "已启用索引检索": "インデックス検索を有効化しました",
"已完成": "完了", "已完成": "完了",
"已恢复判别器检查点": "識別器チェックポイントを復元しました", "已恢复判别器检查点": "識別器チェックポイントを復元しました",
"常见问题解答": "よくある質問", "常见问题解答": "よくある質問",
"常规设置": "一般設定", "常规设置": "一般設定",
"开始音频转换": "音声変換を開始", "开始音频转换": "音声変換を開始",
"当前": "現在", "当前": "現在",
"当前阶段": "現在の段階", "当前阶段": "現在の段階",
"很遗憾您这没有能用的显卡来支持您训练": "トレーニングに対応したGPUが動作しないのは残念です。", "很遗憾您这没有能用的显卡来支持您训练": "トレーニングに対応したGPUが動作しないのは残念です。",
"性别因子/声线粗细": "性別係数/声質の太さ", "性别因子/声线粗细": "性別係数/声質の太さ",
"性能设置": "パフォーマンス設定", "性能设置": "パフォーマンス設定",
"总训练轮数total_epoch": "総エポック数", "总训练轮数total_epoch": "総エポック数",
"成功": "成功", "成功": "成功",
"执行命令": "実行コマンド", "执行命令": "実行コマンド",
"批量推理": "一括推論", "批量推理": "一括推論",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "一括変換、変換する音声フォルダを入力、または複数の音声ファイルをアップロードし、指定したフォルダ(デフォルトのopt)に変換した音声を出力します。", "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "一括変換、変換する音声フォルダを入力、または複数の音声ファイルをアップロードし、指定したフォルダ(デフォルトのopt)に変換した音声を出力します。",
"拖拽或点击上传待处理音频": "処理する音声をドラッグ&ドロップするか、クリックしてアップロード", "拖拽或点击上传待处理音频": "処理する音声をドラッグ&ドロップするか、クリックしてアップロード",
"指定输出主人声文件夹": "マスターの出力音声フォルダーを指定する", "指定输出主人声文件夹": "マスターの出力音声フォルダーを指定する",
"指定输出文件夹": "出力フォルダを指定してください", "指定输出文件夹": "出力フォルダを指定してください",
"指定输出非主人声文件夹": "マスター以外の出力音声フォルダーを指定する", "指定输出非主人声文件夹": "マスター以外の出力音声フォルダーを指定する",
"推理时间(ms):": "推論時間(ms):", "推理时间(ms):": "推論時間(ms):",
"推理耗时:%.2f秒": "推論時間: %.2f seconds", "推理耗时:%.2f秒": "推論時間: %.2f seconds",
"推理音色": "音源推論", "推理音色": "音源推論",
"提取": "抽出", "提取": "抽出",
"提取音高和处理数据使用的CPU进程数": "ピッチの抽出やデータ処理に使用するCPUスレッド数", "提取音高和处理数据使用的CPU进程数": "ピッチの抽出やデータ処理に使用するCPUスレッド数",
"数据切分": "データ分割", "数据切分": "データ分割",
"无法停止": "停止できません", "无法停止": "停止できません",
"无法读取音频:%s": "音声を読み込めませんでした: %s", "无法读取音频:%s": "音声を読み込めませんでした: %s",
"是": "はい", "是": "はい",
"是否仅保存最新的ckpt文件以节省硬盘空间": "ハードディスク容量を節約するため、最新のckptファイルのみを保存しますか", "是否仅保存最新的ckpt文件以节省硬盘空间": "ハードディスク容量を節約するため、最新のckptファイルのみを保存しますか",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "各保存時点の小モデルを全部weightsフォルダに保存するかどうか", "是否在每次保存时间点将最终小模型保存至weights文件夹": "各保存時点の小モデルを全部weightsフォルダに保存するかどうか",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "すべてのトレーニングデータをメモリにキャッシュするかどうか。10分以下の小さなデータはキャッシュしてトレーニングを高速化できますが、大きなデータをキャッシュするとメモリが破裂し、あまり速度が上がりません。", "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "すべてのトレーニングデータをメモリにキャッシュするかどうか。10分以下の小さなデータはキャッシュしてトレーニングを高速化できますが、大きなデータをキャッシュするとメモリが破裂し、あまり速度が上がりません。",
"显卡信息": "GPU情報", "显卡信息": "GPU情報",
"未使用": "未使用", "未使用": "未使用",
"未使用判别器预训练模型": "識別器の事前学習モデルは未使用です", "未使用判别器预训练模型": "識別器の事前学習モデルは未使用です",
"未使用生成器预训练模型": "生成器の事前学習モデルは未使用です", "未使用生成器预训练模型": "生成器の事前学習モデルは未使用です",
"未找到Roformer模型配置文件正在使用内置默认配置": "Roformerモデル設定が見つからないため、組み込みの既定値を使用します", "未找到Roformer模型配置文件正在使用内置默认配置": "Roformerモデル設定が見つからないため、組み込みの既定値を使用します",
"未检测到可用显卡将使用CPU训练耗时可能较长": "対応GPUが検出されませんでした。CPUでの学習には時間がかかる場合があります", "未检测到可用显卡将使用CPU训练耗时可能较长": "対応GPUが検出されませんでした。CPUでの学習には時間がかかる場合があります",
"未运行": "未実行", "未运行": "未実行",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本ソフトウェアはMITライセンスに基づくオープンソースであり、製作者は本ソフトウェアに対していかなる責任を持ちません。本ソフトウェアの利用者および本ソフトウェアから派生した音源(成果物)を配布する者は、本ソフトウェアに対して自身で責任を負うものとします。 <br>この条項に同意しない場合、パッケージ内のコードやファイルを使用や参照を禁じます。詳しくは<b>LICENSE</b>をご覧ください。", "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本ソフトウェアはMITライセンスに基づくオープンソースであり、製作者は本ソフトウェアに対していかなる責任を持ちません。本ソフトウェアの利用者および本ソフトウェアから派生した音源(成果物)を配布する者は、本ソフトウェアに対して自身で責任を負うものとします。 <br>この条項に同意しない場合、パッケージ内のコードやファイルを使用や参照を禁じます。詳しくは<b>LICENSE</b>をご覧ください。",
"查看": "表示", "查看": "表示",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "モデル情報を表示する(小さいモデルファイルはweightsフォルダーからのみサポートされています)", "查看模型信息(仅支持weights文件夹下提取的小模型文件)": "モデル情報を表示する(小さいモデルファイルはweightsフォルダーからのみサポートされています)",
"检测到模型类型:%s": "検出したモデル種別: %s", "检测到模型类型:%s": "検出したモデル種別: %s",
"检索特征占比": "検索特徴率", "检索特征占比": "検索特徴率",
"模型": "モデル", "模型": "モデル",
"模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "モデル情報: %s\nサンプルレート: %s\nピッチガイド: %s\nバージョン: %s", "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "モデル情報: %s\nサンプルレート: %s\nピッチガイド: %s\nバージョン: %s",
"模型推理": "モデル推論", "模型推理": "モデル推論",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "モデル抽出(ログフォルダー内の大きなファイルのモデルパスを入力)、モデルを半分までトレーニングし、自動的に小さいファイルモデルを保存しなかったり、中間モデルをテストしたい場合に適用されます。", "模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "モデル抽出(ログフォルダー内の大きなファイルのモデルパスを入力)、モデルを半分までトレーニングし、自動的に小さいファイルモデルを保存しなかったり、中間モデルをテストしたい場合に適用されます。",
"模型是否带音高指导": "モデルに音高ガイドを付けるかどうか", "模型是否带音高指导": "モデルに音高ガイドを付けるかどうか",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "モデルに音高ガイドがあるかどうか(歌唱には必要ですが、音声には必要ありません)", "模型是否带音高指导(唱歌一定要, 语音可以不要)": "モデルに音高ガイドがあるかどうか(歌唱には必要ですが、音声には必要ありません)",
"模型是否带音高指导,1是0否": "モデルに音高ガイドを付けるかどうか、1は付ける、0は付けない", "模型是否带音高指导,1是0否": "モデルに音高ガイドを付けるかどうか、1は付ける、0は付けない",
"模型版本型号": "モデルのバージョン", "模型版本型号": "モデルのバージョン",
"模型融合, 可用于测试音色融合": "モデルのマージ、音源のマージテストに使用できます", "模型融合, 可用于测试音色融合": "モデルのマージ、音源のマージテストに使用できます",
"模型融合失败:两个模型的结构不一致": "モデルの構造が一致しないため、結合に失敗しました", "模型融合失败:两个模型的结构不一致": "モデルの構造が一致しないため、結合に失敗しました",
"模型训练": "モデル学習", "模型训练": "モデル学習",
"模型路径": "モデルパス", "模型路径": "モデルパス",
"正在保存最终检查点:%s": "最終チェックポイントを保存中: %s", "正在保存最终检查点:%s": "最終チェックポイントを保存中: %s",
"正在保存检查点 %s_e%s%s": "チェックポイントを保存中 %s_e%s: %s", "正在保存检查点 %s_e%s%s": "チェックポイントを保存中 %s_e%s: %s",
"正在加载RMVPE模型": "RMVPEモデルを読み込み中", "正在加载RMVPE模型": "RMVPEモデルを読み込み中",
"正在加载模型": "モデルを読み込み中", "正在加载模型": "モデルを読み込み中",
"正在启动": "起動中", "正在启动": "起動中",
"正在收尾": "終了処理中", "正在收尾": "終了処理中",
"每张显卡的batch_size": "GPUごとのバッチサイズ", "每张显卡的batch_size": "GPUごとのバッチサイズ",
"淡入淡出长度": "フェードイン/フェードアウト長", "淡入淡出长度": "フェードイン/フェードアウト長",
"清理模型缓存": "モデルキャッシュを消去中", "清理模型缓存": "モデルキャッシュを消去中",
"版本": "バージョン", "版本": "バージョン",
"特征": "特徴量", "特征": "特徴量",
"特征提取": "特徴抽出", "特征提取": "特徴抽出",
"状态": "状態", "状态": "状態",
"独占 WASAPI 设备": "WASAPI排他デバイス", "独占 WASAPI 设备": "WASAPI排他デバイス",
"生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth", "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性から女性へは+12キーをお勧めします。女性から男性へは-12キーをお勧めします。音域が広すぎて音質が劣化した場合は、適切な音域に自分で調整してください。", "男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性から女性へは+12キーをお勧めします。女性から男性へは-12キーをお勧めします。音域が広すぎて音質が劣化した場合は、適切な音域に自分で調整してください。",
"目标采样率": "目標サンプリングレート", "目标采样率": "目標サンプリングレート",
"等待中": "待機中", "等待中": "待機中",
"等待输入": "入力待ち", "等待输入": "入力待ち",
"算法延迟(ms):": "アルゴリズム遅延(ms):", "算法延迟(ms):": "アルゴリズム遅延(ms):",
"索引": "インデックス", "索引": "インデックス",
"索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "無効なインデックスです。使用してください: added_xxxx.index, not trained_xxxx.index", "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "無効なインデックスです。使用してください: added_xxxx.index, not trained_xxxx.index",
"索引检索失败": "インデックス検索に失敗しました", "索引检索失败": "インデックス検索に失敗しました",
"索引检索失败或未启用": "インデックス検索に失敗したか無効です", "索引检索失败或未启用": "インデックス検索に失敗したか無効です",
"索引训练": "インデックス学習", "索引训练": "インデックス学習",
"耗时": "所要時間", "耗时": "所要時間",
"耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "所要時間: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs", "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "所要時間: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs",
"融合": "マージ", "融合": "マージ",
"要改的模型信息": "変更するモデル情報", "要改的模型信息": "変更するモデル情報",
"要置入的模型信息": "挿入するモデル情報", "要置入的模型信息": "挿入するモデル情報",
"训练": "トレーニング", "训练": "トレーニング",
"训练已完成,正在保存最终模型": "学習が完了しました。最終モデルを保存しています", "训练已完成,正在保存最终模型": "学習が完了しました。最終モデルを保存しています",
"训练文件列表写入完成": "学習ファイル一覧を書き込みました", "训练文件列表写入完成": "学習ファイル一覧を書き込みました",
"训练模型": "モデルのトレーニング", "训练模型": "モデルのトレーニング",
"训练特征索引": "特徴インデックスのトレーニング", "训练特征索引": "特徴インデックスのトレーニング",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "トレーニング終了時に、トレーニングログやフォルダ内のtrain.logを確認することができます", "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "トレーニング終了時に、トレーニングログやフォルダ内のtrain.logを確認することができます",
"训练设备规则选择的精度:%s": "デバイス規則で選択された学習精度: %s", "训练设备规则选择的精度:%s": "デバイス規則で選択された学習精度: %s",
"训练轮次:{} [{:.0f}%]": "学習エポック: {} [{:.0f}%]", "训练轮次:{} [{:.0f}%]": "学習エポック: {} [{:.0f}%]",
"设备类型": "デバイス種別", "设备类型": "デバイス種別",
"请上传音频文件": "音声ファイルをアップロードしてください", "请上传音频文件": "音声ファイルをアップロードしてください",
"请填写输出文件夹路径": "出力フォルダーのパスを入力してください", "请填写输出文件夹路径": "出力フォルダーのパスを入力してください",
"请指定说话人id": "話者IDを指定してください", "请指定说话人id": "話者IDを指定してください",
"请选择index文件": "indexファイルを選択してください", "请选择index文件": "indexファイルを選択してください",
"请选择pth文件": "pthファイルを選択してください", "请选择pth文件": "pthファイルを選択してください",
"请选择说话人id": "話者IDを選択してください", "请选择说话人id": "話者IDを選択してください",
"转换": "変換", "转换": "変換",
"输入实验名": "モデル名", "输入实验名": "モデル名",
"输入待处理音频文件夹路径": "処理するオーディオファイルのフォルダパスを入力してください", "输入待处理音频文件夹路径": "処理するオーディオファイルのフォルダパスを入力してください",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "処理対象音声フォルダーのパスを入力してください(エクスプローラーのアドレスバーからコピーしてください)", "输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "処理対象音声フォルダーのパスを入力してください(エクスプローラーのアドレスバーからコピーしてください)",
"输入待处理音频文件路径(默认是正确格式示例)": "処理対象音声ファイルのパスを入力してください(デフォルトは正しいフォーマットの例です)", "输入待处理音频文件路径(默认是正确格式示例)": "処理対象音声ファイルのパスを入力してください(デフォルトは正しいフォーマットの例です)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "入力ソースの音量エンベロープと出力音量エンベロープの融合率 1に近づくほど、出力音量エンベロープの割合が高くなる", "输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "入力ソースの音量エンベロープと出力音量エンベロープの融合率 1に近づくほど、出力音量エンベロープの割合が高くなる",
"输入监听": "入力モニター", "输入监听": "入力モニター",
"输入训练文件夹路径": "トレーニング用フォルダのパスを入力してください", "输入训练文件夹路径": "トレーニング用フォルダのパスを入力してください",
"输入设备": "入力デバイス", "输入设备": "入力デバイス",
"输入设备:%s:%s": "入力デバイス: %s:%s", "输入设备:%s:%s": "入力デバイス: %s:%s",
"输入降噪": "入力ノイズの低減", "输入降噪": "入力ノイズの低減",
"输出信息": "出力情報", "输出信息": "出力情報",
"输出变声": "出力変声", "输出变声": "出力変声",
"输出设备": "出力デバイス", "输出设备": "出力デバイス",
"输出设备:%s:%s": "出力デバイス: %s:%s", "输出设备:%s:%s": "出力デバイス: %s:%s",
"输出降噪": "出力ノイズの低減", "输出降噪": "出力ノイズの低減",
"输出音频(右下角三个点,点了可以下载)": "出力音声(右下の三点をクリックしてダウンロードできます)", "输出音频(右下角三个点,点了可以下载)": "出力音声(右下の三点をクリックしてダウンロードできます)",
"运行中": "実行中", "运行中": "実行中",
"进度": "進捗", "进度": "進捗",
"选择.index文件": ".indexファイルを選択", "选择.index文件": ".indexファイルを選択",
"选择.pth文件": ".pthファイルを選択", "选择.pth文件": ".pthファイルを選択",
"选择模型": "モデルを選択", "选择模型": "モデルを選択",
"选择索引": "インデックスを選択", "选择索引": "インデックスを選択",
"选择音高提取算法": "ピッチ抽出アルゴリズムを選択", "选择音高提取算法": "ピッチ抽出アルゴリズムを選択",
"采样率:": "サンプルレート:", "采样率:": "サンプルレート:",
"采样长度": "サンプル長", "采样长度": "サンプル長",
"重载设备列表": "デバイスリストをリロードする", "重载设备列表": "デバイスリストをリロードする",
"错误信息:%s": "エラー詳細: %s", "错误信息:%s": "エラー詳細: %s",
"错误:未知模型:%s": "エラー: 不明なモデル: %s", "错误:未知模型:%s": "エラー: 不明なモデル: %s",
"音调设置": "音程設定", "音调设置": "音程設定",
"音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "音声は複数チャンネルですがモデルはモノラルのため、全チャンネルを平均します", "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "音声は複数チャンネルですがモデルはモノラルのため、全チャンネルを平均します",
"音频设备": "オーディオデバイス", "音频设备": "オーディオデバイス",
"音高全部为0该音频无意义跳过%s": "ピッチがすべて0のため、この音声は無効としてスキップします: %s", "音高全部为0该音频无意义跳过%s": "ピッチがすべて0のため、この音声は無効としてスキップします: %s",
"音高算法": "ピッチ方式", "音高算法": "ピッチ方式",
"额外推理时长": "追加推論時間", "额外推理时长": "追加推論時間",
"数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "データ前処理で有効な学習音声が生成されませんでした。データセットと前処理ログを確認してください。", "数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "データ前処理で有効な学習音声が生成されませんでした。データセットと前処理ログを確認してください。",
"数据切分没有生成16k音频已停止后续特征提取和训练": "データ前処理で16 kHz音声が生成されなかったため、特徴抽出と学習を停止しました。", "数据切分没有生成16k音频已停止后续特征提取和训练": "データ前処理で16 kHz音声が生成されなかったため、特徴抽出と学習を停止しました。",
"数据切分输出文件不匹配,已停止后续特征提取和训练": "データ前処理の出力ファイルが一致しないため、特徴抽出と学習を停止しました。", "数据切分输出文件不匹配,已停止后续特征提取和训练": "データ前処理の出力ファイルが一致しないため、特徴抽出と学習を停止しました。",
"HuBERT特征提取没有生成有效结果已停止训练": "HuBERT特徴抽出で有効な結果が生成されなかったため、学習を停止しました。", "HuBERT特征提取没有生成有效结果已停止训练": "HuBERT特徴抽出で有効な結果が生成されなかったため、学習を停止しました。",
"F0提取没有生成有效结果已停止训练": "F0抽出で有効な結果が生成されなかったため、学習を停止しました。", "F0提取没有生成有效结果已停止训练": "F0抽出で有効な結果が生成されなかったため、学習を停止しました。",
"没有可用于训练的有效音频,请先完成数据切分和特征提取": "学習に使用できる有効な音声がありません。先にデータ前処理と特徴抽出を完了してください。", "没有可用于训练的有效音频,请先完成数据切分和特征提取": "学習に使用できる有効な音声がありません。先にデータ前処理と特徴抽出を完了してください。",
"已完成阶段": "完了した段階", "已完成阶段": "完了した段階",
"已成功": "成功", "已成功": "成功",
"刷新音色列表": "音色リストを更新", "刷新音色列表": "音色リストを更新",
"特征检索库文件路径(选择模型后自动匹配,可手动修改)": "特徴インデックスのパス(モデル選択後に自動照合、手動編集可)", "特征检索库文件路径(选择模型后自动匹配,可手动修改)": "特徴インデックスのパス(モデル選択後に自動照合、手動編集可)",
"[索引训练] 外部索引链接已存在:%s": "[インデックス学習] 外部インデックスリンクは既に存在します:%s", "[索引训练] 外部索引链接已存在:%s": "[インデックス学習] 外部インデックスリンクは既に存在します:%s",
"[索引训练][跳过] added索引已存在%s": "[インデックス学習][スキップ] addedインデックスは既に存在します%s", "[索引训练][跳过] added索引已存在%s": "[インデックス学習][スキップ] addedインデックスは既に存在します%s",
"[索引训练][跳过] trained索引已存在%s": "[インデックス学習][スキップ] trainedインデックスは既に存在します%s", "[索引训练][跳过] trained索引已存在%s": "[インデックス学習][スキップ] trainedインデックスは既に存在します%s",
"当前设备:%s | 推理精度:%s": "現在のデバイス:%s | 推論精度:%s", "当前设备:%s | 推理精度:%s": "現在のデバイス:%s | 推論精度:%s",
"正在预热CUDA Graph": "CUDA Graphをウォームアップしています", "正在预热CUDA Graph": "CUDA Graphをウォームアップしています",
"CUDA Graph预热完成": "CUDA Graphのウォームアップが完了しました" "CUDA Graph预热完成": "CUDA Graphのウォームアップが完了しました",
} "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s": "データ抽出開始start_time=%.6f、要求並列数=%s、実並列上限=%s",
"数据提取结束end_time=%.6f,总耗时=%.3f秒": "データ抽出完了end_time=%.6f、合計所要時間=%.3f秒"
}

View File

@@ -1,263 +1,265 @@
{ {
"人声提取激进程度": "보컬 추출 강도", "人声提取激进程度": "보컬 추출 강도",
"%s → 成功": "%s → 성공", "%s → 成功": "%s → 성공",
"%s运行中请先停止该任务": "%s이(가) 실행 중입니다. 먼저 중지하세요", "%s运行中请先停止该任务": "%s이(가) 실행 중입니다. 먼저 중지하세요",
"%s进程已终止": "%s 프로세스가 종료되었습니다", "%s进程已终止": "%s 프로세스가 종료되었습니다",
"====> 轮次:{} {}": "====> 에포크: {} {}", "====> 轮次:{} {}": "====> 에포크: {} {}",
"A模型权重": "A 모델 가중치", "A模型权重": "A 모델 가중치",
"A模型路径": "A 모델 경로", "A模型路径": "A 모델 경로",
"B模型路径": "B 모델 경로", "B模型路径": "B 모델 경로",
"CUDA可用%s": "CUDA 사용 가능: %s", "CUDA可用%s": "CUDA 사용 가능: %s",
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src", "E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src",
"F0与HuBERT特征提取": "F0 및 HuBERT 특징 추출", "F0与HuBERT特征提取": "F0 및 HuBERT 특징 추출",
"F0提取": "F0 추출", "F0提取": "F0 추출",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0 곡선 파일, 선택적, 한 줄에 하나의 피치, 기본 F0 및 음높이 조절 대체", "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0 곡선 파일, 선택적, 한 줄에 하나의 피치, 기본 F0 및 음높이 조절 대체",
"HuBERT特征": "HuBERT 특징", "HuBERT特征": "HuBERT 특징",
"Index Rate": "인덱스 비율", "Index Rate": "인덱스 비율",
"RVC模型路径": "RVC 모델 경로", "RVC模型路径": "RVC 모델 경로",
"SOLA偏移%d": "SOLA 오프셋: %d", "SOLA偏移%d": "SOLA 오프셋: %d",
"[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0 추출] 완료 | 성공: %s | 건너뜀: %s | 실패: %s", "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0 추출] 완료 | 성공: %s | 건너뜀: %s | 실패: %s",
"[F0提取] 待处理:%s": "[F0 추출] Pending: %s", "[F0提取] 待处理:%s": "[F0 추출] Pending: %s",
"[F0提取] 无待处理音频,已全部跳过": "[F0 추출] 처리할 오디오가 없으며 모든 파일을 건너뛰었습니다", "[F0提取] 无待处理音频,已全部跳过": "[F0 추출] 처리할 오디오가 없으며 모든 파일을 건너뛰었습니다",
"[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0 추출] 진행률: %s/%s | 성공: %s | 건너뜀: %s | %s", "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0 추출] 진행률: %s/%s | 성공: %s | 건너뜀: %s | %s",
"[F0提取][失败] %s": "[F0 추출][실패] %s", "[F0提取][失败] %s": "[F0 추출][실패] %s",
"[F0提取][失败] %s\n%s": "[F0 추출][실패] %s\n%s", "[F0提取][失败] %s\n%s": "[F0 추출][실패] %s\n%s",
"[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT 특징] 완료 | 성공: %s | 건너뜀: %s | 실패: %s", "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT 특징] 완료 | 성공: %s | 건너뜀: %s | 실패: %s",
"[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT 특징] 처리할 오디오 없음, 건너뜀: %s", "[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT 특징] 처리할 오디오 없음, 건너뜀: %s",
"[HuBERT特征] 正在加载模型:%s": "[HuBERT 특징] 모델 불러오는 중: %s", "[HuBERT特征] 正在加载模型:%s": "[HuBERT 특징] 모델 불러오는 중: %s",
"[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT 특징] 장치: %s | Pending: %s | 건너뜀: %s", "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT 특징] 장치: %s | Pending: %s | 건너뜀: %s",
"[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT 특징] 진행률: %s/%s | 성공: %s | 실패: %s | %s | %s", "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT 특징] 진행률: %s/%s | 성공: %s | 실패: %s | %s | %s",
"[HuBERT特征][失败] %s\n%s": "[HuBERT 특징][실패] %s\n%s", "[HuBERT特征][失败] %s\n%s": "[HuBERT 특징][실패] %s\n%s",
"[HuBERT特征][失败] %s 包含NaN": "[HuBERT 특징][실패] %s contains NaN values", "[HuBERT特征][失败] %s 包含NaN": "[HuBERT 특징][실패] %s contains NaN values",
"[HuBERT特征][失败] 模型不存在:%s": "[HuBERT 특징][실패] 모델 not found: %s", "[HuBERT特征][失败] 模型不存在:%s": "[HuBERT 특징][실패] 모델 not found: %s",
"[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[데이터 분할] 하위 작업 완료 | 성공: %s | 실패: %s", "[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[데이터 분할] 하위 작업 완료 | 성공: %s | 실패: %s",
"[数据切分] 完成": "[데이터 분할] 완료", "[数据切分] 完成": "[데이터 분할] 완료",
"[数据切分] 开始": "[데이터 분할] 시작", "[数据切分] 开始": "[데이터 분할] 시작",
"[数据切分] 待处理:%s | 进程数:%s": "[데이터 분할] Pending: %s | 프로세스 수: %s", "[数据切分] 待处理:%s | 进程数:%s": "[데이터 분할] Pending: %s | 프로세스 수: %s",
"[数据切分] 进度:%s/%s | %s": "[데이터 분할] 진행률: %s/%s | %s", "[数据切分] 进度:%s/%s | %s": "[데이터 분할] 진행률: %s/%s | %s",
"[数据切分][失败] %s": "[데이터 분할][실패] %s", "[数据切分][失败] %s": "[데이터 분할][실패] %s",
"[数据切分][失败] %s\n%s": "[데이터 분할][실패] %s\n%s", "[数据切分][失败] %s\n%s": "[데이터 분할][실패] %s\n%s",
"[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[데이터 분할][건너뜀] 잘못되었거나 비정상적인 오디오 구간: %s_%s | 피크: %s", "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[데이터 분할][건너뜀] 잘못되었거나 비정상적인 오디오 구간: %s_%s | 피크: %s",
"[索引训练] 写入进度:%s/%s": "[인덱스 학습] 쓰기 진행률: %s/%s", "[索引训练] 写入进度:%s/%s": "[인덱스 학습] 쓰기 진행률: %s/%s",
"[索引训练] 已链接索引到外部目录:%s": "[인덱스 학습] 인덱스를 외부 폴더에 연결했습니다: %s", "[索引训练] 已链接索引到外部目录:%s": "[인덱스 학습] 인덱스를 외부 폴더에 연결했습니다: %s",
"[索引训练] 成功构建索引:%s": "[인덱스 학습] 인덱스를 성공적으로 생성했습니다: %s", "[索引训练] 成功构建索引:%s": "[인덱스 학습] 인덱스를 성공적으로 생성했습니다: %s",
"[索引训练] 正在写入特征向量": "[인덱스 학습] 특징 벡터 추가 중", "[索引训练] 正在写入特征向量": "[인덱스 학습] 특징 벡터 추가 중",
"[索引训练] 正在将%s条特征聚类为10000个中心": "[인덱스 학습] Clustering %s feature vectors into 10,000 centers", "[索引训练] 正在将%s条特征聚类为10000个中心": "[인덱스 학습] Clustering %s feature vectors into 10,000 centers",
"[索引训练] 正在训练索引": "[인덱스 학습] 인덱스 학습 중", "[索引训练] 正在训练索引": "[인덱스 학습] 인덱스 학습 중",
"[索引训练] 特征形状:%s | IVF数量%s": "[인덱스 학습] 특징 형태: %s | IVF 수: %s", "[索引训练] 特征形状:%s | IVF数量%s": "[인덱스 학습] 특징 형태: %s | IVF 수: %s",
"[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[인덱스 학습][실패] 인덱스를 외부 폴더에 연결하지 못했습니다: %s\n%s", "[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[인덱스 학습][실패] 인덱스를 외부 폴더에 연결하지 못했습니다: %s\n%s",
"[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[인덱스 학습][실패] 클러스터링에 실패하여 원본 특징으로 계속합니다\n%s", "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[인덱스 학습][실패] 클러스터링에 실패하여 원본 특징으로 계속합니다\n%s",
"[索引训练][失败] 请先进行特征提取": "[인덱스 학습][실패] 먼저 특징을 추출하세요", "[索引训练][失败] 请先进行特征提取": "[인덱스 학습][실패] 먼저 특징을 추출하세요",
"ckpt处理": "ckpt 처리", "ckpt处理": "ckpt 처리",
"index文件路径不可包含中文": "index 파일 경로는 중국어를 포함할 수 없음", "index文件路径不可包含中文": "index 파일 경로는 중국어를 포함할 수 없음",
"pth文件路径不可包含中文": "pth 파일 경로는 중국어를 포함할 수 없음", "pth文件路径不可包含中文": "pth 파일 경로는 중국어를 포함할 수 없음",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe 카드 번호 설정: -로 구분된 입력 사용 카드 번호, 예: 0-0-1은 카드 0에서 2개 프로세스, 카드 1에서 1개 프로세스 실행", "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe 카드 번호 설정: -로 구분된 입력 사용 카드 번호, 예: 0-0-1은 카드 0에서 2개 프로세스, 카드 1에서 1개 프로세스 실행",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1: 실험 구성 작성. 실험 데이터는 logs에 저장, 각 실험은 하나의 폴더, 수동으로 실험 이름 경로 입력 필요, 실험 구성, 로그, 훈련된 모델 파일 포함.", "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1: 실험 구성 작성. 실험 데이터는 logs에 저장, 각 실험은 하나의 폴더, 수동으로 실험 이름 경로 입력 필요, 실험 구성, 로그, 훈련된 모델 파일 포함.",
"step1:正在处理数据": "step1: 데이터 처리 중", "step1:正在处理数据": "step1: 데이터 처리 중",
"step2:正在提取音高&正在提取特征": "step2: 음높이 추출 & 특징 추출 중", "step2:正在提取音高&正在提取特征": "step2: 음높이 추출 & 특징 추출 중",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a: 훈련 폴더 아래 모든 오디오로 디코딩 가능한 파일을 자동 순회하며 슬라이스 정규화 진행, 실험 디렉토리 아래 2개의 wav 폴더 생성; 현재 단일 사용자 훈련만 지원.", "step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a: 훈련 폴더 아래 모든 오디오로 디코딩 가능한 파일을 자동 순회하며 슬라이스 정규화 진행, 실험 디렉토리 아래 2개의 wav 폴더 생성; 현재 단일 사용자 훈련만 지원.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "step2b: CPU를 사용하여 음높이 추출(모델이 음높이 포함 시), GPU를 사용하여 특징 추출(카드 번호 선택)", "step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "step2b: CPU를 사용하여 음높이 추출(모델이 음높이 포함 시), GPU를 사용하여 특징 추출(카드 번호 선택)",
"step3: 填写训练设置, 开始训练模型和索引": "step3: 훈련 설정 작성, 모델 및 인덱스 훈련 시작", "step3: 填写训练设置, 开始训练模型和索引": "step3: 훈련 설정 작성, 모델 및 인덱스 훈련 시작",
"step3a:正在训练模型": "step3a: 모델 훈련 중", "step3a:正在训练模型": "step3a: 모델 훈련 중",
"step3b:正在训练索引": "3b단계: 인덱스 학습 중", "step3b:正在训练索引": "3b단계: 인덱스 학습 중",
"……仅显示最近10条失败记录": "…최근 실패 10개만 표시합니다", "……仅显示最近10条失败记录": "…최근 실패 10개만 표시합니다",
"……已省略前%s行仅显示最新状态": "…앞의 %s줄을 생략하고 최신 상태만 표시합니다", "……已省略前%s行仅显示最新状态": "…앞의 %s줄을 생략하고 최신 상태만 표시합니다",
"一键训练": "원클릭 훈련", "一键训练": "원클릭 훈련",
"也可批量输入音频文件, 二选一, 优先读文件夹": "여러 오디오 파일을 일괄 입력할 수도 있음, 둘 중 하나 선택, 폴더 우선 읽기", "也可批量输入音频文件, 二选一, 优先读文件夹": "여러 오디오 파일을 일괄 입력할 수도 있음, 둘 중 하나 선택, 폴더 우선 읽기",
"人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "UVR5 모델을 사용하여 보컬과 반주를 일괄 분리합니다.<br>보컬 보존 모델을 선택하거나 DeEcho/DeReverb 모델로 에코와 잔향을 제거할 수 있습니다.", "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "UVR5 모델을 사용하여 보컬과 반주를 일괄 분리합니다.<br>보컬 보존 모델을 선택하거나 DeEcho/DeReverb 모델로 에코와 잔향을 제거할 수 있습니다.",
"仅支持pm和rmvpe音高提取算法": "피치 추출 방식은 pm과 rmvpe만 지원합니다", "仅支持pm和rmvpe音高提取算法": "피치 추출 방식은 pm과 rmvpe만 지원합니다",
"从训练检查点提取的模型": "학습 체크포인트에서 추출한 모델", "从训练检查点提取的模型": "학습 체크포인트에서 추출한 모델",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "-로 구분하여 입력하는 카드 번호, 예: 0-1-2는 카드 0, 카드 1, 카드 2 사용", "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "-로 구분하여 입력하는 카드 번호, 예: 0-1-2는 카드 0, 카드 1, 카드 2 사용",
"任务": "작업", "任务": "작업",
"伴奏人声分离&去混响&去回声": "반주 인간 목소리 분리 & 혼효음 제거 & 에코 제거", "伴奏人声分离&去混响&去回声": "반주 인간 목소리 분리 & 혼효음 제거 & 에코 제거",
"使用显卡:%s": "사용 GPU: %s", "使用显卡:%s": "사용 GPU: %s",
"使用模型采样率": "모델 샘플링 레이트 사용", "使用模型采样率": "모델 샘플링 레이트 사용",
"使用设备采样率": "장치 샘플링 레이트 사용", "使用设备采样率": "장치 샘플링 레이트 사용",
"保存名": "저장 이름", "保存名": "저장 이름",
"保存的文件名, 默认空为和源文件同名": "저장될 파일명, 기본적으로 빈 공간은 원본 파일과 동일한 이름으로", "保存的文件名, 默认空为和源文件同名": "저장될 파일명, 기본적으로 빈 공간은 원본 파일과 동일한 이름으로",
"保存的模型名不带后缀": "저장된 모델명은 접미사 없음", "保存的模型名不带后缀": "저장된 모델명은 접미사 없음",
"保存频率save_every_epoch": "저장 빈도 save_every_epoch", "保存频率save_every_epoch": "저장 빈도 save_every_epoch",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "청자음과 호흡 소리를 보호, 전자음 찢김 등의 아티팩트 방지, 0.5까지 올려서 비활성화, 낮추면 보호 강도 증가하지만 인덱스 효과 감소 가능성 있음", "保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "청자음과 호흡 소리를 보호, 전자음 찢김 등의 아티팩트 방지, 0.5까지 올려서 비활성화, 낮추면 보호 강도 증가하지만 인덱스 효과 감소 가능성 있음",
"修改": "수정", "修改": "수정",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "모델 정보 수정(오직 weights 폴더 아래에서 추출된 작은 모델 파일만 지원)", "修改模型信息(仅支持weights文件夹下提取的小模型文件)": "모델 정보 수정(오직 weights 폴더 아래에서 추출된 작은 모델 파일만 지원)",
"停止一键训练": "원클릭 학습 중지", "停止一键训练": "원클릭 학습 중지",
"停止处理数据": "데이터 전처리 중지", "停止处理数据": "데이터 전처리 중지",
"停止特征提取": "특징 추출 중지", "停止特征提取": "특징 추출 중지",
"停止训练模型": "모델 학습 중지", "停止训练模型": "모델 학습 중지",
"停止训练索引": "인덱스 학습 중지", "停止训练索引": "인덱스 학습 중지",
"停止音频转换": "오디오 변환 중지", "停止音频转换": "오디오 변환 중지",
"全流程结束!": "전체 과정 완료!", "全流程结束!": "전체 과정 완료!",
"判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth", "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth",
"加载模型": "모델 로드", "加载模型": "모델 로드",
"加载预训练底模D路径": "미리 훈련된 베이스 모델 D 경로 로드", "加载预训练底模D路径": "미리 훈련된 베이스 모델 D 경로 로드",
"加载预训练底模G路径": "미리 훈련된 베이스 모델 G 경로 로드", "加载预训练底模G路径": "미리 훈련된 베이스 모델 G 경로 로드",
"单次推理": "단일 추론", "单次推理": "단일 추론",
"卸载音色省显存": "음색 언로드로 디스플레이 메모리 절약", "卸载音色省显存": "음색 언로드로 디스플레이 메모리 절약",
"变调(整数, 半音数量, 升八度12降八度-12)": "키 변경(정수, 반음 수, 옥타브 상승 12, 옥타브 하강 -12)", "变调(整数, 半音数量, 升八度12降八度-12)": "키 변경(정수, 반음 수, 옥타브 상승 12, 옥타브 하강 -12)",
"合成": "합성", "合成": "합성",
"后处理重采样至最终采样率0为不进行重采样": "후처리 재샘플링을 최종 샘플링 레이트로, 0은 재샘플링하지 않음", "后处理重采样至最终采样率0为不进行重采样": "후처리 재샘플링을 최종 샘플링 레이트로, 0은 재샘플링하지 않음",
"否": "아니오", "否": "아니오",
"响应阈值": "응답 임계값", "响应阈值": "응답 임계값",
"响度因子": "음량 인자", "响度因子": "음량 인자",
"处理中": "처리 중", "处理中": "처리 중",
"处理数据": "데이터 처리", "处理数据": "데이터 처리",
"失败": "실패", "失败": "실패",
"失败记录": "실패 기록", "失败记录": "실패 기록",
"子进程执行失败,返回码:%s": "하위 프로세스가 종료 코드와 함께 실패했습니다: %s", "子进程执行失败,返回码:%s": "하위 프로세스가 종료 코드와 함께 실패했습니다: %s",
"导出文件格式": "내보낼 파일 형식", "导出文件格式": "내보낼 파일 형식",
"已停止": "중지됨", "已停止": "중지됨",
"已加载判别器预训练模型:%s": "판별기 사전 학습 모델을 불러왔습니다: %s", "已加载判别器预训练模型:%s": "판별기 사전 학습 모델을 불러왔습니다: %s",
"已加载生成器预训练模型:%s": "생성기 사전 학습 모델을 불러왔습니다: %s", "已加载生成器预训练模型:%s": "생성기 사전 학습 모델을 불러왔습니다: %s",
"已启用索引检索": "인덱스 검색 활성화됨", "已启用索引检索": "인덱스 검색 활성화됨",
"已完成": "완료", "已完成": "완료",
"已恢复判别器检查点": "판별기 체크포인트를 복원했습니다", "已恢复判别器检查点": "판별기 체크포인트를 복원했습니다",
"常见问题解答": "자주 묻는 질문", "常见问题解答": "자주 묻는 질문",
"常规设置": "일반 설정", "常规设置": "일반 설정",
"开始音频转换": "오디오 변환 시작", "开始音频转换": "오디오 변환 시작",
"当前": "현재", "当前": "현재",
"当前阶段": "현재 단계", "当前阶段": "현재 단계",
"很遗憾您这没有能用的显卡来支持您训练": "사용 가능한 그래픽 카드가 없어 훈련을 지원할 수 없습니다", "很遗憾您这没有能用的显卡来支持您训练": "사용 가능한 그래픽 카드가 없어 훈련을 지원할 수 없습니다",
"性别因子/声线粗细": "성별 계수 / 음색 굵기", "性别因子/声线粗细": "성별 계수 / 음색 굵기",
"性能设置": "성능 설정", "性能设置": "성능 설정",
"总训练轮数total_epoch": "총 훈련 라운드 수 total_epoch", "总训练轮数total_epoch": "총 훈련 라운드 수 total_epoch",
"成功": "성공", "成功": "성공",
"执行命令": "실행 명령", "执行命令": "실행 명령",
"批量推理": "일괄 추론", "批量推理": "일괄 추론",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "일괄 변환, 변환할 오디오 파일 폴더 입력 또는 여러 오디오 파일 업로드, 지정된 폴더(기본값 opt)에 변환된 오디오 출력.", "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "일괄 변환, 변환할 오디오 파일 폴더 입력 또는 여러 오디오 파일 업로드, 지정된 폴더(기본값 opt)에 변환된 오디오 출력.",
"拖拽或点击上传待处理音频": "처리할 오디오를 끌어다 놓거나 클릭하여 업로드", "拖拽或点击上传待处理音频": "처리할 오디오를 끌어다 놓거나 클릭하여 업로드",
"指定输出主人声文件夹": "주된 목소리 출력 폴더 지정", "指定输出主人声文件夹": "주된 목소리 출력 폴더 지정",
"指定输出文件夹": "출력 파일 폴더 지정", "指定输出文件夹": "출력 파일 폴더 지정",
"指定输出非主人声文件夹": "주된 목소리가 아닌 출력 폴더 지정", "指定输出非主人声文件夹": "주된 목소리가 아닌 출력 폴더 지정",
"推理时间(ms):": "추론 시간(ms):", "推理时间(ms):": "추론 시간(ms):",
"推理耗时:%.2f秒": "추론 시간: %.2f seconds", "推理耗时:%.2f秒": "추론 시간: %.2f seconds",
"推理音色": "추론 음색", "推理音色": "추론 음색",
"提取": "추출", "提取": "추출",
"提取音高和处理数据使用的CPU进程数": "음높이 추출 및 데이터 처리에 사용되는 CPU 프로세스 수", "提取音高和处理数据使用的CPU进程数": "음높이 추출 및 데이터 처리에 사용되는 CPU 프로세스 수",
"数据切分": "데이터 분할", "数据切分": "데이터 분할",
"无法停止": "중지할 수 없음", "无法停止": "중지할 수 없음",
"无法读取音频:%s": "오디오를 읽지 못했습니다: %s", "无法读取音频:%s": "오디오를 읽지 못했습니다: %s",
"是": "예", "是": "예",
"是否仅保存最新的ckpt文件以节省硬盘空间": "디스크 공간을 절약하기 위해 최신 ckpt 파일만 저장할지 여부", "是否仅保存最新的ckpt文件以节省硬盘空间": "디스크 공간을 절약하기 위해 최신 ckpt 파일만 저장할지 여부",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "저장 시마다 최종 소형 모델을 weights 폴더에 저장할지 여부", "是否在每次保存时间点将最终小模型保存至weights文件夹": "저장 시마다 최종 소형 모델을 weights 폴더에 저장할지 여부",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "모든 훈련 세트를 VRAM에 캐시할지 여부. 10분 미만의 소량 데이터는 캐시하여 훈련 속도를 높일 수 있지만, 대량 데이터 캐시는 VRAM을 과부하시키고 속도를 크게 향상시키지 못함", "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "모든 훈련 세트를 VRAM에 캐시할지 여부. 10분 미만의 소량 데이터는 캐시하여 훈련 속도를 높일 수 있지만, 대량 데이터 캐시는 VRAM을 과부하시키고 속도를 크게 향상시키지 못함",
"显卡信息": "그래픽 카드 정보", "显卡信息": "그래픽 카드 정보",
"未使用": "사용 안 함", "未使用": "사용 안 함",
"未使用判别器预训练模型": "판별기 사전 학습 모델을 사용하지 않음", "未使用判别器预训练模型": "판별기 사전 학습 모델을 사용하지 않음",
"未使用生成器预训练模型": "생성기 사전 학습 모델을 사용하지 않음", "未使用生成器预训练模型": "생성기 사전 학습 모델을 사용하지 않음",
"未找到Roformer模型配置文件正在使用内置默认配置": "Roformer 모델 설정을 찾지 못해 내장 기본값을 사용합니다", "未找到Roformer模型配置文件正在使用内置默认配置": "Roformer 모델 설정을 찾지 못해 내장 기본값을 사용합니다",
"未检测到可用显卡将使用CPU训练耗时可能较长": "지원되는 GPU가 감지되지 않았습니다. CPU 학습은 훨씬 오래 걸릴 수 있습니다", "未检测到可用显卡将使用CPU训练耗时可能较长": "지원되는 GPU가 감지되지 않았습니다. CPU 학습은 훨씬 오래 걸릴 수 있습니다",
"未运行": "실행 안 됨", "未运行": "실행 안 됨",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "이 소프트웨어는 MIT 라이선스로 공개되며, 저자는 소프트웨어에 대해 어떠한 통제권도 가지지 않습니다. 모든 귀책사유는 소프트웨어 사용자 및 소프트웨어에서 생성된 결과물을 사용하는 당사자에게 있습니다. <br>해당 조항을 인정하지 않는 경우, 소프트웨어 패키지의 어떠한 코드나 파일도 사용하거나 인용할 수 없습니다. 자세한 내용은 루트 디렉토리의 <b>LICENSE</b>를 참조하세요.", "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "이 소프트웨어는 MIT 라이선스로 공개되며, 저자는 소프트웨어에 대해 어떠한 통제권도 가지지 않습니다. 모든 귀책사유는 소프트웨어 사용자 및 소프트웨어에서 생성된 결과물을 사용하는 당사자에게 있습니다. <br>해당 조항을 인정하지 않는 경우, 소프트웨어 패키지의 어떠한 코드나 파일도 사용하거나 인용할 수 없습니다. 자세한 내용은 루트 디렉토리의 <b>LICENSE</b>를 참조하세요.",
"查看": "보기", "查看": "보기",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "모델 정보 보기(오직 weights 폴더에서 추출된 소형 모델 파일만 지원)", "查看模型信息(仅支持weights文件夹下提取的小模型文件)": "모델 정보 보기(오직 weights 폴더에서 추출된 소형 모델 파일만 지원)",
"检测到模型类型:%s": "감지된 모델 유형: %s", "检测到模型类型:%s": "감지된 모델 유형: %s",
"检索特征占比": "검색 특징 비율", "检索特征占比": "검색 특징 비율",
"模型": "모델", "模型": "모델",
"模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "모델 정보: %s\n샘플링 레이트: %s\n피치 가이드: %s\n버전: %s", "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "모델 정보: %s\n샘플링 레이트: %s\n피치 가이드: %s\n버전: %s",
"模型推理": "모델 추론", "模型推理": "모델 추론",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "모델 추출(logs 폴더 아래의 큰 파일 모델 경로 입력), 훈련 중간에 중단한 모델의 자동 추출 및 소형 파일 모델 저장이 안 되거나 중간 모델을 테스트하고 싶은 경우에 적합", "模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "모델 추출(logs 폴더 아래의 큰 파일 모델 경로 입력), 훈련 중간에 중단한 모델의 자동 추출 및 소형 파일 모델 저장이 안 되거나 중간 모델을 테스트하고 싶은 경우에 적합",
"模型是否带音高指导": "모델이 음높이 지도를 포함하는지 여부", "模型是否带音高指导": "모델이 음높이 지도를 포함하는지 여부",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "모델이 음높이 지도를 포함하는지 여부(노래에는 반드시 필요, 음성에는 필요 없음)", "模型是否带音高指导(唱歌一定要, 语音可以不要)": "모델이 음높이 지도를 포함하는지 여부(노래에는 반드시 필요, 음성에는 필요 없음)",
"模型是否带音高指导,1是0否": "모델이 음높이 지도를 포함하는지 여부, 1은 예, 0은 아니오", "模型是否带音高指导,1是0否": "모델이 음높이 지도를 포함하는지 여부, 1은 예, 0은 아니오",
"模型版本型号": "모델 버전 및 모델", "模型版本型号": "모델 버전 및 모델",
"模型融合, 可用于测试音色融合": "모델 융합, 음색 융합 테스트에 사용 가능", "模型融合, 可用于测试音色融合": "모델 융합, 음색 융합 테스트에 사용 가능",
"模型融合失败:两个模型的结构不一致": "두 모델의 구조가 일치하지 않아 모델 병합에 실패했습니다", "模型融合失败:两个模型的结构不一致": "두 모델의 구조가 일치하지 않아 모델 병합에 실패했습니다",
"模型训练": "모델 학습", "模型训练": "모델 학습",
"模型路径": "모델 경로", "模型路径": "모델 경로",
"正在保存最终检查点:%s": "최종 체크포인트 저장 중: %s", "正在保存最终检查点:%s": "최종 체크포인트 저장 중: %s",
"正在保存检查点 %s_e%s%s": "체크포인트 저장 중 %s_e%s: %s", "正在保存检查点 %s_e%s%s": "체크포인트 저장 중 %s_e%s: %s",
"正在加载RMVPE模型": "RMVPE 모델 불러오는 중", "正在加载RMVPE模型": "RMVPE 모델 불러오는 중",
"正在加载模型": "모델 불러오는 중", "正在加载模型": "모델 불러오는 중",
"正在启动": "시작 중", "正在启动": "시작 중",
"正在收尾": "마무리 중", "正在收尾": "마무리 중",
"每张显卡的batch_size": "각 그래픽 카드의 batch_size", "每张显卡的batch_size": "각 그래픽 카드의 batch_size",
"淡入淡出长度": "페이드 인/아웃 길이", "淡入淡出长度": "페이드 인/아웃 길이",
"清理模型缓存": "모델 캐시 정리 중", "清理模型缓存": "모델 캐시 정리 중",
"版本": "버전", "版本": "버전",
"特征": "특징", "特征": "특징",
"特征提取": "특징 추출", "特征提取": "특징 추출",
"状态": "상태", "状态": "상태",
"独占 WASAPI 设备": "WASAPI 독점 장치", "独占 WASAPI 设备": "WASAPI 독점 장치",
"生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth", "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "남성에서 여성으로 변경 시 +12 키 권장, 여성에서 남성으로 변경 시 -12 키 권장, 음역대 폭발로 음색이 왜곡되면 적절한 음역대로 조정 가능.", "男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "남성에서 여성으로 변경 시 +12 키 권장, 여성에서 남성으로 변경 시 -12 키 권장, 음역대 폭발로 음색이 왜곡되면 적절한 음역대로 조정 가능.",
"目标采样率": "목표 샘플링률", "目标采样率": "목표 샘플링률",
"等待中": "대기 중", "等待中": "대기 중",
"等待输入": "입력 대기 중", "等待输入": "입력 대기 중",
"算法延迟(ms):": "알고리즘 지연(ms):", "算法延迟(ms):": "알고리즘 지연(ms):",
"索引": "인덱스", "索引": "인덱스",
"索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "잘못된 인덱스입니다. 다음을 사용하세요: added_xxxx.index, not trained_xxxx.index", "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "잘못된 인덱스입니다. 다음을 사용하세요: added_xxxx.index, not trained_xxxx.index",
"索引检索失败": "인덱스 검색 실패", "索引检索失败": "인덱스 검색 실패",
"索引检索失败或未启用": "인덱스 검색 실패 또는 비활성화됨", "索引检索失败或未启用": "인덱스 검색 실패 또는 비활성화됨",
"索引训练": "인덱스 학습", "索引训练": "인덱스 학습",
"耗时": "소요 시간", "耗时": "소요 시간",
"耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "소요 시간: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs", "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "소요 시간: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs",
"融合": "융합", "融合": "융합",
"要改的模型信息": "변경할 모델 정보", "要改的模型信息": "변경할 모델 정보",
"要置入的模型信息": "삽입할 모델 정보", "要置入的模型信息": "삽입할 모델 정보",
"训练": "훈련", "训练": "훈련",
"训练已完成,正在保存最终模型": "학습 완료, 최종 모델을 저장합니다", "训练已完成,正在保存最终模型": "학습 완료, 최종 모델을 저장합니다",
"训练文件列表写入完成": "학습 파일 목록 저장 완료", "训练文件列表写入完成": "학습 파일 목록 저장 완료",
"训练模型": "모델 훈련", "训练模型": "모델 훈련",
"训练特征索引": "특징 인덱스 훈련", "训练特征索引": "특징 인덱스 훈련",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "훈련 완료, 콘솔 훈련 로그 또는 실험 폴더 내의 train.log 확인 가능", "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "훈련 완료, 콘솔 훈련 로그 또는 실험 폴더 내의 train.log 확인 가능",
"训练设备规则选择的精度:%s": "장치 규칙에 따라 선택한 학습 정밀도: %s", "训练设备规则选择的精度:%s": "장치 규칙에 따라 선택한 학습 정밀도: %s",
"训练轮次:{} [{:.0f}%]": "학습 에포크: {} [{:.0f}%]", "训练轮次:{} [{:.0f}%]": "학습 에포크: {} [{:.0f}%]",
"设备类型": "장치 유형", "设备类型": "장치 유형",
"请上传音频文件": "오디오 파일을 업로드하세요", "请上传音频文件": "오디오 파일을 업로드하세요",
"请填写输出文件夹路径": "출력 폴더 경로를 입력하세요", "请填写输出文件夹路径": "출력 폴더 경로를 입력하세요",
"请指定说话人id": "화자 ID 지정 필요", "请指定说话人id": "화자 ID 지정 필요",
"请选择index文件": "index 파일 선택", "请选择index文件": "index 파일 선택",
"请选择pth文件": "pth 파일 선택", "请选择pth文件": "pth 파일 선택",
"请选择说话人id": "화자 ID 선택", "请选择说话人id": "화자 ID 선택",
"转换": "변환", "转换": "변환",
"输入实验名": "실험명 입력", "输入实验名": "실험명 입력",
"输入待处理音频文件夹路径": "처리할 오디오 파일 폴더 경로 입력", "输入待处理音频文件夹路径": "처리할 오디오 파일 폴더 경로 입력",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "처리할 오디오 파일 폴더 경로 입력(파일 탐색기 주소 표시줄에서 복사)", "输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "처리할 오디오 파일 폴더 경로 입력(파일 탐색기 주소 표시줄에서 복사)",
"输入待处理音频文件路径(默认是正确格式示例)": "처리할 오디오 파일 경로 입력(기본적으로 올바른 형식 예시)", "输入待处理音频文件路径(默认是正确格式示例)": "처리할 오디오 파일 경로 입력(기본적으로 올바른 형식 예시)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "입력 소스 볼륨 엔벨로프와 출력 볼륨 엔벨로프의 결합 비율 입력, 1에 가까울수록 출력 엔벨로프 사용", "输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "입력 소스 볼륨 엔벨로프와 출력 볼륨 엔벨로프의 결합 비율 입력, 1에 가까울수록 출력 엔벨로프 사용",
"输入监听": "입력 모니터링", "输入监听": "입력 모니터링",
"输入训练文件夹路径": "훈련 파일 폴더 경로 입력", "输入训练文件夹路径": "훈련 파일 폴더 경로 입력",
"输入设备": "입력 장치", "输入设备": "입력 장치",
"输入设备:%s:%s": "입력 장치: %s:%s", "输入设备:%s:%s": "입력 장치: %s:%s",
"输入降噪": "입력 노이즈 감소", "输入降噪": "입력 노이즈 감소",
"输出信息": "출력 정보", "输出信息": "출력 정보",
"输出变声": "출력 음성 변환", "输出变声": "출력 음성 변환",
"输出设备": "출력 장치", "输出设备": "출력 장치",
"输出设备:%s:%s": "출력 장치: %s:%s", "输出设备:%s:%s": "출력 장치: %s:%s",
"输出降噪": "출력 노이즈 감소", "输出降噪": "출력 노이즈 감소",
"输出音频(右下角三个点,点了可以下载)": "출력 오디오(오른쪽 하단 세 개의 점, 클릭하면 다운로드 가능)", "输出音频(右下角三个点,点了可以下载)": "출력 오디오(오른쪽 하단 세 개의 점, 클릭하면 다운로드 가능)",
"运行中": "실행 중", "运行中": "실행 중",
"进度": "진행률", "进度": "진행률",
"选择.index文件": ".index 파일 선택", "选择.index文件": ".index 파일 선택",
"选择.pth文件": ".pth 파일 선택", "选择.pth文件": ".pth 파일 선택",
"选择模型": "모델 선택", "选择模型": "모델 선택",
"选择索引": "인덱스 선택", "选择索引": "인덱스 선택",
"选择音高提取算法": "피치 추출 알고리즘 선택", "选择音高提取算法": "피치 추출 알고리즘 선택",
"采样率:": "샘플링 레이트:", "采样率:": "샘플링 레이트:",
"采样长度": "샘플링 길이", "采样长度": "샘플링 길이",
"重载设备列表": "장치 목록 재로드", "重载设备列表": "장치 목록 재로드",
"错误信息:%s": "오류 정보: %s", "错误信息:%s": "오류 정보: %s",
"错误:未知模型:%s": "오류: 알 수 없는 모델: %s", "错误:未知模型:%s": "오류: 알 수 없는 모델: %s",
"音调设置": "음조 설정", "音调设置": "음조 설정",
"音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "오디오가 다채널이지만 모델은 모노이므로 모든 채널의 평균을 사용합니다", "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "오디오가 다채널이지만 모델은 모노이므로 모든 채널의 평균을 사용합니다",
"音频设备": "오디오 장치", "音频设备": "오디오 장치",
"音高全部为0该音频无意义跳过%s": "모든 피치 값이 0이므로 이 오디오는 무의미하여 건너뜁니다: %s", "音高全部为0该音频无意义跳过%s": "모든 피치 값이 0이므로 이 오디오는 무의미하여 건너뜁니다: %s",
"音高算法": "피치 알고리즘", "音高算法": "피치 알고리즘",
"额外推理时长": "추가 추론 시간", "额外推理时长": "추가 추론 시간",
"数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "데이터 전처리에서 유효한 학습 오디오가 생성되지 않았습니다. 데이터셋과 전처리 로그를 확인하세요.", "数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "데이터 전처리에서 유효한 학습 오디오가 생성되지 않았습니다. 데이터셋과 전처리 로그를 확인하세요.",
"数据切分没有生成16k音频已停止后续特征提取和训练": "데이터 전처리에서 16 kHz 오디오가 생성되지 않아 특징 추출과 학습을 중지했습니다.", "数据切分没有生成16k音频已停止后续特征提取和训练": "데이터 전처리에서 16 kHz 오디오가 생성되지 않아 특징 추출과 학습을 중지했습니다.",
"数据切分输出文件不匹配,已停止后续特征提取和训练": "데이터 전처리 출력 파일이 일치하지 않아 특징 추출과 학습을 중지했습니다.", "数据切分输出文件不匹配,已停止后续特征提取和训练": "데이터 전처리 출력 파일이 일치하지 않아 특징 추출과 학습을 중지했습니다.",
"HuBERT特征提取没有生成有效结果已停止训练": "HuBERT 특징 추출에서 유효한 결과가 생성되지 않아 학습을 중지했습니다.", "HuBERT特征提取没有生成有效结果已停止训练": "HuBERT 특징 추출에서 유효한 결과가 생성되지 않아 학습을 중지했습니다.",
"F0提取没有生成有效结果已停止训练": "F0 추출에서 유효한 결과가 생성되지 않아 학습을 중지했습니다.", "F0提取没有生成有效结果已停止训练": "F0 추출에서 유효한 결과가 생성되지 않아 학습을 중지했습니다.",
"没有可用于训练的有效音频,请先完成数据切分和特征提取": "학습에 사용할 유효한 오디오가 없습니다. 먼저 데이터 전처리와 특징 추출을 완료하세요.", "没有可用于训练的有效音频,请先完成数据切分和特征提取": "학습에 사용할 유효한 오디오가 없습니다. 먼저 데이터 전처리와 특징 추출을 완료하세요.",
"已完成阶段": "완료된 단계", "已完成阶段": "완료된 단계",
"已成功": "성공", "已成功": "성공",
"刷新音色列表": "음색 목록 새로고침", "刷新音色列表": "음색 목록 새로고침",
"特征检索库文件路径(选择模型后自动匹配,可手动修改)": "특징 인덱스 경로(모델 선택 후 자동 매칭, 수동 수정 가능)", "特征检索库文件路径(选择模型后自动匹配,可手动修改)": "특징 인덱스 경로(모델 선택 후 자동 매칭, 수동 수정 가능)",
"[索引训练] 外部索引链接已存在:%s": "[인덱스 학습] 외부 인덱스 링크가 이미 있습니다: %s", "[索引训练] 外部索引链接已存在:%s": "[인덱스 학습] 외부 인덱스 링크가 이미 있습니다: %s",
"[索引训练][跳过] added索引已存在%s": "[인덱스 학습][건너뜀] added 인덱스가 이미 있습니다: %s", "[索引训练][跳过] added索引已存在%s": "[인덱스 학습][건너뜀] added 인덱스가 이미 있습니다: %s",
"[索引训练][跳过] trained索引已存在%s": "[인덱스 학습][건너뜀] trained 인덱스가 이미 있습니다: %s", "[索引训练][跳过] trained索引已存在%s": "[인덱스 학습][건너뜀] trained 인덱스가 이미 있습니다: %s",
"当前设备:%s | 推理精度:%s": "현재 장치: %s | 추론 정밀도: %s", "当前设备:%s | 推理精度:%s": "현재 장치: %s | 추론 정밀도: %s",
"正在预热CUDA Graph": "CUDA Graph 워밍업 중", "正在预热CUDA Graph": "CUDA Graph 워밍업 중",
"CUDA Graph预热完成": "CUDA Graph 워밍업 완료" "CUDA Graph预热完成": "CUDA Graph 워밍업 완료",
} "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s": "데이터 추출 시작: start_time=%.6f, 요청 병렬 수=%s, 실제 병렬 상한=%s",
"数据提取结束end_time=%.6f,总耗时=%.3f秒": "데이터 추출 완료: end_time=%.6f, 총 소요 시간=%.3f초"
}

View File

@@ -1,263 +1,265 @@
{ {
"人声提取激进程度": "Intensidade da extração vocal", "人声提取激进程度": "Intensidade da extração vocal",
"%s → 成功": "%s → Sucesso", "%s → 成功": "%s → Sucesso",
"%s运行中请先停止该任务": "%s está em execução; interrompa antes de iniciar outra tarefa", "%s运行中请先停止该任务": "%s está em execução; interrompa antes de iniciar outra tarefa",
"%s进程已终止": "O processo %s foi encerrado", "%s进程已终止": "O processo %s foi encerrado",
"====> 轮次:{} {}": "====> Época: {} {}", "====> 轮次:{} {}": "====> Época: {} {}",
"A模型权重": "Peso (w) para o modelo A:", "A模型权重": "Peso (w) para o modelo A:",
"A模型路径": "Caminho para o Modelo A:", "A模型路径": "Caminho para o Modelo A:",
"B模型路径": "Caminho para o Modelo B:", "B模型路径": "Caminho para o Modelo B:",
"CUDA可用%s": "CUDA disponível: %s", "CUDA可用%s": "CUDA disponível: %s",
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src", "E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src",
"F0与HuBERT特征提取": "Extração de F0 e recursos HuBERT", "F0与HuBERT特征提取": "Extração de F0 e recursos HuBERT",
"F0提取": "Extração F0", "F0提取": "Extração F0",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "Arquivo de curva F0 (opcional). Um arremesso por linha. Substitui a modulação padrão F0 e tom:", "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "Arquivo de curva F0 (opcional). Um arremesso por linha. Substitui a modulação padrão F0 e tom:",
"HuBERT特征": "Recursos HuBERT", "HuBERT特征": "Recursos HuBERT",
"Index Rate": "Taxa do Index", "Index Rate": "Taxa do Index",
"RVC模型路径": "Caminho do Modelo RVC:", "RVC模型路径": "Caminho do Modelo RVC:",
"SOLA偏移%d": "Deslocamento SOLA: %d", "SOLA偏移%d": "Deslocamento SOLA: %d",
"[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Extração F0] Concluído | Sucesso: %s | Ignorados: %s | Falha: %s", "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Extração F0] Concluído | Sucesso: %s | Ignorados: %s | Falha: %s",
"[F0提取] 待处理:%s": "[Extração F0] Pending: %s", "[F0提取] 待处理:%s": "[Extração F0] Pending: %s",
"[F0提取] 无待处理音频,已全部跳过": "[Extração F0] Nenhum áudio pendente; todos os arquivos foram ignorados", "[F0提取] 无待处理音频,已全部跳过": "[Extração F0] Nenhum áudio pendente; todos os arquivos foram ignorados",
"[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[Extração F0] Progresso: %s/%s | Sucesso: %s | Ignorados: %s | %s", "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[Extração F0] Progresso: %s/%s | Sucesso: %s | Ignorados: %s | %s",
"[F0提取][失败] %s": "[Extração F0][Falha] %s", "[F0提取][失败] %s": "[Extração F0][Falha] %s",
"[F0提取][失败] %s\n%s": "[Extração F0][Falha] %s\n%s", "[F0提取][失败] %s\n%s": "[Extração F0][Falha] %s\n%s",
"[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Recursos HuBERT] Concluído | Sucesso: %s | Ignorados: %s | Falha: %s", "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Recursos HuBERT] Concluído | Sucesso: %s | Ignorados: %s | Falha: %s",
"[HuBERT特征] 无待处理音频,已全部跳过:%s": "[Recursos HuBERT] Nenhum áudio pendente; ignorados: %s", "[HuBERT特征] 无待处理音频,已全部跳过:%s": "[Recursos HuBERT] Nenhum áudio pendente; ignorados: %s",
"[HuBERT特征] 正在加载模型:%s": "[Recursos HuBERT] Carregando o modelo: %s", "[HuBERT特征] 正在加载模型:%s": "[Recursos HuBERT] Carregando o modelo: %s",
"[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[Recursos HuBERT] Dispositivo: %s | Pending: %s | Ignorados: %s", "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[Recursos HuBERT] Dispositivo: %s | Pending: %s | Ignorados: %s",
"[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[Recursos HuBERT] Progresso: %s/%s | Sucesso: %s | Falha: %s | %s | %s", "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[Recursos HuBERT] Progresso: %s/%s | Sucesso: %s | Falha: %s | %s | %s",
"[HuBERT特征][失败] %s\n%s": "[Recursos HuBERT][Falha] %s\n%s", "[HuBERT特征][失败] %s\n%s": "[Recursos HuBERT][Falha] %s\n%s",
"[HuBERT特征][失败] %s 包含NaN": "[Recursos HuBERT][Falha] %s contains NaN values", "[HuBERT特征][失败] %s 包含NaN": "[Recursos HuBERT][Falha] %s contains NaN values",
"[HuBERT特征][失败] 模型不存在:%s": "[Recursos HuBERT][Falha] Modelo not found: %s", "[HuBERT特征][失败] 模型不存在:%s": "[Recursos HuBERT][Falha] Modelo not found: %s",
"[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[Divisão de dados] Subtarefa concluída | Sucesso: %s | Falha: %s", "[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[Divisão de dados] Subtarefa concluída | Sucesso: %s | Falha: %s",
"[数据切分] 完成": "[Divisão de dados] Concluído", "[数据切分] 完成": "[Divisão de dados] Concluído",
"[数据切分] 开始": "[Divisão de dados] Iniciado", "[数据切分] 开始": "[Divisão de dados] Iniciado",
"[数据切分] 待处理:%s | 进程数:%s": "[Divisão de dados] Pending: %s | Processos: %s", "[数据切分] 待处理:%s | 进程数:%s": "[Divisão de dados] Pending: %s | Processos: %s",
"[数据切分] 进度:%s/%s | %s": "[Divisão de dados] Progresso: %s/%s | %s", "[数据切分] 进度:%s/%s | %s": "[Divisão de dados] Progresso: %s/%s | %s",
"[数据切分][失败] %s": "[Divisão de dados][Falha] %s", "[数据切分][失败] %s": "[Divisão de dados][Falha] %s",
"[数据切分][失败] %s\n%s": "[Divisão de dados][Falha] %s\n%s", "[数据切分][失败] %s\n%s": "[Divisão de dados][Falha] %s\n%s",
"[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[Divisão de dados][Ignorados] Segmento de áudio inválido ou anormal: %s_%s | Pico: %s", "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[Divisão de dados][Ignorados] Segmento de áudio inválido ou anormal: %s_%s | Pico: %s",
"[索引训练] 写入进度:%s/%s": "[Treinamento do índice] Progressoo da gravação: %s/%s", "[索引训练] 写入进度:%s/%s": "[Treinamento do índice] Progressoo da gravação: %s/%s",
"[索引训练] 已链接索引到外部目录:%s": "[Treinamento do índice] Índice vinculado à pasta externa: %s", "[索引训练] 已链接索引到外部目录:%s": "[Treinamento do índice] Índice vinculado à pasta externa: %s",
"[索引训练] 成功构建索引:%s": "[Treinamento do índice] Índice criado com sucesso: %s", "[索引训练] 成功构建索引:%s": "[Treinamento do índice] Índice criado com sucesso: %s",
"[索引训练] 正在写入特征向量": "[Treinamento do índice] Adicionando vetores de recursos", "[索引训练] 正在写入特征向量": "[Treinamento do índice] Adicionando vetores de recursos",
"[索引训练] 正在将%s条特征聚类为10000个中心": "[Treinamento do índice] Clustering %s feature vectors into 10,000 centers", "[索引训练] 正在将%s条特征聚类为10000个中心": "[Treinamento do índice] Clustering %s feature vectors into 10,000 centers",
"[索引训练] 正在训练索引": "[Treinamento do índice] Treinando o índice", "[索引训练] 正在训练索引": "[Treinamento do índice] Treinando o índice",
"[索引训练] 特征形状:%s | IVF数量%s": "[Treinamento do índice] Forma dos recursos: %s | Quantidade de IVF: %s", "[索引训练] 特征形状:%s | IVF数量%s": "[Treinamento do índice] Forma dos recursos: %s | Quantidade de IVF: %s",
"[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[Treinamento do índice][Falha] Não foi possível vincular o índice à pasta externa: %s\n%s", "[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[Treinamento do índice][Falha] Não foi possível vincular o índice à pasta externa: %s\n%s",
"[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[Treinamento do índice][Falha] O agrupamento falhou; continuando com os recursos originais\n%s", "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[Treinamento do índice][Falha] O agrupamento falhou; continuando com os recursos originais\n%s",
"[索引训练][失败] 请先进行特征提取": "[Treinamento do índice][Falha] Extraia os recursos primeiro", "[索引训练][失败] 请先进行特征提取": "[Treinamento do índice][Falha] Extraia os recursos primeiro",
"ckpt处理": "processamento ckpt", "ckpt处理": "processamento ckpt",
"index文件路径不可包含中文": "O caminho do arquivo de Index não pode conter caracteres chineses", "index文件路径不可包含中文": "O caminho do arquivo de Index não pode conter caracteres chineses",
"pth文件路径不可包含中文": "o caminho do arquivo pth não pode conter caracteres chineses", "pth文件路径不可包含中文": "o caminho do arquivo pth não pode conter caracteres chineses",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Configuração do número do cartão rmvpe: Use - para separar os números dos cartões de entrada de diferentes processos. Por exemplo, 0-0-1 é usado para executar 2 processos no cartão 0 e 1 processo no cartão 1.", "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Configuração do número do cartão rmvpe: Use - para separar os números dos cartões de entrada de diferentes processos. Por exemplo, 0-0-1 é usado para executar 2 processos no cartão 0 e 1 processo no cartão 1.",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Etapa 1: Preencha a configuração experimental. Os dados experimentais são armazenados na pasta 'logs', com cada experimento tendo uma pasta separada. Digite manualmente o caminho do nome do experimento, que contém a configuração experimental, os logs e os arquivos de modelo treinados.", "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Etapa 1: Preencha a configuração experimental. Os dados experimentais são armazenados na pasta 'logs', com cada experimento tendo uma pasta separada. Digite manualmente o caminho do nome do experimento, que contém a configuração experimental, os logs e os arquivos de modelo treinados.",
"step1:正在处理数据": "Etapa 1: Processamento de dados", "step1:正在处理数据": "Etapa 1: Processamento de dados",
"step2:正在提取音高&正在提取特征": "step2:Extração de tom e características", "step2:正在提取音高&正在提取特征": "step2:Extração de tom e características",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Etapa 2a: Percorra automaticamente todos os arquivos na pasta de treinamento que podem ser decodificados em áudio e execute a normalização da fatia. Gera 2 pastas wav no diretório do experimento. Atualmente, apenas o treinamento de um único cantor/palestrante é suportado.", "step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Etapa 2a: Percorra automaticamente todos os arquivos na pasta de treinamento que podem ser decodificados em áudio e execute a normalização da fatia. Gera 2 pastas wav no diretório do experimento. Atualmente, apenas o treinamento de um único cantor/palestrante é suportado.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Etapa 2b: Use a CPU para extrair o tom (se o modelo tiver tom), use a GPU para extrair recursos (selecione o índice da GPU):", "step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Etapa 2b: Use a CPU para extrair o tom (se o modelo tiver tom), use a GPU para extrair recursos (selecione o índice da GPU):",
"step3: 填写训练设置, 开始训练模型和索引": "Etapa 3: Preencha as configurações de treinamento e comece a treinar o modelo e o Index", "step3: 填写训练设置, 开始训练模型和索引": "Etapa 3: Preencha as configurações de treinamento e comece a treinar o modelo e o Index",
"step3a:正在训练模型": "Etapa 3a: Treinamento do modelo iniciado", "step3a:正在训练模型": "Etapa 3a: Treinamento do modelo iniciado",
"step3b:正在训练索引": "etapa 3b: treinando o índice", "step3b:正在训练索引": "etapa 3b: treinando o índice",
"……仅显示最近10条失败记录": "…Mostrando apenas as 10 falhas mais recentes", "……仅显示最近10条失败记录": "…Mostrando apenas as 10 falhas mais recentes",
"……已省略前%s行仅显示最新状态": "…As primeiras %s linhas foram omitidas; mostrando apenas o estado mais recente", "……已省略前%s行仅显示最新状态": "…As primeiras %s linhas foram omitidas; mostrando apenas o estado mais recente",
"一键训练": "Treinamento com um clique", "一键训练": "Treinamento com um clique",
"也可批量输入音频文件, 二选一, 优先读文件夹": "Você também pode inserir arquivos de áudio em lotes. Escolha uma das duas opções. É dada prioridade à leitura da pasta.", "也可批量输入音频文件, 二选一, 优先读文件夹": "Você também pode inserir arquivos de áudio em lotes. Escolha uma das duas opções. É dada prioridade à leitura da pasta.",
"人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "Processamento em lote para separar vocais e acompanhamento usando modelos UVR5.<br>Você pode escolher um modelo que preserve os vocais ou usar modelos DeEcho/DeReverb para remover eco e reverberação.", "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "Processamento em lote para separar vocais e acompanhamento usando modelos UVR5.<br>Você pode escolher um modelo que preserve os vocais ou usar modelos DeEcho/DeReverb para remover eco e reverberação.",
"仅支持pm和rmvpe音高提取算法": "Somente os métodos de extração de tom pm e rmvpe são compatíveis", "仅支持pm和rmvpe音高提取算法": "Somente os métodos de extração de tom pm e rmvpe são compatíveis",
"从训练检查点提取的模型": "Modeloo extraído de um checkpoint de treinamento", "从训练检查点提取的模型": "Modeloo extraído de um checkpoint de treinamento",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Digite o (s) índice(s) da GPU separados por '-', por exemplo, 0-1-2 para usar a GPU 0, 1 e 2:", "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Digite o (s) índice(s) da GPU separados por '-', por exemplo, 0-1-2 para usar a GPU 0, 1 e 2:",
"任务": "Tarefa", "任务": "Tarefa",
"伴奏人声分离&去混响&去回声": "UVR5", "伴奏人声分离&去混响&去回声": "UVR5",
"使用显卡:%s": "GPUs em uso: %s", "使用显卡:%s": "GPUs em uso: %s",
"使用模型采样率": "Usar taxa do modelo", "使用模型采样率": "Usar taxa do modelo",
"使用设备采样率": "Usar taxa do dispositivo", "使用设备采样率": "Usar taxa do dispositivo",
"保存名": "Salvar nome", "保存名": "Salvar nome",
"保存的文件名, 默认空为和源文件同名": "Salvar nome do arquivo (padrão: igual ao arquivo de origem):", "保存的文件名, 默认空为和源文件同名": "Salvar nome do arquivo (padrão: igual ao arquivo de origem):",
"保存的模型名不带后缀": "Nome do modelo salvo (sem extensão):", "保存的模型名不带后缀": "Nome do modelo salvo (sem extensão):",
"保存频率save_every_epoch": "Faça backup a cada # de Epoch:", "保存频率save_every_epoch": "Faça backup a cada # de Epoch:",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Proteja consoantes sem voz e sons respiratórios, evite artefatos como quebra de som eletrônico e desligue-o quando estiver cheio de 0,5. Diminua-o para aumentar a proteção, mas pode reduzir o efeito de indexação:", "保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Proteja consoantes sem voz e sons respiratórios, evite artefatos como quebra de som eletrônico e desligue-o quando estiver cheio de 0,5. Diminua-o para aumentar a proteção, mas pode reduzir o efeito de indexação:",
"修改": "Editar", "修改": "Editar",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modificar informações do modelo (suportado apenas para arquivos de modelo pequenos extraídos da pasta 'weights')", "修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Modificar informações do modelo (suportado apenas para arquivos de modelo pequenos extraídos da pasta 'weights')",
"停止一键训练": "Parar treinamento com um clique", "停止一键训练": "Parar treinamento com um clique",
"停止处理数据": "Parar pré-processamento de dados", "停止处理数据": "Parar pré-processamento de dados",
"停止特征提取": "Parar extração de características", "停止特征提取": "Parar extração de características",
"停止训练模型": "Parar treinamento do modelo", "停止训练模型": "Parar treinamento do modelo",
"停止训练索引": "Parar treinamento do índice", "停止训练索引": "Parar treinamento do índice",
"停止音频转换": "Conversão de áudio", "停止音频转换": "Conversão de áudio",
"全流程结束!": "Todos os processos foram concluídos!", "全流程结束!": "Todos os processos foram concluídos!",
"判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth", "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth",
"加载模型": "Modelo", "加载模型": "Modelo",
"加载预训练底模D路径": "Carregue o caminho D do modelo base pré-treinado:", "加载预训练底模D路径": "Carregue o caminho D do modelo base pré-treinado:",
"加载预训练底模G路径": "Carregue o caminho G do modelo base pré-treinado:", "加载预训练底模G路径": "Carregue o caminho G do modelo base pré-treinado:",
"单次推理": "Inferência única", "单次推理": "Inferência única",
"卸载音色省显存": "Descarregue a voz para liberar a memória da GPU:", "卸载音色省显存": "Descarregue a voz para liberar a memória da GPU:",
"变调(整数, 半音数量, 升八度12降八度-12)": "Mude o tom aqui. Se a voz for do mesmo sexo, não é necessario alterar (12 caso seja Masculino para feminino, -12 caso seja ao contrário).", "变调(整数, 半音数量, 升八度12降八度-12)": "Mude o tom aqui. Se a voz for do mesmo sexo, não é necessario alterar (12 caso seja Masculino para feminino, -12 caso seja ao contrário).",
"合成": "Síntese", "合成": "Síntese",
"后处理重采样至最终采样率0为不进行重采样": "Reamostragem pós-processamento para a taxa de amostragem final, 0 significa sem reamostragem:", "后处理重采样至最终采样率0为不进行重采样": "Reamostragem pós-processamento para a taxa de amostragem final, 0 significa sem reamostragem:",
"否": "Não", "否": "Não",
"响应阈值": "Limiar de resposta", "响应阈值": "Limiar de resposta",
"响度因子": "Fator de volume", "响度因子": "Fator de volume",
"处理中": "Processando", "处理中": "Processando",
"处理数据": "Processar o Conjunto de Dados", "处理数据": "Processar o Conjunto de Dados",
"失败": "Falha", "失败": "Falha",
"失败记录": "Registro de falhas", "失败记录": "Registro de falhas",
"子进程执行失败,返回码:%s": "O subprocesso falhou com o código de saída: %s", "子进程执行失败,返回码:%s": "O subprocesso falhou com o código de saída: %s",
"导出文件格式": "Qual formato de arquivo você prefere?", "导出文件格式": "Qual formato de arquivo você prefere?",
"已停止": "Interrompido", "已停止": "Interrompido",
"已加载判别器预训练模型:%s": "Modeloo pré-treinado do discriminador carregado: %s", "已加载判别器预训练模型:%s": "Modeloo pré-treinado do discriminador carregado: %s",
"已加载生成器预训练模型:%s": "Modeloo pré-treinado do gerador carregado: %s", "已加载生成器预训练模型:%s": "Modeloo pré-treinado do gerador carregado: %s",
"已启用索引检索": "Pesquisa por índice ativada", "已启用索引检索": "Pesquisa por índice ativada",
"已完成": "Concluído", "已完成": "Concluído",
"已恢复判别器检查点": "Checkpoint do discriminador restaurado", "已恢复判别器检查点": "Checkpoint do discriminador restaurado",
"常见问题解答": "FAQ (Perguntas frequentes)", "常见问题解答": "FAQ (Perguntas frequentes)",
"常规设置": "Configurações gerais", "常规设置": "Configurações gerais",
"开始音频转换": "Iniciar conversão de áudio", "开始音频转换": "Iniciar conversão de áudio",
"当前": "Atual", "当前": "Atual",
"当前阶段": "Etapa atual", "当前阶段": "Etapa atual",
"很遗憾您这没有能用的显卡来支持您训练": "Infelizmente, não há GPU compatível disponível para apoiar o seu treinamento.", "很遗憾您这没有能用的显卡来支持您训练": "Infelizmente, não há GPU compatível disponível para apoiar o seu treinamento.",
"性别因子/声线粗细": "Fator de gênero / espessura da voz", "性别因子/声线粗细": "Fator de gênero / espessura da voz",
"性能设置": "Configurações de desempenho.", "性能设置": "Configurações de desempenho.",
"总训练轮数total_epoch": "Número total de ciclos(epoch) de treino (se escolher um valor alto demais, o seu modelo parecerá terrivelmente sobretreinado):", "总训练轮数total_epoch": "Número total de ciclos(epoch) de treino (se escolher um valor alto demais, o seu modelo parecerá terrivelmente sobretreinado):",
"成功": "Sucesso", "成功": "Sucesso",
"执行命令": "Comando", "执行命令": "Comando",
"批量推理": "Inferência em lote", "批量推理": "Inferência em lote",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Conversão em Massa.", "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Conversão em Massa.",
"拖拽或点击上传待处理音频": "Arraste e solte ou clique para enviar o áudio a ser processado", "拖拽或点击上传待处理音频": "Arraste e solte ou clique para enviar o áudio a ser processado",
"指定输出主人声文件夹": "Especifique a pasta de saída para vocais:", "指定输出主人声文件夹": "Especifique a pasta de saída para vocais:",
"指定输出文件夹": "Especifique a pasta de saída:", "指定输出文件夹": "Especifique a pasta de saída:",
"指定输出非主人声文件夹": "Informar a pasta de saída para acompanhamento:", "指定输出非主人声文件夹": "Informar a pasta de saída para acompanhamento:",
"推理时间(ms):": "Tempo de inferência (ms):", "推理时间(ms):": "Tempo de inferência (ms):",
"推理耗时:%.2f秒": "Tempo de inferência: %.2f seconds", "推理耗时:%.2f秒": "Tempo de inferência: %.2f seconds",
"推理音色": "Escolha o seu Modelo:", "推理音色": "Escolha o seu Modelo:",
"提取": "Extrato", "提取": "Extrato",
"提取音高和处理数据使用的CPU进程数": "Número de processos de CPU usados para extração de tom e processamento de dados:", "提取音高和处理数据使用的CPU进程数": "Número de processos de CPU usados para extração de tom e processamento de dados:",
"数据切分": "Divisão de dados", "数据切分": "Divisão de dados",
"无法停止": "Não é possível interromper", "无法停止": "Não é possível interromper",
"无法读取音频:%s": "Não foi possível ler o áudio: %s", "无法读取音频:%s": "Não foi possível ler o áudio: %s",
"是": "Sim", "是": "Sim",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Só deve salvar apenas o arquivo ckpt mais recente para economizar espaço em disco:", "是否仅保存最新的ckpt文件以节省硬盘空间": "Só deve salvar apenas o arquivo ckpt mais recente para economizar espaço em disco:",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Salve um pequeno modelo final na pasta 'weights' em cada ponto de salvamento:", "是否在每次保存时间点将最终小模型保存至weights文件夹": "Salve um pequeno modelo final na pasta 'weights' em cada ponto de salvamento:",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Se deve armazenar em cache todos os conjuntos de treinamento na memória de vídeo. Pequenos dados com menos de 10 minutos podem ser armazenados em cache para acelerar o treinamento, e um cache de dados grande irá explodir a memória de vídeo e não aumentar muito a velocidade:", "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Se deve armazenar em cache todos os conjuntos de treinamento na memória de vídeo. Pequenos dados com menos de 10 minutos podem ser armazenados em cache para acelerar o treinamento, e um cache de dados grande irá explodir a memória de vídeo e não aumentar muito a velocidade:",
"显卡信息": "Informações da GPU", "显卡信息": "Informações da GPU",
"未使用": "Não usado", "未使用": "Não usado",
"未使用判别器预训练模型": "Modelo pré-treinado do discriminador não usado", "未使用判别器预训练模型": "Modelo pré-treinado do discriminador não usado",
"未使用生成器预训练模型": "Modelo pré-treinado do gerador não usado", "未使用生成器预训练模型": "Modelo pré-treinado do gerador não usado",
"未找到Roformer模型配置文件正在使用内置默认配置": "Configuração do modelo Roformer não encontrada; usando os padrões internos", "未找到Roformer模型配置文件正在使用内置默认配置": "Configuração do modelo Roformer não encontrada; usando os padrões internos",
"未检测到可用显卡将使用CPU训练耗时可能较长": "Nenhuma GPU compatível foi detectada; treinar na CPU pode demorar muito mais", "未检测到可用显卡将使用CPU训练耗时可能较长": "Nenhuma GPU compatível foi detectada; treinar na CPU pode demorar muito mais",
"未运行": "Não iniciado", "未运行": "Não iniciado",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "<center>The Mangio-RVC 💻 | Tradução por Krisp e Rafael Godoy Ebert | AI HUB BRASIL<br> Este software é de código aberto sob a licença MIT. O autor não tem qualquer controle sobre o software. Aqueles que usam o software e divulgam os sons exportados pelo software são totalmente responsáveis. <br>Se você não concorda com este termo, você não pode usar ou citar nenhum código e arquivo no pacote de software. Para obter detalhes, consulte o diretório raiz <b>O acordo a ser seguido para uso <a href='https://raw.githubusercontent.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/main/LICENSE' target='_blank'>LICENSE</a></b></center>", "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "<center>The Mangio-RVC 💻 | Tradução por Krisp e Rafael Godoy Ebert | AI HUB BRASIL<br> Este software é de código aberto sob a licença MIT. O autor não tem qualquer controle sobre o software. Aqueles que usam o software e divulgam os sons exportados pelo software são totalmente responsáveis. <br>Se você não concorda com este termo, você não pode usar ou citar nenhum código e arquivo no pacote de software. Para obter detalhes, consulte o diretório raiz <b>O acordo a ser seguido para uso <a href='https://raw.githubusercontent.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/main/LICENSE' target='_blank'>LICENSE</a></b></center>",
"查看": "Visualizar", "查看": "Visualizar",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Exibir informações do modelo (suportado apenas para arquivos de modelo pequenos extraídos da pasta 'weights')", "查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Exibir informações do modelo (suportado apenas para arquivos de modelo pequenos extraídos da pasta 'weights')",
"检测到模型类型:%s": "Tipo de modelo detectado: %s", "检测到模型类型:%s": "Tipo de modelo detectado: %s",
"检索特征占比": "Taxa de recurso de recuperação:", "检索特征占比": "Taxa de recurso de recuperação:",
"模型": "Modelo", "模型": "Modelo",
"模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Informações do modelo: %s\nTaxa de amostragem: %s\nOrientação de tom: %s\nVersão: %s", "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Informações do modelo: %s\nTaxa de amostragem: %s\nOrientação de tom: %s\nVersão: %s",
"模型推理": "Inference", "模型推理": "Inference",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Extração do modelo (insira o caminho do modelo de arquivo grande na pasta 'logs'). Isso é útil se você quiser interromper o treinamento no meio do caminho e extrair e salvar manualmente um arquivo de modelo pequeno, ou se quiser testar um modelo intermediário:", "模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Extração do modelo (insira o caminho do modelo de arquivo grande na pasta 'logs'). Isso é útil se você quiser interromper o treinamento no meio do caminho e extrair e salvar manualmente um arquivo de modelo pequeno, ou se quiser testar um modelo intermediário:",
"模型是否带音高指导": "Se o modelo tem orientação de tom:", "模型是否带音高指导": "Se o modelo tem orientação de tom:",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Se o modelo tem orientação de tom (necessário para cantar, opcional para fala):", "模型是否带音高指导(唱歌一定要, 语音可以不要)": "Se o modelo tem orientação de tom (necessário para cantar, opcional para fala):",
"模型是否带音高指导,1是0否": "Se o modelo tem orientação de passo (1: sim, 0: não):", "模型是否带音高指导,1是0否": "Se o modelo tem orientação de passo (1: sim, 0: não):",
"模型版本型号": "Versão:", "模型版本型号": "Versão:",
"模型融合, 可用于测试音色融合": "A fusão modelo, pode ser usada para testar a fusão do timbre", "模型融合, 可用于测试音色融合": "A fusão modelo, pode ser usada para testar a fusão do timbre",
"模型融合失败:两个模型的结构不一致": "Falha ao mesclar modelos: as arquiteturas não correspondem", "模型融合失败:两个模型的结构不一致": "Falha ao mesclar modelos: as arquiteturas não correspondem",
"模型训练": "Treinamento do modelo", "模型训练": "Treinamento do modelo",
"模型路径": "Caminho para o Modelo:", "模型路径": "Caminho para o Modelo:",
"正在保存最终检查点:%s": "Salvando o checkpoint final: %s", "正在保存最终检查点:%s": "Salvando o checkpoint final: %s",
"正在保存检查点 %s_e%s%s": "Salvando o checkpoint %s_e%s: %s", "正在保存检查点 %s_e%s%s": "Salvando o checkpoint %s_e%s: %s",
"正在加载RMVPE模型": "Carregando o modelo RMVPE", "正在加载RMVPE模型": "Carregando o modelo RMVPE",
"正在加载模型": "Carregando o modelo", "正在加载模型": "Carregando o modelo",
"正在启动": "Iniciando", "正在启动": "Iniciando",
"正在收尾": "Finalizando", "正在收尾": "Finalizando",
"每张显卡的batch_size": "Batch Size (DEIXE COMO ESTÁ a menos que saiba o que está fazendo, no Colab pode deixar até 20!):", "每张显卡的batch_size": "Batch Size (DEIXE COMO ESTÁ a menos que saiba o que está fazendo, no Colab pode deixar até 20!):",
"淡入淡出长度": "Comprimento de desvanecimento", "淡入淡出长度": "Comprimento de desvanecimento",
"清理模型缓存": "Limpando o cache do modelo", "清理模型缓存": "Limpando o cache do modelo",
"版本": "Versão", "版本": "Versão",
"特征": "Recursos", "特征": "Recursos",
"特征提取": "Extrair Tom", "特征提取": "Extrair Tom",
"状态": "Estado", "状态": "Estado",
"独占 WASAPI 设备": "Dispositivo WASAPI exclusivo", "独占 WASAPI 设备": "Dispositivo WASAPI exclusivo",
"生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth", "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Recomendado +12 chave para conversão de homem para mulher e -12 chave para conversão de mulher para homem. Se a faixa de som for muito longe e a voz estiver distorcida, você também pode ajustá-la à faixa apropriada por conta própria.", "男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Recomendado +12 chave para conversão de homem para mulher e -12 chave para conversão de mulher para homem. Se a faixa de som for muito longe e a voz estiver distorcida, você também pode ajustá-la à faixa apropriada por conta própria.",
"目标采样率": "Taxa de amostragem:", "目标采样率": "Taxa de amostragem:",
"等待中": "Aguardando", "等待中": "Aguardando",
"等待输入": "Aguardando entrada", "等待输入": "Aguardando entrada",
"算法延迟(ms):": "Latência do algoritmo (ms):", "算法延迟(ms):": "Latência do algoritmo (ms):",
"索引": "Índice", "索引": "Índice",
"索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Índice inválido: use added_xxxx.index, not trained_xxxx.index", "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Índice inválido: use added_xxxx.index, not trained_xxxx.index",
"索引检索失败": "Falha na pesquisa por índice", "索引检索失败": "Falha na pesquisa por índice",
"索引检索失败或未启用": "A pesquisa por índice falhou ou está desativada", "索引检索失败或未启用": "A pesquisa por índice falhou ou está desativada",
"索引训练": "Treinamento do índice", "索引训练": "Treinamento do índice",
"耗时": "Tempo decorrido", "耗时": "Tempo decorrido",
"耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Tempo decorrido: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs", "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Tempo decorrido: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs",
"融合": "Fusão", "融合": "Fusão",
"要改的模型信息": "Informações do modelo a ser modificado:", "要改的模型信息": "Informações do modelo a ser modificado:",
"要置入的模型信息": "Informações do modelo a ser colocado:", "要置入的模型信息": "Informações do modelo a ser colocado:",
"训练": "Treinar", "训练": "Treinar",
"训练已完成,正在保存最终模型": "Treinamento concluído; salvando o modelo final", "训练已完成,正在保存最终模型": "Treinamento concluído; salvando o modelo final",
"训练文件列表写入完成": "Lista de arquivos de treinamento salva", "训练文件列表写入完成": "Lista de arquivos de treinamento salva",
"训练模型": "Treinar Modelo", "训练模型": "Treinar Modelo",
"训练特征索引": "Treinar Index", "训练特征索引": "Treinar Index",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Após o término do treinamento, você pode verificar o log de treinamento do console ou train.log na pasta de experimentos", "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Após o término do treinamento, você pode verificar o log de treinamento do console ou train.log na pasta de experimentos",
"训练设备规则选择的精度:%s": "Precisão de treinamento escolhida pelas regras do dispositivo: %s", "训练设备规则选择的精度:%s": "Precisão de treinamento escolhida pelas regras do dispositivo: %s",
"训练轮次:{} [{:.0f}%]": "Época de treinamento: {} [{:.0f}%]", "训练轮次:{} [{:.0f}%]": "Época de treinamento: {} [{:.0f}%]",
"设备类型": "Tipo de dispositivo", "设备类型": "Tipo de dispositivo",
"请上传音频文件": "Envie um arquivo de áudio", "请上传音频文件": "Envie um arquivo de áudio",
"请填写输出文件夹路径": "Informe o caminho da pasta de saída", "请填写输出文件夹路径": "Informe o caminho da pasta de saída",
"请指定说话人id": "Especifique o ID do locutor/cantor:", "请指定说话人id": "Especifique o ID do locutor/cantor:",
"请选择index文件": "Selecione o arquivo de Index", "请选择index文件": "Selecione o arquivo de Index",
"请选择pth文件": "Selecione o arquivo pth", "请选择pth文件": "Selecione o arquivo pth",
"请选择说话人id": "Selecione Palestrantes/Cantores ID:", "请选择说话人id": "Selecione Palestrantes/Cantores ID:",
"转换": "Converter", "转换": "Converter",
"输入实验名": "Nome da voz:", "输入实验名": "Nome da voz:",
"输入待处理音频文件夹路径": "Caminho da pasta de áudio a ser processada:", "输入待处理音频文件夹路径": "Caminho da pasta de áudio a ser processada:",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Caminho da pasta de áudio a ser processada (copie-o da barra de endereços do gerenciador de arquivos):", "输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Caminho da pasta de áudio a ser processada (copie-o da barra de endereços do gerenciador de arquivos):",
"输入待处理音频文件路径(默认是正确格式示例)": "Caminho para o seu conjunto de dados (áudios, não zipado):", "输入待处理音频文件路径(默认是正确格式示例)": "Caminho para o seu conjunto de dados (áudios, não zipado):",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "O envelope de volume da fonte de entrada substitui a taxa de fusão do envelope de volume de saída, quanto mais próximo de 1, mais o envelope de saída é usado:", "输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "O envelope de volume da fonte de entrada substitui a taxa de fusão do envelope de volume de saída, quanto mais próximo de 1, mais o envelope de saída é usado:",
"输入监听": "Monitorar entrada", "输入监听": "Monitorar entrada",
"输入训练文件夹路径": "Caminho da pasta de treinamento:", "输入训练文件夹路径": "Caminho da pasta de treinamento:",
"输入设备": "Dispositivo de entrada", "输入设备": "Dispositivo de entrada",
"输入设备:%s:%s": "Dispositivo de entrada: %s:%s", "输入设备:%s:%s": "Dispositivo de entrada: %s:%s",
"输入降噪": "Redução de ruído de entrada", "输入降噪": "Redução de ruído de entrada",
"输出信息": "Informação de saída", "输出信息": "Informação de saída",
"输出变声": "Conversão de saída", "输出变声": "Conversão de saída",
"输出设备": "Dispositivo de saída", "输出设备": "Dispositivo de saída",
"输出设备:%s:%s": "Dispositivo de saída: %s:%s", "输出设备:%s:%s": "Dispositivo de saída: %s:%s",
"输出降噪": "Redução de ruído de saída", "输出降噪": "Redução de ruído de saída",
"输出音频(右下角三个点,点了可以下载)": "Exportar áudio (clique nos três pontos no canto inferior direito para baixar)", "输出音频(右下角三个点,点了可以下载)": "Exportar áudio (clique nos três pontos no canto inferior direito para baixar)",
"运行中": "Em execução", "运行中": "Em execução",
"进度": "Progresso", "进度": "Progresso",
"选择.index文件": "Selecione o Index", "选择.index文件": "Selecione o Index",
"选择.pth文件": "Selecione o Arquivo", "选择.pth文件": "Selecione o Arquivo",
"选择模型": "Selecionar modelo", "选择模型": "Selecionar modelo",
"选择索引": "Selecionar índice", "选择索引": "Selecionar índice",
"选择音高提取算法": "Selecione o algoritmo de extração de tom", "选择音高提取算法": "Selecione o algoritmo de extração de tom",
"采样率:": "Taxa de amostragem:", "采样率:": "Taxa de amostragem:",
"采样长度": "Comprimento da Amostra", "采样长度": "Comprimento da Amostra",
"重载设备列表": "Recarregar lista de dispositivos", "重载设备列表": "Recarregar lista de dispositivos",
"错误信息:%s": "Detalhes do erro: %s", "错误信息:%s": "Detalhes do erro: %s",
"错误:未知模型:%s": "Erro: modelo desconhecido: %s", "错误:未知模型:%s": "Erro: modelo desconhecido: %s",
"音调设置": "Configurações de tom", "音调设置": "Configurações de tom",
"音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "O áudio tem vários canais, mas o modelo é mono; todos os canais serão combinados pela média", "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "O áudio tem vários canais, mas o modelo é mono; todos os canais serão combinados pela média",
"音频设备": "Dispositivo de áudio", "音频设备": "Dispositivo de áudio",
"音高全部为0该音频无意义跳过%s": "Todos os valores de tom são zero; este áudio não tem utilidade e será ignorado: %s", "音高全部为0该音频无意义跳过%s": "Todos os valores de tom são zero; este áudio não tem utilidade e será ignorado: %s",
"音高算法": "Algoritmo de tom", "音高算法": "Algoritmo de tom",
"额外推理时长": "Tempo extra de inferência", "额外推理时长": "Tempo extra de inferência",
"数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "O pré-processamento não gerou áudio de treinamento válido. Verifique o conjunto de dados e o log.", "数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "O pré-processamento não gerou áudio de treinamento válido. Verifique o conjunto de dados e o log.",
"数据切分没有生成16k音频已停止后续特征提取和训练": "O pré-processamento não gerou áudio de 16 kHz. A extração e o treinamento foram interrompidos.", "数据切分没有生成16k音频已停止后续特征提取和训练": "O pré-processamento não gerou áudio de 16 kHz. A extração e o treinamento foram interrompidos.",
"数据切分输出文件不匹配,已停止后续特征提取和训练": "Os arquivos de saída do pré-processamento não correspondem. A extração e o treinamento foram interrompidos.", "数据切分输出文件不匹配,已停止后续特征提取和训练": "Os arquivos de saída do pré-processamento não correspondem. A extração e o treinamento foram interrompidos.",
"HuBERT特征提取没有生成有效结果已停止训练": "A extração de recursos HuBERT não gerou resultados válidos. O treinamento foi interrompido.", "HuBERT特征提取没有生成有效结果已停止训练": "A extração de recursos HuBERT não gerou resultados válidos. O treinamento foi interrompido.",
"F0提取没有生成有效结果已停止训练": "A extração de F0 não gerou resultados válidos. O treinamento foi interrompido.", "F0提取没有生成有效结果已停止训练": "A extração de F0 não gerou resultados válidos. O treinamento foi interrompido.",
"没有可用于训练的有效音频,请先完成数据切分和特征提取": "Não há áudio válido para treinamento. Conclua primeiro o pré-processamento e a extração de recursos.", "没有可用于训练的有效音频,请先完成数据切分和特征提取": "Não há áudio válido para treinamento. Conclua primeiro o pré-processamento e a extração de recursos.",
"已完成阶段": "Etapas concluídas", "已完成阶段": "Etapas concluídas",
"已成功": "Concluído", "已成功": "Concluído",
"刷新音色列表": "Atualizar lista de vozes", "刷新音色列表": "Atualizar lista de vozes",
"特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Caminho do índice de características (detectado após selecionar o modelo; editável)", "特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Caminho do índice de características (detectado após selecionar o modelo; editável)",
"[索引训练] 外部索引链接已存在:%s": "[Treinamento de índice] O link externo já existe: %s", "[索引训练] 外部索引链接已存在:%s": "[Treinamento de índice] O link externo já existe: %s",
"[索引训练][跳过] added索引已存在%s": "[Treinamento de índice][Ignorado] O índice added já existe: %s", "[索引训练][跳过] added索引已存在%s": "[Treinamento de índice][Ignorado] O índice added já existe: %s",
"[索引训练][跳过] trained索引已存在%s": "[Treinamento de índice][Ignorado] O índice trained já existe: %s", "[索引训练][跳过] trained索引已存在%s": "[Treinamento de índice][Ignorado] O índice trained já existe: %s",
"当前设备:%s | 推理精度:%s": "Dispositivo atual: %s | Precisão de inferência: %s", "当前设备:%s | 推理精度:%s": "Dispositivo atual: %s | Precisão de inferência: %s",
"正在预热CUDA Graph": "Aquecendo o CUDA Graph", "正在预热CUDA Graph": "Aquecendo o CUDA Graph",
"CUDA Graph预热完成": "Aquecimento do CUDA Graph concluído" "CUDA Graph预热完成": "Aquecimento do CUDA Graph concluído",
} "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s": "Extração de dados iniciada: start_time=%.6f, concorrência solicitada=%s, limite real=%s",
"数据提取结束end_time=%.6f,总耗时=%.3f秒": "Extração de dados concluída: end_time=%.6f, tempo total=%.3f segundos"
}

View File

@@ -1,263 +1,265 @@
{ {
"人声提取激进程度": "Интенсивность выделения вокала", "人声提取激进程度": "Интенсивность выделения вокала",
"%s → 成功": "%s → Успешно", "%s → 成功": "%s → Успешно",
"%s运行中请先停止该任务": "%s уже выполняется; сначала остановите эту задачу", "%s运行中请先停止该任务": "%s уже выполняется; сначала остановите эту задачу",
"%s进程已终止": "Процесс %s завершён", "%s进程已终止": "Процесс %s завершён",
"====> 轮次:{} {}": "====> Эпоха: {} {}", "====> 轮次:{} {}": "====> Эпоха: {} {}",
"A模型权重": "Весы (w) модели А:", "A模型权重": "Весы (w) модели А:",
"A模型路径": "Путь к модели А:", "A模型路径": "Путь к модели А:",
"B模型路径": "Путь к модели Б:", "B模型路径": "Путь к модели Б:",
"CUDA可用%s": "CUDA доступна: %s", "CUDA可用%s": "CUDA доступна: %s",
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src", "E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src",
"F0与HuBERT特征提取": "Извлечение F0 и признаков HuBERT", "F0与HuBERT特征提取": "Извлечение F0 и признаков HuBERT",
"F0提取": "Извлечение F0", "F0提取": "Извлечение F0",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "Файл дуги F0 (не обязательно). Одна тональность на каждую строчку. Заменяет обычный F0 и модуляцию тональности:", "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "Файл дуги F0 (не обязательно). Одна тональность на каждую строчку. Заменяет обычный F0 и модуляцию тональности:",
"HuBERT特征": "Признаки HuBERT", "HuBERT特征": "Признаки HuBERT",
"Index Rate": "Темп индекса", "Index Rate": "Темп индекса",
"RVC模型路径": "Путь к модели RVC:", "RVC模型路径": "Путь к модели RVC:",
"SOLA偏移%d": "Смещение SOLA: %d", "SOLA偏移%d": "Смещение SOLA: %d",
"[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Извлечение F0] Завершено | Успешно: %s | Пропущено: %s | Ошибка: %s", "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Извлечение F0] Завершено | Успешно: %s | Пропущено: %s | Ошибка: %s",
"[F0提取] 待处理:%s": "[Извлечение F0] Pending: %s", "[F0提取] 待处理:%s": "[Извлечение F0] Pending: %s",
"[F0提取] 无待处理音频,已全部跳过": "[Извлечение F0] Нет ожидающих аудиофайлов; все файлы пропущены", "[F0提取] 无待处理音频,已全部跳过": "[Извлечение F0] Нет ожидающих аудиофайлов; все файлы пропущены",
"[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[Извлечение F0] Прогресс: %s/%s | Успешно: %s | Пропущено: %s | %s", "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[Извлечение F0] Прогресс: %s/%s | Успешно: %s | Пропущено: %s | %s",
"[F0提取][失败] %s": "[Извлечение F0][Ошибка] %s", "[F0提取][失败] %s": "[Извлечение F0][Ошибка] %s",
"[F0提取][失败] %s\n%s": "[Извлечение F0][Ошибка] %s\n%s", "[F0提取][失败] %s\n%s": "[Извлечение F0][Ошибка] %s\n%s",
"[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Признаки HuBERT] Завершено | Успешно: %s | Пропущено: %s | Ошибка: %s", "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[Признаки HuBERT] Завершено | Успешно: %s | Пропущено: %s | Ошибка: %s",
"[HuBERT特征] 无待处理音频,已全部跳过:%s": "[Признаки HuBERT] Нет ожидающих аудиофайлов; пропущено: %s", "[HuBERT特征] 无待处理音频,已全部跳过:%s": "[Признаки HuBERT] Нет ожидающих аудиофайлов; пропущено: %s",
"[HuBERT特征] 正在加载模型:%s": "[Признаки HuBERT] Загрузка модели: %s", "[HuBERT特征] 正在加载模型:%s": "[Признаки HuBERT] Загрузка модели: %s",
"[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[Признаки HuBERT] Устройство: %s | Pending: %s | Пропущено: %s", "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[Признаки HuBERT] Устройство: %s | Pending: %s | Пропущено: %s",
"[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[Признаки HuBERT] Прогресс: %s/%s | Успешно: %s | Ошибка: %s | %s | %s", "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[Признаки HuBERT] Прогресс: %s/%s | Успешно: %s | Ошибка: %s | %s | %s",
"[HuBERT特征][失败] %s\n%s": "[Признаки HuBERT][Ошибка] %s\n%s", "[HuBERT特征][失败] %s\n%s": "[Признаки HuBERT][Ошибка] %s\n%s",
"[HuBERT特征][失败] %s 包含NaN": "[Признаки HuBERT][Ошибка] %s contains NaN values", "[HuBERT特征][失败] %s 包含NaN": "[Признаки HuBERT][Ошибка] %s contains NaN values",
"[HuBERT特征][失败] 模型不存在:%s": "[Признаки HuBERT][Ошибка] Модель not found: %s", "[HuBERT特征][失败] 模型不存在:%s": "[Признаки HuBERT][Ошибка] Модель not found: %s",
"[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[Нарезка данных] Подзадача завершена | Успешно: %s | Ошибка: %s", "[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[Нарезка данных] Подзадача завершена | Успешно: %s | Ошибка: %s",
"[数据切分] 完成": "[Нарезка данных] Завершено", "[数据切分] 完成": "[Нарезка данных] Завершено",
"[数据切分] 开始": "[Нарезка данных] Запущено", "[数据切分] 开始": "[Нарезка данных] Запущено",
"[数据切分] 待处理:%s | 进程数:%s": "[Нарезка данных] Pending: %s | Процессы: %s", "[数据切分] 待处理:%s | 进程数:%s": "[Нарезка данных] Pending: %s | Процессы: %s",
"[数据切分] 进度:%s/%s | %s": "[Нарезка данных] Прогресс: %s/%s | %s", "[数据切分] 进度:%s/%s | %s": "[Нарезка данных] Прогресс: %s/%s | %s",
"[数据切分][失败] %s": "[Нарезка данных][Ошибка] %s", "[数据切分][失败] %s": "[Нарезка данных][Ошибка] %s",
"[数据切分][失败] %s\n%s": "[Нарезка данных][Ошибка] %s\n%s", "[数据切分][失败] %s\n%s": "[Нарезка данных][Ошибка] %s\n%s",
"[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[Нарезка данных][Пропущено] Недопустимый или аномальный аудиофрагмент: %s_%s | Пик: %s", "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[Нарезка данных][Пропущено] Недопустимый или аномальный аудиофрагмент: %s_%s | Пик: %s",
"[索引训练] 写入进度:%s/%s": "[Обучение индекса] Ход записи: %s/%s", "[索引训练] 写入进度:%s/%s": "[Обучение индекса] Ход записи: %s/%s",
"[索引训练] 已链接索引到外部目录:%s": "[Обучение индекса] Индекс связан с внешней папкой: %s", "[索引训练] 已链接索引到外部目录:%s": "[Обучение индекса] Индекс связан с внешней папкой: %s",
"[索引训练] 成功构建索引:%s": "[Обучение индекса] Индекс успешно создан: %s", "[索引训练] 成功构建索引:%s": "[Обучение индекса] Индекс успешно создан: %s",
"[索引训练] 正在写入特征向量": "[Обучение индекса] Добавление векторов признаков", "[索引训练] 正在写入特征向量": "[Обучение индекса] Добавление векторов признаков",
"[索引训练] 正在将%s条特征聚类为10000个中心": "[Обучение индекса] Clustering %s feature vectors into 10,000 centers", "[索引训练] 正在将%s条特征聚类为10000个中心": "[Обучение индекса] Clustering %s feature vectors into 10,000 centers",
"[索引训练] 正在训练索引": "[Обучение индекса] Обучение индекса", "[索引训练] 正在训练索引": "[Обучение индекса] Обучение индекса",
"[索引训练] 特征形状:%s | IVF数量%s": "[Обучение индекса] Форма признаков: %s | Количество IVF: %s", "[索引训练] 特征形状:%s | IVF数量%s": "[Обучение индекса] Форма признаков: %s | Количество IVF: %s",
"[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[Обучение индекса][Ошибка] Не удалось связать индекс с внешней папкой: %s\n%s", "[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[Обучение индекса][Ошибка] Не удалось связать индекс с внешней папкой: %s\n%s",
"[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[Обучение индекса][Ошибка] Сбой кластеризации; продолжение с исходными признаками\n%s", "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[Обучение индекса][Ошибка] Сбой кластеризации; продолжение с исходными признаками\n%s",
"[索引训练][失败] 请先进行特征提取": "[Обучение индекса][Ошибка] Сначала извлеките признаки", "[索引训练][失败] 请先进行特征提取": "[Обучение индекса][Ошибка] Сначала извлеките признаки",
"ckpt处理": "Обработка ckpt", "ckpt处理": "Обработка ckpt",
"index文件路径不可包含中文": "Путь к файлу индекса", "index文件路径不可包含中文": "Путь к файлу индекса",
"pth文件路径不可包含中文": "Путь к файлу pth", "pth文件路径不可包含中文": "Путь к файлу pth",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Введите номера графических процессоров, разделенные символом «-», например, 0-0-1, чтобы запустить два процесса на GPU 0 и один процесс на GPU 1:", "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "Введите номера графических процессоров, разделенные символом «-», например, 0-0-1, чтобы запустить два процесса на GPU 0 и один процесс на GPU 1:",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Шаг 1. Конфигурирование модели. Данные обучения модели сохраняются в папку 'logs', и для каждой модели создаётся отдельная папка. Введите вручную путь к настройкам для модели, в которой находятся логи и тренировочные файлы.", "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "Шаг 1. Конфигурирование модели. Данные обучения модели сохраняются в папку 'logs', и для каждой модели создаётся отдельная папка. Введите вручную путь к настройкам для модели, в которой находятся логи и тренировочные файлы.",
"step1:正在处理数据": "Шаг 1. Переработка данных", "step1:正在处理数据": "Шаг 1. Переработка данных",
"step2:正在提取音高&正在提取特征": "step2:Извлечение высоты тона и признаков", "step2:正在提取音高&正在提取特征": "step2:Извлечение высоты тона и признаков",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Шаг 2А. Автоматическая обработка исходных аудиозаписей для обучения и выполнение нормализации среза. Создаст 2 папки wav в папке модели. В данный момент поддерживается обучение только на одноголосных записях.", "step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "Шаг 2А. Автоматическая обработка исходных аудиозаписей для обучения и выполнение нормализации среза. Создаст 2 папки wav в папке модели. В данный момент поддерживается обучение только на одноголосных записях.",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Шаг 2Б. Оценка и извлечение тональности в аудиофайлах с помощью процессора (если включена поддержка изменения высоты звука), извлечение черт с помощью GPU (выберите номер GPU):", "step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "Шаг 2Б. Оценка и извлечение тональности в аудиофайлах с помощью процессора (если включена поддержка изменения высоты звука), извлечение черт с помощью GPU (выберите номер GPU):",
"step3: 填写训练设置, 开始训练模型和索引": "Шаг 3. Заполнение дополнительных настроек обучения и запуск обучения модели и индекса", "step3: 填写训练设置, 开始训练模型和索引": "Шаг 3. Заполнение дополнительных настроек обучения и запуск обучения модели и индекса",
"step3a:正在训练模型": "Шаг 3. Запуск обучения модели", "step3a:正在训练模型": "Шаг 3. Запуск обучения модели",
"step3b:正在训练索引": "шаг 3b: обучение индекса", "step3b:正在训练索引": "шаг 3b: обучение индекса",
"……仅显示最近10条失败记录": "…Показаны только 10 последних ошибок", "……仅显示最近10条失败记录": "…Показаны только 10 последних ошибок",
"……已省略前%s行仅显示最新状态": "…Первые %s строк пропущены; показано только последнее состояние", "……已省略前%s行仅显示最新状态": "…Первые %s строк пропущены; показано только последнее состояние",
"一键训练": "Обучение в одно нажатие", "一键训练": "Обучение в одно нажатие",
"也可批量输入音频文件, 二选一, 优先读文件夹": "Можно также импортировать несколько аудиофайлов. Если путь к папке существует, то этот ввод игнорируется.", "也可批量输入音频文件, 二选一, 优先读文件夹": "Можно также импортировать несколько аудиофайлов. Если путь к папке существует, то этот ввод игнорируется.",
"人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "Пакетное разделение вокала и аккомпанемента с помощью моделей UVR5.<br>Можно выбрать модель с сохранением вокала или использовать модели DeEcho/DeReverb для удаления эха и реверберации.", "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "Пакетное разделение вокала и аккомпанемента с помощью моделей UVR5.<br>Можно выбрать модель с сохранением вокала или использовать модели DeEcho/DeReverb для удаления эха и реверберации.",
"仅支持pm和rmvpe音高提取算法": "Поддерживаются только методы извлечения высоты тона pm и rmvpe", "仅支持pm和rmvpe音高提取算法": "Поддерживаются только методы извлечения высоты тона pm и rmvpe",
"从训练检查点提取的模型": "Модель извлечена из контрольной точки обучения", "从训练检查点提取的模型": "Модель извлечена из контрольной точки обучения",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Введите, какие(-ую) GPU(-у) хотите использовать через '-', например 0-1-2, чтобы использовать GPU с номерами 0, 1 и 2:", "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "Введите, какие(-ую) GPU(-у) хотите использовать через '-', например 0-1-2, чтобы использовать GPU с номерами 0, 1 и 2:",
"任务": "Задача", "任务": "Задача",
"伴奏人声分离&去混响&去回声": "Разделение вокала/аккомпанемента и удаление эхо", "伴奏人声分离&去混响&去回声": "Разделение вокала/аккомпанемента и удаление эхо",
"使用显卡:%s": "Используемые GPU: %s", "使用显卡:%s": "Используемые GPU: %s",
"使用模型采样率": "Использовать частоту модели", "使用模型采样率": "Использовать частоту модели",
"使用设备采样率": "Использовать частоту устройства", "使用设备采样率": "Использовать частоту устройства",
"保存名": "Имя файла для сохранения:", "保存名": "Имя файла для сохранения:",
"保存的文件名, 默认空为和源文件同名": "Название сохранённого файла (по умолчанию: такое же, как и у входного):", "保存的文件名, 默认空为和源文件同名": "Название сохранённого файла (по умолчанию: такое же, как и у входного):",
"保存的模型名不带后缀": "Имя файла модели для сохранения (без расширения):", "保存的模型名不带后缀": "Имя файла модели для сохранения (без расширения):",
"保存频率save_every_epoch": "Частота сохранения (save_every_epoch):", "保存频率save_every_epoch": "Частота сохранения (save_every_epoch):",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Защитить глухие согласные и звуки дыхания для предотвращения артефактов, например, разрывания в электронной музыке. Поставьте на 0.5, чтобы выключить. Уменьшите значение для повышения защиты, но учтите, что при этом может ухудшиться точность индексирования:", "保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "Защитить глухие согласные и звуки дыхания для предотвращения артефактов, например, разрывания в электронной музыке. Поставьте на 0.5, чтобы выключить. Уменьшите значение для повышения защиты, но учтите, что при этом может ухудшиться точность индексирования:",
"修改": "Изменить", "修改": "Изменить",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Изменить информацию о модели (работает только с маленькими моделями, взятыми из папки 'weights')", "修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Изменить информацию о модели (работает только с маленькими моделями, взятыми из папки 'weights')",
"停止一键训练": "Остановить обучение в один клик", "停止一键训练": "Остановить обучение в один клик",
"停止处理数据": "Остановить предобработку данных", "停止处理数据": "Остановить предобработку данных",
"停止特征提取": "Остановить извлечение признаков", "停止特征提取": "Остановить извлечение признаков",
"停止训练模型": "Остановить обучение модели", "停止训练模型": "Остановить обучение модели",
"停止训练索引": "Остановить обучение индекса", "停止训练索引": "Остановить обучение индекса",
"停止音频转换": "Закончить конвертацию аудио", "停止音频转换": "Закончить конвертацию аудио",
"全流程结束!": "Все процессы завершены!", "全流程结束!": "Все процессы завершены!",
"判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth", "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth",
"加载模型": "Загрузить модель", "加载模型": "Загрузить модель",
"加载预训练底模D路径": "Путь к предварительно обученной базовой модели D:", "加载预训练底模D路径": "Путь к предварительно обученной базовой модели D:",
"加载预训练底模G路径": "Путь к предварительно обученной базовой модели G:", "加载预训练底模G路径": "Путь к предварительно обученной базовой модели G:",
"单次推理": "Одиночный инференс", "单次推理": "Одиночный инференс",
"卸载音色省显存": "Выгрузить модель из памяти GPU для освобождения ресурсов", "卸载音色省显存": "Выгрузить модель из памяти GPU для освобождения ресурсов",
"变调(整数, 半音数量, 升八度12降八度-12)": "Изменить высоту голоса (укажите количество полутонов; чтобы поднять голос на октаву, выберите 12, понизить на октаву — -12):", "变调(整数, 半音数量, 升八度12降八度-12)": "Изменить высоту голоса (укажите количество полутонов; чтобы поднять голос на октаву, выберите 12, понизить на октаву — -12):",
"合成": "Синтез", "合成": "Синтез",
"后处理重采样至最终采样率0为不进行重采样": "Изменить частоту дискретизации в выходном файле на финальную. Поставьте 0, чтобы ничего не изменялось:", "后处理重采样至最终采样率0为不进行重采样": "Изменить частоту дискретизации в выходном файле на финальную. Поставьте 0, чтобы ничего не изменялось:",
"否": "Нет", "否": "Нет",
"响应阈值": "Порог ответа", "响应阈值": "Порог ответа",
"响度因子": "коэффициент громкости", "响度因子": "коэффициент громкости",
"处理中": "Обработка", "处理中": "Обработка",
"处理数据": "Обработать данные", "处理数据": "Обработать данные",
"失败": "Ошибка", "失败": "Ошибка",
"失败记录": "Список ошибок", "失败记录": "Список ошибок",
"子进程执行失败,返回码:%s": "Дочерний процесс завершился с кодом: %s", "子进程执行失败,返回码:%s": "Дочерний процесс завершился с кодом: %s",
"导出文件格式": "Формат выходных файлов", "导出文件格式": "Формат выходных файлов",
"已停止": "Остановлено", "已停止": "Остановлено",
"已加载判别器预训练模型:%s": "Предобученная модель дискриминатора загружена: %s", "已加载判别器预训练模型:%s": "Предобученная модель дискриминатора загружена: %s",
"已加载生成器预训练模型:%s": "Предобученная модель генератора загружена: %s", "已加载生成器预训练模型:%s": "Предобученная модель генератора загружена: %s",
"已启用索引检索": "Поиск по индексу включён", "已启用索引检索": "Поиск по индексу включён",
"已完成": "Завершено", "已完成": "Завершено",
"已恢复判别器检查点": "Контрольная точка дискриминатора восстановлена", "已恢复判别器检查点": "Контрольная точка дискриминатора восстановлена",
"常见问题解答": "ЧаВо (часто задаваемые вопросы)", "常见问题解答": "ЧаВо (часто задаваемые вопросы)",
"常规设置": "Основные настройки", "常规设置": "Основные настройки",
"开始音频转换": "Начать конвертацию аудио", "开始音频转换": "Начать конвертацию аудио",
"当前": "Текущий", "当前": "Текущий",
"当前阶段": "Текущий этап", "当前阶段": "Текущий этап",
"很遗憾您这没有能用的显卡来支持您训练": "К сожалению, у вас нету графического процессора, который поддерживает обучение моделей.", "很遗憾您这没有能用的显卡来支持您训练": "К сожалению, у вас нету графического процессора, который поддерживает обучение моделей.",
"性别因子/声线粗细": "Гендерный коэффициент / толщина голоса", "性别因子/声线粗细": "Гендерный коэффициент / толщина голоса",
"性能设置": "Настройки быстроты", "性能设置": "Настройки быстроты",
"总训练轮数total_epoch": "Полное количество эпох (total_epoch):", "总训练轮数total_epoch": "Полное количество эпох (total_epoch):",
"成功": "Успешно", "成功": "Успешно",
"执行命令": "Команда", "执行命令": "Команда",
"批量推理": "Пакетный инференс", "批量推理": "Пакетный инференс",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Массовое преобразование. Введите путь к папке, в которой находятся файлы для преобразования голоса или выгрузите несколько аудиофайлов. Сконвертированные файлы будут сохранены в указанной папке (по умолчанию: 'opt').", "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "Массовое преобразование. Введите путь к папке, в которой находятся файлы для преобразования голоса или выгрузите несколько аудиофайлов. Сконвертированные файлы будут сохранены в указанной папке (по умолчанию: 'opt').",
"拖拽或点击上传待处理音频": "Перетащите или нажмите, чтобы загрузить аудио для обработки", "拖拽或点击上传待处理音频": "Перетащите или нажмите, чтобы загрузить аудио для обработки",
"指定输出主人声文件夹": "Путь к папке для сохранения вокала:", "指定输出主人声文件夹": "Путь к папке для сохранения вокала:",
"指定输出文件夹": "Папка для результатов:", "指定输出文件夹": "Папка для результатов:",
"指定输出非主人声文件夹": "Путь к папке для сохранения аккомпанемента:", "指定输出非主人声文件夹": "Путь к папке для сохранения аккомпанемента:",
"推理时间(ms):": "Время переработки (мс):", "推理时间(ms):": "Время переработки (мс):",
"推理耗时:%.2f秒": "Время инференса: %.2f seconds", "推理耗时:%.2f秒": "Время инференса: %.2f seconds",
"推理音色": "Желаемый голос:", "推理音色": "Желаемый голос:",
"提取": "Создать модель", "提取": "Создать модель",
"提取音高和处理数据使用的CPU进程数": "Число процессов ЦП, используемое для оценки высоты голоса и обработки данных:", "提取音高和处理数据使用的CPU进程数": "Число процессов ЦП, используемое для оценки высоты голоса и обработки данных:",
"数据切分": "Нарезка данных", "数据切分": "Нарезка данных",
"无法停止": "Невозможно остановить", "无法停止": "Невозможно остановить",
"无法读取音频:%s": "Не удалось прочитать аудио: %s", "无法读取音频:%s": "Не удалось прочитать аудио: %s",
"是": "Да", "是": "Да",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Сохранять только последний файл '.ckpt', чтобы сохранить место на диске:", "是否仅保存最新的ckpt文件以节省硬盘空间": "Сохранять только последний файл '.ckpt', чтобы сохранить место на диске:",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "Сохранять маленькую финальную модель в папку 'weights' на каждой точке сохранения:", "是否在每次保存时间点将最终小模型保存至weights文件夹": "Сохранять маленькую финальную модель в папку 'weights' на каждой точке сохранения:",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Кэшировать все тренировочные сеты в видеопамять. Кэширование маленький датасетов (меньше 10 минут) может ускорить тренировку, но кэширование больших, наоборот, займёт много видеопамяти и не сильно ускорит тренировку:", "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "Кэшировать все тренировочные сеты в видеопамять. Кэширование маленький датасетов (меньше 10 минут) может ускорить тренировку, но кэширование больших, наоборот, займёт много видеопамяти и не сильно ускорит тренировку:",
"显卡信息": "Информация о графических процессорах (GPUs):", "显卡信息": "Информация о графических процессорах (GPUs):",
"未使用": "Не используется", "未使用": "Не используется",
"未使用判别器预训练模型": "Предобученная модель дискриминатора не используется", "未使用判别器预训练模型": "Предобученная модель дискриминатора не используется",
"未使用生成器预训练模型": "Предобученная модель генератора не используется", "未使用生成器预训练模型": "Предобученная модель генератора не используется",
"未找到Roformer模型配置文件正在使用内置默认配置": "Конфигурация модели Roformer не найдена; используются встроенные значения", "未找到Roformer模型配置文件正在使用内置默认配置": "Конфигурация модели Roformer не найдена; используются встроенные значения",
"未检测到可用显卡将使用CPU训练耗时可能较长": "Поддерживаемый GPU не обнаружен; обучение на CPU может занять значительно больше времени", "未检测到可用显卡将使用CPU训练耗时可能较长": "Поддерживаемый GPU не обнаружен; обучение на CPU может занять значительно больше времени",
"未运行": "Не запущено", "未运行": "Не запущено",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Это программное обеспечение с открытым исходным кодом распространяется по лицензии MIT. Автор никак не контролирует это программное обеспечение. Пользователи, которые используют эту программу и распространяют аудиозаписи, полученные с помощью этой программы, несут полную ответственность за это. Если вы не согласны с этим, вы не можете использовать какие-либо коды и файлы в рамках этой программы или ссылаться на них. Подробнее в файле <b>Agreement-LICENSE.txt</b> в корневом каталоге программы.", "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "Это программное обеспечение с открытым исходным кодом распространяется по лицензии MIT. Автор никак не контролирует это программное обеспечение. Пользователи, которые используют эту программу и распространяют аудиозаписи, полученные с помощью этой программы, несут полную ответственность за это. Если вы не согласны с этим, вы не можете использовать какие-либо коды и файлы в рамках этой программы или ссылаться на них. Подробнее в файле <b>Agreement-LICENSE.txt</b> в корневом каталоге программы.",
"查看": "Просмотреть информацию", "查看": "Просмотреть информацию",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Просмотреть информацию о модели (работает только с маленькими моделями, взятыми из папки 'weights')", "查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Просмотреть информацию о модели (работает только с маленькими моделями, взятыми из папки 'weights')",
"检测到模型类型:%s": "Обнаружен тип модели: %s", "检测到模型类型:%s": "Обнаружен тип модели: %s",
"检索特征占比": "Соотношение поиска черт:", "检索特征占比": "Соотношение поиска черт:",
"模型": "Модели", "模型": "Модели",
"模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Информация о модели: %s\nЧастота дискретизации: %s\nУправление высотой тона: %s\nВерсия: %s", "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Информация о модели: %s\nЧастота дискретизации: %s\nУправление высотой тона: %s\nВерсия: %s",
"模型推理": "Изменение голоса", "模型推理": "Изменение голоса",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Создание модели из данных, полученных в процессе обучения (введите путь к большому файлу модели в папке 'logs'). Может пригодиться, если вам нужно завершить обучение и получить маленький файл готовой модели, или если вам нужно проверить недообученную модель:", "模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "Создание модели из данных, полученных в процессе обучения (введите путь к большому файлу модели в папке 'logs'). Может пригодиться, если вам нужно завершить обучение и получить маленький файл готовой модели, или если вам нужно проверить недообученную модель:",
"模型是否带音高指导": "Поддерживает ли модель изменение высоты голоса (1: да, 0: нет):", "模型是否带音高指导": "Поддерживает ли модель изменение высоты голоса (1: да, 0: нет):",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "Поддержка изменения высоты звука (обязательно для пения, необязательно для речи):", "模型是否带音高指导(唱歌一定要, 语音可以不要)": "Поддержка изменения высоты звука (обязательно для пения, необязательно для речи):",
"模型是否带音高指导,1是0否": "Поддерживает ли модель изменение высоты голоса (1: да, 0: нет):", "模型是否带音高指导,1是0否": "Поддерживает ли модель изменение высоты голоса (1: да, 0: нет):",
"模型版本型号": "Версия архитектуры модели:", "模型版本型号": "Версия архитектуры модели:",
"模型融合, 可用于测试音色融合": "Слияние моделей, может быть использовано для проверки слияния тембра", "模型融合, 可用于测试音色融合": "Слияние моделей, может быть использовано для проверки слияния тембра",
"模型融合失败:两个模型的结构不一致": "Не удалось объединить модели: их архитектуры не совпадают", "模型融合失败:两个模型的结构不一致": "Не удалось объединить модели: их архитектуры не совпадают",
"模型训练": "Обучение модели", "模型训练": "Обучение модели",
"模型路径": "Путь к папке:", "模型路径": "Путь к папке:",
"正在保存最终检查点:%s": "Сохранение итоговой контрольной точки: %s", "正在保存最终检查点:%s": "Сохранение итоговой контрольной точки: %s",
"正在保存检查点 %s_e%s%s": "Сохранение контрольной точки %s_e%s: %s", "正在保存检查点 %s_e%s%s": "Сохранение контрольной точки %s_e%s: %s",
"正在加载RMVPE模型": "Загрузка модели RMVPE", "正在加载RMVPE模型": "Загрузка модели RMVPE",
"正在加载模型": "Загрузка модели", "正在加载模型": "Загрузка модели",
"正在启动": "Запуск", "正在启动": "Запуск",
"正在收尾": "Завершение", "正在收尾": "Завершение",
"每张显卡的batch_size": "Размер пачки для GPU:", "每张显卡的batch_size": "Размер пачки для GPU:",
"淡入淡出长度": "Длина затухания", "淡入淡出长度": "Длина затухания",
"清理模型缓存": "Очистка кэша модели", "清理模型缓存": "Очистка кэша модели",
"版本": "Версия архитектуры модели:", "版本": "Версия архитектуры модели:",
"特征": "Признаки", "特征": "Признаки",
"特征提取": "Извлечь черты", "特征提取": "Извлечь черты",
"状态": "Состояние", "状态": "Состояние",
"独占 WASAPI 设备": "Эксклюзивное устройство WASAPI", "独占 WASAPI 设备": "Эксклюзивное устройство WASAPI",
"生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth", "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Рекомендуется выбрать +12 для конвертирования мужского голоса в женский и -12 для конвертирования женского в мужской. Если диапазон голоса слишком велик, и голос искажается, можно выбрать значение на свой вкус.", "男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "Рекомендуется выбрать +12 для конвертирования мужского голоса в женский и -12 для конвертирования женского в мужской. Если диапазон голоса слишком велик, и голос искажается, можно выбрать значение на свой вкус.",
"目标采样率": "Частота дискретизации аудио:", "目标采样率": "Частота дискретизации аудио:",
"等待中": "Ожидание", "等待中": "Ожидание",
"等待输入": "Ожидание ввода", "等待输入": "Ожидание ввода",
"算法延迟(ms):": "Задержка алгоритма (мс):", "算法延迟(ms):": "Задержка алгоритма (мс):",
"索引": "Индекс", "索引": "Индекс",
"索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Недопустимый индекс: используйте added_xxxx.index, not trained_xxxx.index", "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Недопустимый индекс: используйте added_xxxx.index, not trained_xxxx.index",
"索引检索失败": "Сбой поиска по индексу", "索引检索失败": "Сбой поиска по индексу",
"索引检索失败或未启用": "Поиск по индексу не выполнен или отключён", "索引检索失败或未启用": "Поиск по индексу не выполнен или отключён",
"索引训练": "Обучение индекса", "索引训练": "Обучение индекса",
"耗时": "Затраченное время", "耗时": "Затраченное время",
"耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Затраченное время: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs", "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Затраченное время: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs",
"融合": "Запустить слияние", "融合": "Запустить слияние",
"要改的模型信息": "Информация, которая будет изменена:", "要改的模型信息": "Информация, которая будет изменена:",
"要置入的模型信息": "Информация о модели:", "要置入的模型信息": "Информация о модели:",
"训练": "Обучение модели", "训练": "Обучение модели",
"训练已完成,正在保存最终模型": "Обучение завершено; сохраняется итоговая модель", "训练已完成,正在保存最终模型": "Обучение завершено; сохраняется итоговая модель",
"训练文件列表写入完成": "Список файлов обучения записан", "训练文件列表写入完成": "Список файлов обучения записан",
"训练模型": "Обучить модель", "训练模型": "Обучить модель",
"训练特征索引": "Обучить индекс черт", "训练特征索引": "Обучить индекс черт",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Обучение модели завершено. Журнал обучения можно просмотреть в консоли или в файле 'train.log' в папке с моделью.", "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Обучение модели завершено. Журнал обучения можно просмотреть в консоли или в файле 'train.log' в папке с моделью.",
"训练设备规则选择的精度:%s": "Точность обучения выбрана по правилам устройства: %s", "训练设备规则选择的精度:%s": "Точность обучения выбрана по правилам устройства: %s",
"训练轮次:{} [{:.0f}%]": "Эпоха обучения: {} [{:.0f}%]", "训练轮次:{} [{:.0f}%]": "Эпоха обучения: {} [{:.0f}%]",
"设备类型": "Тип устройства", "设备类型": "Тип устройства",
"请上传音频文件": "Загрузите аудиофайл", "请上传音频文件": "Загрузите аудиофайл",
"请填写输出文件夹路径": "Укажите путь к выходной папке", "请填写输出文件夹路径": "Укажите путь к выходной папке",
"请指定说话人id": "Номер говорящего/поющего:", "请指定说话人id": "Номер говорящего/поющего:",
"请选择index文件": "Пожалуйста, выберите файл индекса", "请选择index文件": "Пожалуйста, выберите файл индекса",
"请选择pth文件": "Пожалуйста, выберите файл pth", "请选择pth文件": "Пожалуйста, выберите файл pth",
"请选择说话人id": "Номер говорящего:", "请选择说话人id": "Номер говорящего:",
"转换": "Преобразовать", "转换": "Преобразовать",
"输入实验名": "Название модели:", "输入实验名": "Название модели:",
"输入待处理音频文件夹路径": "Путь к папке с аудиофайлами для обработки:", "输入待处理音频文件夹路径": "Путь к папке с аудиофайлами для обработки:",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Путь к папке с аудиофайлами для переработки (можно скопировать путь из адресной строки файлового менеджера):", "输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "Путь к папке с аудиофайлами для переработки (можно скопировать путь из адресной строки файлового менеджера):",
"输入待处理音频文件路径(默认是正确格式示例)": "Путь к аудиофайлу, который хотите обработать (ниже указан пример пути к файлу):", "输入待处理音频文件路径(默认是正确格式示例)": "Путь к аудиофайлу, который хотите обработать (ниже указан пример пути к файлу):",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Использовать громкость входного файла для замены или перемешивания с громкостью выходного файла. Чем ближе соотношение к 1, тем больше используется звука из выходного файла:", "输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "Использовать громкость входного файла для замены или перемешивания с громкостью выходного файла. Чем ближе соотношение к 1, тем больше используется звука из выходного файла:",
"输入监听": "Мониторинг входа", "输入监听": "Мониторинг входа",
"输入训练文件夹路径": "Путь к папке с аудиозаписями, на которых будет обучаться модель:", "输入训练文件夹路径": "Путь к папке с аудиозаписями, на которых будет обучаться модель:",
"输入设备": "Входное устройство", "输入设备": "Входное устройство",
"输入设备:%s:%s": "Устройство ввода: %s:%s", "输入设备:%s:%s": "Устройство ввода: %s:%s",
"输入降噪": "Уменьшение входного шума", "输入降噪": "Уменьшение входного шума",
"输出信息": "Статистика", "输出信息": "Статистика",
"输出变声": "Преобразование выхода", "输出变声": "Преобразование выхода",
"输出设备": "Выходное устройство", "输出设备": "Выходное устройство",
"输出设备:%s:%s": "Устройство вывода: %s:%s", "输出设备:%s:%s": "Устройство вывода: %s:%s",
"输出降噪": "Уменьшение выходного шума", "输出降噪": "Уменьшение выходного шума",
"输出音频(右下角三个点,点了可以下载)": "Аудиофайл (чтобы скачать, нажмите на три точки справа в плеере)", "输出音频(右下角三个点,点了可以下载)": "Аудиофайл (чтобы скачать, нажмите на три точки справа в плеере)",
"运行中": "Выполняется", "运行中": "Выполняется",
"进度": "Прогресс", "进度": "Прогресс",
"选择.index文件": "Выбрать файл .index", "选择.index文件": "Выбрать файл .index",
"选择.pth文件": "Выбрать файл .pth", "选择.pth文件": "Выбрать файл .pth",
"选择模型": "Выберите модель", "选择模型": "Выберите модель",
"选择索引": "Выберите индекс", "选择索引": "Выберите индекс",
"选择音高提取算法": "Выберите алгоритм извлечения высоты тона", "选择音高提取算法": "Выберите алгоритм извлечения высоты тона",
"采样率:": "Частота дискретизации:", "采样率:": "Частота дискретизации:",
"采样长度": "Длина сэмпла", "采样长度": "Длина сэмпла",
"重载设备列表": "Обновить список устройств", "重载设备列表": "Обновить список устройств",
"错误信息:%s": "Сведения об ошибке: %s", "错误信息:%s": "Сведения об ошибке: %s",
"错误:未知模型:%s": "Ошибка: неизвестная модель: %s", "错误:未知模型:%s": "Ошибка: неизвестная модель: %s",
"音调设置": "Настройка высоты звука", "音调设置": "Настройка высоты звука",
"音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "Аудио многоканальное, но модель монофоническая; все каналы будут усреднены", "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "Аудио многоканальное, но модель монофоническая; все каналы будут усреднены",
"音频设备": "Аудиоустройство", "音频设备": "Аудиоустройство",
"音高全部为0该音频无意义跳过%s": "Все значения высоты тона равны нулю; это аудио бесполезно и будет пропущено: %s", "音高全部为0该音频无意义跳过%s": "Все значения высоты тона равны нулю; это аудио бесполезно и будет пропущено: %s",
"音高算法": "Алгоритм высоты тона", "音高算法": "Алгоритм высоты тона",
"额外推理时长": "Доп. время переработки", "额外推理时长": "Доп. время переработки",
"数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "Предобработка не создала допустимые аудиофайлы для обучения. Проверьте набор данных и журнал.", "数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "Предобработка не создала допустимые аудиофайлы для обучения. Проверьте набор данных и журнал.",
"数据切分没有生成16k音频已停止后续特征提取和训练": "Предобработка не создала аудио 16 кГц. Извлечение признаков и обучение остановлены.", "数据切分没有生成16k音频已停止后续特征提取和训练": "Предобработка не создала аудио 16 кГц. Извлечение признаков и обучение остановлены.",
"数据切分输出文件不匹配,已停止后续特征提取和训练": "Выходные файлы предобработки не совпадают. Извлечение признаков и обучение остановлены.", "数据切分输出文件不匹配,已停止后续特征提取和训练": "Выходные файлы предобработки не совпадают. Извлечение признаков и обучение остановлены.",
"HuBERT特征提取没有生成有效结果已停止训练": "Извлечение признаков HuBERT не дало допустимых результатов. Обучение остановлено.", "HuBERT特征提取没有生成有效结果已停止训练": "Извлечение признаков HuBERT не дало допустимых результатов. Обучение остановлено.",
"F0提取没有生成有效结果已停止训练": "Извлечение F0 не дало допустимых результатов. Обучение остановлено.", "F0提取没有生成有效结果已停止训练": "Извлечение F0 не дало допустимых результатов. Обучение остановлено.",
"没有可用于训练的有效音频,请先完成数据切分和特征提取": "Нет допустимых аудиофайлов для обучения. Сначала выполните предобработку и извлечение признаков.", "没有可用于训练的有效音频,请先完成数据切分和特征提取": "Нет допустимых аудиофайлов для обучения. Сначала выполните предобработку и извлечение признаков.",
"已完成阶段": "Завершённые этапы", "已完成阶段": "Завершённые этапы",
"已成功": "Успешно", "已成功": "Успешно",
"刷新音色列表": "Обновить список голосов", "刷新音色列表": "Обновить список голосов",
"特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Путь к индексу признаков (подбирается после выбора модели; можно изменить)", "特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Путь к индексу признаков (подбирается после выбора модели; можно изменить)",
"[索引训练] 外部索引链接已存在:%s": "[Обучение индекса] Внешняя ссылка уже существует: %s", "[索引训练] 外部索引链接已存在:%s": "[Обучение индекса] Внешняя ссылка уже существует: %s",
"[索引训练][跳过] added索引已存在%s": "[Обучение индекса][Пропущено] Индекс added уже существует: %s", "[索引训练][跳过] added索引已存在%s": "[Обучение индекса][Пропущено] Индекс added уже существует: %s",
"[索引训练][跳过] trained索引已存在%s": "[Обучение индекса][Пропущено] Индекс trained уже существует: %s", "[索引训练][跳过] trained索引已存在%s": "[Обучение индекса][Пропущено] Индекс trained уже существует: %s",
"当前设备:%s | 推理精度:%s": "Текущее устройство: %s | Точность вывода: %s", "当前设备:%s | 推理精度:%s": "Текущее устройство: %s | Точность вывода: %s",
"正在预热CUDA Graph": "Прогрев CUDA Graph", "正在预热CUDA Graph": "Прогрев CUDA Graph",
"CUDA Graph预热完成": "Прогрев CUDA Graph завершён" "CUDA Graph预热完成": "Прогрев CUDA Graph завершён",
} "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s": "Извлечение данных начато: start_time=%.6f, запрошенный параллелизм=%s, фактический предел=%s",
"数据提取结束end_time=%.6f,总耗时=%.3f秒": "Извлечение данных завершено: end_time=%.6f, общее время=%.3f с"
}

View File

@@ -1,263 +1,265 @@
{ {
"人声提取激进程度": "Vokal ayırma yoğunluğu", "人声提取激进程度": "Vokal ayırma yoğunluğu",
"%s → 成功": "%s → Başarılı", "%s → 成功": "%s → Başarılı",
"%s运行中请先停止该任务": "%s çalışıyor; başka bir görev başlatmadan önce durdurun", "%s运行中请先停止该任务": "%s çalışıyor; başka bir görev başlatmadan önce durdurun",
"%s进程已终止": "%s işlemi sonlandırıldı", "%s进程已终止": "%s işlemi sonlandırıldı",
"====> 轮次:{} {}": "====> Dönem: {} {}", "====> 轮次:{} {}": "====> Dönem: {} {}",
"A模型权重": "A Modeli Ağırlığı:", "A模型权重": "A Modeli Ağırlığı:",
"A模型路径": "A Modeli Yolu:", "A模型路径": "A Modeli Yolu:",
"B模型路径": "B Modeli Yolu:", "B模型路径": "B Modeli Yolu:",
"CUDA可用%s": "CUDA kullanılabilir: %s", "CUDA可用%s": "CUDA kullanılabilir: %s",
"E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src", "E:\\语音音频+标注\\米津玄师\\src": "C:\\Users\\Desktop\\src",
"F0与HuBERT特征提取": "F0 ve HuBERT özellik çıkarımı", "F0与HuBERT特征提取": "F0 ve HuBERT özellik çıkarımı",
"F0提取": "F0 çıkarma", "F0提取": "F0 çıkarma",
"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:", "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:",
"HuBERT特征": "HuBERT özellikleri", "HuBERT特征": "HuBERT özellikleri",
"Index Rate": "Index Oranı", "Index Rate": "Index Oranı",
"RVC模型路径": "RVC Model Yolu:", "RVC模型路径": "RVC Model Yolu:",
"SOLA偏移%d": "SOLA ofseti: %d", "SOLA偏移%d": "SOLA ofseti: %d",
"[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0 çıkarma] Tamamlandı | Başarılı: %s | Atlandı: %s | Başarısız: %s", "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0 çıkarma] Tamamlandı | Başarılı: %s | Atlandı: %s | Başarısız: %s",
"[F0提取] 待处理:%s": "[F0 çıkarma] Pending: %s", "[F0提取] 待处理:%s": "[F0 çıkarma] Pending: %s",
"[F0提取] 无待处理音频,已全部跳过": "[F0 çıkarma] Bekleyen ses yok; tüm dosyalar atlandı", "[F0提取] 无待处理音频,已全部跳过": "[F0 çıkarma] Bekleyen ses yok; tüm dosyalar atlandı",
"[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0 çıkarma] İlerleme: %s/%s | Başarılı: %s | Atlandı: %s | %s", "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0 çıkarma] İlerleme: %s/%s | Başarılı: %s | Atlandı: %s | %s",
"[F0提取][失败] %s": "[F0 çıkarma][Başarısız] %s", "[F0提取][失败] %s": "[F0 çıkarma][Başarısız] %s",
"[F0提取][失败] %s\n%s": "[F0 çıkarma][Başarısız] %s\n%s", "[F0提取][失败] %s\n%s": "[F0 çıkarma][Başarısız] %s\n%s",
"[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT özellikleri] Tamamlandı | Başarılı: %s | Atlandı: %s | Başarısız: %s", "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT özellikleri] Tamamlandı | Başarılı: %s | Atlandı: %s | Başarısız: %s",
"[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT özellikleri] Bekleyen ses yok; atlanan: %s", "[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT özellikleri] Bekleyen ses yok; atlanan: %s",
"[HuBERT特征] 正在加载模型:%s": "[HuBERT özellikleri] Model yükleniyor: %s", "[HuBERT特征] 正在加载模型:%s": "[HuBERT özellikleri] Model yükleniyor: %s",
"[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT özellikleri] Cihaz: %s | Pending: %s | Atlandı: %s", "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT özellikleri] Cihaz: %s | Pending: %s | Atlandı: %s",
"[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT özellikleri] İlerleme: %s/%s | Başarılı: %s | Başarısız: %s | %s | %s", "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT özellikleri] İlerleme: %s/%s | Başarılı: %s | Başarısız: %s | %s | %s",
"[HuBERT特征][失败] %s\n%s": "[HuBERT özellikleri][Başarısız] %s\n%s", "[HuBERT特征][失败] %s\n%s": "[HuBERT özellikleri][Başarısız] %s\n%s",
"[HuBERT特征][失败] %s 包含NaN": "[HuBERT özellikleri][Başarısız] %s contains NaN values", "[HuBERT特征][失败] %s 包含NaN": "[HuBERT özellikleri][Başarısız] %s contains NaN values",
"[HuBERT特征][失败] 模型不存在:%s": "[HuBERT özellikleri][Başarısız] Model not found: %s", "[HuBERT特征][失败] 模型不存在:%s": "[HuBERT özellikleri][Başarısız] Model not found: %s",
"[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[Veri dilimleme] Alt görev tamamlandı | Başarılı: %s | Başarısız: %s", "[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[Veri dilimleme] Alt görev tamamlandı | Başarılı: %s | Başarısız: %s",
"[数据切分] 完成": "[Veri dilimleme] Tamamlandı", "[数据切分] 完成": "[Veri dilimleme] Tamamlandı",
"[数据切分] 开始": "[Veri dilimleme] Başlatıldı", "[数据切分] 开始": "[Veri dilimleme] Başlatıldı",
"[数据切分] 待处理:%s | 进程数:%s": "[Veri dilimleme] Pending: %s | İşlemler: %s", "[数据切分] 待处理:%s | 进程数:%s": "[Veri dilimleme] Pending: %s | İşlemler: %s",
"[数据切分] 进度:%s/%s | %s": "[Veri dilimleme] İlerleme: %s/%s | %s", "[数据切分] 进度:%s/%s | %s": "[Veri dilimleme] İlerleme: %s/%s | %s",
"[数据切分][失败] %s": "[Veri dilimleme][Başarısız] %s", "[数据切分][失败] %s": "[Veri dilimleme][Başarısız] %s",
"[数据切分][失败] %s\n%s": "[Veri dilimleme][Başarısız] %s\n%s", "[数据切分][失败] %s\n%s": "[Veri dilimleme][Başarısız] %s\n%s",
"[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[Veri dilimleme][Atlandı] Geçersiz veya anormal ses bölümü: %s_%s | Tepe: %s", "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[Veri dilimleme][Atlandı] Geçersiz veya anormal ses bölümü: %s_%s | Tepe: %s",
"[索引训练] 写入进度:%s/%s": "[İndeks eğitimi] Yazma ilerlemesi: %s/%s", "[索引训练] 写入进度:%s/%s": "[İndeks eğitimi] Yazma ilerlemesi: %s/%s",
"[索引训练] 已链接索引到外部目录:%s": "[İndeks eğitimi] İndeks harici klasöre bağlandı: %s", "[索引训练] 已链接索引到外部目录:%s": "[İndeks eğitimi] İndeks harici klasöre bağlandı: %s",
"[索引训练] 成功构建索引:%s": "[İndeks eğitimi] İndeks başarıyla oluşturuldu: %s", "[索引训练] 成功构建索引:%s": "[İndeks eğitimi] İndeks başarıyla oluşturuldu: %s",
"[索引训练] 正在写入特征向量": "[İndeks eğitimi] Özellik vektörleri ekleniyor", "[索引训练] 正在写入特征向量": "[İndeks eğitimi] Özellik vektörleri ekleniyor",
"[索引训练] 正在将%s条特征聚类为10000个中心": "[İndeks eğitimi] Clustering %s feature vectors into 10,000 centers", "[索引训练] 正在将%s条特征聚类为10000个中心": "[İndeks eğitimi] Clustering %s feature vectors into 10,000 centers",
"[索引训练] 正在训练索引": "[İndeks eğitimi] İndeks eğitiliyor", "[索引训练] 正在训练索引": "[İndeks eğitimi] İndeks eğitiliyor",
"[索引训练] 特征形状:%s | IVF数量%s": "[İndeks eğitimi] Özellik şekli: %s | IVF sayısı: %s", "[索引训练] 特征形状:%s | IVF数量%s": "[İndeks eğitimi] Özellik şekli: %s | IVF sayısı: %s",
"[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[İndeks eğitimi][Başarısız] İndeks harici klasöre bağlanamadı: %s\n%s", "[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[İndeks eğitimi][Başarısız] İndeks harici klasöre bağlanamadı: %s\n%s",
"[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[İndeks eğitimi][Başarısız] Kümeleme başarısız; özgün özelliklerle devam ediliyor\n%s", "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[İndeks eğitimi][Başarısız] Kümeleme başarısız; özgün özelliklerle devam ediliyor\n%s",
"[索引训练][失败] 请先进行特征提取": "[İndeks eğitimi][Başarısız] Önce özellikleri çıkarın", "[索引训练][失败] 请先进行特征提取": "[İndeks eğitimi][Başarısız] Önce özellikleri çıkarın",
"ckpt处理": "ckpt İşleme", "ckpt处理": "ckpt İşleme",
"index文件路径不可包含中文": ".index dosya yolu Çince karakter içeremez", "index文件路径不可包含中文": ".index dosya yolu Çince karakter içeremez",
"pth文件路径不可包含中文": ".pth dosya yolu Çince karakter içeremez", "pth文件路径不可包含中文": ".pth dosya yolu Çince karakter içeremez",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "RMVPE GPU yapılandırmasını tirelerle ayırın; örneğin 0-0-1, GPU 0'da iki ve GPU 1'de bir işlem çalıştırır", "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "RMVPE GPU yapılandırmasını tirelerle ayırın; örneğin 0-0-1, GPU 0'da iki ve GPU 1'de bir işlem çalıştırır",
"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: 填写实验配置. 实验数据放在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", "step1:正在处理数据": "Adım 1: Veri işleme",
"step2:正在提取音高&正在提取特征": "step2:Perde ve özellik çıkarımı", "step2:正在提取音高&正在提取特征": "step2:Perde ve özellik çıkarımı",
"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.", "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):", "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", "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ı", "step3a:正在训练模型": "Adım 3a: Model eğitimi başladı",
"step3b:正在训练索引": "adım 3b: indeks eğitiliyor", "step3b:正在训练索引": "adım 3b: indeks eğitiliyor",
"……仅显示最近10条失败记录": "…Yalnızca son 10 hata gösteriliyor", "……仅显示最近10条失败记录": "…Yalnızca son 10 hata gösteriliyor",
"……已省略前%s行仅显示最新状态": "…İlk %s satır atlandı; yalnızca en son durum gösteriliyor", "……已省略前%s行仅显示最新状态": "…İlk %s satır atlandı; yalnızca en son durum gösteriliyor",
"一键训练": "Tek Tuşla Eğit", "一键训练": "Tek Tuşla Eğit",
"也可批量输入音频文件, 二选一, 优先读文件夹": "Ses dosyaları ayrıca toplu olarak, iki seçimle, öncelikli okuma klasörüyle içe aktarılabilir", "也可批量输入音频文件, 二选一, 优先读文件夹": "Ses dosyaları ayrıca toplu olarak, iki seçimle, öncelikli okuma klasörüyle içe aktarılabilir",
"人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "UVR5 modelleriyle vokal ve eşliği toplu olarak ayırır.<br>Vokali koruyan bir model seçebilir veya yankı ve reverbi kaldırmak için DeEcho/DeReverb modellerini kullanabilirsiniz.", "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "UVR5 modelleriyle vokal ve eşliği toplu olarak ayırır.<br>Vokali koruyan bir model seçebilir veya yankı ve reverbi kaldırmak için DeEcho/DeReverb modellerini kullanabilirsiniz.",
"仅支持pm和rmvpe音高提取算法": "Yalnızca pm ve rmvpe perde çıkarma yöntemleri desteklenir", "仅支持pm和rmvpe音高提取算法": "Yalnızca pm ve rmvpe perde çıkarma yöntemleri desteklenir",
"从训练检查点提取的模型": "Eğitim kontrol noktasından çıkarılan model", "从训练检查点提取的模型": "Eğitim kontrol noktasından çıkarılan model",
"以-分隔输入使用的卡号, 例如 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:", "以-分隔输入使用的卡号, 例如 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:",
"任务": "Görev", "任务": "Görev",
"伴奏人声分离&去混响&去回声": "Vokal/Müzik Ayrıştırma ve Yankı Giderme", "伴奏人声分离&去混响&去回声": "Vokal/Müzik Ayrıştırma ve Yankı Giderme",
"使用显卡:%s": "Kullanılan GPU: %s", "使用显卡:%s": "Kullanılan GPU: %s",
"使用模型采样率": "Model örnekleme hızını kullan", "使用模型采样率": "Model örnekleme hızını kullan",
"使用设备采样率": "Cihaz örnekleme hızını kullan", "使用设备采样率": "Cihaz örnekleme hızını kullan",
"保存名": "Kaydetme Adı:", "保存名": "Kaydetme Adı:",
"保存的文件名, 默认空为和源文件同名": "Kaydedilecek dosya adı (varsayılan: kaynak dosya ile aynı):", "保存的文件名, 默认空为和源文件同名": "Kaydedilecek dosya adı (varsayılan: kaynak dosya ile aynı):",
"保存的模型名不带后缀": "Kaydedilecek model adı (uzantı olmadan):", "保存的模型名不带后缀": "Kaydedilecek model adı (uzantı olmadan):",
"保存频率save_every_epoch": "Kaydetme sıklığı (save_every_epoch):", "保存频率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:", "保护清辅音和呼吸声防止电音撕裂等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", "修改": "Düzenle",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Model bilgilerini düzenle (sadece 'weights' klasöründen çıkarılan küçük model dosyaları desteklenir)", "修改模型信息(仅支持weights文件夹下提取的小模型文件)": "Model bilgilerini düzenle (sadece 'weights' klasöründen çıkarılan küçük model dosyaları desteklenir)",
"停止一键训练": "Tek tıkla eğitimi durdur", "停止一键训练": "Tek tıkla eğitimi durdur",
"停止处理数据": "Veri ön işlemeyi durdur", "停止处理数据": "Veri ön işlemeyi durdur",
"停止特征提取": "Özellik çıkarmayı durdur", "停止特征提取": "Özellik çıkarmayı durdur",
"停止训练模型": "Model eğitimini durdur", "停止训练模型": "Model eğitimini durdur",
"停止训练索引": "İndeks eğitimini durdur", "停止训练索引": "İndeks eğitimini durdur",
"停止音频转换": "Ses dönüştürmeyi durdur", "停止音频转换": "Ses dönüştürmeyi durdur",
"全流程结束!": "Tüm işlemler tamamlandı!", "全流程结束!": "Tüm işlemler tamamlandı!",
"判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth", "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "Discriminator pretrained model not found; it will not be used: assets/pretrained%s/%sD%s.pth",
"加载模型": "Model yükle", "加载模型": "Model yükle",
"加载预训练底模D路径": "Önceden eğitilmiş temel D modelini yükleme yolu:", "加载预训练底模D路径": "Önceden eğitilmiş temel D modelini yükleme yolu:",
"加载预训练底模G路径": "Önceden eğitilmiş temel G modelini yükleme yolu:", "加载预训练底模G路径": "Önceden eğitilmiş temel G modelini yükleme yolu:",
"单次推理": "Tekli çıkarım", "单次推理": "Tekli çıkarım",
"卸载音色省显存": "GPU bellek kullanımını azaltmak için sesi kaldır", "卸载音色省显存": "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):", "变调(整数, 半音数量, 升八度12降八度-12)": "Transpoze et (tamsayı, yarıton sayısıyla; bir oktav yükseltmek için: 12, bir oktav düşürmek için: -12):",
"合成": "Sentez", "合成": "Sentez",
"后处理重采样至最终采样率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:", "后处理重采样至最终采样率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", "否": "Hayır",
"响应阈值": "Tepki eşiği", "响应阈值": "Tepki eşiği",
"响度因子": "ses yüksekliği faktörü", "响度因子": "ses yüksekliği faktörü",
"处理中": "İşleniyor", "处理中": "İşleniyor",
"处理数据": "Verileri işle", "处理数据": "Verileri işle",
"失败": "Başarısız", "失败": "Başarısız",
"失败记录": "Hata kayıtları", "失败记录": "Hata kayıtları",
"子进程执行失败,返回码:%s": "Alt işlem şu çıkış koduyla başarısız oldu: %s", "子进程执行失败,返回码:%s": "Alt işlem şu çıkış koduyla başarısız oldu: %s",
"导出文件格式": "Dışa aktarma dosya formatı", "导出文件格式": "Dışa aktarma dosya formatı",
"已停止": "Durduruldu", "已停止": "Durduruldu",
"已加载判别器预训练模型:%s": "Önceden eğitilmiş ayırıcı modeli yüklendi: %s", "已加载判别器预训练模型:%s": "Önceden eğitilmiş ayırıcı modeli yüklendi: %s",
"已加载生成器预训练模型:%s": "Önceden eğitilmiş üretici modeli yüklendi: %s", "已加载生成器预训练模型:%s": "Önceden eğitilmiş üretici modeli yüklendi: %s",
"已启用索引检索": "İndeks araması etkin", "已启用索引检索": "İndeks araması etkin",
"已完成": "Tamamlandı", "已完成": "Tamamlandı",
"已恢复判别器检查点": "Ayırıcı kontrol noktası geri yüklendi", "已恢复判别器检查点": "Ayırıcı kontrol noktası geri yüklendi",
"常见问题解答": "Sıkça Sorulan Sorular (SSS)", "常见问题解答": "Sıkça Sorulan Sorular (SSS)",
"常规设置": "Genel ayarlar", "常规设置": "Genel ayarlar",
"开始音频转换": "Ses dönüştürmeyi başlat", "开始音频转换": "Ses dönüştürmeyi başlat",
"当前": "Geçerli", "当前": "Geçerli",
"当前阶段": "Geçerli aşama", "当前阶段": "Geçerli aşama",
"很遗憾您这没有能用的显卡来支持您训练": "Maalesef, eğitiminizi desteklemek için uyumlu bir GPU bulunmamaktadır.", "很遗憾您这没有能用的显卡来支持您训练": "Maalesef, eğitiminizi desteklemek için uyumlu bir GPU bulunmamaktadır.",
"性别因子/声线粗细": "Cinsiyet faktörü / ses kalınlığı", "性别因子/声线粗细": "Cinsiyet faktörü / ses kalınlığı",
"性能设置": "Performans ayarları", "性能设置": "Performans ayarları",
"总训练轮数total_epoch": "Toplam eğitim turu (total_epoch):", "总训练轮数total_epoch": "Toplam eğitim turu (total_epoch):",
"成功": "Başarılı", "成功": "Başarılı",
"执行命令": "Komut", "执行命令": "Komut",
"批量推理": "Toplu çıkarım", "批量推理": "Toplu çıkarım",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认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", "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认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",
"拖拽或点击上传待处理音频": "İşlenecek sesi sürükleyip bırakın veya yüklemek için tıklayın", "拖拽或点击上传待处理音频": "İşlenecek sesi sürükleyip bırakın veya yüklemek için tıklayın",
"指定输出主人声文件夹": "Vokal için çıkış klasörünü belirtin:", "指定输出主人声文件夹": "Vokal için çıkış klasörünü belirtin:",
"指定输出文件夹": ıkış klasörünü belirt:", "指定输出文件夹": ıkış klasörünü belirt:",
"指定输出非主人声文件夹": "Müzik ve diğer sesler için çıkış klasörünü belirtin:", "指定输出非主人声文件夹": "Müzik ve diğer sesler için çıkış klasörünü belirtin:",
"推理时间(ms):": ıkarsama süresi (ms):", "推理时间(ms):": ıkarsama süresi (ms):",
"推理耗时:%.2f秒": ıkarım süresi: %.2f seconds", "推理耗时:%.2f秒": ıkarım süresi: %.2f seconds",
"推理音色": "Ses çıkartma (Inference):", "推理音色": "Ses çıkartma (Inference):",
"提取": ıkart", "提取": ıkart",
"提取音高和处理数据使用的CPU进程数": "Ses yüksekliği çıkartmak (Pitch) ve verileri işlemek için kullanılacak CPU işlemci sayısı:", "提取音高和处理数据使用的CPU进程数": "Ses yüksekliği çıkartmak (Pitch) ve verileri işlemek için kullanılacak CPU işlemci sayısı:",
"数据切分": "Veri dilimleme", "数据切分": "Veri dilimleme",
"无法停止": "Durdurulamıyor", "无法停止": "Durdurulamıyor",
"无法读取音频:%s": "Ses okunamadı: %s", "无法读取音频:%s": "Ses okunamadı: %s",
"是": "Evet", "是": "Evet",
"是否仅保存最新的ckpt文件以节省硬盘空间": "Sadece en son '.ckpt' dosyasını kaydet:", "是否仅保存最新的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:", "是否在每次保存时间点将最终小模型保存至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:", "是否缓存所有训练集至显存. 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", "显卡信息": "GPU Bilgisi",
"未使用": "Kullanılmadı", "未使用": "Kullanılmadı",
"未使用判别器预训练模型": "Önceden eğitilmiş ayırıcı modeli kullanılmadı", "未使用判别器预训练模型": "Önceden eğitilmiş ayırıcı modeli kullanılmadı",
"未使用生成器预训练模型": "Önceden eğitilmiş üretici modeli kullanılmadı", "未使用生成器预训练模型": "Önceden eğitilmiş üretici modeli kullanılmadı",
"未找到Roformer模型配置文件正在使用内置默认配置": "Roformer model yapılandırması bulunamadı; yerleşik varsayılanlar kullanılacak", "未找到Roformer模型配置文件正在使用内置默认配置": "Roformer model yapılandırması bulunamadı; yerleşik varsayılanlar kullanılacak",
"未检测到可用显卡将使用CPU训练耗时可能较长": "Desteklenen GPU algılanmadı; CPU ile eğitim çok daha uzun sürebilir", "未检测到可用显卡将使用CPU训练耗时可能较长": "Desteklenen GPU algılanmadı; CPU ile eğitim çok daha uzun sürebilir",
"未运行": "Başlatılmadı", "未运行": "Başlatılmadı",
"本软件以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.", "本软件以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", "查看": "Görüntüle",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Model bilgilerini görüntüle (sadece 'weights' klasöründen çıkarılan küçük model dosyaları desteklenir)", "查看模型信息(仅支持weights文件夹下提取的小模型文件)": "Model bilgilerini görüntüle (sadece 'weights' klasöründen çıkarılan küçük model dosyaları desteklenir)",
"检测到模型类型:%s": "Algılanan model türü: %s", "检测到模型类型:%s": "Algılanan model türü: %s",
"检索特征占比": "Arama özelliği oranı (vurgu gücünü kontrol eder, çok yüksek olması sanal etkilere neden olur)", "检索特征占比": "Arama özelliği oranı (vurgu gücünü kontrol eder, çok yüksek olması sanal etkilere neden olur)",
"模型": "Model", "模型": "Model",
"模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Model bilgisi: %s\nÖrnekleme hızı: %s\nPerde yönlendirmesi: %s\nSürüm: %s", "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "Model bilgisi: %s\nÖrnekleme hızı: %s\nPerde yönlendirmesi: %s\nSürüm: %s",
"模型推理": "Model çıkartma (Inference)", "模型推理": "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:", "模型提取(输入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 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):", "模型是否带音高指导(唱歌一定要, 语音可以不要)": "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):", "模型是否带音高指导,1是0否": "Modelin ses yüksekliği rehberi içerip içermediği (1: evet, 0: hayır):",
"模型版本型号": "Model mimari versiyonu:", "模型版本型号": "Model mimari versiyonu:",
"模型融合, 可用于测试音色融合": "Model birleştirme, ses rengi birleştirmesi için kullanılabilir", "模型融合, 可用于测试音色融合": "Model birleştirme, ses rengi birleştirmesi için kullanılabilir",
"模型融合失败:两个模型的结构不一致": "Model birleştirme başarısız: iki modelin mimarisi eşleşmiyor", "模型融合失败:两个模型的结构不一致": "Model birleştirme başarısız: iki modelin mimarisi eşleşmiyor",
"模型训练": "Model eğitimi", "模型训练": "Model eğitimi",
"模型路径": "Model Yolu:", "模型路径": "Model Yolu:",
"正在保存最终检查点:%s": "Son kontrol noktası kaydediliyor: %s", "正在保存最终检查点:%s": "Son kontrol noktası kaydediliyor: %s",
"正在保存检查点 %s_e%s%s": "Kontrol noktası kaydediliyor %s_e%s: %s", "正在保存检查点 %s_e%s%s": "Kontrol noktası kaydediliyor %s_e%s: %s",
"正在加载RMVPE模型": "RMVPE modeli yükleniyor", "正在加载RMVPE模型": "RMVPE modeli yükleniyor",
"正在加载模型": "Model yükleniyor", "正在加载模型": "Model yükleniyor",
"正在启动": "Başlatılıyor", "正在启动": "Başlatılıyor",
"正在收尾": "Tamamlanıyor", "正在收尾": "Tamamlanıyor",
"每张显卡的batch_size": "Her GPU için yığın boyutu (batch_size):", "每张显卡的batch_size": "Her GPU için yığın boyutu (batch_size):",
"淡入淡出长度": "Geçiş (Fade) uzunluğu", "淡入淡出长度": "Geçiş (Fade) uzunluğu",
"清理模型缓存": "Model önbelleği temizleniyor", "清理模型缓存": "Model önbelleği temizleniyor",
"版本": "Sürüm", "版本": "Sürüm",
"特征": "Özellikler", "特征": "Özellikler",
"特征提取": "Özellik çıkartma", "特征提取": "Özellik çıkartma",
"状态": "Durum", "状态": "Durum",
"独占 WASAPI 设备": "Özel WASAPI cihazı", "独占 WASAPI 设备": "Özel WASAPI cihazı",
"生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth", "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "Generator pretrained model not found; it will not be used: assets/pretrained%s/%sG%s.pth",
"男转女推荐+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.", "男转女推荐+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ı:", "目标采样率": "Hedef örnekleme oranı:",
"等待中": "Bekliyor", "等待中": "Bekliyor",
"等待输入": "Girdi bekleniyor", "等待输入": "Girdi bekleniyor",
"算法延迟(ms):": "Algoritma gecikmesi (ms):", "算法延迟(ms):": "Algoritma gecikmesi (ms):",
"索引": "İndeks", "索引": "İndeks",
"索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Geçersiz indeks: şunu kullanın added_xxxx.index, not trained_xxxx.index", "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "Geçersiz indeks: şunu kullanın added_xxxx.index, not trained_xxxx.index",
"索引检索失败": "İndeks araması başarısız", "索引检索失败": "İndeks araması başarısız",
"索引检索失败或未启用": "İndeks araması başarısız veya devre dışı", "索引检索失败或未启用": "İndeks araması başarısız veya devre dışı",
"索引训练": "İndeks eğitimi", "索引训练": "İndeks eğitimi",
"耗时": "Geçen süre", "耗时": "Geçen süre",
"耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Geçen süre: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs", "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "Geçen süre: features=%.3fs, index=%.3fs, pitch=%.3fs, model=%.3fs",
"融合": "Birleştir", "融合": "Birleştir",
"要改的模型信息": "Düzenlenecek model bilgileri:", "要改的模型信息": "Düzenlenecek model bilgileri:",
"要置入的模型信息": "Eklemek için model bilgileri:", "要置入的模型信息": "Eklemek için model bilgileri:",
"训练": "Eğitim", "训练": "Eğitim",
"训练已完成,正在保存最终模型": "Eğitim tamamlandı; son model kaydediliyor", "训练已完成,正在保存最终模型": "Eğitim tamamlandı; son model kaydediliyor",
"训练文件列表写入完成": "Eğitim dosyası listesi yazıldı", "训练文件列表写入完成": "Eğitim dosyası listesi yazıldı",
"训练模型": "Modeli Eğit", "训练模型": "Modeli Eğit",
"训练特征索引": "Özellik Dizinini 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.", "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "Eğitim tamamlandı. Eğitim günlüklerini konsolda veya deney klasörü altındaki train.log dosyasında kontrol edebilirsiniz.",
"训练设备规则选择的精度:%s": "Eğitim hassasiyeti cihaz kurallarına göre seçildi: %s", "训练设备规则选择的精度:%s": "Eğitim hassasiyeti cihaz kurallarına göre seçildi: %s",
"训练轮次:{} [{:.0f}%]": "Eğitim dönemi: {} [{:.0f}%]", "训练轮次:{} [{:.0f}%]": "Eğitim dönemi: {} [{:.0f}%]",
"设备类型": "Cihaz türü", "设备类型": "Cihaz türü",
"请上传音频文件": "Bir ses dosyası yükleyin", "请上传音频文件": "Bir ses dosyası yükleyin",
"请填写输出文件夹路径": ıktı klasörü yolunu girin", "请填写输出文件夹路径": ıktı klasörü yolunu girin",
"请指定说话人id": "Lütfen konuşmacı/sanatçı no belirtin:", "请指定说话人id": "Lütfen konuşmacı/sanatçı no belirtin:",
"请选择index文件": "Lütfen .index dosyası seçin", "请选择index文件": "Lütfen .index dosyası seçin",
"请选择pth文件": "Lütfen .pth dosyası seçin", "请选择pth文件": "Lütfen .pth dosyası seçin",
"请选择说话人id": "Konuşmacı/Şarkıcı No seçin:", "请选择说话人id": "Konuşmacı/Şarkıcı No seçin:",
"转换": "Dönüştür", "转换": "Dönüştür",
"输入实验名": "Deneysel adı girin:", "输入实验名": "Deneysel adı girin:",
"输入待处理音频文件夹路径": "İşlenecek ses klasörünün yolunu 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 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):", "输入待处理音频文件路径(默认是正确格式示例)": "İş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:", "输入源音量包络替换输出音量包络融合比例越靠近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:",
"输入监听": "Girişi izle", "输入监听": "Girişi izle",
"输入训练文件夹路径": "Eğitim klasörünün yolunu girin:", "输入训练文件夹路径": "Eğitim klasörünün yolunu girin:",
"输入设备": "Giriş cihazı", "输入设备": "Giriş cihazı",
"输入设备:%s:%s": "Giriş cihazı: %s:%s", "输入设备:%s:%s": "Giriş cihazı: %s:%s",
"输入降噪": "Giriş gürültü azaltma", "输入降噪": "Giriş gürültü azaltma",
"输出信息": ıkış bilgisi", "输出信息": ıkış bilgisi",
"输出变声": ıkış ses dönüşümü", "输出变声": ıkış ses dönüşümü",
"输出设备": ıkış cihazı", "输出设备": ıkış cihazı",
"输出设备:%s:%s": ıkış cihazı: %s:%s", "输出设备:%s:%s": ıkış cihazı: %s:%s",
"输出降噪": ıkış gürültü azaltma", "输出降噪": ıkış gürültü azaltma",
"输出音频(右下角三个点,点了可以下载)": "Ses dosyasını dışa aktar (indirmek için sağ alt köşedeki üç noktaya tıklayın)", "输出音频(右下角三个点,点了可以下载)": "Ses dosyasını dışa aktar (indirmek için sağ alt köşedeki üç noktaya tıklayın)",
"运行中": "Çalışıyor", "运行中": "Çalışıyor",
"进度": "İlerleme", "进度": "İlerleme",
"选择.index文件": ".index dosyası seç", "选择.index文件": ".index dosyası seç",
"选择.pth文件": ".pth dosyası seç", "选择.pth文件": ".pth dosyası seç",
"选择模型": "Model seçin", "选择模型": "Model seçin",
"选择索引": "İndeks seçin", "选择索引": "İndeks seçin",
"选择音高提取算法": "Perde çıkarma algoritmasını seçin", "选择音高提取算法": "Perde çıkarma algoritmasını seçin",
"采样率:": "Örnekleme hızı:", "采样率:": "Örnekleme hızı:",
"采样长度": "Örnekleme uzunluğu", "采样长度": "Örnekleme uzunluğu",
"重载设备列表": "Cihaz listesini yeniden yükle", "重载设备列表": "Cihaz listesini yeniden yükle",
"错误信息:%s": "Hata ayrıntıları: %s", "错误信息:%s": "Hata ayrıntıları: %s",
"错误:未知模型:%s": "Hata: bilinmeyen model: %s", "错误:未知模型:%s": "Hata: bilinmeyen model: %s",
"音调设置": "Pitch ayarları", "音调设置": "Pitch ayarları",
"音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "Ses birden fazla kanala sahip ancak model mono; tüm kanalların ortalaması alınacak", "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "Ses birden fazla kanala sahip ancak model mono; tüm kanalların ortalaması alınacak",
"音频设备": "Ses cihazı", "音频设备": "Ses cihazı",
"音高全部为0该音频无意义跳过%s": "Tüm perde değerleri sıfır; bu ses kullanılamaz ve atlanacak: %s", "音高全部为0该音频无意义跳过%s": "Tüm perde değerleri sıfır; bu ses kullanılamaz ve atlanacak: %s",
"音高算法": "Perde algoritması", "音高算法": "Perde algoritması",
"额外推理时长": "Ekstra çıkartma süresi", "额外推理时长": "Ekstra çıkartma süresi",
"数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "Veri ön işleme geçerli eğitim sesi üretmedi. Veri kümesini ve günlüğü kontrol edin.", "数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "Veri ön işleme geçerli eğitim sesi üretmedi. Veri kümesini ve günlüğü kontrol edin.",
"数据切分没有生成16k音频已停止后续特征提取和训练": "Veri ön işleme 16 kHz ses üretmedi. Özellik çıkarma ve eğitim durduruldu.", "数据切分没有生成16k音频已停止后续特征提取和训练": "Veri ön işleme 16 kHz ses üretmedi. Özellik çıkarma ve eğitim durduruldu.",
"数据切分输出文件不匹配,已停止后续特征提取和训练": "Veri ön işleme çıktı dosyaları eşleşmiyor. Özellik çıkarma ve eğitim durduruldu.", "数据切分输出文件不匹配,已停止后续特征提取和训练": "Veri ön işleme çıktı dosyaları eşleşmiyor. Özellik çıkarma ve eğitim durduruldu.",
"HuBERT特征提取没有生成有效结果已停止训练": "HuBERT özellik çıkarma geçerli sonuç üretmedi. Eğitim durduruldu.", "HuBERT特征提取没有生成有效结果已停止训练": "HuBERT özellik çıkarma geçerli sonuç üretmedi. Eğitim durduruldu.",
"F0提取没有生成有效结果已停止训练": "F0 çıkarma geçerli sonuç üretmedi. Eğitim durduruldu.", "F0提取没有生成有效结果已停止训练": "F0 çıkarma geçerli sonuç üretmedi. Eğitim durduruldu.",
"没有可用于训练的有效音频,请先完成数据切分和特征提取": "Eğitim için geçerli ses yok. Önce veri ön işleme ve özellik çıkarmayı tamamlayın.", "没有可用于训练的有效音频,请先完成数据切分和特征提取": "Eğitim için geçerli ses yok. Önce veri ön işleme ve özellik çıkarmayı tamamlayın.",
"已完成阶段": "Tamamlanan aşamalar", "已完成阶段": "Tamamlanan aşamalar",
"已成功": "Başarılı", "已成功": "Başarılı",
"刷新音色列表": "Ses listesini yenile", "刷新音色列表": "Ses listesini yenile",
"特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Özellik dizini yolu (model seçilince otomatik eşleşir; düzenlenebilir)", "特征检索库文件路径(选择模型后自动匹配,可手动修改)": "Özellik dizini yolu (model seçilince otomatik eşleşir; düzenlenebilir)",
"[索引训练] 外部索引链接已存在:%s": "[Dizin eğitimi] Harici dizin bağlantısı zaten var: %s", "[索引训练] 外部索引链接已存在:%s": "[Dizin eğitimi] Harici dizin bağlantısı zaten var: %s",
"[索引训练][跳过] added索引已存在%s": "[Dizin eğitimi][Atlandı] added dizini zaten var: %s", "[索引训练][跳过] added索引已存在%s": "[Dizin eğitimi][Atlandı] added dizini zaten var: %s",
"[索引训练][跳过] trained索引已存在%s": "[Dizin eğitimi][Atlandı] trained dizini zaten var: %s", "[索引训练][跳过] trained索引已存在%s": "[Dizin eğitimi][Atlandı] trained dizini zaten var: %s",
"当前设备:%s | 推理精度:%s": "Geçerli cihaz: %s | Çıkarım hassasiyeti: %s", "当前设备:%s | 推理精度:%s": "Geçerli cihaz: %s | Çıkarım hassasiyeti: %s",
"正在预热CUDA Graph": "CUDA Graph ısınıyor", "正在预热CUDA Graph": "CUDA Graph ısınıyor",
"CUDA Graph预热完成": "CUDA Graph ısınması tamamlandı" "CUDA Graph预热完成": "CUDA Graph ısınması tamamlandı",
} "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s": "Veri çıkarma başladı: start_time=%.6f, istenen eşzamanlılık=%s, gerçek üst sınır=%s",
"数据提取结束end_time=%.6f,总耗时=%.3f秒": "Veri çıkarma tamamlandı: end_time=%.6f, toplam süre=%.3f saniye"
}

View File

@@ -1,263 +1,265 @@
{ {
"人声提取激进程度": "人声提取激进程度", "人声提取激进程度": "人声提取激进程度",
"%s → 成功": "%s → 成功", "%s → 成功": "%s → 成功",
"%s运行中请先停止该任务": "%s运行中请先停止该任务", "%s运行中请先停止该任务": "%s运行中请先停止该任务",
"%s进程已终止": "%s进程已终止", "%s进程已终止": "%s进程已终止",
"====> 轮次:{} {}": "====> 轮次:{} {}", "====> 轮次:{} {}": "====> 轮次:{} {}",
"A模型权重": "A模型权重", "A模型权重": "A模型权重",
"A模型路径": "A模型路径", "A模型路径": "A模型路径",
"B模型路径": "B模型路径", "B模型路径": "B模型路径",
"CUDA可用%s": "CUDA可用%s", "CUDA可用%s": "CUDA可用%s",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src", "E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0与HuBERT特征提取": "F0与HuBERT特征提取", "F0与HuBERT特征提取": "F0与HuBERT特征提取",
"F0提取": "F0提取", "F0提取": "F0提取",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调", "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调",
"HuBERT特征": "HuBERT特征", "HuBERT特征": "HuBERT特征",
"Index Rate": "检索特征占比", "Index Rate": "检索特征占比",
"RVC模型路径": "RVC模型路径", "RVC模型路径": "RVC模型路径",
"SOLA偏移%d": "SOLA偏移%d", "SOLA偏移%d": "SOLA偏移%d",
"[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s", "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s",
"[F0提取] 待处理:%s": "[F0提取] 待处理:%s", "[F0提取] 待处理:%s": "[F0提取] 待处理:%s",
"[F0提取] 无待处理音频,已全部跳过": "[F0提取] 无待处理音频,已全部跳过", "[F0提取] 无待处理音频,已全部跳过": "[F0提取] 无待处理音频,已全部跳过",
"[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s", "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s",
"[F0提取][失败] %s": "[F0提取][失败] %s", "[F0提取][失败] %s": "[F0提取][失败] %s",
"[F0提取][失败] %s\n%s": "[F0提取][失败] %s\n%s", "[F0提取][失败] %s\n%s": "[F0提取][失败] %s\n%s",
"[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s", "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s",
"[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT特征] 无待处理音频,已全部跳过:%s", "[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT特征] 无待处理音频,已全部跳过:%s",
"[HuBERT特征] 正在加载模型:%s": "[HuBERT特征] 正在加载模型:%s", "[HuBERT特征] 正在加载模型:%s": "[HuBERT特征] 正在加载模型:%s",
"[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s", "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s",
"[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s", "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s",
"[HuBERT特征][失败] %s\n%s": "[HuBERT特征][失败] %s\n%s", "[HuBERT特征][失败] %s\n%s": "[HuBERT特征][失败] %s\n%s",
"[HuBERT特征][失败] %s 包含NaN": "[HuBERT特征][失败] %s 包含NaN", "[HuBERT特征][失败] %s 包含NaN": "[HuBERT特征][失败] %s 包含NaN",
"[HuBERT特征][失败] 模型不存在:%s": "[HuBERT特征][失败] 模型不存在:%s", "[HuBERT特征][失败] 模型不存在:%s": "[HuBERT特征][失败] 模型不存在:%s",
"[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[数据切分] 子任务完成 | 成功:%s | 失败:%s", "[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[数据切分] 子任务完成 | 成功:%s | 失败:%s",
"[数据切分] 完成": "[数据切分] 完成", "[数据切分] 完成": "[数据切分] 完成",
"[数据切分] 开始": "[数据切分] 开始", "[数据切分] 开始": "[数据切分] 开始",
"[数据切分] 待处理:%s | 进程数:%s": "[数据切分] 待处理:%s | 进程数:%s", "[数据切分] 待处理:%s | 进程数:%s": "[数据切分] 待处理:%s | 进程数:%s",
"[数据切分] 进度:%s/%s | %s": "[数据切分] 进度:%s/%s | %s", "[数据切分] 进度:%s/%s | %s": "[数据切分] 进度:%s/%s | %s",
"[数据切分][失败] %s": "[数据切分][失败] %s", "[数据切分][失败] %s": "[数据切分][失败] %s",
"[数据切分][失败] %s\n%s": "[数据切分][失败] %s\n%s", "[数据切分][失败] %s\n%s": "[数据切分][失败] %s\n%s",
"[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s", "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s",
"[索引训练] 写入进度:%s/%s": "[索引训练] 写入进度:%s/%s", "[索引训练] 写入进度:%s/%s": "[索引训练] 写入进度:%s/%s",
"[索引训练] 已链接索引到外部目录:%s": "[索引训练] 已链接索引到外部目录:%s", "[索引训练] 已链接索引到外部目录:%s": "[索引训练] 已链接索引到外部目录:%s",
"[索引训练] 成功构建索引:%s": "[索引训练] 成功构建索引:%s", "[索引训练] 成功构建索引:%s": "[索引训练] 成功构建索引:%s",
"[索引训练] 正在写入特征向量": "[索引训练] 正在写入特征向量", "[索引训练] 正在写入特征向量": "[索引训练] 正在写入特征向量",
"[索引训练] 正在将%s条特征聚类为10000个中心": "[索引训练] 正在将%s条特征聚类为10000个中心", "[索引训练] 正在将%s条特征聚类为10000个中心": "[索引训练] 正在将%s条特征聚类为10000个中心",
"[索引训练] 正在训练索引": "[索引训练] 正在训练索引", "[索引训练] 正在训练索引": "[索引训练] 正在训练索引",
"[索引训练] 特征形状:%s | IVF数量%s": "[索引训练] 特征形状:%s | IVF数量%s", "[索引训练] 特征形状:%s | IVF数量%s": "[索引训练] 特征形状:%s | IVF数量%s",
"[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[索引训练][失败] 无法链接索引到外部目录:%s\n%s", "[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[索引训练][失败] 无法链接索引到外部目录:%s\n%s",
"[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s", "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s",
"[索引训练][失败] 请先进行特征提取": "[索引训练][失败] 请先进行特征提取", "[索引训练][失败] 请先进行特征提取": "[索引训练][失败] 请先进行特征提取",
"ckpt处理": "ckpt处理", "ckpt处理": "ckpt处理",
"index文件路径不可包含中文": "index文件路径不可包含中文", "index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文", "pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程", "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ", "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ",
"step1:正在处理数据": "step1:正在处理数据", "step1:正在处理数据": "step1:正在处理数据",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征", "step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ", "step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)", "step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)",
"step3: 填写训练设置, 开始训练模型和索引": "step3: 填写训练设置, 开始训练模型和索引", "step3: 填写训练设置, 开始训练模型和索引": "step3: 填写训练设置, 开始训练模型和索引",
"step3a:正在训练模型": "step3a:正在训练模型", "step3a:正在训练模型": "step3a:正在训练模型",
"step3b:正在训练索引": "step3b:正在训练索引", "step3b:正在训练索引": "step3b:正在训练索引",
"……仅显示最近10条失败记录": "……仅显示最近10条失败记录", "……仅显示最近10条失败记录": "……仅显示最近10条失败记录",
"……已省略前%s行仅显示最新状态": "……已省略前%s行仅显示最新状态", "……已省略前%s行仅显示最新状态": "……已省略前%s行仅显示最新状态",
"一键训练": "一键训练", "一键训练": "一键训练",
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹", "也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
"人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。", "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。",
"仅支持pm和rmvpe音高提取算法": "仅支持pm和rmvpe音高提取算法", "仅支持pm和rmvpe音高提取算法": "仅支持pm和rmvpe音高提取算法",
"从训练检查点提取的模型": "从训练检查点提取的模型", "从训练检查点提取的模型": "从训练检查点提取的模型",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2", "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2",
"任务": "任务", "任务": "任务",
"伴奏人声分离&去混响&去回声": "伴奏人声分离&去混响&去回声", "伴奏人声分离&去混响&去回声": "伴奏人声分离&去混响&去回声",
"使用显卡:%s": "使用显卡:%s", "使用显卡:%s": "使用显卡:%s",
"使用模型采样率": "使用模型采样率", "使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率", "使用设备采样率": "使用设备采样率",
"保存名": "保存名", "保存名": "保存名",
"保存的文件名, 默认空为和源文件同名": "保存的文件名, 默认空为和源文件同名", "保存的文件名, 默认空为和源文件同名": "保存的文件名, 默认空为和源文件同名",
"保存的模型名不带后缀": "保存的模型名不带后缀", "保存的模型名不带后缀": "保存的模型名不带后缀",
"保存频率save_every_epoch": "保存频率save_every_epoch", "保存频率save_every_epoch": "保存频率save_every_epoch",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果", "保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果",
"修改": "修改", "修改": "修改",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型信息(仅支持weights文件夹下提取的小模型文件)", "修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型信息(仅支持weights文件夹下提取的小模型文件)",
"停止一键训练": "停止一键训练", "停止一键训练": "停止一键训练",
"停止处理数据": "停止处理数据", "停止处理数据": "停止处理数据",
"停止特征提取": "停止特征提取", "停止特征提取": "停止特征提取",
"停止训练模型": "停止训练模型", "停止训练模型": "停止训练模型",
"停止训练索引": "停止训练索引", "停止训练索引": "停止训练索引",
"停止音频转换": "停止音频转换", "停止音频转换": "停止音频转换",
"全流程结束!": "全流程结束!", "全流程结束!": "全流程结束!",
"判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth", "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth",
"加载模型": "加载模型", "加载模型": "加载模型",
"加载预训练底模D路径": "加载预训练底模D路径", "加载预训练底模D路径": "加载预训练底模D路径",
"加载预训练底模G路径": "加载预训练底模G路径", "加载预训练底模G路径": "加载预训练底模G路径",
"单次推理": "单次推理", "单次推理": "单次推理",
"卸载音色省显存": "卸载音色省显存", "卸载音色省显存": "卸载音色省显存",
"变调(整数, 半音数量, 升八度12降八度-12)": "变调(整数, 半音数量, 升八度12降八度-12)", "变调(整数, 半音数量, 升八度12降八度-12)": "变调(整数, 半音数量, 升八度12降八度-12)",
"合成": "合成", "合成": "合成",
"后处理重采样至最终采样率0为不进行重采样": "后处理重采样至最终采样率0为不进行重采样", "后处理重采样至最终采样率0为不进行重采样": "后处理重采样至最终采样率0为不进行重采样",
"否": "否", "否": "否",
"响应阈值": "响应阈值", "响应阈值": "响应阈值",
"响度因子": "响度因子", "响度因子": "响度因子",
"处理中": "处理中", "处理中": "处理中",
"处理数据": "处理数据", "处理数据": "处理数据",
"失败": "失败", "失败": "失败",
"失败记录": "失败记录", "失败记录": "失败记录",
"子进程执行失败,返回码:%s": "子进程执行失败,返回码:%s", "子进程执行失败,返回码:%s": "子进程执行失败,返回码:%s",
"导出文件格式": "导出文件格式", "导出文件格式": "导出文件格式",
"已停止": "已停止", "已停止": "已停止",
"已加载判别器预训练模型:%s": "已加载判别器预训练模型:%s", "已加载判别器预训练模型:%s": "已加载判别器预训练模型:%s",
"已加载生成器预训练模型:%s": "已加载生成器预训练模型:%s", "已加载生成器预训练模型:%s": "已加载生成器预训练模型:%s",
"已启用索引检索": "已启用索引检索", "已启用索引检索": "已启用索引检索",
"已完成": "已完成", "已完成": "已完成",
"已恢复判别器检查点": "已恢复判别器检查点", "已恢复判别器检查点": "已恢复判别器检查点",
"常见问题解答": "常见问题解答", "常见问题解答": "常见问题解答",
"常规设置": "常规设置", "常规设置": "常规设置",
"开始音频转换": "开始音频转换", "开始音频转换": "开始音频转换",
"当前": "当前", "当前": "当前",
"当前阶段": "当前阶段", "当前阶段": "当前阶段",
"很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练", "很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练",
"性别因子/声线粗细": "性别因子/声线粗细", "性别因子/声线粗细": "性别因子/声线粗细",
"性能设置": "性能设置", "性能设置": "性能设置",
"总训练轮数total_epoch": "总训练轮数total_epoch", "总训练轮数total_epoch": "总训练轮数total_epoch",
"成功": "成功", "成功": "成功",
"执行命令": "执行命令", "执行命令": "执行命令",
"批量推理": "批量推理", "批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ", "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ",
"拖拽或点击上传待处理音频": "拖拽或点击上传待处理音频", "拖拽或点击上传待处理音频": "拖拽或点击上传待处理音频",
"指定输出主人声文件夹": "指定输出主人声文件夹", "指定输出主人声文件夹": "指定输出主人声文件夹",
"指定输出文件夹": "指定输出文件夹", "指定输出文件夹": "指定输出文件夹",
"指定输出非主人声文件夹": "指定输出非主人声文件夹", "指定输出非主人声文件夹": "指定输出非主人声文件夹",
"推理时间(ms):": "推理时间(ms):", "推理时间(ms):": "推理时间(ms):",
"推理耗时:%.2f秒": "推理耗时:%.2f秒", "推理耗时:%.2f秒": "推理耗时:%.2f秒",
"推理音色": "推理音色", "推理音色": "推理音色",
"提取": "提取", "提取": "提取",
"提取音高和处理数据使用的CPU进程数": "提取音高和处理数据使用的CPU进程数", "提取音高和处理数据使用的CPU进程数": "提取音高和处理数据使用的CPU进程数",
"数据切分": "数据切分", "数据切分": "数据切分",
"无法停止": "无法停止", "无法停止": "无法停止",
"无法读取音频:%s": "无法读取音频:%s", "无法读取音频:%s": "无法读取音频:%s",
"是": "是", "是": "是",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否仅保存最新的ckpt文件以节省硬盘空间", "是否仅保存最新的ckpt文件以节省硬盘空间": "是否仅保存最新的ckpt文件以节省硬盘空间",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存时间点将最终小模型保存至weights文件夹", "是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存时间点将最终小模型保存至weights文件夹",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速", "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速",
"显卡信息": "显卡信息", "显卡信息": "显卡信息",
"未使用": "未使用", "未使用": "未使用",
"未使用判别器预训练模型": "未使用判别器预训练模型", "未使用判别器预训练模型": "未使用判别器预训练模型",
"未使用生成器预训练模型": "未使用生成器预训练模型", "未使用生成器预训练模型": "未使用生成器预训练模型",
"未找到Roformer模型配置文件正在使用内置默认配置": "未找到Roformer模型配置文件正在使用内置默认配置", "未找到Roformer模型配置文件正在使用内置默认配置": "未找到Roformer模型配置文件正在使用内置默认配置",
"未检测到可用显卡将使用CPU训练耗时可能较长": "未检测到可用显卡将使用CPU训练耗时可能较长", "未检测到可用显卡将使用CPU训练耗时可能较长": "未检测到可用显卡将使用CPU训练耗时可能较长",
"未运行": "未运行", "未运行": "未运行",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.", "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.",
"查看": "查看", "查看": "查看",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型信息(仅支持weights文件夹下提取的小模型文件)", "查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型信息(仅支持weights文件夹下提取的小模型文件)",
"检测到模型类型:%s": "检测到模型类型:%s", "检测到模型类型:%s": "检测到模型类型:%s",
"检索特征占比": "检索特征占比", "检索特征占比": "检索特征占比",
"模型": "模型", "模型": "模型",
"模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s", "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s",
"模型推理": "模型推理", "模型推理": "模型推理",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况", "模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况",
"模型是否带音高指导": "模型是否带音高指导", "模型是否带音高指导": "模型是否带音高指导",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否带音高指导(唱歌一定要, 语音可以不要)", "模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否带音高指导(唱歌一定要, 语音可以不要)",
"模型是否带音高指导,1是0否": "模型是否带音高指导,1是0否", "模型是否带音高指导,1是0否": "模型是否带音高指导,1是0否",
"模型版本型号": "模型版本型号", "模型版本型号": "模型版本型号",
"模型融合, 可用于测试音色融合": "模型融合, 可用于测试音色融合", "模型融合, 可用于测试音色融合": "模型融合, 可用于测试音色融合",
"模型融合失败:两个模型的结构不一致": "模型融合失败:两个模型的结构不一致", "模型融合失败:两个模型的结构不一致": "模型融合失败:两个模型的结构不一致",
"模型训练": "模型训练", "模型训练": "模型训练",
"模型路径": "模型路径", "模型路径": "模型路径",
"正在保存最终检查点:%s": "正在保存最终检查点:%s", "正在保存最终检查点:%s": "正在保存最终检查点:%s",
"正在保存检查点 %s_e%s%s": "正在保存检查点 %s_e%s%s", "正在保存检查点 %s_e%s%s": "正在保存检查点 %s_e%s%s",
"正在加载RMVPE模型": "正在加载RMVPE模型", "正在加载RMVPE模型": "正在加载RMVPE模型",
"正在加载模型": "正在加载模型", "正在加载模型": "正在加载模型",
"正在启动": "正在启动", "正在启动": "正在启动",
"正在收尾": "正在收尾", "正在收尾": "正在收尾",
"每张显卡的batch_size": "每张显卡的batch_size", "每张显卡的batch_size": "每张显卡的batch_size",
"淡入淡出长度": "淡入淡出长度", "淡入淡出长度": "淡入淡出长度",
"清理模型缓存": "清理模型缓存", "清理模型缓存": "清理模型缓存",
"版本": "版本", "版本": "版本",
"特征": "特征", "特征": "特征",
"特征提取": "特征提取", "特征提取": "特征提取",
"状态": "状态", "状态": "状态",
"独占 WASAPI 设备": "独占 WASAPI 设备", "独占 WASAPI 设备": "独占 WASAPI 设备",
"生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth", "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ", "男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ",
"目标采样率": "目标采样率", "目标采样率": "目标采样率",
"等待中": "等待中", "等待中": "等待中",
"等待输入": "等待输入", "等待输入": "等待输入",
"算法延迟(ms):": "算法延迟(ms):", "算法延迟(ms):": "算法延迟(ms):",
"索引": "索引", "索引": "索引",
"索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index", "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index",
"索引检索失败": "索引检索失败", "索引检索失败": "索引检索失败",
"索引检索失败或未启用": "索引检索失败或未启用", "索引检索失败或未启用": "索引检索失败或未启用",
"索引训练": "索引训练", "索引训练": "索引训练",
"耗时": "耗时", "耗时": "耗时",
"耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒", "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒",
"融合": "融合", "融合": "融合",
"要改的模型信息": "要改的模型信息", "要改的模型信息": "要改的模型信息",
"要置入的模型信息": "要置入的模型信息", "要置入的模型信息": "要置入的模型信息",
"训练": "训练", "训练": "训练",
"训练已完成,正在保存最终模型": "训练已完成,正在保存最终模型", "训练已完成,正在保存最终模型": "训练已完成,正在保存最终模型",
"训练文件列表写入完成": "训练文件列表写入完成", "训练文件列表写入完成": "训练文件列表写入完成",
"训练模型": "训练模型", "训练模型": "训练模型",
"训练特征索引": "训练特征索引", "训练特征索引": "训练特征索引",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log", "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log",
"训练设备规则选择的精度:%s": "训练设备规则选择的精度:%s", "训练设备规则选择的精度:%s": "训练设备规则选择的精度:%s",
"训练轮次:{} [{:.0f}%]": "训练轮次:{} [{:.0f}%]", "训练轮次:{} [{:.0f}%]": "训练轮次:{} [{:.0f}%]",
"设备类型": "设备类型", "设备类型": "设备类型",
"请上传音频文件": "请上传音频文件", "请上传音频文件": "请上传音频文件",
"请填写输出文件夹路径": "请填写输出文件夹路径", "请填写输出文件夹路径": "请填写输出文件夹路径",
"请指定说话人id": "请指定说话人id", "请指定说话人id": "请指定说话人id",
"请选择index文件": "请选择index文件", "请选择index文件": "请选择index文件",
"请选择pth文件": "请选择pth文件", "请选择pth文件": "请选择pth文件",
"请选择说话人id": "请选择说话人id", "请选择说话人id": "请选择说话人id",
"转换": "转换", "转换": "转换",
"输入实验名": "输入实验名", "输入实验名": "输入实验名",
"输入待处理音频文件夹路径": "输入待处理音频文件夹路径", "输入待处理音频文件夹路径": "输入待处理音频文件夹路径",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)", "输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)",
"输入待处理音频文件路径(默认是正确格式示例)": "输入待处理音频文件路径(默认是正确格式示例)", "输入待处理音频文件路径(默认是正确格式示例)": "输入待处理音频文件路径(默认是正确格式示例)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络", "输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络",
"输入监听": "输入监听", "输入监听": "输入监听",
"输入训练文件夹路径": "输入训练文件夹路径", "输入训练文件夹路径": "输入训练文件夹路径",
"输入设备": "输入设备", "输入设备": "输入设备",
"输入设备:%s:%s": "输入设备:%s:%s", "输入设备:%s:%s": "输入设备:%s:%s",
"输入降噪": "输入降噪", "输入降噪": "输入降噪",
"输出信息": "输出信息", "输出信息": "输出信息",
"输出变声": "输出变声", "输出变声": "输出变声",
"输出设备": "输出设备", "输出设备": "输出设备",
"输出设备:%s:%s": "输出设备:%s:%s", "输出设备:%s:%s": "输出设备:%s:%s",
"输出降噪": "输出降噪", "输出降噪": "输出降噪",
"输出音频(右下角三个点,点了可以下载)": "输出音频(右下角三个点,点了可以下载)", "输出音频(右下角三个点,点了可以下载)": "输出音频(右下角三个点,点了可以下载)",
"运行中": "运行中", "运行中": "运行中",
"进度": "进度", "进度": "进度",
"选择.index文件": "选择.index文件", "选择.index文件": "选择.index文件",
"选择.pth文件": "选择.pth文件", "选择.pth文件": "选择.pth文件",
"选择模型": "选择模型", "选择模型": "选择模型",
"选择索引": "选择索引", "选择索引": "选择索引",
"选择音高提取算法": "选择音高提取算法", "选择音高提取算法": "选择音高提取算法",
"采样率:": "采样率:", "采样率:": "采样率:",
"采样长度": "采样长度", "采样长度": "采样长度",
"重载设备列表": "重载设备列表", "重载设备列表": "重载设备列表",
"错误信息:%s": "错误信息:%s", "错误信息:%s": "错误信息:%s",
"错误:未知模型:%s": "错误:未知模型:%s", "错误:未知模型:%s": "错误:未知模型:%s",
"音调设置": "音调设置", "音调设置": "音调设置",
"音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值", "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值",
"音频设备": "音频设备", "音频设备": "音频设备",
"音高全部为0该音频无意义跳过%s": "音高全部为0该音频无意义跳过%s", "音高全部为0该音频无意义跳过%s": "音高全部为0该音频无意义跳过%s",
"音高算法": "音高算法", "音高算法": "音高算法",
"额外推理时长": "额外推理时长", "额外推理时长": "额外推理时长",
"数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "数据切分没有生成有效训练音频,请检查训练集和数据切分日志", "数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "数据切分没有生成有效训练音频,请检查训练集和数据切分日志",
"数据切分没有生成16k音频已停止后续特征提取和训练": "数据切分没有生成16k音频已停止后续特征提取和训练", "数据切分没有生成16k音频已停止后续特征提取和训练": "数据切分没有生成16k音频已停止后续特征提取和训练",
"数据切分输出文件不匹配,已停止后续特征提取和训练": "数据切分输出文件不匹配,已停止后续特征提取和训练", "数据切分输出文件不匹配,已停止后续特征提取和训练": "数据切分输出文件不匹配,已停止后续特征提取和训练",
"HuBERT特征提取没有生成有效结果已停止训练": "HuBERT特征提取没有生成有效结果已停止训练", "HuBERT特征提取没有生成有效结果已停止训练": "HuBERT特征提取没有生成有效结果已停止训练",
"F0提取没有生成有效结果已停止训练": "F0提取没有生成有效结果已停止训练", "F0提取没有生成有效结果已停止训练": "F0提取没有生成有效结果已停止训练",
"没有可用于训练的有效音频,请先完成数据切分和特征提取": "没有可用于训练的有效音频,请先完成数据切分和特征提取", "没有可用于训练的有效音频,请先完成数据切分和特征提取": "没有可用于训练的有效音频,请先完成数据切分和特征提取",
"已完成阶段": "已完成阶段", "已完成阶段": "已完成阶段",
"已成功": "已成功", "已成功": "已成功",
"刷新音色列表": "刷新音色列表", "刷新音色列表": "刷新音色列表",
"特征检索库文件路径(选择模型后自动匹配,可手动修改)": "特征检索库文件路径(选择模型后自动匹配,可手动修改)", "特征检索库文件路径(选择模型后自动匹配,可手动修改)": "特征检索库文件路径(选择模型后自动匹配,可手动修改)",
"[索引训练] 外部索引链接已存在:%s": "[索引训练] 外部索引链接已存在:%s", "[索引训练] 外部索引链接已存在:%s": "[索引训练] 外部索引链接已存在:%s",
"[索引训练][跳过] added索引已存在%s": "[索引训练][跳过] added索引已存在%s", "[索引训练][跳过] added索引已存在%s": "[索引训练][跳过] added索引已存在%s",
"[索引训练][跳过] trained索引已存在%s": "[索引训练][跳过] trained索引已存在%s", "[索引训练][跳过] trained索引已存在%s": "[索引训练][跳过] trained索引已存在%s",
"当前设备:%s | 推理精度:%s": "当前设备:%s | 推理精度:%s", "当前设备:%s | 推理精度:%s": "当前设备:%s | 推理精度:%s",
"正在预热CUDA Graph": "正在预热CUDA Graph", "正在预热CUDA Graph": "正在预热CUDA Graph",
"CUDA Graph预热完成": "CUDA Graph预热完成" "CUDA Graph预热完成": "CUDA Graph预热完成",
} "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s": "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s",
"数据提取结束end_time=%.6f,总耗时=%.3f秒": "数据提取结束end_time=%.6f,总耗时=%.3f秒"
}

View File

@@ -1,263 +1,265 @@
{ {
"人声提取激进程度": "人聲提取激進程度", "人声提取激进程度": "人聲提取激進程度",
"%s → 成功": "%s → 成功", "%s → 成功": "%s → 成功",
"%s运行中请先停止该任务": "%s运行中请先停止该任务", "%s运行中请先停止该任务": "%s运行中请先停止该任务",
"%s进程已终止": "%s進程已终止", "%s进程已终止": "%s進程已终止",
"====> 轮次:{} {}": "====> 輪次:{} {}", "====> 轮次:{} {}": "====> 輪次:{} {}",
"A模型权重": "A模型權重", "A模型权重": "A模型權重",
"A模型路径": "A模型路徑", "A模型路径": "A模型路徑",
"B模型路径": "B模型路徑", "B模型路径": "B模型路徑",
"CUDA可用%s": "CUDA可用%s", "CUDA可用%s": "CUDA可用%s",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src", "E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0与HuBERT特征提取": "F0與HuBERT特徵提取", "F0与HuBERT特征提取": "F0與HuBERT特徵提取",
"F0提取": "F0提取", "F0提取": "F0提取",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲線檔案可選一行一個音高代替預設的F0及升降調", "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲線檔案可選一行一個音高代替預設的F0及升降調",
"HuBERT特征": "HuBERT特徵", "HuBERT特征": "HuBERT特徵",
"Index Rate": "Index Rate", "Index Rate": "Index Rate",
"RVC模型路径": "RVC模型路径", "RVC模型路径": "RVC模型路径",
"SOLA偏移%d": "SOLA偏移%d", "SOLA偏移%d": "SOLA偏移%d",
"[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0提取] 完成 | 成功:%s | 跳過:%s | 失敗:%s", "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0提取] 完成 | 成功:%s | 跳過:%s | 失敗:%s",
"[F0提取] 待处理:%s": "[F0提取] 待处理:%s", "[F0提取] 待处理:%s": "[F0提取] 待处理:%s",
"[F0提取] 无待处理音频,已全部跳过": "[F0提取] 無待处理音頻,已全部跳過", "[F0提取] 无待处理音频,已全部跳过": "[F0提取] 無待处理音頻,已全部跳過",
"[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0提取] 進度:%s/%s | 成功:%s | 跳過:%s | %s", "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0提取] 進度:%s/%s | 成功:%s | 跳過:%s | %s",
"[F0提取][失败] %s": "[F0提取][失敗] %s", "[F0提取][失败] %s": "[F0提取][失敗] %s",
"[F0提取][失败] %s\n%s": "[F0提取][失敗] %s\n%s", "[F0提取][失败] %s\n%s": "[F0提取][失敗] %s\n%s",
"[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT特徵] 完成 | 成功:%s | 跳過:%s | 失敗:%s", "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT特徵] 完成 | 成功:%s | 跳過:%s | 失敗:%s",
"[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT特徵] 無待处理音頻,已全部跳過:%s", "[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT特徵] 無待处理音頻,已全部跳過:%s",
"[HuBERT特征] 正在加载模型:%s": "[HuBERT特徵] 正在載入模型:%s", "[HuBERT特征] 正在加载模型:%s": "[HuBERT特徵] 正在載入模型:%s",
"[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT特徵] 设备:%s | 待处理:%s | 已跳過:%s", "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT特徵] 设备:%s | 待处理:%s | 已跳過:%s",
"[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT特徵] 進度:%s/%s | 成功:%s | 失敗:%s | %s | %s", "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT特徵] 進度:%s/%s | 成功:%s | 失敗:%s | %s | %s",
"[HuBERT特征][失败] %s\n%s": "[HuBERT特徵][失敗] %s\n%s", "[HuBERT特征][失败] %s\n%s": "[HuBERT特徵][失敗] %s\n%s",
"[HuBERT特征][失败] %s 包含NaN": "[HuBERT特徵][失敗] %s 包含NaN", "[HuBERT特征][失败] %s 包含NaN": "[HuBERT特徵][失敗] %s 包含NaN",
"[HuBERT特征][失败] 模型不存在:%s": "[HuBERT特徵][失敗] 模型不存在:%s", "[HuBERT特征][失败] 模型不存在:%s": "[HuBERT特徵][失敗] 模型不存在:%s",
"[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[數據切分] 子任务完成 | 成功:%s | 失敗:%s", "[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[數據切分] 子任务完成 | 成功:%s | 失敗:%s",
"[数据切分] 完成": "[數據切分] 完成", "[数据切分] 完成": "[數據切分] 完成",
"[数据切分] 开始": "[數據切分] 开始", "[数据切分] 开始": "[數據切分] 开始",
"[数据切分] 待处理:%s | 进程数:%s": "[數據切分] 待处理:%s | 進程数:%s", "[数据切分] 待处理:%s | 进程数:%s": "[數據切分] 待处理:%s | 進程数:%s",
"[数据切分] 进度:%s/%s | %s": "[數據切分] 進度:%s/%s | %s", "[数据切分] 进度:%s/%s | %s": "[數據切分] 進度:%s/%s | %s",
"[数据切分][失败] %s": "[數據切分][失敗] %s", "[数据切分][失败] %s": "[數據切分][失敗] %s",
"[数据切分][失败] %s\n%s": "[數據切分][失敗] %s\n%s", "[数据切分][失败] %s\n%s": "[數據切分][失敗] %s\n%s",
"[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[數據切分][跳過] 無效或異常音頻片段:%s_%s | 峰值:%s", "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[數據切分][跳過] 無效或異常音頻片段:%s_%s | 峰值:%s",
"[索引训练] 写入进度:%s/%s": "[索引訓練] 写入進度:%s/%s", "[索引训练] 写入进度:%s/%s": "[索引訓練] 写入進度:%s/%s",
"[索引训练] 已链接索引到外部目录:%s": "[索引訓練] 已連結索引到外部目录:%s", "[索引训练] 已链接索引到外部目录:%s": "[索引訓練] 已連結索引到外部目录:%s",
"[索引训练] 成功构建索引:%s": "[索引訓練] 成功构建索引:%s", "[索引训练] 成功构建索引:%s": "[索引訓練] 成功构建索引:%s",
"[索引训练] 正在写入特征向量": "[索引訓練] 正在写入特徵向量", "[索引训练] 正在写入特征向量": "[索引訓練] 正在写入特徵向量",
"[索引训练] 正在将%s条特征聚类为10000个中心": "[索引訓練] 正在将%s條特徵聚类為10000个中心", "[索引训练] 正在将%s条特征聚类为10000个中心": "[索引訓練] 正在将%s條特徵聚类為10000个中心",
"[索引训练] 正在训练索引": "[索引訓練] 正在訓練索引", "[索引训练] 正在训练索引": "[索引訓練] 正在訓練索引",
"[索引训练] 特征形状:%s | IVF数量%s": "[索引訓練] 特徵形状:%s | IVF數量%s", "[索引训练] 特征形状:%s | IVF数量%s": "[索引訓練] 特徵形状:%s | IVF數量%s",
"[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[索引訓練][失敗] 無法連結索引到外部目录:%s\n%s", "[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[索引訓練][失敗] 無法連結索引到外部目录:%s\n%s",
"[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[索引訓練][失敗] 聚类失敗,将使用原始特徵繼續\n%s", "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[索引訓練][失敗] 聚类失敗,将使用原始特徵繼續\n%s",
"[索引训练][失败] 请先进行特征提取": "[索引訓練][失敗] 请先進行特徵提取", "[索引训练][失败] 请先进行特征提取": "[索引訓練][失敗] 请先進行特徵提取",
"ckpt处理": "ckpt處理", "ckpt处理": "ckpt處理",
"index文件路径不可包含中文": "index文件路径不可包含中文", "index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文", "pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡號配置以-分隔輸入使用的不同進程卡號,例如0-0-1使用在卡0上跑2個進程並在卡1上跑1個進程", "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡號配置以-分隔輸入使用的不同進程卡號,例如0-0-1使用在卡0上跑2個進程並在卡1上跑1個進程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1填寫實驗配置。實驗數據放在logs下每個實驗一個資料夾需手動輸入實驗名路徑內含實驗配置、日誌、訓練得到的模型檔案。", "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1填寫實驗配置。實驗數據放在logs下每個實驗一個資料夾需手動輸入實驗名路徑內含實驗配置、日誌、訓練得到的模型檔案。",
"step1:正在处理数据": "step1:正在处理数据", "step1:正在处理数据": "step1:正在处理数据",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征", "step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a自動遍歷訓練資料夾下所有可解碼成音頻的檔案並進行切片歸一化在實驗目錄下生成2個wav資料夾暫時只支援單人訓練。", "step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a自動遍歷訓練資料夾下所有可解碼成音頻的檔案並進行切片歸一化在實驗目錄下生成2個wav資料夾暫時只支援單人訓練。",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "步驟2b: 使用CPU提取音高(如果模型帶音高), 使用GPU提取特徵(選擇卡號)", "step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "步驟2b: 使用CPU提取音高(如果模型帶音高), 使用GPU提取特徵(選擇卡號)",
"step3: 填写训练设置, 开始训练模型和索引": "步驟3: 填寫訓練設定, 開始訓練模型和索引", "step3: 填写训练设置, 开始训练模型和索引": "步驟3: 填寫訓練設定, 開始訓練模型和索引",
"step3a:正在训练模型": "step3a:正在训练模型", "step3a:正在训练模型": "step3a:正在训练模型",
"step3b:正在训练索引": "step3b正在訓練索引", "step3b:正在训练索引": "step3b正在訓練索引",
"……仅显示最近10条失败记录": "……僅顯示最近10條失敗記錄", "……仅显示最近10条失败记录": "……僅顯示最近10條失敗記錄",
"……已省略前%s行仅显示最新状态": "……已省略前%s行僅顯示最新状态", "……已省略前%s行仅显示最新状态": "……已省略前%s行僅顯示最新状态",
"一键训练": "一鍵訓練", "一键训练": "一鍵訓練",
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹", "也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
"人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "批次處理人聲與伴奏分離使用UVR5模型。<br>可選擇保留人聲的模型或使用DeEcho、DeReverb模型去除回音和混響。", "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "批次處理人聲與伴奏分離使用UVR5模型。<br>可選擇保留人聲的模型或使用DeEcho、DeReverb模型去除回音和混響。",
"仅支持pm和rmvpe音高提取算法": "僅支援pm和rmvpe音高提取算法", "仅支持pm和rmvpe音高提取算法": "僅支援pm和rmvpe音高提取算法",
"从训练检查点提取的模型": "从訓練检查点提取的模型", "从训练检查点提取的模型": "从訓練检查点提取的模型",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔輸入使用的卡號, 例如 0-1-2 使用卡0和卡1和卡2", "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔輸入使用的卡號, 例如 0-1-2 使用卡0和卡1和卡2",
"任务": "任务", "任务": "任务",
"伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲", "伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲",
"使用显卡:%s": "使用顯示卡:%s", "使用显卡:%s": "使用顯示卡:%s",
"使用模型采样率": "使用模型采样率", "使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率", "使用设备采样率": "使用设备采样率",
"保存名": "儲存名", "保存名": "儲存名",
"保存的文件名, 默认空为和源文件同名": "儲存的檔案名,預設空為與來源檔案同名", "保存的文件名, 默认空为和源文件同名": "儲存的檔案名,預設空為與來源檔案同名",
"保存的模型名不带后缀": "儲存的模型名不帶副檔名", "保存的模型名不带后缀": "儲存的模型名不帶副檔名",
"保存频率save_every_epoch": "保存頻率save_every_epoch", "保存频率save_every_epoch": "保存頻率save_every_epoch",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保護清輔音和呼吸聲防止電音撕裂等artifact拉滿0.5不開啟,調低加大保護力度但可能降低索引效果", "保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保護清輔音和呼吸聲防止電音撕裂等artifact拉滿0.5不開啟,調低加大保護力度但可能降低索引效果",
"修改": "修改", "修改": "修改",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型資訊(僅支援weights資料夾下提取的小模型檔案)", "修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"停止一键训练": "停止一鍵訓練", "停止一键训练": "停止一鍵訓練",
"停止处理数据": "停止處理資料", "停止处理数据": "停止處理資料",
"停止特征提取": "停止特徵擷取", "停止特征提取": "停止特徵擷取",
"停止训练模型": "停止訓練模型", "停止训练模型": "停止訓練模型",
"停止训练索引": "停止訓練索引", "停止训练索引": "停止訓練索引",
"停止音频转换": "停止音訊轉換", "停止音频转换": "停止音訊轉換",
"全流程结束!": "全流程结束!", "全流程结束!": "全流程结束!",
"判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "判别器预訓練模型不存在将不使用assets/pretrained%s/%sD%s.pth", "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "判别器预訓練模型不存在将不使用assets/pretrained%s/%sD%s.pth",
"加载模型": "載入模型", "加载模型": "載入模型",
"加载预训练底模D路径": "加載預訓練底模D路徑", "加载预训练底模D路径": "加載預訓練底模D路徑",
"加载预训练底模G路径": "加載預訓練底模G路徑", "加载预训练底模G路径": "加載預訓練底模G路徑",
"单次推理": "单次推理", "单次推理": "单次推理",
"卸载音色省显存": "卸載音色節省 VRAM", "卸载音色省显存": "卸載音色節省 VRAM",
"变调(整数, 半音数量, 升八度12降八度-12)": "變調(整數、半音數量、升八度12降八度-12)", "变调(整数, 半音数量, 升八度12降八度-12)": "變調(整數、半音數量、升八度12降八度-12)",
"合成": "合成", "合成": "合成",
"后处理重采样至最终采样率0为不进行重采样": "後處理重採樣至最終採樣率0為不進行重採樣", "后处理重采样至最终采样率0为不进行重采样": "後處理重採樣至最終採樣率0為不進行重採樣",
"否": "否", "否": "否",
"响应阈值": "響應閾值", "响应阈值": "響應閾值",
"响度因子": "響度因子", "响度因子": "響度因子",
"处理中": "處理中", "处理中": "處理中",
"处理数据": "處理資料", "处理数据": "處理資料",
"失败": "失敗", "失败": "失敗",
"失败记录": "失敗記錄", "失败记录": "失敗記錄",
"子进程执行失败,返回码:%s": "子進程执行失敗,返回码:%s", "子进程执行失败,返回码:%s": "子進程执行失敗,返回码:%s",
"导出文件格式": "導出檔格式", "导出文件格式": "導出檔格式",
"已停止": "已停止", "已停止": "已停止",
"已加载判别器预训练模型:%s": "已載入判别器预訓練模型:%s", "已加载判别器预训练模型:%s": "已載入判别器预訓練模型:%s",
"已加载生成器预训练模型:%s": "已載入生成器预訓練模型:%s", "已加载生成器预训练模型:%s": "已載入生成器预訓練模型:%s",
"已启用索引检索": "已启用索引检索", "已启用索引检索": "已启用索引检索",
"已完成": "已完成", "已完成": "已完成",
"已恢复判别器检查点": "已恢复判别器检查点", "已恢复判别器检查点": "已恢复判别器检查点",
"常见问题解答": "常見問題解答", "常见问题解答": "常見問題解答",
"常规设置": "一般設定", "常规设置": "一般設定",
"开始音频转换": "開始音訊轉換", "开始音频转换": "開始音訊轉換",
"当前": "目前", "当前": "目前",
"当前阶段": "目前阶段", "当前阶段": "目前阶段",
"很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练", "很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练",
"性别因子/声线粗细": "性別因子/聲線粗細", "性别因子/声线粗细": "性別因子/聲線粗細",
"性能设置": "效能設定", "性能设置": "效能設定",
"总训练轮数total_epoch": "總訓練輪數total_epoch", "总训练轮数total_epoch": "總訓練輪數total_epoch",
"成功": "成功", "成功": "成功",
"执行命令": "执行命令", "执行命令": "执行命令",
"批量推理": "批量推理", "批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量轉換,輸入待轉換音頻資料夾,或上傳多個音頻檔案,在指定資料夾(默認opt)下輸出轉換的音頻。", "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量轉換,輸入待轉換音頻資料夾,或上傳多個音頻檔案,在指定資料夾(默認opt)下輸出轉換的音頻。",
"拖拽或点击上传待处理音频": "拖放或按一下上載待處理音訊", "拖拽或点击上传待处理音频": "拖放或按一下上載待處理音訊",
"指定输出主人声文件夹": "指定输出主人声文件夹", "指定输出主人声文件夹": "指定输出主人声文件夹",
"指定输出文件夹": "指定輸出資料夾", "指定输出文件夹": "指定輸出資料夾",
"指定输出非主人声文件夹": "指定输出非主人声文件夹", "指定输出非主人声文件夹": "指定输出非主人声文件夹",
"推理时间(ms):": "推理時間(ms):", "推理时间(ms):": "推理時間(ms):",
"推理耗时:%.2f秒": "推理耗时:%.2f秒", "推理耗时:%.2f秒": "推理耗时:%.2f秒",
"推理音色": "推理音色", "推理音色": "推理音色",
"提取": "提取", "提取": "提取",
"提取音高和处理数据使用的CPU进程数": "提取音高和處理數據使用的CPU進程數", "提取音高和处理数据使用的CPU进程数": "提取音高和處理數據使用的CPU進程數",
"数据切分": "數據切分", "数据切分": "數據切分",
"无法停止": "無法停止", "无法停止": "無法停止",
"无法读取音频:%s": "無法读取音頻:%s", "无法读取音频:%s": "無法读取音頻:%s",
"是": "是", "是": "是",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt檔案以節省硬碟空間", "是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt檔案以節省硬碟空間",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights檔夾", "是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights檔夾",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否緩存所有訓練集至 VRAM。小於10分鐘的小數據可緩存以加速訓練大數據緩存會爆 VRAM 也加不了多少速度", "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否緩存所有訓練集至 VRAM。小於10分鐘的小數據可緩存以加速訓練大數據緩存會爆 VRAM 也加不了多少速度",
"显卡信息": "顯示卡資訊", "显卡信息": "顯示卡資訊",
"未使用": "未使用", "未使用": "未使用",
"未使用判别器预训练模型": "未使用判别器预訓練模型", "未使用判别器预训练模型": "未使用判别器预訓練模型",
"未使用生成器预训练模型": "未使用生成器预訓練模型", "未使用生成器预训练模型": "未使用生成器预訓練模型",
"未找到Roformer模型配置文件正在使用内置默认配置": "未找到Roformer模型配置檔案正在使用内置預設配置", "未找到Roformer模型配置文件正在使用内置默认配置": "未找到Roformer模型配置檔案正在使用内置預設配置",
"未检测到可用显卡将使用CPU训练耗时可能较长": "未偵測到可用顯示卡将使用CPU訓練耗时可能较长", "未检测到可用显卡将使用CPU训练耗时可能较长": "未偵測到可用顯示卡将使用CPU訓練耗时可能较长",
"未运行": "未运行", "未运行": "未运行",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何程式碼和檔案。詳見根目錄<b>使用需遵守的協議-LICENSE.txt</b>。", "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何程式碼和檔案。詳見根目錄<b>使用需遵守的協議-LICENSE.txt</b>。",
"查看": "查看", "查看": "查看",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型資訊(僅支援weights資料夾下提取的小模型檔案)", "查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"检测到模型类型:%s": "偵測到模型类型:%s", "检测到模型类型:%s": "偵測到模型类型:%s",
"检索特征占比": "檢索特徵佔比", "检索特征占比": "檢索特徵佔比",
"模型": "模型", "模型": "模型",
"模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "模型資訊:%s\n采样率%s\n是否使用音高引导%s\n版本%s", "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "模型資訊:%s\n采样率%s\n是否使用音高引导%s\n版本%s",
"模型推理": "模型推理", "模型推理": "模型推理",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(輸入logs資料夾下大檔案模型路徑),適用於訓一半不想訓了模型沒有自動提取儲存小檔案模型,或者想測試中間模型的情況", "模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(輸入logs資料夾下大檔案模型路徑),適用於訓一半不想訓了模型沒有自動提取儲存小檔案模型,或者想測試中間模型的情況",
"模型是否带音高指导": "模型是否帶音高指導", "模型是否带音高指导": "模型是否帶音高指導",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否帶音高指導(唱歌一定要,語音可以不要)", "模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否帶音高指導(唱歌一定要,語音可以不要)",
"模型是否带音高指导,1是0否": "模型是否帶音高指導1是0否", "模型是否带音高指导,1是0否": "模型是否帶音高指導1是0否",
"模型版本型号": "模型版本型號", "模型版本型号": "模型版本型號",
"模型融合, 可用于测试音色融合": "模型融合,可用於測試音色融合", "模型融合, 可用于测试音色融合": "模型融合,可用於測試音色融合",
"模型融合失败:两个模型的结构不一致": "模型融合失敗:两个模型的结构不一致", "模型融合失败:两个模型的结构不一致": "模型融合失敗:两个模型的结构不一致",
"模型训练": "模型訓練", "模型训练": "模型訓練",
"模型路径": "模型路徑", "模型路径": "模型路徑",
"正在保存最终检查点:%s": "正在儲存最终检查点:%s", "正在保存最终检查点:%s": "正在儲存最终检查点:%s",
"正在保存检查点 %s_e%s%s": "正在儲存检查点 %s_e%s%s", "正在保存检查点 %s_e%s%s": "正在儲存检查点 %s_e%s%s",
"正在加载RMVPE模型": "正在載入RMVPE模型", "正在加载RMVPE模型": "正在載入RMVPE模型",
"正在加载模型": "正在載入模型", "正在加载模型": "正在載入模型",
"正在启动": "正在启动", "正在启动": "正在启动",
"正在收尾": "正在收尾", "正在收尾": "正在收尾",
"每张显卡的batch_size": "每张显卡的batch_size", "每张显卡的batch_size": "每张显卡的batch_size",
"淡入淡出长度": "淡入淡出長度", "淡入淡出长度": "淡入淡出長度",
"清理模型缓存": "清理模型缓存", "清理模型缓存": "清理模型缓存",
"版本": "版本", "版本": "版本",
"特征": "特徵", "特征": "特徵",
"特征提取": "特徵提取", "特征提取": "特徵提取",
"状态": "状态", "状态": "状态",
"独占 WASAPI 设备": "独占 WASAPI 设备", "独占 WASAPI 设备": "独占 WASAPI 设备",
"生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "生成器预訓練模型不存在将不使用assets/pretrained%s/%sG%s.pth", "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "生成器预訓練模型不存在将不使用assets/pretrained%s/%sG%s.pth",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性轉女性推薦+12key女性轉男性推薦-12key如果音域爆炸導致音色失真也可以自己調整到合適音域。", "男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性轉女性推薦+12key女性轉男性推薦-12key如果音域爆炸導致音色失真也可以自己調整到合適音域。",
"目标采样率": "目標取樣率", "目标采样率": "目標取樣率",
"等待中": "等待中", "等待中": "等待中",
"等待输入": "等待輸入", "等待输入": "等待輸入",
"算法延迟(ms):": "算法延迟(ms):", "算法延迟(ms):": "算法延迟(ms):",
"索引": "索引", "索引": "索引",
"索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "索引無效必须使用added_xxxx.index不能使用trained_xxxx.index", "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "索引無效必须使用added_xxxx.index不能使用trained_xxxx.index",
"索引检索失败": "索引检索失敗", "索引检索失败": "索引检索失敗",
"索引检索失败或未启用": "索引检索失敗或未启用", "索引检索失败或未启用": "索引检索失敗或未启用",
"索引训练": "索引訓練", "索引训练": "索引訓練",
"耗时": "耗时", "耗时": "耗时",
"耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "耗时:特徵=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒", "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "耗时:特徵=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒",
"融合": "融合", "融合": "融合",
"要改的模型信息": "要改的模型資訊", "要改的模型信息": "要改的模型資訊",
"要置入的模型信息": "要置入的模型資訊", "要置入的模型信息": "要置入的模型資訊",
"训练": "訓練", "训练": "訓練",
"训练已完成,正在保存最终模型": "訓練已完成,正在儲存最终模型", "训练已完成,正在保存最终模型": "訓練已完成,正在儲存最终模型",
"训练文件列表写入完成": "訓練檔案列表写入完成", "训练文件列表写入完成": "訓練檔案列表写入完成",
"训练模型": "訓練模型", "训练模型": "訓練模型",
"训练特征索引": "訓練特徵索引", "训练特征索引": "訓練特徵索引",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log", "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log",
"训练设备规则选择的精度:%s": "訓練设备规则选择的精度:%s", "训练设备规则选择的精度:%s": "訓練设备规则选择的精度:%s",
"训练轮次:{} [{:.0f}%]": "訓練輪次:{} [{:.0f}%]", "训练轮次:{} [{:.0f}%]": "訓練輪次:{} [{:.0f}%]",
"设备类型": "设备类型", "设备类型": "设备类型",
"请上传音频文件": "请上传音頻檔案", "请上传音频文件": "请上传音頻檔案",
"请填写输出文件夹路径": "请填写輸出資料夾路径", "请填写输出文件夹路径": "请填写輸出資料夾路径",
"请指定说话人id": "請指定說話人id", "请指定说话人id": "請指定說話人id",
"请选择index文件": "请选择index文件", "请选择index文件": "请选择index文件",
"请选择pth文件": "请选择pth文件", "请选择pth文件": "请选择pth文件",
"请选择说话人id": "請選擇說話人ID", "请选择说话人id": "請選擇說話人ID",
"转换": "轉換", "转换": "轉換",
"输入实验名": "輸入實驗名稱", "输入实验名": "輸入實驗名稱",
"输入待处理音频文件夹路径": "輸入待處理音頻資料夾路徑", "输入待处理音频文件夹路径": "輸入待處理音頻資料夾路徑",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "輸入待處理音頻資料夾路徑(去檔案管理器地址欄拷貝即可)", "输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "輸入待處理音頻資料夾路徑(去檔案管理器地址欄拷貝即可)",
"输入待处理音频文件路径(默认是正确格式示例)": "輸入待處理音頻檔案路徑(預設是正確格式示例)", "输入待处理音频文件路径(默认是正确格式示例)": "輸入待處理音頻檔案路徑(預設是正確格式示例)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "輸入源音量包絡替換輸出音量包絡融合比例越靠近1越使用輸出包絡", "输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "輸入源音量包絡替換輸出音量包絡融合比例越靠近1越使用輸出包絡",
"输入监听": "输入监听", "输入监听": "输入监听",
"输入训练文件夹路径": "輸入訓練檔案夾路徑", "输入训练文件夹路径": "輸入訓練檔案夾路徑",
"输入设备": "輸入設備", "输入设备": "輸入設備",
"输入设备:%s:%s": "輸入设备:%s:%s", "输入设备:%s:%s": "輸入设备:%s:%s",
"输入降噪": "輸入降噪", "输入降噪": "輸入降噪",
"输出信息": "輸出訊息", "输出信息": "輸出訊息",
"输出变声": "输出变声", "输出变声": "输出变声",
"输出设备": "輸出設備", "输出设备": "輸出設備",
"输出设备:%s:%s": "輸出设备:%s:%s", "输出设备:%s:%s": "輸出设备:%s:%s",
"输出降噪": "輸出降噪", "输出降噪": "輸出降噪",
"输出音频(右下角三个点,点了可以下载)": "輸出音頻(右下角三個點,點了可以下載)", "输出音频(右下角三个点,点了可以下载)": "輸出音頻(右下角三個點,點了可以下載)",
"运行中": "运行中", "运行中": "运行中",
"进度": "進度", "进度": "進度",
"选择.index文件": "選擇 .index 檔案", "选择.index文件": "選擇 .index 檔案",
"选择.pth文件": "選擇 .pth 檔案", "选择.pth文件": "選擇 .pth 檔案",
"选择模型": "选择模型", "选择模型": "选择模型",
"选择索引": "选择索引", "选择索引": "选择索引",
"选择音高提取算法": "選擇音高擷取演算法", "选择音高提取算法": "選擇音高擷取演算法",
"采样率:": "采样率:", "采样率:": "采样率:",
"采样长度": "取樣長度", "采样长度": "取樣長度",
"重载设备列表": "重載設備列表", "重载设备列表": "重載設備列表",
"错误信息:%s": "錯誤資訊:%s", "错误信息:%s": "錯誤資訊:%s",
"错误:未知模型:%s": "錯誤:未知模型:%s", "错误:未知模型:%s": "錯誤:未知模型:%s",
"音调设置": "音調設定", "音调设置": "音調設定",
"音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "音頻包含多个声道,但模型僅支援单声道,将对所有声道取平均值", "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "音頻包含多个声道,但模型僅支援单声道,将对所有声道取平均值",
"音频设备": "音訊設備", "音频设备": "音訊設備",
"音高全部为0该音频无意义跳过%s": "音高全部為0该音頻無意义跳過%s", "音高全部为0该音频无意义跳过%s": "音高全部為0该音頻無意义跳過%s",
"音高算法": "音高演算法", "音高算法": "音高演算法",
"额外推理时长": "額外推理時長", "额外推理时长": "額外推理時長",
"数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "資料切分沒有產生有效訓練音訊,請檢查訓練集和資料切分日誌", "数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "資料切分沒有產生有效訓練音訊,請檢查訓練集和資料切分日誌",
"数据切分没有生成16k音频已停止后续特征提取和训练": "資料切分沒有產生16k音訊已停止後續特徵提取和訓練", "数据切分没有生成16k音频已停止后续特征提取和训练": "資料切分沒有產生16k音訊已停止後續特徵提取和訓練",
"数据切分输出文件不匹配,已停止后续特征提取和训练": "資料切分輸出檔案不匹配,已停止後續特徵提取和訓練", "数据切分输出文件不匹配,已停止后续特征提取和训练": "資料切分輸出檔案不匹配,已停止後續特徵提取和訓練",
"HuBERT特征提取没有生成有效结果已停止训练": "HuBERT特徵提取沒有產生有效結果已停止訓練", "HuBERT特征提取没有生成有效结果已停止训练": "HuBERT特徵提取沒有產生有效結果已停止訓練",
"F0提取没有生成有效结果已停止训练": "F0提取沒有產生有效結果已停止訓練", "F0提取没有生成有效结果已停止训练": "F0提取沒有產生有效結果已停止訓練",
"没有可用于训练的有效音频,请先完成数据切分和特征提取": "沒有可用於訓練的有效音訊,請先完成資料切分和特徵提取", "没有可用于训练的有效音频,请先完成数据切分和特征提取": "沒有可用於訓練的有效音訊,請先完成資料切分和特徵提取",
"已完成阶段": "已完成階段", "已完成阶段": "已完成階段",
"已成功": "已成功", "已成功": "已成功",
"刷新音色列表": "重新整理音色列表", "刷新音色列表": "重新整理音色列表",
"特征检索库文件路径(选择模型后自动匹配,可手动修改)": "特徵索引庫檔案路徑(選擇模型後自動配對,可手動修改)", "特征检索库文件路径(选择模型后自动匹配,可手动修改)": "特徵索引庫檔案路徑(選擇模型後自動配對,可手動修改)",
"[索引训练] 外部索引链接已存在:%s": "[索引訓練] 外部索引連結已存在:%s", "[索引训练] 外部索引链接已存在:%s": "[索引訓練] 外部索引連結已存在:%s",
"[索引训练][跳过] added索引已存在%s": "[索引訓練][跳過] added索引已存在%s", "[索引训练][跳过] added索引已存在%s": "[索引訓練][跳過] added索引已存在%s",
"[索引训练][跳过] trained索引已存在%s": "[索引訓練][跳過] trained索引已存在%s", "[索引训练][跳过] trained索引已存在%s": "[索引訓練][跳過] trained索引已存在%s",
"当前设备:%s | 推理精度:%s": "目前裝置:%s | 推理精度:%s", "当前设备:%s | 推理精度:%s": "目前裝置:%s | 推理精度:%s",
"正在预热CUDA Graph": "正在預熱 CUDA Graph", "正在预热CUDA Graph": "正在預熱 CUDA Graph",
"CUDA Graph预热完成": "CUDA Graph 預熱完成" "CUDA Graph预热完成": "CUDA Graph 預熱完成",
} "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s": "資料擷取開始start_time=%.6f,請求並行數=%s實際並行數上限=%s",
"数据提取结束end_time=%.6f,总耗时=%.3f秒": "資料擷取結束end_time=%.6f,總耗時=%.3f秒"
}

View File

@@ -1,263 +1,265 @@
{ {
"人声提取激进程度": "人声提取激进程度", "人声提取激进程度": "人声提取激进程度",
"%s → 成功": "%s → 成功", "%s → 成功": "%s → 成功",
"%s运行中请先停止该任务": "%s运行中请先停止该任务", "%s运行中请先停止该任务": "%s运行中请先停止该任务",
"%s进程已终止": "%s进程已终止", "%s进程已终止": "%s进程已终止",
"====> 轮次:{} {}": "====> 轮次:{} {}", "====> 轮次:{} {}": "====> 轮次:{} {}",
"A模型权重": "A模型權重", "A模型权重": "A模型權重",
"A模型路径": "A模型路徑", "A模型路径": "A模型路徑",
"B模型路径": "B模型路徑", "B模型路径": "B模型路徑",
"CUDA可用%s": "CUDA可用%s", "CUDA可用%s": "CUDA可用%s",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src", "E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0与HuBERT特征提取": "F0与HuBERT特征提取", "F0与HuBERT特征提取": "F0与HuBERT特征提取",
"F0提取": "F0提取", "F0提取": "F0提取",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲線檔案可選一行一個音高代替預設的F0及升降調", "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲線檔案可選一行一個音高代替預設的F0及升降調",
"HuBERT特征": "HuBERT特征", "HuBERT特征": "HuBERT特征",
"Index Rate": "Index Rate", "Index Rate": "Index Rate",
"RVC模型路径": "RVC模型路径", "RVC模型路径": "RVC模型路径",
"SOLA偏移%d": "SOLA偏移%d", "SOLA偏移%d": "SOLA偏移%d",
"[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s", "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s",
"[F0提取] 待处理:%s": "[F0提取] 待处理:%s", "[F0提取] 待处理:%s": "[F0提取] 待处理:%s",
"[F0提取] 无待处理音频,已全部跳过": "[F0提取] 无待处理音频,已全部跳过", "[F0提取] 无待处理音频,已全部跳过": "[F0提取] 无待处理音频,已全部跳过",
"[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s", "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s",
"[F0提取][失败] %s": "[F0提取][失败] %s", "[F0提取][失败] %s": "[F0提取][失败] %s",
"[F0提取][失败] %s\n%s": "[F0提取][失败] %s\n%s", "[F0提取][失败] %s\n%s": "[F0提取][失败] %s\n%s",
"[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s", "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s",
"[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT特征] 无待处理音频,已全部跳过:%s", "[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT特征] 无待处理音频,已全部跳过:%s",
"[HuBERT特征] 正在加载模型:%s": "[HuBERT特征] 正在加载模型:%s", "[HuBERT特征] 正在加载模型:%s": "[HuBERT特征] 正在加载模型:%s",
"[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s", "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s",
"[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s", "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s",
"[HuBERT特征][失败] %s\n%s": "[HuBERT特征][失败] %s\n%s", "[HuBERT特征][失败] %s\n%s": "[HuBERT特征][失败] %s\n%s",
"[HuBERT特征][失败] %s 包含NaN": "[HuBERT特征][失败] %s 包含NaN", "[HuBERT特征][失败] %s 包含NaN": "[HuBERT特征][失败] %s 包含NaN",
"[HuBERT特征][失败] 模型不存在:%s": "[HuBERT特征][失败] 模型不存在:%s", "[HuBERT特征][失败] 模型不存在:%s": "[HuBERT特征][失败] 模型不存在:%s",
"[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[数据切分] 子任务完成 | 成功:%s | 失败:%s", "[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[数据切分] 子任务完成 | 成功:%s | 失败:%s",
"[数据切分] 完成": "[数据切分] 完成", "[数据切分] 完成": "[数据切分] 完成",
"[数据切分] 开始": "[数据切分] 开始", "[数据切分] 开始": "[数据切分] 开始",
"[数据切分] 待处理:%s | 进程数:%s": "[数据切分] 待处理:%s | 进程数:%s", "[数据切分] 待处理:%s | 进程数:%s": "[数据切分] 待处理:%s | 进程数:%s",
"[数据切分] 进度:%s/%s | %s": "[数据切分] 进度:%s/%s | %s", "[数据切分] 进度:%s/%s | %s": "[数据切分] 进度:%s/%s | %s",
"[数据切分][失败] %s": "[数据切分][失败] %s", "[数据切分][失败] %s": "[数据切分][失败] %s",
"[数据切分][失败] %s\n%s": "[数据切分][失败] %s\n%s", "[数据切分][失败] %s\n%s": "[数据切分][失败] %s\n%s",
"[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s", "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s",
"[索引训练] 写入进度:%s/%s": "[索引训练] 写入进度:%s/%s", "[索引训练] 写入进度:%s/%s": "[索引训练] 写入进度:%s/%s",
"[索引训练] 已链接索引到外部目录:%s": "[索引训练] 已链接索引到外部目录:%s", "[索引训练] 已链接索引到外部目录:%s": "[索引训练] 已链接索引到外部目录:%s",
"[索引训练] 成功构建索引:%s": "[索引训练] 成功构建索引:%s", "[索引训练] 成功构建索引:%s": "[索引训练] 成功构建索引:%s",
"[索引训练] 正在写入特征向量": "[索引训练] 正在写入特征向量", "[索引训练] 正在写入特征向量": "[索引训练] 正在写入特征向量",
"[索引训练] 正在将%s条特征聚类为10000个中心": "[索引训练] 正在将%s条特征聚类为10000个中心", "[索引训练] 正在将%s条特征聚类为10000个中心": "[索引训练] 正在将%s条特征聚类为10000个中心",
"[索引训练] 正在训练索引": "[索引训练] 正在训练索引", "[索引训练] 正在训练索引": "[索引训练] 正在训练索引",
"[索引训练] 特征形状:%s | IVF数量%s": "[索引训练] 特征形状:%s | IVF数量%s", "[索引训练] 特征形状:%s | IVF数量%s": "[索引训练] 特征形状:%s | IVF数量%s",
"[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[索引训练][失败] 无法链接索引到外部目录:%s\n%s", "[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[索引训练][失败] 无法链接索引到外部目录:%s\n%s",
"[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s", "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s",
"[索引训练][失败] 请先进行特征提取": "[索引训练][失败] 请先进行特征提取", "[索引训练][失败] 请先进行特征提取": "[索引训练][失败] 请先进行特征提取",
"ckpt处理": "ckpt處理", "ckpt处理": "ckpt處理",
"index文件路径不可包含中文": "index文件路径不可包含中文", "index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文", "pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡號配置以-分隔輸入使用的不同進程卡號,例如0-0-1使用在卡0上跑2個進程並在卡1上跑1個進程", "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡號配置以-分隔輸入使用的不同進程卡號,例如0-0-1使用在卡0上跑2個進程並在卡1上跑1個進程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1填寫實驗配置。實驗數據放在logs下每個實驗一個資料夾需手動輸入實驗名路徑內含實驗配置、日誌、訓練得到的模型檔案。", "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1填寫實驗配置。實驗數據放在logs下每個實驗一個資料夾需手動輸入實驗名路徑內含實驗配置、日誌、訓練得到的模型檔案。",
"step1:正在处理数据": "step1:正在处理数据", "step1:正在处理数据": "step1:正在处理数据",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征", "step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a自動遍歷訓練資料夾下所有可解碼成音頻的檔案並進行切片歸一化在實驗目錄下生成2個wav資料夾暫時只支援單人訓練。", "step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a自動遍歷訓練資料夾下所有可解碼成音頻的檔案並進行切片歸一化在實驗目錄下生成2個wav資料夾暫時只支援單人訓練。",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "步驟2b: 使用CPU提取音高(如果模型帶音高), 使用GPU提取特徵(選擇卡號)", "step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "步驟2b: 使用CPU提取音高(如果模型帶音高), 使用GPU提取特徵(選擇卡號)",
"step3: 填写训练设置, 开始训练模型和索引": "步驟3: 填寫訓練設定, 開始訓練模型和索引", "step3: 填写训练设置, 开始训练模型和索引": "步驟3: 填寫訓練設定, 開始訓練模型和索引",
"step3a:正在训练模型": "step3a:正在训练模型", "step3a:正在训练模型": "step3a:正在训练模型",
"step3b:正在训练索引": "step3b:正在训练索引", "step3b:正在训练索引": "step3b:正在训练索引",
"……仅显示最近10条失败记录": "……仅显示最近10条失败记录", "……仅显示最近10条失败记录": "……仅显示最近10条失败记录",
"……已省略前%s行仅显示最新状态": "……已省略前%s行仅显示最新状态", "……已省略前%s行仅显示最新状态": "……已省略前%s行仅显示最新状态",
"一键训练": "一鍵訓練", "一键训练": "一鍵訓練",
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹", "也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
"人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。", "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。",
"仅支持pm和rmvpe音高提取算法": "仅支持pm和rmvpe音高提取算法", "仅支持pm和rmvpe音高提取算法": "仅支持pm和rmvpe音高提取算法",
"从训练检查点提取的模型": "从训练检查点提取的模型", "从训练检查点提取的模型": "从训练检查点提取的模型",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔輸入使用的卡號, 例如 0-1-2 使用卡0和卡1和卡2", "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔輸入使用的卡號, 例如 0-1-2 使用卡0和卡1和卡2",
"任务": "任务", "任务": "任务",
"伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲", "伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲",
"使用显卡:%s": "使用显卡:%s", "使用显卡:%s": "使用显卡:%s",
"使用模型采样率": "使用模型采样率", "使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率", "使用设备采样率": "使用设备采样率",
"保存名": "儲存名", "保存名": "儲存名",
"保存的文件名, 默认空为和源文件同名": "儲存的檔案名,預設空為與來源檔案同名", "保存的文件名, 默认空为和源文件同名": "儲存的檔案名,預設空為與來源檔案同名",
"保存的模型名不带后缀": "儲存的模型名不帶副檔名", "保存的模型名不带后缀": "儲存的模型名不帶副檔名",
"保存频率save_every_epoch": "保存頻率save_every_epoch", "保存频率save_every_epoch": "保存頻率save_every_epoch",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保護清輔音和呼吸聲防止電音撕裂等artifact拉滿0.5不開啟,調低加大保護力度但可能降低索引效果", "保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保護清輔音和呼吸聲防止電音撕裂等artifact拉滿0.5不開啟,調低加大保護力度但可能降低索引效果",
"修改": "修改", "修改": "修改",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型資訊(僅支援weights資料夾下提取的小模型檔案)", "修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"停止一键训练": "停止一键训练", "停止一键训练": "停止一键训练",
"停止处理数据": "停止处理数据", "停止处理数据": "停止处理数据",
"停止特征提取": "停止特征提取", "停止特征提取": "停止特征提取",
"停止训练模型": "停止训练模型", "停止训练模型": "停止训练模型",
"停止训练索引": "停止训练索引", "停止训练索引": "停止训练索引",
"停止音频转换": "停止音訊轉換", "停止音频转换": "停止音訊轉換",
"全流程结束!": "全流程结束!", "全流程结束!": "全流程结束!",
"判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth", "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth",
"加载模型": "載入模型", "加载模型": "載入模型",
"加载预训练底模D路径": "加載預訓練底模D路徑", "加载预训练底模D路径": "加載預訓練底模D路徑",
"加载预训练底模G路径": "加載預訓練底模G路徑", "加载预训练底模G路径": "加載預訓練底模G路徑",
"单次推理": "单次推理", "单次推理": "单次推理",
"卸载音色省显存": "卸載音色節省 VRAM", "卸载音色省显存": "卸載音色節省 VRAM",
"变调(整数, 半音数量, 升八度12降八度-12)": "變調(整數、半音數量、升八度12降八度-12)", "变调(整数, 半音数量, 升八度12降八度-12)": "變調(整數、半音數量、升八度12降八度-12)",
"合成": "合成", "合成": "合成",
"后处理重采样至最终采样率0为不进行重采样": "後處理重採樣至最終採樣率0為不進行重採樣", "后处理重采样至最终采样率0为不进行重采样": "後處理重採樣至最終採樣率0為不進行重採樣",
"否": "否", "否": "否",
"响应阈值": "響應閾值", "响应阈值": "響應閾值",
"响度因子": "響度因子", "响度因子": "響度因子",
"处理中": "处理中", "处理中": "处理中",
"处理数据": "處理資料", "处理数据": "處理資料",
"失败": "失败", "失败": "失败",
"失败记录": "失败记录", "失败记录": "失败记录",
"子进程执行失败,返回码:%s": "子进程执行失败,返回码:%s", "子进程执行失败,返回码:%s": "子进程执行失败,返回码:%s",
"导出文件格式": "導出檔格式", "导出文件格式": "導出檔格式",
"已停止": "已停止", "已停止": "已停止",
"已加载判别器预训练模型:%s": "已加载判别器预训练模型:%s", "已加载判别器预训练模型:%s": "已加载判别器预训练模型:%s",
"已加载生成器预训练模型:%s": "已加载生成器预训练模型:%s", "已加载生成器预训练模型:%s": "已加载生成器预训练模型:%s",
"已启用索引检索": "已启用索引检索", "已启用索引检索": "已启用索引检索",
"已完成": "已完成", "已完成": "已完成",
"已恢复判别器检查点": "已恢复判别器检查点", "已恢复判别器检查点": "已恢复判别器检查点",
"常见问题解答": "常見問題解答", "常见问题解答": "常見問題解答",
"常规设置": "一般設定", "常规设置": "一般設定",
"开始音频转换": "開始音訊轉換", "开始音频转换": "開始音訊轉換",
"当前": "当前", "当前": "当前",
"当前阶段": "当前阶段", "当前阶段": "当前阶段",
"很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练", "很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练",
"性别因子/声线粗细": "性别因子/声线粗细", "性别因子/声线粗细": "性别因子/声线粗细",
"性能设置": "效能設定", "性能设置": "效能設定",
"总训练轮数total_epoch": "總訓練輪數total_epoch", "总训练轮数total_epoch": "總訓練輪數total_epoch",
"成功": "成功", "成功": "成功",
"执行命令": "执行命令", "执行命令": "执行命令",
"批量推理": "批量推理", "批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量轉換,輸入待轉換音頻資料夾,或上傳多個音頻檔案,在指定資料夾(默認opt)下輸出轉換的音頻。", "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量轉換,輸入待轉換音頻資料夾,或上傳多個音頻檔案,在指定資料夾(默認opt)下輸出轉換的音頻。",
"拖拽或点击上传待处理音频": "拖拽或点击上传待处理音频", "拖拽或点击上传待处理音频": "拖拽或点击上传待处理音频",
"指定输出主人声文件夹": "指定输出主人声文件夹", "指定输出主人声文件夹": "指定输出主人声文件夹",
"指定输出文件夹": "指定輸出資料夾", "指定输出文件夹": "指定輸出資料夾",
"指定输出非主人声文件夹": "指定输出非主人声文件夹", "指定输出非主人声文件夹": "指定输出非主人声文件夹",
"推理时间(ms):": "推理時間(ms):", "推理时间(ms):": "推理時間(ms):",
"推理耗时:%.2f秒": "推理耗时:%.2f秒", "推理耗时:%.2f秒": "推理耗时:%.2f秒",
"推理音色": "推理音色", "推理音色": "推理音色",
"提取": "提取", "提取": "提取",
"提取音高和处理数据使用的CPU进程数": "提取音高和處理數據使用的CPU進程數", "提取音高和处理数据使用的CPU进程数": "提取音高和處理數據使用的CPU進程數",
"数据切分": "数据切分", "数据切分": "数据切分",
"无法停止": "无法停止", "无法停止": "无法停止",
"无法读取音频:%s": "无法读取音频:%s", "无法读取音频:%s": "无法读取音频:%s",
"是": "是", "是": "是",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt檔案以節省硬碟空間", "是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt檔案以節省硬碟空間",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights檔夾", "是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights檔夾",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否緩存所有訓練集至 VRAM。小於10分鐘的小數據可緩存以加速訓練大數據緩存會爆 VRAM 也加不了多少速度", "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否緩存所有訓練集至 VRAM。小於10分鐘的小數據可緩存以加速訓練大數據緩存會爆 VRAM 也加不了多少速度",
"显卡信息": "顯示卡資訊", "显卡信息": "顯示卡資訊",
"未使用": "未使用", "未使用": "未使用",
"未使用判别器预训练模型": "未使用判别器预训练模型", "未使用判别器预训练模型": "未使用判别器预训练模型",
"未使用生成器预训练模型": "未使用生成器预训练模型", "未使用生成器预训练模型": "未使用生成器预训练模型",
"未找到Roformer模型配置文件正在使用内置默认配置": "未找到Roformer模型配置文件正在使用内置默认配置", "未找到Roformer模型配置文件正在使用内置默认配置": "未找到Roformer模型配置文件正在使用内置默认配置",
"未检测到可用显卡将使用CPU训练耗时可能较长": "未检测到可用显卡将使用CPU训练耗时可能较长", "未检测到可用显卡将使用CPU训练耗时可能较长": "未检测到可用显卡将使用CPU训练耗时可能较长",
"未运行": "未运行", "未运行": "未运行",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何程式碼和檔案。詳見根目錄<b>使用需遵守的協議-LICENSE.txt</b>。", "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何程式碼和檔案。詳見根目錄<b>使用需遵守的協議-LICENSE.txt</b>。",
"查看": "查看", "查看": "查看",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型資訊(僅支援weights資料夾下提取的小模型檔案)", "查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"检测到模型类型:%s": "检测到模型类型:%s", "检测到模型类型:%s": "检测到模型类型:%s",
"检索特征占比": "檢索特徵佔比", "检索特征占比": "檢索特徵佔比",
"模型": "模型", "模型": "模型",
"模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s", "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s",
"模型推理": "模型推理", "模型推理": "模型推理",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(輸入logs資料夾下大檔案模型路徑),適用於訓一半不想訓了模型沒有自動提取儲存小檔案模型,或者想測試中間模型的情況", "模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(輸入logs資料夾下大檔案模型路徑),適用於訓一半不想訓了模型沒有自動提取儲存小檔案模型,或者想測試中間模型的情況",
"模型是否带音高指导": "模型是否帶音高指導", "模型是否带音高指导": "模型是否帶音高指導",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否帶音高指導(唱歌一定要,語音可以不要)", "模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否帶音高指導(唱歌一定要,語音可以不要)",
"模型是否带音高指导,1是0否": "模型是否帶音高指導1是0否", "模型是否带音高指导,1是0否": "模型是否帶音高指導1是0否",
"模型版本型号": "模型版本型號", "模型版本型号": "模型版本型號",
"模型融合, 可用于测试音色融合": "模型融合,可用於測試音色融合", "模型融合, 可用于测试音色融合": "模型融合,可用於測試音色融合",
"模型融合失败:两个模型的结构不一致": "模型融合失败:两个模型的结构不一致", "模型融合失败:两个模型的结构不一致": "模型融合失败:两个模型的结构不一致",
"模型训练": "模型训练", "模型训练": "模型训练",
"模型路径": "模型路徑", "模型路径": "模型路徑",
"正在保存最终检查点:%s": "正在保存最终检查点:%s", "正在保存最终检查点:%s": "正在保存最终检查点:%s",
"正在保存检查点 %s_e%s%s": "正在保存检查点 %s_e%s%s", "正在保存检查点 %s_e%s%s": "正在保存检查点 %s_e%s%s",
"正在加载RMVPE模型": "正在加载RMVPE模型", "正在加载RMVPE模型": "正在加载RMVPE模型",
"正在加载模型": "正在加载模型", "正在加载模型": "正在加载模型",
"正在启动": "正在启动", "正在启动": "正在启动",
"正在收尾": "正在收尾", "正在收尾": "正在收尾",
"每张显卡的batch_size": "每张显卡的batch_size", "每张显卡的batch_size": "每张显卡的batch_size",
"淡入淡出长度": "淡入淡出長度", "淡入淡出长度": "淡入淡出長度",
"清理模型缓存": "清理模型缓存", "清理模型缓存": "清理模型缓存",
"版本": "版本", "版本": "版本",
"特征": "特征", "特征": "特征",
"特征提取": "特徵提取", "特征提取": "特徵提取",
"状态": "状态", "状态": "状态",
"独占 WASAPI 设备": "独占 WASAPI 设备", "独占 WASAPI 设备": "独占 WASAPI 设备",
"生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth", "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性轉女性推薦+12key女性轉男性推薦-12key如果音域爆炸導致音色失真也可以自己調整到合適音域。", "男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性轉女性推薦+12key女性轉男性推薦-12key如果音域爆炸導致音色失真也可以自己調整到合適音域。",
"目标采样率": "目標取樣率", "目标采样率": "目標取樣率",
"等待中": "等待中", "等待中": "等待中",
"等待输入": "等待输入", "等待输入": "等待输入",
"算法延迟(ms):": "算法延迟(ms):", "算法延迟(ms):": "算法延迟(ms):",
"索引": "索引", "索引": "索引",
"索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index", "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index",
"索引检索失败": "索引检索失败", "索引检索失败": "索引检索失败",
"索引检索失败或未启用": "索引检索失败或未启用", "索引检索失败或未启用": "索引检索失败或未启用",
"索引训练": "索引训练", "索引训练": "索引训练",
"耗时": "耗时", "耗时": "耗时",
"耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒", "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒",
"融合": "融合", "融合": "融合",
"要改的模型信息": "要改的模型資訊", "要改的模型信息": "要改的模型資訊",
"要置入的模型信息": "要置入的模型資訊", "要置入的模型信息": "要置入的模型資訊",
"训练": "訓練", "训练": "訓練",
"训练已完成,正在保存最终模型": "训练已完成,正在保存最终模型", "训练已完成,正在保存最终模型": "训练已完成,正在保存最终模型",
"训练文件列表写入完成": "训练文件列表写入完成", "训练文件列表写入完成": "训练文件列表写入完成",
"训练模型": "訓練模型", "训练模型": "訓練模型",
"训练特征索引": "訓練特徵索引", "训练特征索引": "訓練特徵索引",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log", "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log",
"训练设备规则选择的精度:%s": "训练设备规则选择的精度:%s", "训练设备规则选择的精度:%s": "训练设备规则选择的精度:%s",
"训练轮次:{} [{:.0f}%]": "训练轮次:{} [{:.0f}%]", "训练轮次:{} [{:.0f}%]": "训练轮次:{} [{:.0f}%]",
"设备类型": "设备类型", "设备类型": "设备类型",
"请上传音频文件": "请上传音频文件", "请上传音频文件": "请上传音频文件",
"请填写输出文件夹路径": "请填写输出文件夹路径", "请填写输出文件夹路径": "请填写输出文件夹路径",
"请指定说话人id": "請指定說話人id", "请指定说话人id": "請指定說話人id",
"请选择index文件": "请选择index文件", "请选择index文件": "请选择index文件",
"请选择pth文件": "请选择pth文件", "请选择pth文件": "请选择pth文件",
"请选择说话人id": "請選擇說話人ID", "请选择说话人id": "請選擇說話人ID",
"转换": "轉換", "转换": "轉換",
"输入实验名": "輸入實驗名稱", "输入实验名": "輸入實驗名稱",
"输入待处理音频文件夹路径": "輸入待處理音頻資料夾路徑", "输入待处理音频文件夹路径": "輸入待處理音頻資料夾路徑",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "輸入待處理音頻資料夾路徑(去檔案管理器地址欄拷貝即可)", "输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "輸入待處理音頻資料夾路徑(去檔案管理器地址欄拷貝即可)",
"输入待处理音频文件路径(默认是正确格式示例)": "輸入待處理音頻檔案路徑(預設是正確格式示例)", "输入待处理音频文件路径(默认是正确格式示例)": "輸入待處理音頻檔案路徑(預設是正確格式示例)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "輸入源音量包絡替換輸出音量包絡融合比例越靠近1越使用輸出包絡", "输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "輸入源音量包絡替換輸出音量包絡融合比例越靠近1越使用輸出包絡",
"输入监听": "输入监听", "输入监听": "输入监听",
"输入训练文件夹路径": "輸入訓練檔案夾路徑", "输入训练文件夹路径": "輸入訓練檔案夾路徑",
"输入设备": "輸入設備", "输入设备": "輸入設備",
"输入设备:%s:%s": "输入设备:%s:%s", "输入设备:%s:%s": "输入设备:%s:%s",
"输入降噪": "輸入降噪", "输入降噪": "輸入降噪",
"输出信息": "輸出訊息", "输出信息": "輸出訊息",
"输出变声": "输出变声", "输出变声": "输出变声",
"输出设备": "輸出設備", "输出设备": "輸出設備",
"输出设备:%s:%s": "输出设备:%s:%s", "输出设备:%s:%s": "输出设备:%s:%s",
"输出降噪": "輸出降噪", "输出降噪": "輸出降噪",
"输出音频(右下角三个点,点了可以下载)": "輸出音頻(右下角三個點,點了可以下載)", "输出音频(右下角三个点,点了可以下载)": "輸出音頻(右下角三個點,點了可以下載)",
"运行中": "运行中", "运行中": "运行中",
"进度": "进度", "进度": "进度",
"选择.index文件": "選擇 .index 檔案", "选择.index文件": "選擇 .index 檔案",
"选择.pth文件": "選擇 .pth 檔案", "选择.pth文件": "選擇 .pth 檔案",
"选择模型": "选择模型", "选择模型": "选择模型",
"选择索引": "选择索引", "选择索引": "选择索引",
"选择音高提取算法": "选择音高提取算法", "选择音高提取算法": "选择音高提取算法",
"采样率:": "采样率:", "采样率:": "采样率:",
"采样长度": "取樣長度", "采样长度": "取樣長度",
"重载设备列表": "重載設備列表", "重载设备列表": "重載設備列表",
"错误信息:%s": "错误信息:%s", "错误信息:%s": "错误信息:%s",
"错误:未知模型:%s": "错误:未知模型:%s", "错误:未知模型:%s": "错误:未知模型:%s",
"音调设置": "音調設定", "音调设置": "音調設定",
"音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值", "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值",
"音频设备": "音訊設備", "音频设备": "音訊設備",
"音高全部为0该音频无意义跳过%s": "音高全部为0该音频无意义跳过%s", "音高全部为0该音频无意义跳过%s": "音高全部为0该音频无意义跳过%s",
"音高算法": "音高演算法", "音高算法": "音高演算法",
"额外推理时长": "額外推理時長", "额外推理时长": "額外推理時長",
"数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "数据切分没有生成有效训练音频,请检查训练集和数据切分日志", "数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "数据切分没有生成有效训练音频,请检查训练集和数据切分日志",
"数据切分没有生成16k音频已停止后续特征提取和训练": "数据切分没有生成16k音频已停止后续特征提取和训练", "数据切分没有生成16k音频已停止后续特征提取和训练": "数据切分没有生成16k音频已停止后续特征提取和训练",
"数据切分输出文件不匹配,已停止后续特征提取和训练": "数据切分输出文件不匹配,已停止后续特征提取和训练", "数据切分输出文件不匹配,已停止后续特征提取和训练": "数据切分输出文件不匹配,已停止后续特征提取和训练",
"HuBERT特征提取没有生成有效结果已停止训练": "HuBERT特征提取没有生成有效结果已停止训练", "HuBERT特征提取没有生成有效结果已停止训练": "HuBERT特征提取没有生成有效结果已停止训练",
"F0提取没有生成有效结果已停止训练": "F0提取没有生成有效结果已停止训练", "F0提取没有生成有效结果已停止训练": "F0提取没有生成有效结果已停止训练",
"没有可用于训练的有效音频,请先完成数据切分和特征提取": "没有可用于训练的有效音频,请先完成数据切分和特征提取", "没有可用于训练的有效音频,请先完成数据切分和特征提取": "没有可用于训练的有效音频,请先完成数据切分和特征提取",
"已完成阶段": "已完成阶段", "已完成阶段": "已完成阶段",
"已成功": "已成功", "已成功": "已成功",
"刷新音色列表": "刷新音色列表", "刷新音色列表": "刷新音色列表",
"特征检索库文件路径(选择模型后自动匹配,可手动修改)": "特征检索库文件路径(选择模型后自动匹配,可手动修改)", "特征检索库文件路径(选择模型后自动匹配,可手动修改)": "特征检索库文件路径(选择模型后自动匹配,可手动修改)",
"[索引训练] 外部索引链接已存在:%s": "[索引训练] 外部索引链接已存在:%s", "[索引训练] 外部索引链接已存在:%s": "[索引训练] 外部索引链接已存在:%s",
"[索引训练][跳过] added索引已存在%s": "[索引训练][跳过] added索引已存在%s", "[索引训练][跳过] added索引已存在%s": "[索引训练][跳过] added索引已存在%s",
"[索引训练][跳过] trained索引已存在%s": "[索引训练][跳过] trained索引已存在%s", "[索引训练][跳过] trained索引已存在%s": "[索引训练][跳过] trained索引已存在%s",
"当前设备:%s | 推理精度:%s": "当前设备:%s | 推理精度:%s", "当前设备:%s | 推理精度:%s": "当前设备:%s | 推理精度:%s",
"正在预热CUDA Graph": "正在预热CUDA Graph", "正在预热CUDA Graph": "正在预热CUDA Graph",
"CUDA Graph预热完成": "CUDA Graph预热完成" "CUDA Graph预热完成": "CUDA Graph预热完成",
} "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s": "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s",
"数据提取结束end_time=%.6f,总耗时=%.3f秒": "数据提取结束end_time=%.6f,总耗时=%.3f秒"
}

View File

@@ -1,263 +1,265 @@
{ {
"人声提取激进程度": "人聲提取激進程度", "人声提取激进程度": "人聲提取激進程度",
"%s → 成功": "%s → 成功", "%s → 成功": "%s → 成功",
"%s运行中请先停止该任务": "%s运行中请先停止该任务", "%s运行中请先停止该任务": "%s运行中请先停止该任务",
"%s进程已终止": "%s進程已终止", "%s进程已终止": "%s進程已终止",
"====> 轮次:{} {}": "====> 輪次:{} {}", "====> 轮次:{} {}": "====> 輪次:{} {}",
"A模型权重": "A模型權重", "A模型权重": "A模型權重",
"A模型路径": "A模型路徑", "A模型路径": "A模型路徑",
"B模型路径": "B模型路徑", "B模型路径": "B模型路徑",
"CUDA可用%s": "CUDA可用%s", "CUDA可用%s": "CUDA可用%s",
"E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src", "E:\\语音音频+标注\\米津玄师\\src": "E:\\语音音频+标注\\米津玄师\\src",
"F0与HuBERT特征提取": "F0與HuBERT特徵提取", "F0与HuBERT特征提取": "F0與HuBERT特徵提取",
"F0提取": "F0提取", "F0提取": "F0提取",
"F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲線檔案可選一行一個音高代替預設的F0及升降調", "F0曲线文件, 可选, 一行一个音高, 代替默认F0及升降调": "F0曲線檔案可選一行一個音高代替預設的F0及升降調",
"HuBERT特征": "HuBERT特徵", "HuBERT特征": "HuBERT特徵",
"Index Rate": "Index Rate", "Index Rate": "Index Rate",
"RVC模型路径": "RVC模型路径", "RVC模型路径": "RVC模型路径",
"SOLA偏移%d": "SOLA偏移%d", "SOLA偏移%d": "SOLA偏移%d",
"[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0提取] 完成 | 成功:%s | 跳過:%s | 失敗:%s", "[F0提取] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[F0提取] 完成 | 成功:%s | 跳過:%s | 失敗:%s",
"[F0提取] 待处理:%s": "[F0提取] 待处理:%s", "[F0提取] 待处理:%s": "[F0提取] 待处理:%s",
"[F0提取] 无待处理音频,已全部跳过": "[F0提取] 無待处理音頻,已全部跳過", "[F0提取] 无待处理音频,已全部跳过": "[F0提取] 無待处理音頻,已全部跳過",
"[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0提取] 進度:%s/%s | 成功:%s | 跳過:%s | %s", "[F0提取] 进度:%s/%s | 成功:%s | 跳过:%s | %s": "[F0提取] 進度:%s/%s | 成功:%s | 跳過:%s | %s",
"[F0提取][失败] %s": "[F0提取][失敗] %s", "[F0提取][失败] %s": "[F0提取][失敗] %s",
"[F0提取][失败] %s\n%s": "[F0提取][失敗] %s\n%s", "[F0提取][失败] %s\n%s": "[F0提取][失敗] %s\n%s",
"[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT特徵] 完成 | 成功:%s | 跳過:%s | 失敗:%s", "[HuBERT特征] 完成 | 成功:%s | 跳过:%s | 失败:%s": "[HuBERT特徵] 完成 | 成功:%s | 跳過:%s | 失敗:%s",
"[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT特徵] 無待处理音頻,已全部跳過:%s", "[HuBERT特征] 无待处理音频,已全部跳过:%s": "[HuBERT特徵] 無待处理音頻,已全部跳過:%s",
"[HuBERT特征] 正在加载模型:%s": "[HuBERT特徵] 正在載入模型:%s", "[HuBERT特征] 正在加载模型:%s": "[HuBERT特徵] 正在載入模型:%s",
"[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT特徵] 设备:%s | 待处理:%s | 已跳過:%s", "[HuBERT特征] 设备:%s | 待处理:%s | 已跳过:%s": "[HuBERT特徵] 设备:%s | 待处理:%s | 已跳過:%s",
"[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT特徵] 進度:%s/%s | 成功:%s | 失敗:%s | %s | %s", "[HuBERT特征] 进度:%s/%s | 成功:%s | 失败:%s | %s | %s": "[HuBERT特徵] 進度:%s/%s | 成功:%s | 失敗:%s | %s | %s",
"[HuBERT特征][失败] %s\n%s": "[HuBERT特徵][失敗] %s\n%s", "[HuBERT特征][失败] %s\n%s": "[HuBERT特徵][失敗] %s\n%s",
"[HuBERT特征][失败] %s 包含NaN": "[HuBERT特徵][失敗] %s 包含NaN", "[HuBERT特征][失败] %s 包含NaN": "[HuBERT特徵][失敗] %s 包含NaN",
"[HuBERT特征][失败] 模型不存在:%s": "[HuBERT特徵][失敗] 模型不存在:%s", "[HuBERT特征][失败] 模型不存在:%s": "[HuBERT特徵][失敗] 模型不存在:%s",
"[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[數據切分] 子任务完成 | 成功:%s | 失敗:%s", "[数据切分] 子任务完成 | 成功:%s | 失败:%s": "[數據切分] 子任务完成 | 成功:%s | 失敗:%s",
"[数据切分] 完成": "[數據切分] 完成", "[数据切分] 完成": "[數據切分] 完成",
"[数据切分] 开始": "[數據切分] 开始", "[数据切分] 开始": "[數據切分] 开始",
"[数据切分] 待处理:%s | 进程数:%s": "[數據切分] 待处理:%s | 進程数:%s", "[数据切分] 待处理:%s | 进程数:%s": "[數據切分] 待处理:%s | 進程数:%s",
"[数据切分] 进度:%s/%s | %s": "[數據切分] 進度:%s/%s | %s", "[数据切分] 进度:%s/%s | %s": "[數據切分] 進度:%s/%s | %s",
"[数据切分][失败] %s": "[數據切分][失敗] %s", "[数据切分][失败] %s": "[數據切分][失敗] %s",
"[数据切分][失败] %s\n%s": "[數據切分][失敗] %s\n%s", "[数据切分][失败] %s\n%s": "[數據切分][失敗] %s\n%s",
"[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[數據切分][跳過] 無效或異常音頻片段:%s_%s | 峰值:%s", "[数据切分][跳过] 无效或异常音频片段:%s_%s | 峰值:%s": "[數據切分][跳過] 無效或異常音頻片段:%s_%s | 峰值:%s",
"[索引训练] 写入进度:%s/%s": "[索引訓練] 写入進度:%s/%s", "[索引训练] 写入进度:%s/%s": "[索引訓練] 写入進度:%s/%s",
"[索引训练] 已链接索引到外部目录:%s": "[索引訓練] 已連結索引到外部目录:%s", "[索引训练] 已链接索引到外部目录:%s": "[索引訓練] 已連結索引到外部目录:%s",
"[索引训练] 成功构建索引:%s": "[索引訓練] 成功构建索引:%s", "[索引训练] 成功构建索引:%s": "[索引訓練] 成功构建索引:%s",
"[索引训练] 正在写入特征向量": "[索引訓練] 正在写入特徵向量", "[索引训练] 正在写入特征向量": "[索引訓練] 正在写入特徵向量",
"[索引训练] 正在将%s条特征聚类为10000个中心": "[索引訓練] 正在将%s條特徵聚类為10000个中心", "[索引训练] 正在将%s条特征聚类为10000个中心": "[索引訓練] 正在将%s條特徵聚类為10000个中心",
"[索引训练] 正在训练索引": "[索引訓練] 正在訓練索引", "[索引训练] 正在训练索引": "[索引訓練] 正在訓練索引",
"[索引训练] 特征形状:%s | IVF数量%s": "[索引訓練] 特徵形状:%s | IVF數量%s", "[索引训练] 特征形状:%s | IVF数量%s": "[索引訓練] 特徵形状:%s | IVF數量%s",
"[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[索引訓練][失敗] 無法連結索引到外部目录:%s\n%s", "[索引训练][失败] 无法链接索引到外部目录:%s\n%s": "[索引訓練][失敗] 無法連結索引到外部目录:%s\n%s",
"[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[索引訓練][失敗] 聚类失敗,将使用原始特徵繼續\n%s", "[索引训练][失败] 聚类失败,将使用原始特征继续\n%s": "[索引訓練][失敗] 聚类失敗,将使用原始特徵繼續\n%s",
"[索引训练][失败] 请先进行特征提取": "[索引訓練][失敗] 请先進行特徵提取", "[索引训练][失败] 请先进行特征提取": "[索引訓練][失敗] 请先進行特徵提取",
"ckpt处理": "ckpt處理", "ckpt处理": "ckpt處理",
"index文件路径不可包含中文": "index文件路径不可包含中文", "index文件路径不可包含中文": "index文件路径不可包含中文",
"pth文件路径不可包含中文": "pth文件路径不可包含中文", "pth文件路径不可包含中文": "pth文件路径不可包含中文",
"rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡號配置以-分隔輸入使用的不同進程卡號,例如0-0-1使用在卡0上跑2個進程並在卡1上跑1個進程", "rmvpe卡号配置以-分隔输入使用的不同进程卡号,例如0-0-1使用在卡0上跑2个进程并在卡1上跑1个进程": "rmvpe卡號配置以-分隔輸入使用的不同進程卡號,例如0-0-1使用在卡0上跑2個進程並在卡1上跑1個進程",
"step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1填寫實驗配置。實驗數據放在logs下每個實驗一個資料夾需手動輸入實驗名路徑內含實驗配置、日誌、訓練得到的模型檔案。", "step1: 填写实验配置. 实验数据放在logs下, 每个实验一个文件夹, 需手工输入实验名路径, 内含实验配置, 日志, 训练得到的模型文件. ": "step1填寫實驗配置。實驗數據放在logs下每個實驗一個資料夾需手動輸入實驗名路徑內含實驗配置、日誌、訓練得到的模型檔案。",
"step1:正在处理数据": "step1:正在处理数据", "step1:正在处理数据": "step1:正在处理数据",
"step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征", "step2:正在提取音高&正在提取特征": "step2:正在提取音高&正在提取特征",
"step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a自動遍歷訓練資料夾下所有可解碼成音頻的檔案並進行切片歸一化在實驗目錄下生成2個wav資料夾暫時只支援單人訓練。", "step2a: 自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练. ": "step2a自動遍歷訓練資料夾下所有可解碼成音頻的檔案並進行切片歸一化在實驗目錄下生成2個wav資料夾暫時只支援單人訓練。",
"step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "步驟2b: 使用CPU提取音高(如果模型帶音高), 使用GPU提取特徵(選擇卡號)", "step2b: 使用CPU提取音高(如果模型带音高), 使用GPU提取特征(选择卡号)": "步驟2b: 使用CPU提取音高(如果模型帶音高), 使用GPU提取特徵(選擇卡號)",
"step3: 填写训练设置, 开始训练模型和索引": "步驟3: 填寫訓練設定, 開始訓練模型和索引", "step3: 填写训练设置, 开始训练模型和索引": "步驟3: 填寫訓練設定, 開始訓練模型和索引",
"step3a:正在训练模型": "step3a:正在训练模型", "step3a:正在训练模型": "step3a:正在训练模型",
"step3b:正在训练索引": "step3b正在訓練索引", "step3b:正在训练索引": "step3b正在訓練索引",
"……仅显示最近10条失败记录": "……僅顯示最近10條失敗記錄", "……仅显示最近10条失败记录": "……僅顯示最近10條失敗記錄",
"……已省略前%s行仅显示最新状态": "……已省略前%s行僅顯示最新状态", "……已省略前%s行仅显示最新状态": "……已省略前%s行僅顯示最新状态",
"一键训练": "一鍵訓練", "一键训练": "一鍵訓練",
"也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹", "也可批量输入音频文件, 二选一, 优先读文件夹": "也可批量输入音频文件, 二选一, 优先读文件夹",
"人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "批次處理人聲與伴奏分離使用UVR5模型。<br>可選擇保留人聲的模型或使用DeEcho、DeReverb模型去除回音和混響。", "人声伴奏分离批量处理使用UVR5模型。<br>可选择保留人声模型或使用DeEcho、DeReverb模型去除延迟和混响。": "批次處理人聲與伴奏分離使用UVR5模型。<br>可選擇保留人聲的模型或使用DeEcho、DeReverb模型去除回音和混響。",
"仅支持pm和rmvpe音高提取算法": "僅支援pm和rmvpe音高提取算法", "仅支持pm和rmvpe音高提取算法": "僅支援pm和rmvpe音高提取算法",
"从训练检查点提取的模型": "从訓練检查点提取的模型", "从训练检查点提取的模型": "从訓練检查点提取的模型",
"以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔輸入使用的卡號, 例如 0-1-2 使用卡0和卡1和卡2", "以-分隔输入使用的卡号, 例如 0-1-2 使用卡0和卡1和卡2": "以-分隔輸入使用的卡號, 例如 0-1-2 使用卡0和卡1和卡2",
"任务": "任务", "任务": "任务",
"伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲", "伴奏人声分离&去混响&去回声": "伴奏人聲分離&去混響&去回聲",
"使用显卡:%s": "使用顯示卡:%s", "使用显卡:%s": "使用顯示卡:%s",
"使用模型采样率": "使用模型采样率", "使用模型采样率": "使用模型采样率",
"使用设备采样率": "使用设备采样率", "使用设备采样率": "使用设备采样率",
"保存名": "儲存名", "保存名": "儲存名",
"保存的文件名, 默认空为和源文件同名": "儲存的檔案名,預設空為與來源檔案同名", "保存的文件名, 默认空为和源文件同名": "儲存的檔案名,預設空為與來源檔案同名",
"保存的模型名不带后缀": "儲存的模型名不帶副檔名", "保存的模型名不带后缀": "儲存的模型名不帶副檔名",
"保存频率save_every_epoch": "保存頻率save_every_epoch", "保存频率save_every_epoch": "保存頻率save_every_epoch",
"保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保護清輔音和呼吸聲防止電音撕裂等artifact拉滿0.5不開啟,調低加大保護力度但可能降低索引效果", "保护清辅音和呼吸声防止电音撕裂等artifact拉满0.5不开启,调低加大保护力度但可能降低索引效果": "保護清輔音和呼吸聲防止電音撕裂等artifact拉滿0.5不開啟,調低加大保護力度但可能降低索引效果",
"修改": "修改", "修改": "修改",
"修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型資訊(僅支援weights資料夾下提取的小模型檔案)", "修改模型信息(仅支持weights文件夹下提取的小模型文件)": "修改模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"停止一键训练": "停止一鍵訓練", "停止一键训练": "停止一鍵訓練",
"停止处理数据": "停止處理資料", "停止处理数据": "停止處理資料",
"停止特征提取": "停止特徵擷取", "停止特征提取": "停止特徵擷取",
"停止训练模型": "停止訓練模型", "停止训练模型": "停止訓練模型",
"停止训练索引": "停止訓練索引", "停止训练索引": "停止訓練索引",
"停止音频转换": "停止音訊轉換", "停止音频转换": "停止音訊轉換",
"全流程结束!": "全流程结束!", "全流程结束!": "全流程结束!",
"判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "判别器预訓練模型不存在将不使用assets/pretrained%s/%sD%s.pth", "判别器预训练模型不存在将不使用assets/pretrained%s/%sD%s.pth": "判别器预訓練模型不存在将不使用assets/pretrained%s/%sD%s.pth",
"加载模型": "載入模型", "加载模型": "載入模型",
"加载预训练底模D路径": "加載預訓練底模D路徑", "加载预训练底模D路径": "加載預訓練底模D路徑",
"加载预训练底模G路径": "加載預訓練底模G路徑", "加载预训练底模G路径": "加載預訓練底模G路徑",
"单次推理": "单次推理", "单次推理": "单次推理",
"卸载音色省显存": "卸載音色節省 VRAM", "卸载音色省显存": "卸載音色節省 VRAM",
"变调(整数, 半音数量, 升八度12降八度-12)": "變調(整數、半音數量、升八度12降八度-12)", "变调(整数, 半音数量, 升八度12降八度-12)": "變調(整數、半音數量、升八度12降八度-12)",
"合成": "合成", "合成": "合成",
"后处理重采样至最终采样率0为不进行重采样": "後處理重採樣至最終採樣率0為不進行重採樣", "后处理重采样至最终采样率0为不进行重采样": "後處理重採樣至最終採樣率0為不進行重採樣",
"否": "否", "否": "否",
"响应阈值": "響應閾值", "响应阈值": "響應閾值",
"响度因子": "響度因子", "响度因子": "響度因子",
"处理中": "處理中", "处理中": "處理中",
"处理数据": "處理資料", "处理数据": "處理資料",
"失败": "失敗", "失败": "失敗",
"失败记录": "失敗記錄", "失败记录": "失敗記錄",
"子进程执行失败,返回码:%s": "子進程执行失敗,返回码:%s", "子进程执行失败,返回码:%s": "子進程执行失敗,返回码:%s",
"导出文件格式": "導出檔格式", "导出文件格式": "導出檔格式",
"已停止": "已停止", "已停止": "已停止",
"已加载判别器预训练模型:%s": "已載入判别器预訓練模型:%s", "已加载判别器预训练模型:%s": "已載入判别器预訓練模型:%s",
"已加载生成器预训练模型:%s": "已載入生成器预訓練模型:%s", "已加载生成器预训练模型:%s": "已載入生成器预訓練模型:%s",
"已启用索引检索": "已启用索引检索", "已启用索引检索": "已启用索引检索",
"已完成": "已完成", "已完成": "已完成",
"已恢复判别器检查点": "已恢复判别器检查点", "已恢复判别器检查点": "已恢复判别器检查点",
"常见问题解答": "常見問題解答", "常见问题解答": "常見問題解答",
"常规设置": "一般設定", "常规设置": "一般設定",
"开始音频转换": "開始音訊轉換", "开始音频转换": "開始音訊轉換",
"当前": "目前", "当前": "目前",
"当前阶段": "目前阶段", "当前阶段": "目前阶段",
"很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练", "很遗憾您这没有能用的显卡来支持您训练": "很遗憾您这没有能用的显卡来支持您训练",
"性别因子/声线粗细": "性別因子/聲線粗細", "性别因子/声线粗细": "性別因子/聲線粗細",
"性能设置": "效能設定", "性能设置": "效能設定",
"总训练轮数total_epoch": "總訓練輪數total_epoch", "总训练轮数total_epoch": "總訓練輪數total_epoch",
"成功": "成功", "成功": "成功",
"执行命令": "执行命令", "执行命令": "执行命令",
"批量推理": "批量推理", "批量推理": "批量推理",
"批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量轉換,輸入待轉換音頻資料夾,或上傳多個音頻檔案,在指定資料夾(默認opt)下輸出轉換的音頻。", "批量转换, 输入待转换音频文件夹, 或上传多个音频文件, 在指定文件夹(默认opt)下输出转换的音频. ": "批量轉換,輸入待轉換音頻資料夾,或上傳多個音頻檔案,在指定資料夾(默認opt)下輸出轉換的音頻。",
"拖拽或点击上传待处理音频": "拖放或點擊上傳待處理音訊", "拖拽或点击上传待处理音频": "拖放或點擊上傳待處理音訊",
"指定输出主人声文件夹": "指定输出主人声文件夹", "指定输出主人声文件夹": "指定输出主人声文件夹",
"指定输出文件夹": "指定輸出資料夾", "指定输出文件夹": "指定輸出資料夾",
"指定输出非主人声文件夹": "指定输出非主人声文件夹", "指定输出非主人声文件夹": "指定输出非主人声文件夹",
"推理时间(ms):": "推理時間(ms):", "推理时间(ms):": "推理時間(ms):",
"推理耗时:%.2f秒": "推理耗时:%.2f秒", "推理耗时:%.2f秒": "推理耗时:%.2f秒",
"推理音色": "推理音色", "推理音色": "推理音色",
"提取": "提取", "提取": "提取",
"提取音高和处理数据使用的CPU进程数": "提取音高和處理數據使用的CPU進程數", "提取音高和处理数据使用的CPU进程数": "提取音高和處理數據使用的CPU進程數",
"数据切分": "數據切分", "数据切分": "數據切分",
"无法停止": "無法停止", "无法停止": "無法停止",
"无法读取音频:%s": "無法读取音頻:%s", "无法读取音频:%s": "無法读取音頻:%s",
"是": "是", "是": "是",
"是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt檔案以節省硬碟空間", "是否仅保存最新的ckpt文件以节省硬盘空间": "是否僅保存最新的ckpt檔案以節省硬碟空間",
"是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights檔夾", "是否在每次保存时间点将最终小模型保存至weights文件夹": "是否在每次保存時間點將最終小模型保存至weights檔夾",
"是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否緩存所有訓練集至 VRAM。小於10分鐘的小數據可緩存以加速訓練大數據緩存會爆 VRAM 也加不了多少速度", "是否缓存所有训练集至显存. 10min以下小数据可缓存以加速训练, 大数据缓存会炸显存也加不了多少速": "是否緩存所有訓練集至 VRAM。小於10分鐘的小數據可緩存以加速訓練大數據緩存會爆 VRAM 也加不了多少速度",
"显卡信息": "顯示卡資訊", "显卡信息": "顯示卡資訊",
"未使用": "未使用", "未使用": "未使用",
"未使用判别器预训练模型": "未使用判别器预訓練模型", "未使用判别器预训练模型": "未使用判别器预訓練模型",
"未使用生成器预训练模型": "未使用生成器预訓練模型", "未使用生成器预训练模型": "未使用生成器预訓練模型",
"未找到Roformer模型配置文件正在使用内置默认配置": "未找到Roformer模型配置檔案正在使用内置預設配置", "未找到Roformer模型配置文件正在使用内置默认配置": "未找到Roformer模型配置檔案正在使用内置預設配置",
"未检测到可用显卡将使用CPU训练耗时可能较长": "未偵測到可用顯示卡将使用CPU訓練耗时可能较长", "未检测到可用显卡将使用CPU训练耗时可能较长": "未偵測到可用顯示卡将使用CPU訓練耗时可能较长",
"未运行": "未运行", "未运行": "未运行",
"本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何程式碼和檔案。詳見根目錄<b>使用需遵守的協議-LICENSE.txt</b>。", "本软件以MIT协议开源, 作者不对软件具备任何控制力, 使用软件者、传播软件导出的声音者自负全责. <br>如不认可该条款, 则不能使用或引用软件包内任何代码和文件. 详见根目录<b>LICENSE</b>.": "本軟體以MIT協議開源作者不對軟體具備任何控制力使用軟體者、傳播軟體導出的聲音者自負全責。<br>如不認可該條款,則不能使用或引用軟體包內任何程式碼和檔案。詳見根目錄<b>使用需遵守的協議-LICENSE.txt</b>。",
"查看": "查看", "查看": "查看",
"查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型資訊(僅支援weights資料夾下提取的小模型檔案)", "查看模型信息(仅支持weights文件夹下提取的小模型文件)": "查看模型資訊(僅支援weights資料夾下提取的小模型檔案)",
"检测到模型类型:%s": "偵測到模型类型:%s", "检测到模型类型:%s": "偵測到模型类型:%s",
"检索特征占比": "檢索特徵佔比", "检索特征占比": "檢索特徵佔比",
"模型": "模型", "模型": "模型",
"模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "模型資訊:%s\n采样率%s\n是否使用音高引导%s\n版本%s", "模型信息:%s\n采样率%s\n是否使用音高引导%s\n版本%s": "模型資訊:%s\n采样率%s\n是否使用音高引导%s\n版本%s",
"模型推理": "模型推理", "模型推理": "模型推理",
"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(輸入logs資料夾下大檔案模型路徑),適用於訓一半不想訓了模型沒有自動提取儲存小檔案模型,或者想測試中間模型的情況", "模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况": "模型提取(輸入logs資料夾下大檔案模型路徑),適用於訓一半不想訓了模型沒有自動提取儲存小檔案模型,或者想測試中間模型的情況",
"模型是否带音高指导": "模型是否帶音高指導", "模型是否带音高指导": "模型是否帶音高指導",
"模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否帶音高指導(唱歌一定要,語音可以不要)", "模型是否带音高指导(唱歌一定要, 语音可以不要)": "模型是否帶音高指導(唱歌一定要,語音可以不要)",
"模型是否带音高指导,1是0否": "模型是否帶音高指導1是0否", "模型是否带音高指导,1是0否": "模型是否帶音高指導1是0否",
"模型版本型号": "模型版本型號", "模型版本型号": "模型版本型號",
"模型融合, 可用于测试音色融合": "模型融合,可用於測試音色融合", "模型融合, 可用于测试音色融合": "模型融合,可用於測試音色融合",
"模型融合失败:两个模型的结构不一致": "模型融合失敗:两个模型的结构不一致", "模型融合失败:两个模型的结构不一致": "模型融合失敗:两个模型的结构不一致",
"模型训练": "模型訓練", "模型训练": "模型訓練",
"模型路径": "模型路徑", "模型路径": "模型路徑",
"正在保存最终检查点:%s": "正在儲存最终检查点:%s", "正在保存最终检查点:%s": "正在儲存最终检查点:%s",
"正在保存检查点 %s_e%s%s": "正在儲存检查点 %s_e%s%s", "正在保存检查点 %s_e%s%s": "正在儲存检查点 %s_e%s%s",
"正在加载RMVPE模型": "正在載入RMVPE模型", "正在加载RMVPE模型": "正在載入RMVPE模型",
"正在加载模型": "正在載入模型", "正在加载模型": "正在載入模型",
"正在启动": "正在启动", "正在启动": "正在启动",
"正在收尾": "正在收尾", "正在收尾": "正在收尾",
"每张显卡的batch_size": "每张显卡的batch_size", "每张显卡的batch_size": "每张显卡的batch_size",
"淡入淡出长度": "淡入淡出長度", "淡入淡出长度": "淡入淡出長度",
"清理模型缓存": "清理模型缓存", "清理模型缓存": "清理模型缓存",
"版本": "版本", "版本": "版本",
"特征": "特徵", "特征": "特徵",
"特征提取": "特徵提取", "特征提取": "特徵提取",
"状态": "状态", "状态": "状态",
"独占 WASAPI 设备": "独占 WASAPI 设备", "独占 WASAPI 设备": "独占 WASAPI 设备",
"生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "生成器预訓練模型不存在将不使用assets/pretrained%s/%sG%s.pth", "生成器预训练模型不存在将不使用assets/pretrained%s/%sG%s.pth": "生成器预訓練模型不存在将不使用assets/pretrained%s/%sG%s.pth",
"男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性轉女性推薦+12key女性轉男性推薦-12key如果音域爆炸導致音色失真也可以自己調整到合適音域。", "男转女推荐+12key, 女转男推荐-12key, 如果音域爆炸导致音色失真也可以自己调整到合适音域. ": "男性轉女性推薦+12key女性轉男性推薦-12key如果音域爆炸導致音色失真也可以自己調整到合適音域。",
"目标采样率": "目標取樣率", "目标采样率": "目標取樣率",
"等待中": "等待中", "等待中": "等待中",
"等待输入": "等待輸入", "等待输入": "等待輸入",
"算法延迟(ms):": "算法延迟(ms):", "算法延迟(ms):": "算法延迟(ms):",
"索引": "索引", "索引": "索引",
"索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "索引無效必须使用added_xxxx.index不能使用trained_xxxx.index", "索引无效必须使用added_xxxx.index不能使用trained_xxxx.index": "索引無效必须使用added_xxxx.index不能使用trained_xxxx.index",
"索引检索失败": "索引检索失敗", "索引检索失败": "索引检索失敗",
"索引检索失败或未启用": "索引检索失敗或未启用", "索引检索失败或未启用": "索引检索失敗或未启用",
"索引训练": "索引訓練", "索引训练": "索引訓練",
"耗时": "耗时", "耗时": "耗时",
"耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "耗时:特徵=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒", "耗时:特征=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒": "耗时:特徵=%.3f秒,索引=%.3f秒,音高=%.3f秒,模型=%.3f秒",
"融合": "融合", "融合": "融合",
"要改的模型信息": "要改的模型資訊", "要改的模型信息": "要改的模型資訊",
"要置入的模型信息": "要置入的模型資訊", "要置入的模型信息": "要置入的模型資訊",
"训练": "訓練", "训练": "訓練",
"训练已完成,正在保存最终模型": "訓練已完成,正在儲存最终模型", "训练已完成,正在保存最终模型": "訓練已完成,正在儲存最终模型",
"训练文件列表写入完成": "訓練檔案列表写入完成", "训练文件列表写入完成": "訓練檔案列表写入完成",
"训练模型": "訓練模型", "训练模型": "訓練模型",
"训练特征索引": "訓練特徵索引", "训练特征索引": "訓練特徵索引",
"训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log", "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log": "训练结束, 您可查看控制台训练日志或实验文件夹下的train.log",
"训练设备规则选择的精度:%s": "訓練设备规则选择的精度:%s", "训练设备规则选择的精度:%s": "訓練设备规则选择的精度:%s",
"训练轮次:{} [{:.0f}%]": "訓練輪次:{} [{:.0f}%]", "训练轮次:{} [{:.0f}%]": "訓練輪次:{} [{:.0f}%]",
"设备类型": "设备类型", "设备类型": "设备类型",
"请上传音频文件": "请上传音頻檔案", "请上传音频文件": "请上传音頻檔案",
"请填写输出文件夹路径": "请填写輸出資料夾路径", "请填写输出文件夹路径": "请填写輸出資料夾路径",
"请指定说话人id": "請指定說話人id", "请指定说话人id": "請指定說話人id",
"请选择index文件": "请选择index文件", "请选择index文件": "请选择index文件",
"请选择pth文件": "请选择pth文件", "请选择pth文件": "请选择pth文件",
"请选择说话人id": "請選擇說話人ID", "请选择说话人id": "請選擇說話人ID",
"转换": "轉換", "转换": "轉換",
"输入实验名": "輸入實驗名稱", "输入实验名": "輸入實驗名稱",
"输入待处理音频文件夹路径": "輸入待處理音頻資料夾路徑", "输入待处理音频文件夹路径": "輸入待處理音頻資料夾路徑",
"输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "輸入待處理音頻資料夾路徑(去檔案管理器地址欄拷貝即可)", "输入待处理音频文件夹路径(去文件管理器地址栏拷就行了)": "輸入待處理音頻資料夾路徑(去檔案管理器地址欄拷貝即可)",
"输入待处理音频文件路径(默认是正确格式示例)": "輸入待處理音頻檔案路徑(預設是正確格式示例)", "输入待处理音频文件路径(默认是正确格式示例)": "輸入待處理音頻檔案路徑(預設是正確格式示例)",
"输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "輸入源音量包絡替換輸出音量包絡融合比例越靠近1越使用輸出包絡", "输入源音量包络替换输出音量包络融合比例越靠近1越使用输出包络": "輸入源音量包絡替換輸出音量包絡融合比例越靠近1越使用輸出包絡",
"输入监听": "输入监听", "输入监听": "输入监听",
"输入训练文件夹路径": "輸入訓練檔案夾路徑", "输入训练文件夹路径": "輸入訓練檔案夾路徑",
"输入设备": "輸入設備", "输入设备": "輸入設備",
"输入设备:%s:%s": "輸入设备:%s:%s", "输入设备:%s:%s": "輸入设备:%s:%s",
"输入降噪": "輸入降噪", "输入降噪": "輸入降噪",
"输出信息": "輸出訊息", "输出信息": "輸出訊息",
"输出变声": "输出变声", "输出变声": "输出变声",
"输出设备": "輸出設備", "输出设备": "輸出設備",
"输出设备:%s:%s": "輸出设备:%s:%s", "输出设备:%s:%s": "輸出设备:%s:%s",
"输出降噪": "輸出降噪", "输出降噪": "輸出降噪",
"输出音频(右下角三个点,点了可以下载)": "輸出音頻(右下角三個點,點了可以下載)", "输出音频(右下角三个点,点了可以下载)": "輸出音頻(右下角三個點,點了可以下載)",
"运行中": "运行中", "运行中": "运行中",
"进度": "進度", "进度": "進度",
"选择.index文件": "選擇 .index 檔案", "选择.index文件": "選擇 .index 檔案",
"选择.pth文件": "選擇 .pth 檔案", "选择.pth文件": "選擇 .pth 檔案",
"选择模型": "选择模型", "选择模型": "选择模型",
"选择索引": "选择索引", "选择索引": "选择索引",
"选择音高提取算法": "選擇音高擷取演算法", "选择音高提取算法": "選擇音高擷取演算法",
"采样率:": "采样率:", "采样率:": "采样率:",
"采样长度": "取樣長度", "采样长度": "取樣長度",
"重载设备列表": "重載設備列表", "重载设备列表": "重載設備列表",
"错误信息:%s": "錯誤資訊:%s", "错误信息:%s": "錯誤資訊:%s",
"错误:未知模型:%s": "錯誤:未知模型:%s", "错误:未知模型:%s": "錯誤:未知模型:%s",
"音调设置": "音調設定", "音调设置": "音調設定",
"音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "音頻包含多个声道,但模型僅支援单声道,将对所有声道取平均值", "音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值": "音頻包含多个声道,但模型僅支援单声道,将对所有声道取平均值",
"音频设备": "音訊設備", "音频设备": "音訊設備",
"音高全部为0该音频无意义跳过%s": "音高全部為0该音頻無意义跳過%s", "音高全部为0该音频无意义跳过%s": "音高全部為0该音頻無意义跳過%s",
"音高算法": "音高演算法", "音高算法": "音高演算法",
"额外推理时长": "額外推理時長", "额外推理时长": "額外推理時長",
"数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "資料切分沒有產生有效訓練音訊,請檢查訓練集和資料切分日誌", "数据切分没有生成有效训练音频,请检查训练集和数据切分日志": "資料切分沒有產生有效訓練音訊,請檢查訓練集和資料切分日誌",
"数据切分没有生成16k音频已停止后续特征提取和训练": "資料切分沒有產生16k音訊已停止後續特徵提取和訓練", "数据切分没有生成16k音频已停止后续特征提取和训练": "資料切分沒有產生16k音訊已停止後續特徵提取和訓練",
"数据切分输出文件不匹配,已停止后续特征提取和训练": "資料切分輸出檔案不匹配,已停止後續特徵提取和訓練", "数据切分输出文件不匹配,已停止后续特征提取和训练": "資料切分輸出檔案不匹配,已停止後續特徵提取和訓練",
"HuBERT特征提取没有生成有效结果已停止训练": "HuBERT特徵提取沒有產生有效結果已停止訓練", "HuBERT特征提取没有生成有效结果已停止训练": "HuBERT特徵提取沒有產生有效結果已停止訓練",
"F0提取没有生成有效结果已停止训练": "F0提取沒有產生有效結果已停止訓練", "F0提取没有生成有效结果已停止训练": "F0提取沒有產生有效結果已停止訓練",
"没有可用于训练的有效音频,请先完成数据切分和特征提取": "沒有可用於訓練的有效音訊,請先完成資料切分和特徵提取", "没有可用于训练的有效音频,请先完成数据切分和特征提取": "沒有可用於訓練的有效音訊,請先完成資料切分和特徵提取",
"已完成阶段": "已完成階段", "已完成阶段": "已完成階段",
"已成功": "已成功", "已成功": "已成功",
"刷新音色列表": "重新整理音色列表", "刷新音色列表": "重新整理音色列表",
"特征检索库文件路径(选择模型后自动匹配,可手动修改)": "特徵索引庫檔案路徑(選擇模型後自動配對,可手動修改)", "特征检索库文件路径(选择模型后自动匹配,可手动修改)": "特徵索引庫檔案路徑(選擇模型後自動配對,可手動修改)",
"[索引训练] 外部索引链接已存在:%s": "[索引訓練] 外部索引連結已存在:%s", "[索引训练] 外部索引链接已存在:%s": "[索引訓練] 外部索引連結已存在:%s",
"[索引训练][跳过] added索引已存在%s": "[索引訓練][跳過] added索引已存在%s", "[索引训练][跳过] added索引已存在%s": "[索引訓練][跳過] added索引已存在%s",
"[索引训练][跳过] trained索引已存在%s": "[索引訓練][跳過] trained索引已存在%s", "[索引训练][跳过] trained索引已存在%s": "[索引訓練][跳過] trained索引已存在%s",
"当前设备:%s | 推理精度:%s": "目前裝置:%s | 推論精度:%s", "当前设备:%s | 推理精度:%s": "目前裝置:%s | 推論精度:%s",
"正在预热CUDA Graph": "正在預熱 CUDA Graph", "正在预热CUDA Graph": "正在預熱 CUDA Graph",
"CUDA Graph预热完成": "CUDA Graph 預熱完成" "CUDA Graph预热完成": "CUDA Graph 預熱完成",
} "数据提取开始start_time=%.6f,请求并行数=%s实际并行数上限=%s": "資料擷取開始start_time=%.6f,請求並行數=%s實際並行數上限=%s",
"数据提取结束end_time=%.6f,总耗时=%.3f秒": "資料擷取結束end_time=%.6f,總耗時=%.3f秒"
}

View File

@@ -1,8 +1,45 @@
import platform, os import platform, os
import ffmpeg import ffmpeg
import numpy as np import numpy as np
import av import av
from io import BytesIO from io import BytesIO
import threading
_USE_TORCHAUDIO_GPU = False
_AUDIO_DEVICE = None
_AUDIO_DTYPE = None
_TORCH = None
_TORCHAUDIO = None
_TORCHAUDIO_RESAMPLE = None
_RESAMPLE_TRANSFORMS = {}
_RESAMPLE_LOCK = threading.Lock()
_FORCE_CPU_AUDIO = os.environ.get("RVC_AUDIO_FORCE_CPU", "0") == "1"
# Select the accelerated loader once, when this module is imported. The CUDA
# device and dtype come from the project's shared automatic selection rules.
# CPU and DirectML keep the original FFmpeg path. Import failures (including
# missing torchaudio DLLs) also leave FFmpeg selected.
if not _FORCE_CPU_AUDIO:
try:
import torch as _TORCH
import torchaudio as _TORCHAUDIO
from torchaudio.transforms import Resample as _TORCHAUDIO_RESAMPLE
from configs.config import infer_device as _AUDIO_DEVICE
from configs.config import infer_dtype as _AUDIO_DTYPE
_USE_TORCHAUDIO_GPU = (
getattr(_AUDIO_DEVICE, "type", None) == "cuda"
and _TORCH.cuda.is_available()
)
except Exception:
_USE_TORCHAUDIO_GPU = False
AUDIO_LOAD_BACKEND = "torchaudio_cuda" if _USE_TORCHAUDIO_GPU else "ffmpeg"
TORCHAUDIO_GPU_ENABLED = _USE_TORCHAUDIO_GPU
AUDIO_DEVICE = _AUDIO_DEVICE
AUDIO_DTYPE = _AUDIO_DTYPE
def wav2(i, o, format): def wav2(i, o, format):
@@ -28,21 +65,243 @@ def wav2(i, o, format):
inp.close() inp.close()
def load_audio(file, sr): def _probe_audio(file):
try: info = ffmpeg.probe(file, cmd="ffprobe")
# https://github.com/openai/whisper/blob/main/whisper/audio.py#L26 stream = next(
# This launches a subprocess to decode audio while down-mixing and resampling as necessary. item for item in info.get("streams", []) if item.get("codec_type") == "audio"
# Requires the ffmpeg CLI and `ffmpeg-python` package to be installed. )
file = clean_path(file) # 防止小白拷路径头尾带了空格和"和回车 return int(stream["sample_rate"]), int(stream.get("channels", 1))
out, _ = (
ffmpeg.input(file, threads=0)
.output("-", format="f32le", acodec="pcm_f32le", ac=1, ar=sr) def _decode_audio_ffmpeg(file):
.run(cmd=["ffmpeg", "-nostdin"], capture_stdout=True, capture_stderr=True) """Decode one audio stream without changing its sample rate."""
) source_sr, channels = _probe_audio(file)
except Exception as e: channels = max(1, channels)
raise RuntimeError(f"Failed to load audio: {e}") out, _ = (
ffmpeg.input(file, threads=0)
return np.frombuffer(out, np.float32).flatten() .output(
"-",
format="f32le",
acodec="pcm_f32le",
ac=channels,
ar=source_sr,
)
.run(cmd=["ffmpeg", "-nostdin"], capture_stdout=True, capture_stderr=True)
)
samples = np.frombuffer(out, np.float32)
usable = samples.size - samples.size % channels
samples = samples[:usable]
return samples.reshape(-1, channels).T.copy(), source_sr
def _load_audio_ffmpeg(file, sr, force_mono=True):
# https://github.com/openai/whisper/blob/main/whisper/audio.py#L26
# Keep the original FFmpeg path for CPU and unsupported decoders. When
# stereo is requested, retain all source channels instead of forcing ac=1.
channels = 1
if not force_mono:
_, channels = _probe_audio(file)
channels = max(1, channels)
output = {
"format": "f32le",
"acodec": "pcm_f32le",
"ar": sr,
}
if force_mono:
output["ac"] = 1
else:
output["ac"] = channels
out, _ = (
ffmpeg.input(file, threads=0)
.output("-", **output)
.run(cmd=["ffmpeg", "-nostdin"], capture_stdout=True, capture_stderr=True)
)
samples = np.frombuffer(out, np.float32)
if force_mono:
return samples.flatten()
usable = samples.size - samples.size % channels
return samples[:usable].reshape(-1, channels).T.copy()
def _channel_first_tensor(audio):
if not _TORCH.is_tensor(audio):
audio = _TORCH.from_numpy(np.ascontiguousarray(audio, dtype=np.float32))
if audio.ndim == 1:
audio = audio.unsqueeze(0)
if audio.ndim != 2:
raise ValueError("Audio data must be one-dimensional or channel-first two-dimensional")
return audio
def _format_audio_tensor(audio, force_mono=True, keep_on_device=False):
audio = _channel_first_tensor(audio)
if force_mono:
if audio.shape[0] > 1:
audio = audio.mean(dim=0, keepdim=True)
else:
audio = audio[:1]
if keep_on_device:
audio = audio.to(device=_AUDIO_DEVICE, dtype=_AUDIO_DTYPE)
return audio.flatten() if force_mono else audio
audio = audio.detach().to(device="cpu", dtype=_TORCH.float32).contiguous().numpy()
return audio[0].flatten() if force_mono else audio
def _get_gpu_resampler(source_sr, target_sr):
key = (source_sr, target_sr, str(_AUDIO_DEVICE), _AUDIO_DTYPE)
transform = _RESAMPLE_TRANSFORMS.get(key)
if transform is None:
with _RESAMPLE_LOCK:
transform = _RESAMPLE_TRANSFORMS.get(key)
if transform is None:
transform = _TORCHAUDIO_RESAMPLE(
source_sr,
target_sr,
dtype=_AUDIO_DTYPE,
).to(device=_AUDIO_DEVICE, dtype=_AUDIO_DTYPE)
_RESAMPLE_TRANSFORMS[key] = transform
return transform
def _resample_tensor_gpu(audio, source_sr, target_sr, force_mono=True, keep_on_device=False):
audio = _channel_first_tensor(audio)
if source_sr == target_sr:
return _format_audio_tensor(audio, force_mono, keep_on_device)
with _TORCH.inference_mode():
audio = audio.to(device=_AUDIO_DEVICE, dtype=_AUDIO_DTYPE)
if force_mono and audio.shape[0] > 1:
audio = audio.mean(dim=0, keepdim=True)
elif force_mono:
audio = audio[:1]
audio = _get_gpu_resampler(source_sr, target_sr)(audio)
if keep_on_device:
return audio.flatten() if force_mono else audio
audio = audio.detach().to(device="cpu", dtype=_TORCH.float32).contiguous().numpy()
return audio[0].flatten() if force_mono else audio
def _load_audio_torchaudio_gpu(file, sr, force_mono=True, keep_on_device=False):
audio, source_sr = _TORCHAUDIO.load(file)
return _resample_tensor_gpu(audio, source_sr, sr, force_mono, keep_on_device)
def resample_audio(audio, source_sr, target_sr, force_mono=False, res_type=None):
"""Resample channel-first audio, using the same CUDA path as load_audio."""
tensor = _channel_first_tensor(audio)
if _USE_TORCHAUDIO_GPU:
try:
return _resample_tensor_gpu(
tensor, source_sr, target_sr, force_mono, keep_on_device=False
)
except Exception:
try:
_TORCH.cuda.empty_cache()
except Exception:
pass
tensor = _channel_first_tensor(tensor)
if force_mono:
if tensor.shape[0] > 1:
tensor = tensor.mean(dim=0, keepdim=True)
else:
tensor = tensor[:1]
array = tensor.detach().to(device="cpu", dtype=_TORCH.float32).numpy()
if source_sr != target_sr:
import librosa
kwargs = {}
if res_type is not None:
kwargs["res_type"] = res_type
array = librosa.resample(
array,
orig_sr=source_sr,
target_sr=target_sr,
axis=-1,
**kwargs,
)
return array[0].flatten() if force_mono else array
def resample_audio_tensor(audio, source_sr, target_sr, force_mono=False):
"""Resample channel-first audio and keep the result on the selected GPU."""
if _USE_TORCHAUDIO_GPU:
try:
return _resample_tensor_gpu(
audio,
source_sr,
target_sr,
force_mono=force_mono,
keep_on_device=True,
)
except Exception:
try:
_TORCH.cuda.empty_cache()
except Exception:
pass
result = resample_audio(
audio,
source_sr,
target_sr,
force_mono=force_mono,
)
tensor = _TORCH.from_numpy(np.ascontiguousarray(result, dtype=np.float32))
if _USE_TORCHAUDIO_GPU:
tensor = tensor.to(device=_AUDIO_DEVICE, dtype=_AUDIO_DTYPE)
return tensor
def load_audio_tensor(file, sr, force_mono=True):
"""Load audio as a tensor; stereo mode returns channel-first data."""
file = clean_path(file)
if not _USE_TORCHAUDIO_GPU:
return _TORCH.from_numpy(_load_audio_ffmpeg(file, sr, force_mono))
try:
return _load_audio_torchaudio_gpu(
file, sr, force_mono=force_mono, keep_on_device=True
)
except Exception as torchaudio_error:
try:
audio, source_sr = _decode_audio_ffmpeg(file)
return _resample_tensor_gpu(
audio, source_sr, sr, force_mono=force_mono, keep_on_device=True
)
except Exception as ffmpeg_error:
try:
audio = _TORCH.from_numpy(_load_audio_ffmpeg(file, sr, force_mono))
return audio.to(device=_AUDIO_DEVICE, dtype=_AUDIO_DTYPE)
except Exception:
raise RuntimeError(
"Failed to load audio with torchaudio (%s) and FFmpeg (%s)"
% (torchaudio_error, ffmpeg_error)
) from ffmpeg_error
def load_audio(file, sr, force_mono=True):
"""Load float32 audio; mono is [T], preserved channels are [C, T]."""
file = clean_path(file) # 防止小白拷路径头尾带了空格和"和回车
if _USE_TORCHAUDIO_GPU:
try:
return _load_audio_torchaudio_gpu(file, sr, force_mono=force_mono)
except Exception as torchaudio_error:
try:
audio, source_sr = _decode_audio_ffmpeg(file)
return _resample_tensor_gpu(
audio, source_sr, sr, force_mono=force_mono
)
except Exception as decode_error:
# Preserve the old format coverage if both torchaudio decode
# and GPU processing are unavailable for this file.
try:
return _load_audio_ffmpeg(file, sr, force_mono)
except Exception as ffmpeg_error:
raise RuntimeError(
"Failed to load audio with torchaudio (%s), raw FFmpeg (%s), and FFmpeg (%s)"
% (torchaudio_error, decode_error, ffmpeg_error)
) from ffmpeg_error
try:
return _load_audio_ffmpeg(file, sr, force_mono)
except Exception as error:
raise RuntimeError("Failed to load audio: %s" % error) from error
def clean_path(path_str): def clean_path(path_str):

View File

@@ -184,8 +184,9 @@ class BSRoformer(Module):
tran_modules.append(Transformer(depth=freq_transformer_depth, rotary_embed=freq_rotary_embed, **transformer_kwargs)) tran_modules.append(Transformer(depth=freq_transformer_depth, rotary_embed=freq_rotary_embed, **transformer_kwargs))
self.layers.append(nn.ModuleList(tran_modules)) self.layers.append(nn.ModuleList(tran_modules))
self.final_norm = RMSNorm(dim) self.final_norm = RMSNorm(dim)
self.stft_kwargs = dict(n_fft=stft_n_fft, hop_length=stft_hop_length, win_length=stft_win_length, normalized=stft_normalized) self.stft_kwargs = dict(n_fft=stft_n_fft, hop_length=stft_hop_length, win_length=stft_win_length, normalized=stft_normalized)
self.stft_window_fn = partial(default(stft_window_fn, torch.hann_window), stft_win_length) self.stft_window_fn = partial(default(stft_window_fn, torch.hann_window), stft_win_length)
self._stft_windows = {}
freqs = torch.stft(torch.randn(1, 4096), **self.stft_kwargs, window=torch.ones(stft_win_length), return_complex=True).shape[1] freqs = torch.stft(torch.randn(1, 4096), **self.stft_kwargs, window=torch.ones(stft_win_length), return_complex=True).shape[1]
assert len(freqs_per_bands) > 1 assert len(freqs_per_bands) > 1
assert sum(freqs_per_bands) == freqs, f'the number of freqs in the bands must equal {freqs} based on the STFT settings, but got {sum(freqs_per_bands)}' assert sum(freqs_per_bands) == freqs, f'the number of freqs in the bands must equal {freqs} based on the STFT settings, but got {sum(freqs_per_bands)}'
@@ -199,7 +200,15 @@ class BSRoformer(Module):
self.multi_stft_resolutions_window_sizes = multi_stft_resolutions_window_sizes self.multi_stft_resolutions_window_sizes = multi_stft_resolutions_window_sizes
self.multi_stft_n_fft = stft_n_fft self.multi_stft_n_fft = stft_n_fft
self.multi_stft_window_fn = multi_stft_window_fn self.multi_stft_window_fn = multi_stft_window_fn
self.multi_stft_kwargs = dict(hop_length=multi_stft_hop_size, normalized=multi_stft_normalized) self.multi_stft_kwargs = dict(hop_length=multi_stft_hop_size, normalized=multi_stft_normalized)
def _get_stft_window(self, device):
key = str(device)
window = self._stft_windows.get(key)
if window is None:
window = self.stft_window_fn(device=device, dtype=torch.float32)
self._stft_windows[key] = window
return window
def forward(self, raw_audio, target=None, return_loss_breakdown=False): def forward(self, raw_audio, target=None, return_loss_breakdown=False):
""" """
@@ -224,7 +233,7 @@ class BSRoformer(Module):
if x_is_dml: if x_is_dml:
# DirectML has no complex/STFT kernels. Keep only the spectral # DirectML has no complex/STFT kernels. Keep only the spectral
# boundary on CPU and move its real representation to DirectML. # boundary on CPU and move its real representation to DirectML.
stft_window = self.stft_window_fn(device='cpu') stft_window = self._get_stft_window('cpu')
stft_complex = torch.stft( stft_complex = torch.stft(
raw_audio.cpu(), raw_audio.cpu(),
**self.stft_kwargs, **self.stft_kwargs,
@@ -240,7 +249,7 @@ class BSRoformer(Module):
) )
stft_repr = stft_repr_cpu.to(device) stft_repr = stft_repr_cpu.to(device)
else: else:
stft_window = self.stft_window_fn(device=device) stft_window = self._get_stft_window(device)
try: try:
stft_repr = torch.stft(raw_audio, **self.stft_kwargs, window=stft_window, return_complex=True) stft_repr = torch.stft(raw_audio, **self.stft_kwargs, window=stft_window, return_complex=True)
except: except:

View File

@@ -188,7 +188,8 @@ class MelBandRoformer(Module):
tran_modules.append(Transformer(depth=time_transformer_depth, rotary_embed=time_rotary_embed, **transformer_kwargs)) tran_modules.append(Transformer(depth=time_transformer_depth, rotary_embed=time_rotary_embed, **transformer_kwargs))
tran_modules.append(Transformer(depth=freq_transformer_depth, rotary_embed=freq_rotary_embed, **transformer_kwargs)) tran_modules.append(Transformer(depth=freq_transformer_depth, rotary_embed=freq_rotary_embed, **transformer_kwargs))
self.layers.append(nn.ModuleList(tran_modules)) self.layers.append(nn.ModuleList(tran_modules))
self.stft_window_fn = partial(default(stft_window_fn, torch.hann_window), stft_win_length) self.stft_window_fn = partial(default(stft_window_fn, torch.hann_window), stft_win_length)
self._stft_windows = {}
self.stft_kwargs = dict(n_fft=stft_n_fft, hop_length=stft_hop_length, win_length=stft_win_length, normalized=stft_normalized) self.stft_kwargs = dict(n_fft=stft_n_fft, hop_length=stft_hop_length, win_length=stft_win_length, normalized=stft_normalized)
freqs = torch.stft(torch.randn(1, 4096), **self.stft_kwargs, window=torch.ones(stft_n_fft), return_complex=True).shape[1] freqs = torch.stft(torch.randn(1, 4096), **self.stft_kwargs, window=torch.ones(stft_n_fft), return_complex=True).shape[1]
mel_filter_bank_numpy = filters.mel(sr=sample_rate, n_fft=stft_n_fft, n_mels=num_bands) mel_filter_bank_numpy = filters.mel(sr=sample_rate, n_fft=stft_n_fft, n_mels=num_bands)
@@ -220,7 +221,15 @@ class MelBandRoformer(Module):
self.multi_stft_n_fft = stft_n_fft self.multi_stft_n_fft = stft_n_fft
self.multi_stft_window_fn = multi_stft_window_fn self.multi_stft_window_fn = multi_stft_window_fn
self.multi_stft_kwargs = dict(hop_length=multi_stft_hop_size, normalized=multi_stft_normalized) self.multi_stft_kwargs = dict(hop_length=multi_stft_hop_size, normalized=multi_stft_normalized)
self.match_input_audio_length = match_input_audio_length self.match_input_audio_length = match_input_audio_length
def _get_stft_window(self, device):
key = str(device)
window = self._stft_windows.get(key)
if window is None:
window = self.stft_window_fn(device=device, dtype=torch.float32)
self._stft_windows[key] = window
return window
def forward(self, raw_audio, target=None, return_loss_breakdown=False): def forward(self, raw_audio, target=None, return_loss_breakdown=False):
""" """
@@ -245,7 +254,7 @@ class MelBandRoformer(Module):
if x_is_dml: if x_is_dml:
# DirectML has no STFT or complex tensor support. Build the real # DirectML has no STFT or complex tensor support. Build the real
# spectral features on CPU, then run the learned network on DML. # spectral features on CPU, then run the learned network on DML.
stft_window = self.stft_window_fn(device='cpu') stft_window = self._get_stft_window('cpu')
stft_complex = torch.stft( stft_complex = torch.stft(
raw_audio.cpu(), raw_audio.cpu(),
**self.stft_kwargs, **self.stft_kwargs,
@@ -257,16 +266,14 @@ class MelBandRoformer(Module):
stft_repr, batch_audio_channel_packed_shape, '* f t c' stft_repr, batch_audio_channel_packed_shape, '* f t c'
) )
stft_repr = rearrange(stft_repr, 'b s f t c -> b (f s) t c') stft_repr = rearrange(stft_repr, 'b s f t c -> b (f s) t c')
batch_arange = torch.arange(batch)[..., None] x = stft_repr[:, self.freq_indices.cpu()].to(device)
x = stft_repr[batch_arange, self.freq_indices.cpu()].to(device)
else: else:
stft_window = self.stft_window_fn(device=device) stft_window = self._get_stft_window(device)
stft_repr = torch.stft(raw_audio, **self.stft_kwargs, window=stft_window, return_complex=True) stft_repr = torch.stft(raw_audio, **self.stft_kwargs, window=stft_window, return_complex=True)
stft_repr = torch.view_as_real(stft_repr) stft_repr = torch.view_as_real(stft_repr)
stft_repr = unpack_one(stft_repr, batch_audio_channel_packed_shape, '* f t c') stft_repr = unpack_one(stft_repr, batch_audio_channel_packed_shape, '* f t c')
stft_repr = rearrange(stft_repr, 'b s f t c -> b (f s) t c') stft_repr = rearrange(stft_repr, 'b s f t c -> b (f s) t c')
batch_arange = torch.arange(batch, device=device)[..., None] x = stft_repr[:, self.freq_indices]
x = stft_repr[batch_arange, self.freq_indices]
x = rearrange(x, 'b f t c -> b t (f c)') x = rearrange(x, 'b f t c -> b t (f c)')
if self.use_torch_checkpoint: if self.use_torch_checkpoint:
x = checkpoint(self.band_split, x, use_reentrant=False) x = checkpoint(self.band_split, x, use_reentrant=False)
@@ -316,9 +323,9 @@ class MelBandRoformer(Module):
masks = torch.view_as_complex(masks.contiguous()) masks = torch.view_as_complex(masks.contiguous())
masks = masks.type(stft_repr.dtype) masks = masks.type(stft_repr.dtype)
freq_indices = self.freq_indices.cpu() if x_is_dml else self.freq_indices freq_indices = self.freq_indices.cpu() if x_is_dml else self.freq_indices
scatter_indices = repeat(freq_indices, 'f -> b n f t', b=batch, n=num_stems, t=stft_repr.shape[-1])
stft_repr_expanded_stems = repeat(stft_repr, 'b 1 ... -> b n ...', n=num_stems) stft_repr_expanded_stems = repeat(stft_repr, 'b 1 ... -> b n ...', n=num_stems)
masks_summed = torch.zeros_like(stft_repr_expanded_stems).scatter_add_(2, scatter_indices, masks) masks_summed = torch.zeros_like(stft_repr_expanded_stems)
masks_summed.index_add_(2, freq_indices, masks)
num_bands_per_freq = self.num_bands_per_freq.cpu() if x_is_dml else self.num_bands_per_freq num_bands_per_freq = self.num_bands_per_freq.cpu() if x_is_dml else self.num_bands_per_freq
denom = repeat(num_bands_per_freq, 'f -> (f r) 1', r=channels) denom = repeat(num_bands_per_freq, 'f -> (f r) 1', r=channels)
masks_averaged = masks_summed / denom.clamp(min=1e-08) masks_averaged = masks_summed / denom.clamp(min=1e-08)

View File

@@ -3,14 +3,13 @@ import os
import warnings import warnings
from contextlib import nullcontext from contextlib import nullcontext
import librosa
import numpy as np import numpy as np
import soundfile as sf import soundfile as sf
import torch import torch
import torch.nn as nn import torch.nn as nn
import yaml import yaml
from tools.cuda_graph import run_cuda_graph from infer.audio import TORCHAUDIO_GPU_ENABLED, load_audio, load_audio_tensor
from tqdm import tqdm from tqdm import tqdm
from tools.file_io import read_text from tools.file_io import read_text
from i18n.i18n import I18nAuto from i18n.i18n import I18nAuto
@@ -120,27 +119,67 @@ class Roformer_Loader:
batch_size = self.config["inference"]["batch_size"] batch_size = self.config["inference"]["batch_size"]
length_init = mix.shape[-1] length_init = mix.shape[-1]
progress_bar = tqdm(total=length_init // step + 1, desc="Processing", leave=False)
# Do pad from the beginning and end to account floating window results better # Do pad from the beginning and end to account floating window results better
if length_init > 2 * border and (border > 0): if length_init > 2 * border and (border > 0):
mix = nn.functional.pad(mix, (border, border), mode="reflect") mix = nn.functional.pad(mix, (border, border), mode="reflect")
total_windows = (mix.shape[-1] + step - 1) // step
progress_bar = tqdm(total=total_windows, desc="Processing", leave=False)
# Prepare windows arrays (do 1 time for speed up). This trick repairs click problems on the edges of segment parsed_device = device if isinstance(device, torch.device) else torch.device(device)
window_size = C device_type = parsed_device.type
fadein = torch.linspace(0, 1, fade_size) if self.config["training"]["target_instrument"] is None:
fadeout = torch.linspace(1, 0, fade_size) source_count = len(self.config["training"]["instruments"])
window_start = torch.ones(window_size) else:
window_middle = torch.ones(window_size) source_count = 1
window_finish = torch.ones(window_size) req_shape = (source_count,) + tuple(mix.shape)
window_start[-fade_size:] *= fadeout # First audio chunk, no fadein
window_finish[:fade_size] *= fadein # Last audio chunk, no fadeout accumulation_device = torch.device("cpu")
if device_type == "cuda":
required_bytes = int(np.prod(req_shape)) * 4 + mix.shape[-1] * 4
free_bytes, _ = torch.cuda.mem_get_info(parsed_device)
limit = min(1024**3, int(free_bytes * 0.22))
if required_bytes <= limit:
accumulation_device = parsed_device
try:
result = torch.zeros(
req_shape,
dtype=torch.float32,
device=accumulation_device,
)
counter = torch.zeros(
mix.shape[-1],
dtype=torch.float32,
device=accumulation_device,
)
except torch.cuda.OutOfMemoryError:
torch.cuda.empty_cache()
accumulation_device = torch.device("cpu")
result = torch.zeros(req_shape, dtype=torch.float32)
counter = torch.zeros(mix.shape[-1], dtype=torch.float32)
# The overlap-add window lives beside the accumulator. A short file
# with one window uses the all-ones window to avoid a zero denominator.
fadein = torch.linspace(
0, 1, fade_size, device=accumulation_device, dtype=torch.float32
)
fadeout = torch.linspace(
1, 0, fade_size, device=accumulation_device, dtype=torch.float32
)
window_full = torch.ones(C, device=accumulation_device)
window_start = window_full.clone()
window_middle = window_full.clone()
window_finish = window_full.clone()
window_start[-fade_size:] *= fadeout
window_finish[:fade_size] *= fadein
window_middle[-fade_size:] *= fadeout window_middle[-fade_size:] *= fadeout
window_middle[:fade_size] *= fadein window_middle[:fade_size] *= fadein
device_type = device.type if isinstance(device, torch.device) else torch.device(device).type
amp_context = ( amp_context = (
torch.amp.autocast("cuda") if device_type == "cuda" else nullcontext() torch.amp.autocast("cuda", enabled=self.is_half)
if device_type == "cuda"
else nullcontext()
) )
grad_context = ( grad_context = (
torch.no_grad() torch.no_grad()
@@ -152,62 +191,62 @@ class Roformer_Loader:
# therefore needs no_grad rather than inference_mode. CUDA and CPU # therefore needs no_grad rather than inference_mode. CUDA and CPU
# retain the existing inference-mode path. # retain the existing inference-mode path.
with grad_context: with grad_context:
if self.config["training"]["target_instrument"] is None: model_dtype = next(model.parameters()).dtype
req_shape = (len(self.config["training"]["instruments"]),) + tuple(mix.shape)
else:
req_shape = (1,) + tuple(mix.shape)
result = torch.zeros(req_shape, dtype=torch.float32)
counter = torch.zeros(req_shape, dtype=torch.float32)
i = 0 i = 0
batch_data = [] batch_data = []
batch_locations = [] batch_locations = []
while i < mix.shape[1]: while i < mix.shape[1]:
part = mix[:, i : i + C].to(device) part = mix[:, i : i + C]
length = part.shape[-1] length = part.shape[-1]
if length < C: if length < C:
if length > C // 2 + 1: if length > C // 2 + 1:
part = nn.functional.pad(input=part, pad=(0, C - length), mode="reflect") part = nn.functional.pad(input=part, pad=(0, C - length), mode="reflect")
else: else:
part = nn.functional.pad(input=part, pad=(0, C - length, 0, 0), mode="constant", value=0) part = nn.functional.pad(input=part, pad=(0, C - length, 0, 0), mode="constant", value=0)
if self.is_half:
part = part.half()
batch_data.append(part) batch_data.append(part)
batch_locations.append((i, length)) batch_locations.append((i, length))
i += step i += step
progress_bar.update(1) progress_bar.update(1)
if len(batch_data) >= batch_size or (i >= mix.shape[1]): if len(batch_data) >= batch_size or (i >= mix.shape[1]):
arr = torch.stack(batch_data, dim=0) arr = torch.stack(batch_data, dim=0).to(
# print(23333333,arr.dtype) device=parsed_device,
x = run_cuda_graph( dtype=model_dtype,
model, )
"uvr-bsroformer", # Torch STFT/ISTFT cannot be captured reliably by a
lambda audio: model(audio), # CUDA Graph on the supported runtime, so keep this
arr, # model call eager while all tensors remain on CUDA.
x = model(arr)
x_for_accumulation = (
x.float()
if accumulation_device.type == "cuda"
else x.float().cpu()
) )
window = window_middle
if i - step == 0: # First audio chunk, no fadein
window = window_start
elif i >= mix.shape[1]: # Last audio chunk, no fadeout
window = window_finish
for j in range(len(batch_locations)): for j in range(len(batch_locations)):
start, l = batch_locations[j] start, l = batch_locations[j]
result[..., start : start + l] += x[j][..., :l].cpu() * window[..., :l] is_first = start == 0
counter[..., start : start + l] += window[..., :l] is_last = start + l >= mix.shape[1]
if is_first and is_last:
window = window_full
elif is_first:
window = window_start
elif is_last:
window = window_finish
else:
window = window_middle
result[..., start : start + l].add_(
x_for_accumulation[j][..., :l] * window[:l]
)
counter[start : start + l].add_(window[:l])
batch_data = [] batch_data = []
batch_locations = [] batch_locations = []
estimated_sources = result / counter result.div_(counter.clamp_min(1e-8))
estimated_sources = estimated_sources.cpu().numpy() torch.nan_to_num_(result)
np.nan_to_num(estimated_sources, copy=False, nan=0.0)
if length_init > 2 * border and (border > 0): if length_init > 2 * border and (border > 0):
# Remove pad result = result[..., border:-border]
estimated_sources = estimated_sources[..., border:-border] estimated_sources = result.cpu().numpy()
progress_bar.close() progress_bar.close()
@@ -227,22 +266,63 @@ class Roformer_Loader:
if "sample_rate" in self.config["audio"]: if "sample_rate" in self.config["audio"]:
sample_rate = self.config["audio"]["sample_rate"] sample_rate = self.config["audio"]["sample_rate"]
isstereo = self.config["model"].get("stereo", True)
device_type = (
self.device.type
if isinstance(self.device, torch.device)
else torch.device(self.device).type
)
try: try:
mix, sr = librosa.load(path, sr=sample_rate, mono=False) if device_type == "cuda" and TORCHAUDIO_GPU_ENABLED:
mix = load_audio_tensor(
path, sample_rate, force_mono=not isstereo
)
else:
mix = load_audio(path, sample_rate, force_mono=not isstereo)
sr = sample_rate
except Exception as e: except Exception as e:
print(i18n("无法读取音频:%s") % path) print(i18n("无法读取音频:%s") % path)
print(i18n("错误信息:%s") % str(e)) print(i18n("错误信息:%s") % str(e))
return return
# in case if model only supports mono tracks if isstereo:
isstereo = self.config["model"].get("stereo", True) if mix.ndim == 1:
if not isstereo and len(mix.shape) != 1: mix = mix.unsqueeze(0) if torch.is_tensor(mix) else mix[np.newaxis, :]
mix = np.mean(mix, axis=0) # if more than 2 channels, take mean if mix.shape[0] == 1:
print(i18n("音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值")) mix = mix.repeat(2, 1) if torch.is_tensor(mix) else np.repeat(mix, 2, axis=0)
elif mix.shape[0] > 2:
mix = mix[:2].contiguous() if torch.is_tensor(mix) else np.ascontiguousarray(mix[:2])
else:
if mix.ndim == 1:
mix = mix.unsqueeze(0) if torch.is_tensor(mix) else mix[np.newaxis, :]
elif mix.shape[0] > 1:
mix = (
mix.mean(dim=0, keepdim=True)
if torch.is_tensor(mix)
else np.mean(mix, axis=0, keepdims=True)
)
print(i18n("音频包含多个声道,但模型仅支持单声道,将对所有声道取平均值"))
mix_orig = mix.copy() if torch.is_tensor(mix):
keep_on_gpu = mix.device.type == "cuda"
mixture = torch.tensor(mix, dtype=torch.float32) if keep_on_gpu:
free_bytes, _ = torch.cuda.mem_get_info(mix.device)
input_bytes = mix.numel() * mix.element_size()
keep_on_gpu = input_bytes <= min(
512 * 1024 * 1024,
int(free_bytes * 0.10),
)
if keep_on_gpu:
mixture = mix
mix_orig = mix.detach().float().cpu().numpy()
else:
mixture = mix.detach().float().cpu()
mix_orig = mixture.numpy()
del mix
else:
mix = np.ascontiguousarray(mix, dtype=np.float32)
mix_orig = mix
mixture = torch.from_numpy(mix)
res = self.demix_track(self.model, mixture, self.device) res = self.demix_track(self.model, mixture, self.device)
if self.config["training"]["target_instrument"] is not None: if self.config["training"]["target_instrument"] is not None:
@@ -250,7 +330,8 @@ class Roformer_Loader:
# other instruments are caculated by subtracting target instrument from mixture # other instruments are caculated by subtracting target instrument from mixture
target_instrument = self.config["training"]["target_instrument"] target_instrument = self.config["training"]["target_instrument"]
other_instruments = [i for i in self.config["training"]["instruments"] if i != target_instrument] other_instruments = [i for i in self.config["training"]["instruments"] if i != target_instrument]
other = mix_orig - res[target_instrument] # caculate other instruments np.subtract(mix_orig, res[target_instrument], out=mix_orig)
other = mix_orig
path_vocal = "{}/{}_{}.wav".format(vocal_root, file_base_name, target_instrument) path_vocal = "{}/{}_{}.wav".format(vocal_root, file_base_name, target_instrument)
path_other = "{}/{}_{}.wav".format(others_root, file_base_name, other_instruments[0]) path_other = "{}/{}_{}.wav".format(others_root, file_base_name, other_instruments[0])

View File

@@ -1,12 +1,55 @@
import hashlib
import json
import math import math
import os
import librosa import librosa
import numpy as np import numpy as np
import soundfile as sf import torch
from tqdm import tqdm from infer.audio import resample_audio, resample_audio_tensor
_STFT_WINDOWS = {}
def _stft_window(n_fft, device):
key = (n_fft, str(device))
window = _STFT_WINDOWS.get(key)
if window is None:
window = torch.hann_window(
n_fft,
periodic=True,
device=device,
dtype=torch.float32,
)
_STFT_WINDOWS[key] = window
return window
def _wave_to_spectrogram_torch(
wave, hop_length, n_fft, mid_side=False, mid_side_b2=False, reverse=False
):
wave = wave.to(dtype=torch.float32)
if reverse:
transformed = torch.flip(wave[:2], dims=(-1,))
elif mid_side:
transformed = torch.stack(
((wave[0] + wave[1]) / 2, wave[0] - wave[1])
)
elif mid_side_b2:
transformed = torch.stack(
(wave[1] + wave[0] * 0.5, wave[0] - wave[1] * 0.5)
)
else:
transformed = wave[:2]
return torch.stft(
transformed,
n_fft=n_fft,
hop_length=hop_length,
window=_stft_window(n_fft, transformed.device),
center=True,
pad_mode="constant",
normalized=False,
onesided=True,
return_complex=True,
)
def crop_center(h1, h2): def crop_center(h1, h2):
@@ -27,29 +70,11 @@ def crop_center(h1, h2):
return h1 return h1
def wave_to_spectrogram(wave, hop_length, n_fft, mid_side=False, mid_side_b2=False, reverse=False):
if reverse:
wave_left = np.flip(np.asfortranarray(wave[0]))
wave_right = np.flip(np.asfortranarray(wave[1]))
elif mid_side:
wave_left = np.asfortranarray(np.add(wave[0], wave[1]) / 2)
wave_right = np.asfortranarray(np.subtract(wave[0], wave[1]))
elif mid_side_b2:
wave_left = np.asfortranarray(np.add(wave[1], wave[0] * 0.5))
wave_right = np.asfortranarray(np.subtract(wave[0], wave[1] * 0.5))
else:
wave_left = np.asfortranarray(wave[0])
wave_right = np.asfortranarray(wave[1])
spec_left = librosa.stft(wave_left, n_fft=n_fft, hop_length=hop_length)
spec_right = librosa.stft(wave_right, n_fft=n_fft, hop_length=hop_length)
spec = np.asfortranarray([spec_left, spec_right])
return spec
def wave_to_spectrogram_mt(wave, hop_length, n_fft, mid_side=False, mid_side_b2=False, reverse=False): def wave_to_spectrogram_mt(wave, hop_length, n_fft, mid_side=False, mid_side_b2=False, reverse=False):
if torch.is_tensor(wave):
return _wave_to_spectrogram_torch(
wave, hop_length, n_fft, mid_side, mid_side_b2, reverse
)
import threading import threading
if reverse: if reverse:
@@ -84,7 +109,15 @@ def wave_to_spectrogram_mt(wave, hop_length, n_fft, mid_side=False, mid_side_b2=
def combine_spectrograms(specs, mp): def combine_spectrograms(specs, mp):
l = min([specs[i].shape[2] for i in specs]) l = min([specs[i].shape[2] for i in specs])
spec_c = np.zeros(shape=(2, mp.param["bins"] + 1, l), dtype=np.complex64) first = specs[next(iter(specs))]
if torch.is_tensor(first):
spec_c = torch.zeros(
(2, mp.param["bins"] + 1, l),
dtype=torch.complex64,
device=first.device,
)
else:
spec_c = np.zeros(shape=(2, mp.param["bins"] + 1, l), dtype=np.complex64)
offset = 0 offset = 0
bands_n = len(mp.param["band"]) bands_n = len(mp.param["band"])
@@ -109,48 +142,62 @@ def combine_spectrograms(specs, mp):
gp = g gp = g
spec_c[:, b, :] *= g spec_c[:, b, :] *= g
if torch.is_tensor(spec_c):
return spec_c.contiguous()
return np.asfortranarray(spec_c) return np.asfortranarray(spec_c)
def spectrogram_to_image(spec, mode="magnitude"):
if mode == "magnitude":
if np.iscomplexobj(spec):
y = np.abs(spec)
else:
y = spec
y = np.log10(y**2 + 1e-8)
elif mode == "phase":
if np.iscomplexobj(spec):
y = np.angle(spec)
else:
y = spec
y -= y.min()
y *= 255 / y.max()
img = np.uint8(y)
if y.ndim == 3:
img = img.transpose(1, 2, 0)
img = np.concatenate([np.max(img, axis=2, keepdims=True), img], axis=2)
return img
def reduce_vocal_aggressively(X, y, softmask):
v = X - y
y_mag_tmp = np.abs(y)
v_mag_tmp = np.abs(v)
v_mask = v_mag_tmp > y_mag_tmp
y_mag = np.clip(y_mag_tmp - v_mag_tmp * v_mask * softmask, 0, np.inf)
return y_mag * np.exp(1.0j * np.angle(y))
def mask_silence(mag, ref, thres=0.2, min_range=64, fade_size=32): def mask_silence(mag, ref, thres=0.2, min_range=64, fade_size=32):
if min_range < fade_size * 2: if min_range < fade_size * 2:
raise ValueError("min_range must be >= fade_area * 2") raise ValueError("min_range must be >= fade_area * 2")
if torch.is_tensor(mag):
mag = mag.clone()
idx = torch.where(ref.mean(dim=(0, 1)) < thres)[0]
if idx.numel() == 0:
return mag
breaks = torch.where(torch.diff(idx) != 1)[0]
starts = torch.cat((idx[:1], idx[breaks + 1]))
ends = torch.cat((idx[breaks], idx[-1:]))
informative = torch.where(ends - starts > min_range)[0]
old_e = None
for position in informative.tolist():
s = int(starts[position].item())
e = int(ends[position].item())
if old_e is not None and s - old_e < fade_size:
s = old_e - fade_size * 2
if s != 0:
weight = torch.linspace(
0,
1,
fade_size,
device=mag.device,
dtype=mag.dtype,
)
mag[:, :, s : s + fade_size] += (
weight * ref[:, :, s : s + fade_size]
)
else:
s -= fade_size
if e != mag.shape[2]:
weight = torch.linspace(
1,
0,
fade_size,
device=mag.device,
dtype=mag.dtype,
)
mag[:, :, e - fade_size : e] += (
weight * ref[:, :, e - fade_size : e]
)
else:
e += fade_size
mag[:, :, s + fade_size : e - fade_size] += ref[
:, :, s + fade_size : e - fade_size
]
old_e = e
return mag
mag = mag.copy() mag = mag.copy()
idx = np.where(ref.mean(axis=(0, 1)) < thres)[0] idx = np.where(ref.mean(axis=(0, 1)) < thres)[0]
@@ -183,96 +230,34 @@ def mask_silence(mag, ref, thres=0.2, min_range=64, fade_size=32):
return mag return mag
def align_wave_head_and_tail(a, b):
l = min([a[0].size, b[0].size])
return a[:l, :l], b[:l, :l]
def cache_or_load(mix_path, inst_path, mp):
mix_basename = os.path.splitext(os.path.basename(mix_path))[0]
inst_basename = os.path.splitext(os.path.basename(inst_path))[0]
cache_dir = "mph{}".format(hashlib.sha1(json.dumps(mp.param, sort_keys=True).encode("utf-8")).hexdigest())
mix_cache_dir = os.path.join("cache", cache_dir)
inst_cache_dir = os.path.join("cache", cache_dir)
os.makedirs(mix_cache_dir, exist_ok=True)
os.makedirs(inst_cache_dir, exist_ok=True)
mix_cache_path = os.path.join(mix_cache_dir, mix_basename + ".npy")
inst_cache_path = os.path.join(inst_cache_dir, inst_basename + ".npy")
if os.path.exists(mix_cache_path) and os.path.exists(inst_cache_path):
X_spec_m = np.load(mix_cache_path)
y_spec_m = np.load(inst_cache_path)
else:
X_wave, y_wave, X_spec_s, y_spec_s = {}, {}, {}, {}
for d in range(len(mp.param["band"]), 0, -1):
bp = mp.param["band"][d]
if d == len(mp.param["band"]): # high-end band
X_wave[d], _ = librosa.load(
mix_path, sr=bp["sr"], mono=False, dtype=np.float32, res_type=bp["res_type"]
)
y_wave[d], _ = librosa.load(
inst_path,
sr=bp["sr"],
mono=False,
dtype=np.float32,
res_type=bp["res_type"],
)
else: # lower bands
X_wave[d] = librosa.resample(
X_wave[d + 1],
orig_sr=mp.param["band"][d + 1]["sr"],
target_sr=bp["sr"],
res_type=bp["res_type"],
)
y_wave[d] = librosa.resample(
y_wave[d + 1],
orig_sr=mp.param["band"][d + 1]["sr"],
target_sr=bp["sr"],
res_type=bp["res_type"],
)
X_wave[d], y_wave[d] = align_wave_head_and_tail(X_wave[d], y_wave[d])
X_spec_s[d] = wave_to_spectrogram(
X_wave[d],
bp["hl"],
bp["n_fft"],
mp.param["mid_side"],
mp.param["mid_side_b2"],
mp.param["reverse"],
)
y_spec_s[d] = wave_to_spectrogram(
y_wave[d],
bp["hl"],
bp["n_fft"],
mp.param["mid_side"],
mp.param["mid_side_b2"],
mp.param["reverse"],
)
del X_wave, y_wave
X_spec_m = combine_spectrograms(X_spec_s, mp)
y_spec_m = combine_spectrograms(y_spec_s, mp)
if X_spec_m.shape != y_spec_m.shape:
raise ValueError("The combined spectrograms are different: " + mix_path)
_, ext = os.path.splitext(mix_path)
np.save(mix_cache_path, X_spec_m)
np.save(inst_cache_path, y_spec_m)
return X_spec_m, y_spec_m
def spectrogram_to_wave(spec, hop_length, mid_side, mid_side_b2, reverse): def spectrogram_to_wave(spec, hop_length, mid_side, mid_side_b2, reverse):
if torch.is_tensor(spec):
n_fft = (spec.shape[1] - 1) * 2
wave = torch.istft(
spec.to(dtype=torch.complex64),
n_fft=n_fft,
hop_length=hop_length,
window=_stft_window(n_fft, spec.device),
center=True,
normalized=False,
onesided=True,
return_complex=False,
)
wave_left, wave_right = wave[0], wave[1]
if reverse:
return torch.stack(
(torch.flip(wave_left, dims=(-1,)), torch.flip(wave_right, dims=(-1,)))
)
if mid_side:
return torch.stack(
(wave_left + wave_right / 2, wave_left - wave_right / 2)
)
if mid_side_b2:
return torch.stack(
(wave_right / 1.25 + 0.4 * wave_left, wave_left / 1.25 - 0.4 * wave_right)
)
return wave
spec_left = np.asfortranarray(spec[0]) spec_left = np.asfortranarray(spec[0])
spec_right = np.asfortranarray(spec[1]) spec_right = np.asfortranarray(spec[1])
@@ -294,36 +279,6 @@ def spectrogram_to_wave(spec, hop_length, mid_side, mid_side_b2, reverse):
return np.asfortranarray([wave_left, wave_right]) return np.asfortranarray([wave_left, wave_right])
def spectrogram_to_wave_mt(spec, hop_length, mid_side, reverse, mid_side_b2):
import threading
spec_left = np.asfortranarray(spec[0])
spec_right = np.asfortranarray(spec[1])
def run_thread(**kwargs):
global wave_left
wave_left = librosa.istft(**kwargs)
thread = threading.Thread(target=run_thread, kwargs={"stft_matrix": spec_left, "hop_length": hop_length})
thread.start()
wave_right = librosa.istft(spec_right, hop_length=hop_length)
thread.join()
if reverse:
return np.asfortranarray([np.flip(wave_left), np.flip(wave_right)])
elif mid_side:
return np.asfortranarray([np.add(wave_left, wave_right / 2), np.subtract(wave_left, wave_right / 2)])
elif mid_side_b2:
return np.asfortranarray(
[
np.add(wave_right / 1.25, 0.4 * wave_left),
np.subtract(wave_left / 1.25, 0.4 * wave_right),
]
)
else:
return np.asfortranarray([wave_left, wave_right])
def cmb_spectrogram_to_wave(spec_m, mp, extra_bins_h=None, extra_bins=None): def cmb_spectrogram_to_wave(spec_m, mp, extra_bins_h=None, extra_bins=None):
wave_band = {} wave_band = {}
bands_n = len(mp.param["band"]) bands_n = len(mp.param["band"])
@@ -331,7 +286,11 @@ def cmb_spectrogram_to_wave(spec_m, mp, extra_bins_h=None, extra_bins=None):
for d in range(1, bands_n + 1): for d in range(1, bands_n + 1):
bp = mp.param["band"][d] bp = mp.param["band"][d]
spec_s = np.ndarray(shape=(2, bp["n_fft"] // 2 + 1, spec_m.shape[2]), dtype=complex) shape = (2, bp["n_fft"] // 2 + 1, spec_m.shape[2])
if torch.is_tensor(spec_m):
spec_s = torch.zeros(shape, dtype=spec_m.dtype, device=spec_m.device)
else:
spec_s = np.ndarray(shape=shape, dtype=complex)
h = bp["crop_stop"] - bp["crop_start"] h = bp["crop_stop"] - bp["crop_start"]
spec_s[:, bp["crop_start"] : bp["crop_stop"], :] = spec_m[:, offset : offset + h, :] spec_s[:, bp["crop_start"] : bp["crop_stop"], :] = spec_m[:, offset : offset + h, :]
@@ -351,49 +310,60 @@ def cmb_spectrogram_to_wave(spec_m, mp, extra_bins_h=None, extra_bins=None):
mp.param["reverse"], mp.param["reverse"],
) )
else: else:
wave = np.add( wave = wave + spectrogram_to_wave(
wave,
spectrogram_to_wave(
spec_s, spec_s,
bp["hl"], bp["hl"],
mp.param["mid_side"], mp.param["mid_side"],
mp.param["mid_side_b2"], mp.param["mid_side_b2"],
mp.param["reverse"], mp.param["reverse"],
), )
)
else: else:
sr = mp.param["band"][d + 1]["sr"] sr = mp.param["band"][d + 1]["sr"]
if d == 1: # lower if d == 1: # lower
spec_s = fft_lp_filter(spec_s, bp["lpf_start"], bp["lpf_stop"]) spec_s = fft_lp_filter(spec_s, bp["lpf_start"], bp["lpf_stop"])
wave = librosa.resample( band_wave = spectrogram_to_wave(
spectrogram_to_wave(
spec_s, spec_s,
bp["hl"], bp["hl"],
mp.param["mid_side"], mp.param["mid_side"],
mp.param["mid_side_b2"], mp.param["mid_side_b2"],
mp.param["reverse"], mp.param["reverse"],
), )
orig_sr=bp["sr"], if torch.is_tensor(band_wave):
target_sr=sr, wave = resample_audio_tensor(
res_type="sinc_fastest", band_wave, bp["sr"], sr, force_mono=False
) )
else:
wave = resample_audio(
band_wave,
bp["sr"],
sr,
force_mono=False,
res_type="sinc_fastest",
)
else: # mid else: # mid
spec_s = fft_hp_filter(spec_s, bp["hpf_start"], bp["hpf_stop"] - 1) spec_s = fft_hp_filter(spec_s, bp["hpf_start"], bp["hpf_stop"] - 1)
spec_s = fft_lp_filter(spec_s, bp["lpf_start"], bp["lpf_stop"]) spec_s = fft_lp_filter(spec_s, bp["lpf_start"], bp["lpf_stop"])
wave2 = np.add( wave2 = wave + spectrogram_to_wave(
wave,
spectrogram_to_wave(
spec_s, spec_s,
bp["hl"], bp["hl"],
mp.param["mid_side"], mp.param["mid_side"],
mp.param["mid_side_b2"], mp.param["mid_side_b2"],
mp.param["reverse"], mp.param["reverse"],
), )
) if torch.is_tensor(wave2):
# wave = librosa.core.resample(wave2, orig_sr=bp['sr'], target_sr=sr, res_type="sinc_fastest") wave = resample_audio_tensor(
wave = librosa.core.resample(wave2, orig_sr=bp["sr"], target_sr=sr, res_type="scipy") wave2, bp["sr"], sr, force_mono=False
)
else:
wave = resample_audio(
wave2,
bp["sr"],
sr,
force_mono=False,
res_type="scipy",
)
return wave.T return wave.transpose(0, 1) if torch.is_tensor(wave) else wave.T
def fft_lp_filter(spec, bin_start, bin_stop): def fft_lp_filter(spec, bin_start, bin_stop):
@@ -419,6 +389,31 @@ def fft_hp_filter(spec, bin_start, bin_stop):
def mirroring(a, spec_m, input_high_end, mp): def mirroring(a, spec_m, input_high_end, mp):
if torch.is_tensor(spec_m):
source = spec_m[
:,
mp.param["pre_filter_start"]
- 10
- input_high_end.shape[1] : mp.param["pre_filter_start"]
- 10,
:,
]
mirror = torch.flip(torch.abs(source), dims=(1,))
if "mirroring" == a:
mirror = torch.polar(mirror, torch.angle(input_high_end))
return torch.where(
torch.abs(input_high_end) <= torch.abs(mirror),
input_high_end,
mirror,
)
if "mirroring2" == a:
mirror = mirror * input_high_end * 1.7
return torch.where(
torch.abs(input_high_end) <= torch.abs(mirror),
input_high_end,
mirror,
)
if "mirroring" == a: if "mirroring" == a:
mirror = np.flip( mirror = np.flip(
np.abs( np.abs(
@@ -448,190 +443,3 @@ def mirroring(a, spec_m, input_high_end, mp):
mi = np.multiply(mirror, input_high_end * 1.7) mi = np.multiply(mirror, input_high_end * 1.7)
return np.where(np.abs(input_high_end) <= np.abs(mi), input_high_end, mi) return np.where(np.abs(input_high_end) <= np.abs(mi), input_high_end, mi)
def ensembling(a, specs):
for i in range(1, len(specs)):
if i == 1:
spec = specs[0]
ln = min([spec.shape[2], specs[i].shape[2]])
spec = spec[:, :, :ln]
specs[i] = specs[i][:, :, :ln]
if "min_mag" == a:
spec = np.where(np.abs(specs[i]) <= np.abs(spec), specs[i], spec)
if "max_mag" == a:
spec = np.where(np.abs(specs[i]) >= np.abs(spec), specs[i], spec)
return spec
def stft(wave, nfft, hl):
wave_left = np.asfortranarray(wave[0])
wave_right = np.asfortranarray(wave[1])
spec_left = librosa.stft(wave_left, n_fft=nfft, hop_length=hl)
spec_right = librosa.stft(wave_right, n_fft=nfft, hop_length=hl)
spec = np.asfortranarray([spec_left, spec_right])
return spec
def istft(spec, hl):
spec_left = np.asfortranarray(spec[0])
spec_right = np.asfortranarray(spec[1])
wave_left = librosa.istft(spec_left, hop_length=hl)
wave_right = librosa.istft(spec_right, hop_length=hl)
wave = np.asfortranarray([wave_left, wave_right])
return wave
if __name__ == "__main__":
import argparse
import time
import cv2
from model_param_init import ModelParameters
p = argparse.ArgumentParser()
p.add_argument(
"--algorithm",
"-a",
type=str,
choices=["invert", "invert_p", "min_mag", "max_mag", "deep", "align"],
default="min_mag",
)
p.add_argument(
"--model_params",
"-m",
type=str,
default=os.path.join("modelparams", "1band_sr44100_hl512.json"),
)
p.add_argument("--output_name", "-o", type=str, default="output")
p.add_argument("--vocals_only", "-v", action="store_true")
p.add_argument("input", nargs="+")
args = p.parse_args()
start_time = time.time()
if args.algorithm.startswith("invert") and len(args.input) != 2:
raise ValueError("There should be two input files.")
if not args.algorithm.startswith("invert") and len(args.input) < 2:
raise ValueError("There must be at least two input files.")
wave, specs = {}, {}
mp = ModelParameters(args.model_params)
for i in range(len(args.input)):
spec = {}
for d in range(len(mp.param["band"]), 0, -1):
bp = mp.param["band"][d]
if d == len(mp.param["band"]): # high-end band
wave[d], _ = librosa.load(
args.input[i],
sr=bp["sr"],
mono=False,
dtype=np.float32,
res_type=bp["res_type"],
)
if len(wave[d].shape) == 1: # mono to stereo
wave[d] = np.array([wave[d], wave[d]])
else: # lower bands
wave[d] = librosa.resample(
wave[d + 1],
orig_sr=mp.param["band"][d + 1]["sr"],
target_sr=bp["sr"],
res_type=bp["res_type"],
)
spec[d] = wave_to_spectrogram(
wave[d],
bp["hl"],
bp["n_fft"],
mp.param["mid_side"],
mp.param["mid_side_b2"],
mp.param["reverse"],
)
specs[i] = combine_spectrograms(spec, mp)
del wave
if args.algorithm == "deep":
d_spec = np.where(np.abs(specs[0]) <= np.abs(spec[1]), specs[0], spec[1])
v_spec = d_spec - specs[1]
sf.write(
os.path.join("{}.wav".format(args.output_name)),
cmb_spectrogram_to_wave(v_spec, mp),
mp.param["sr"],
)
if args.algorithm.startswith("invert"):
ln = min([specs[0].shape[2], specs[1].shape[2]])
specs[0] = specs[0][:, :, :ln]
specs[1] = specs[1][:, :, :ln]
if "invert_p" == args.algorithm:
X_mag = np.abs(specs[0])
y_mag = np.abs(specs[1])
max_mag = np.where(X_mag >= y_mag, X_mag, y_mag)
v_spec = specs[1] - max_mag * np.exp(1.0j * np.angle(specs[0]))
else:
specs[1] = reduce_vocal_aggressively(specs[0], specs[1], 0.2)
v_spec = specs[0] - specs[1]
if not args.vocals_only:
X_mag = np.abs(specs[0])
y_mag = np.abs(specs[1])
v_mag = np.abs(v_spec)
X_image = spectrogram_to_image(X_mag)
y_image = spectrogram_to_image(y_mag)
v_image = spectrogram_to_image(v_mag)
cv2.imwrite("{}_X.png".format(args.output_name), X_image)
cv2.imwrite("{}_y.png".format(args.output_name), y_image)
cv2.imwrite("{}_v.png".format(args.output_name), v_image)
sf.write(
"{}_X.wav".format(args.output_name),
cmb_spectrogram_to_wave(specs[0], mp),
mp.param["sr"],
)
sf.write(
"{}_y.wav".format(args.output_name),
cmb_spectrogram_to_wave(specs[1], mp),
mp.param["sr"],
)
sf.write(
"{}_v.wav".format(args.output_name),
cmb_spectrogram_to_wave(v_spec, mp),
mp.param["sr"],
)
else:
if not args.algorithm == "deep":
sf.write(
os.path.join("ensembled", "{}.wav".format(args.output_name)),
cmb_spectrogram_to_wave(ensembling(args.algorithm, specs), mp),
mp.param["sr"],
)
if args.algorithm == "align":
trackalignment = [
{
"file1": '"{}"'.format(args.input[0]),
"file2": '"{}"'.format(args.input[1]),
}
]
for i, e in tqdm(enumerate(trackalignment), desc="Performing Alignment..."):
os.system(f"python lib/align_tracks.py {e['file1']} {e['file2']}")
# print('Total time: {0:.{1}f}s'.format(time.time() - start_time, 1))

View File

@@ -1,6 +1,7 @@
import numpy as np import numpy as np
import torch import torch
from tools.cuda_graph import run_cuda_graph import torch.nn.functional as F
from tools.cuda_graph import clear_cuda_graph_cache, run_cuda_graph
from tqdm import tqdm from tqdm import tqdm
@@ -14,11 +15,120 @@ def make_padding(width, cropsize, offset):
return left, right, roi_size return left, right, roi_size
def _execute_torch_windows(
X_mag_pad,
roi_size,
n_window,
device,
model,
aggressiveness,
data,
batch_size,
):
windows = X_mag_pad.unfold(
2,
data["window_size"],
roi_size,
)[:, :, :n_window, :]
model_dtype = next(model.parameters()).dtype
predictions = None
write_offset = 0
with torch.inference_mode():
for start in tqdm(range(0, n_window, batch_size)):
end = min(start + batch_size, n_window)
batch = (
windows[:, :, start:end, :]
.permute(2, 0, 1, 3)
.contiguous()
.to(device=device, dtype=model_dtype)
)
prediction = run_cuda_graph(
model,
"uvr-vr-%s" % repr(aggressiveness),
lambda window: model.predict(window, aggressiveness),
batch,
)
prediction = prediction.float().permute(1, 2, 0, 3).reshape(
prediction.shape[1], prediction.shape[2], -1
)
if predictions is None:
predictions = torch.empty(
prediction.shape[0],
prediction.shape[1],
n_window * roi_size,
device=prediction.device,
dtype=torch.float32,
)
end_offset = write_offset + prediction.shape[2]
predictions[:, :, write_offset:end_offset].copy_(prediction)
write_offset = end_offset
return predictions[:, :, :write_offset]
def _torch_batch_size(device):
free_bytes, _ = torch.cuda.mem_get_info(device)
free_gb = free_bytes / (1024**3)
if free_gb > 20:
return 8
if free_gb > 12:
return 4
if free_gb > 8:
return 2
return 1
def _inference_torch(X_spec, device, model, aggressiveness, data):
X_spec = X_spec.to(device)
X_mag = torch.abs(X_spec)
coef = X_mag.max().clamp_min(1e-8)
X_mag_pre = X_mag / coef
n_frame = X_mag_pre.shape[2]
pad_l, pad_r, roi_size = make_padding(
n_frame, data["window_size"], model.offset
)
n_window = int(np.ceil(n_frame / roi_size))
def execute(pad_left, pad_right, windows_count):
padded = F.pad(X_mag_pre, (pad_left, pad_right))
batch_size = _torch_batch_size(device)
while True:
try:
return _execute_torch_windows(
padded,
roi_size,
windows_count,
device,
model,
aggressiveness,
data,
batch_size,
)
except torch.cuda.OutOfMemoryError:
clear_cuda_graph_cache(model)
torch.cuda.empty_cache()
if batch_size == 1:
raise
batch_size = max(1, batch_size // 2)
pred = execute(pad_l, pad_r, n_window)[:, :, :n_frame]
if data["tta"]:
pad_l += roi_size // 2
pad_r += roi_size // 2
n_window += 1
pred_tta = execute(pad_l, pad_r, n_window)
pred_tta = pred_tta[:, :, roi_size // 2 :][:, :, :n_frame]
pred = (pred + pred_tta) * 0.5
return pred * coef, X_mag, None
def inference(X_spec, device, model, aggressiveness, data): def inference(X_spec, device, model, aggressiveness, data):
""" """
data : dic configs data : dic configs
""" """
if torch.is_tensor(X_spec) and X_spec.device.type == "cuda":
return _inference_torch(X_spec, device, model, aggressiveness, data)
def _execute(X_mag_pad, roi_size, n_window, device, model, aggressiveness, is_half=True): def _execute(X_mag_pad, roi_size, n_window, device, model, aggressiveness, is_half=True):
model.eval() model.eval()
with torch.no_grad(): with torch.no_grad():

View File

@@ -4,11 +4,11 @@ import sysconfig
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
import librosa
import numpy as np import numpy as np
import soundfile as sf import soundfile as sf
import torch import torch
from tqdm import tqdm from tqdm import tqdm
from infer.audio import load_audio, load_audio_tensor
_ORT_CUDA_DLL_HANDLES = [] _ORT_CUDA_DLL_HANDLES = []
@@ -61,9 +61,7 @@ cpu = torch.device("cpu")
class ConvTDFNetTrim: class ConvTDFNetTrim:
def __init__(self, device, model_name, target_name, L, dim_f, dim_t, n_fft, hop=1024): def __init__(self, device, dim_f, dim_t, n_fft, hop=1024):
super(ConvTDFNetTrim, self).__init__()
self.dim_f = dim_f self.dim_f = dim_f
self.dim_t = 2**dim_t self.dim_t = 2**dim_t
self.n_fft = n_fft self.n_fft = n_fft
@@ -71,14 +69,11 @@ class ConvTDFNetTrim:
self.n_bins = self.n_fft // 2 + 1 self.n_bins = self.n_fft // 2 + 1
self.chunk_size = hop * (self.dim_t - 1) self.chunk_size = hop * (self.dim_t - 1)
self.window = torch.hann_window(window_length=self.n_fft, periodic=True).to(device) self.window = torch.hann_window(window_length=self.n_fft, periodic=True).to(device)
self.target_name = target_name
self.blender = "blender" in model_name
self.dim_c = 4 self.dim_c = 4
out_c = self.dim_c * 4 if target_name == "*" else self.dim_c self.freq_pad = torch.zeros(
self.freq_pad = torch.zeros([1, out_c, self.n_bins - self.dim_f, self.dim_t]).to(device) [1, self.dim_c, self.n_bins - self.dim_f, self.dim_t],
device=device,
self.n = L // 2 )
def stft(self, x): def stft(self, x):
x = x.reshape([-1, self.chunk_size]) x = x.reshape([-1, self.chunk_size])
@@ -95,10 +90,10 @@ class ConvTDFNetTrim:
x = x.reshape([-1, 2, 2, self.n_bins, self.dim_t]).reshape([-1, self.dim_c, self.n_bins, self.dim_t]) x = x.reshape([-1, 2, 2, self.n_bins, self.dim_t]).reshape([-1, self.dim_c, self.n_bins, self.dim_t])
return x[:, :, : self.dim_f] return x[:, :, : self.dim_f]
def istft(self, x, freq_pad=None): def istft(self, x):
freq_pad = self.freq_pad.repeat([x.shape[0], 1, 1, 1]) if freq_pad is None else freq_pad freq_pad = self.freq_pad.expand(x.shape[0], -1, -1, -1)
x = torch.cat([x, freq_pad], -2) x = torch.cat([x, freq_pad], -2)
c = 4 * 2 if self.target_name == "*" else 2 c = 2
x = x.reshape([-1, c, 2, self.n_bins, self.dim_t]).reshape([-1, 2, self.n_bins, self.dim_t]) x = x.reshape([-1, c, 2, self.n_bins, self.dim_t]).reshape([-1, 2, self.n_bins, self.dim_t])
x = x.permute([0, 2, 3, 1]) x = x.permute([0, 2, 3, 1])
x = x.contiguous() x = x.contiguous()
@@ -110,9 +105,6 @@ class ConvTDFNetTrim:
def get_models(device, dim_f, dim_t, n_fft): def get_models(device, dim_f, dim_t, n_fft):
return ConvTDFNetTrim( return ConvTDFNetTrim(
device=device, device=device,
model_name="Conv-TDF",
target_name="vocals",
L=11,
dim_f=dim_f, dim_f=dim_f,
dim_t=dim_t, dim_t=dim_t,
n_fft=n_fft, n_fft=n_fft,
@@ -124,9 +116,13 @@ class Predictor:
import onnxruntime as ort import onnxruntime as ort
available_providers = ort.get_available_providers() available_providers = ort.get_available_providers()
requested_providers = [
provider[0] if isinstance(provider, (tuple, list)) else provider
for provider in args.providers
]
logger.info("ONNX Runtime available providers: %s", available_providers) logger.info("ONNX Runtime available providers: %s", available_providers)
if ( if (
"CUDAExecutionProvider" in args.providers "CUDAExecutionProvider" in requested_providers
and "CUDAExecutionProvider" not in available_providers and "CUDAExecutionProvider" not in available_providers
): ):
raise RuntimeError( raise RuntimeError(
@@ -136,7 +132,7 @@ class Predictor:
"project's runtime Python." "project's runtime Python."
) )
if ( if (
"DmlExecutionProvider" in args.providers "DmlExecutionProvider" in requested_providers
and "DmlExecutionProvider" not in available_providers and "DmlExecutionProvider" not in available_providers
): ):
raise RuntimeError( raise RuntimeError(
@@ -145,15 +141,30 @@ class Predictor:
"requirments_cpu_py312.txt with this project's runtime Python." "requirments_cpu_py312.txt with this project's runtime Python."
) )
self.args = args self.args = args
self.model_ = get_models(device=cpu, dim_f=args.dim_f, dim_t=args.dim_t, n_fft=args.n_fft) try:
requested_torch_device = torch.device(args.device)
except Exception:
requested_torch_device = cpu
if requested_torch_device.type == "cuda" and requested_torch_device.index is None:
requested_torch_device = torch.device("cuda:0")
# DirectML and CPU keep the established NumPy/CPU STFT path. The
# Torch CUDA path is enabled only after the ORT session confirms that
# its CUDA provider really became the primary provider.
model_device = requested_torch_device if requested_torch_device.type == "cuda" else cpu
self.model_ = get_models(
device=model_device,
dim_f=args.dim_f,
dim_t=args.dim_t,
n_fft=args.n_fft,
)
self.model = ort.InferenceSession( self.model = ort.InferenceSession(
os.path.join(args.onnx, self.model_.target_name + ".onnx"), os.path.join(args.onnx, "vocals.onnx"),
providers=args.providers, providers=args.providers,
) )
active_providers = self.model.get_providers() active_providers = self.model.get_providers()
logger.info("ONNX Runtime active providers: %s", active_providers) logger.info("ONNX Runtime active providers: %s", active_providers)
if ( if (
"CUDAExecutionProvider" in args.providers "CUDAExecutionProvider" in requested_providers
and ( and (
not active_providers not active_providers
or active_providers[0] != "CUDAExecutionProvider" or active_providers[0] != "CUDAExecutionProvider"
@@ -164,7 +175,7 @@ class Predictor:
"check the CUDA 11/cuDNN 8 DLL installation." "check the CUDA 11/cuDNN 8 DLL installation."
) )
if ( if (
"DmlExecutionProvider" in args.providers "DmlExecutionProvider" in requested_providers
and ( and (
not active_providers not active_providers
or active_providers[0] != "DmlExecutionProvider" or active_providers[0] != "DmlExecutionProvider"
@@ -174,7 +185,67 @@ class Predictor:
"The FoxJoy ONNX model did not activate DmlExecutionProvider; " "The FoxJoy ONNX model did not activate DmlExecutionProvider; "
"check the ONNX Runtime DirectML installation." "check the ONNX Runtime DirectML installation."
) )
logger.info("ONNX load done") self.cuda_pipeline = bool(
requested_torch_device.type == "cuda"
and active_providers
and active_providers[0] == "CUDAExecutionProvider"
)
self.torch_device = requested_torch_device if self.cuda_pipeline else cpu
logger.info(
"ONNX load done; FoxJoy tensor pipeline=%s, torch device=%s",
"cuda" if self.cuda_pipeline else "cpu-compatible",
self.torch_device,
)
def _run_ort_cuda(self, input_tensor, output_tensor):
input_tensor = input_tensor.contiguous()
if input_tensor.dtype != torch.float32:
input_tensor = input_tensor.float()
if not output_tensor.is_contiguous() or output_tensor.dtype != torch.float32:
raise RuntimeError("FoxJoy CUDA output buffer must be contiguous float32")
device_id = self.torch_device.index
io_binding = self.model.io_binding()
io_binding.bind_input(
name=self.model.get_inputs()[0].name,
device_type="cuda",
device_id=device_id,
element_type=np.float32,
shape=tuple(input_tensor.shape),
buffer_ptr=input_tensor.data_ptr(),
)
io_binding.bind_output(
name=self.model.get_outputs()[0].name,
device_type="cuda",
device_id=device_id,
element_type=np.float32,
shape=tuple(output_tensor.shape),
buffer_ptr=output_tensor.data_ptr(),
)
# ORT owns a separate CUDA stream by default. Explicit boundaries
# guarantee that it sees the completed Torch STFT and that Torch sees
# the completed output without staging either tensor through NumPy.
torch.cuda.synchronize(self.torch_device)
self.model.run_with_iobinding(io_binding)
torch.cuda.synchronize(self.torch_device)
return input_tensor
def _infer_cuda(self, spek):
spek = spek.contiguous().float()
output = torch.empty_like(spek)
if self.args.denoise:
# Reuse both the ORT output allocation and the input allocation
# for the negative/positive passes. Only the accumulator is
# separate because the second ORT run overwrites its output.
spek.neg_()
spek = self._run_ort_cuda(spek, output)
prediction = output * -0.5
spek.neg_()
spek = self._run_ort_cuda(spek, output)
prediction.add_(output, alpha=0.5)
return prediction
self._run_ort_cuda(spek, output)
return output
def demix(self, mix): def demix(self, mix):
samples = mix.shape[-1] samples = mix.shape[-1]
@@ -198,7 +269,10 @@ class Predictor:
start = skip - s_margin start = skip - s_margin
segmented_mix[skip] = mix[:, start:end].copy() segment = mix[:, start:end]
# CUDA segments are views of the already resident decoded audio;
# copying every segment would almost double long-file VRAM use.
segmented_mix[skip] = segment if torch.is_tensor(segment) else segment.copy()
if end == samples: if end == samples:
break break
@@ -222,31 +296,78 @@ class Predictor:
trim = model.n_fft // 2 trim = model.n_fft // 2
gen_size = model.chunk_size - 2 * trim gen_size = model.chunk_size - 2 * trim
pad = gen_size - n_sample % gen_size pad = gen_size - n_sample % gen_size
mix_p = np.concatenate((np.zeros((2, trim)), cmix, np.zeros((2, pad)), np.zeros((2, trim))), 1) if self.cuda_pipeline and torch.is_tensor(cmix):
cmix = cmix.to(self.torch_device, dtype=torch.float32)
mix_p = torch.cat(
(
cmix.new_zeros((2, trim)),
cmix,
cmix.new_zeros((2, pad)),
cmix.new_zeros((2, trim)),
),
1,
)
else:
mix_p = np.concatenate(
(
np.zeros((2, trim)),
cmix,
np.zeros((2, pad)),
np.zeros((2, trim)),
),
1,
)
mix_waves = [] mix_waves = []
i = 0 i = 0
while i < n_sample + pad: while i < n_sample + pad:
waves = np.array(mix_p[:, i : i + model.chunk_size]) waves = mix_p[:, i : i + model.chunk_size]
if not torch.is_tensor(waves):
waves = np.array(waves)
mix_waves.append(waves) mix_waves.append(waves)
i += gen_size i += gen_size
mix_waves = torch.tensor(mix_waves, dtype=torch.float32).to(cpu) if torch.is_tensor(mix_waves[0]):
mix_waves = torch.stack(mix_waves).float()
else:
mix_waves = torch.from_numpy(np.asarray(mix_waves, dtype=np.float32))
with torch.no_grad(): with torch.no_grad():
_ort = self.model _ort = self.model
spek = model.stft(mix_waves) if self.cuda_pipeline:
if self.args.denoise: # One H2D for all windows in this outer segment. STFT,
spec_pred = ( # both denoise passes and ISTFT remain on the selected
-_ort.run(None, {"input": -spek.cpu().numpy()})[0] * 0.5 # CUDA device; only the finished waveform returns to CPU.
+ _ort.run(None, {"input": spek.cpu().numpy()})[0] * 0.5 if mix_waves.device != self.torch_device:
mix_waves = mix_waves.to(self.torch_device, non_blocking=True)
spek = model.stft(mix_waves)
spec_pred = self._infer_cuda(spek)
tar_waves = model.istft(spec_pred)
tar_signal = (
tar_waves[:, :, trim:-trim]
.transpose(0, 1)
.reshape(2, -1)[:, :-pad]
.cpu()
.numpy()
) )
tar_waves = model.istft(torch.tensor(spec_pred))
else: else:
tar_waves = model.istft(torch.tensor(_ort.run(None, {"input": spek.cpu().numpy()})[0])) spek = model.stft(mix_waves)
tar_signal = tar_waves[:, :, trim:-trim].transpose(0, 1).reshape(2, -1).numpy()[:, :-pad] if self.args.denoise:
spek_numpy = spek.numpy()
spec_pred = (
-_ort.run(None, {"input": -spek_numpy})[0] * 0.5
+ _ort.run(None, {"input": spek_numpy})[0] * 0.5
)
tar_waves = model.istft(torch.from_numpy(spec_pred))
else:
spec_pred = _ort.run(None, {"input": spek.numpy()})[0]
tar_waves = model.istft(torch.from_numpy(spec_pred))
tar_signal = (
tar_waves[:, :, trim:-trim]
.transpose(0, 1)
.reshape(2, -1)
.numpy()[:, :-pad]
)
start = 0 if mix == 0 else margin_size start = 0 if mix == 0 else margin_size
end = None if mix == list(mixes.keys())[::-1][0] else -margin_size end = None if mix == list(mixes.keys())[::-1][0] else -margin_size
if margin_size == 0:
end = None
sources.append(tar_signal[:, start:end]) sources.append(tar_signal[:, start:end])
progress_bar.update(1) progress_bar.update(1)
@@ -261,12 +382,24 @@ class Predictor:
os.makedirs(vocal_root, exist_ok=True) os.makedirs(vocal_root, exist_ok=True)
os.makedirs(others_root, exist_ok=True) os.makedirs(others_root, exist_ok=True)
basename = os.path.basename(m) basename = os.path.basename(m)
mix, rate = librosa.load(m, mono=False, sr=44100) if self.cuda_pipeline:
mix = load_audio_tensor(m, 44100, force_mono=False)
mix = mix.to(self.torch_device)
else:
mix = load_audio(m, 44100, force_mono=False)
rate = 44100
if mix.ndim == 1: if mix.ndim == 1:
mix = np.asfortranarray([mix, mix]) mix = mix.unsqueeze(0) if torch.is_tensor(mix) else mix[np.newaxis, :]
mix = mix.T if mix.shape[0] == 1:
sources = self.demix(mix.T) mix = mix.repeat(2, 1) if torch.is_tensor(mix) else np.repeat(mix, 2, axis=0)
elif mix.shape[0] > 2:
mix = mix[:2].contiguous() if torch.is_tensor(mix) else np.ascontiguousarray(mix[:2])
sources = self.demix(mix)
opt = sources[0].T opt = sources[0].T
if torch.is_tensor(mix):
mix = mix.transpose(0, 1).float().cpu().numpy()
else:
mix = mix.T
if format in ["wav", "flac"]: if format in ["wav", "flac"]:
sf.write("%s/%s_main_vocal.%s" % (vocal_root, basename, format), mix - opt, rate) sf.write("%s/%s_main_vocal.%s" % (vocal_root, basename, format), mix - opt, rate)
sf.write("%s/%s_others.%s" % (others_root, basename, format), opt, rate) sf.write("%s/%s_others.%s" % (others_root, basename, format), opt, rate)
@@ -294,22 +427,20 @@ class Predictor:
class MDXNetDereverb: class MDXNetDereverb:
def __init__(self, chunks, providers): def __init__(self, chunks, providers, device="cpu"):
self.onnx = os.path.join( self.onnx = os.path.join(
os.getenv("weight_uvr5_root", "assets/uvr5_weights"), os.getenv("weight_uvr5_root", "assets/uvr5_weights"),
"onnx_dereverb_By_FoxJoy", "onnx_dereverb_By_FoxJoy",
) )
self.shifts = 10 # 'Predict with randomised equivariant stabilisation'
self.mixing = "min_mag" # ['default','min_mag','max_mag']
self.chunks = chunks self.chunks = chunks
self.providers = providers self.providers = providers
self.device = device
self.margin = 44100 self.margin = 44100
self.dim_t = 9 self.dim_t = 9
self.dim_f = 3072 self.dim_f = 3072
self.n_fft = 6144 self.n_fft = 6144
self.denoise = True self.denoise = True
self.pred = Predictor(self) self.pred = Predictor(self)
self.device = cpu
def _path_audio_(self, input, others_root, vocal_root, format, is_hp3=False): def _path_audio_(self, input, others_root, vocal_root, format, is_hp3=False):
self.pred.prediction(input, vocal_root, others_root, format) self.pred.prediction(input, vocal_root, others_root, format)

View File

@@ -5,10 +5,16 @@ import logging
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
import librosa
import numpy as np import numpy as np
import soundfile as sf import soundfile as sf
import torch import torch
from infer.audio import (
TORCHAUDIO_GPU_ENABLED,
load_audio,
load_audio_tensor,
resample_audio,
resample_audio_tensor,
)
from tools.uvr5.lib.lib_v5 import nets_61968KB as Nets from tools.uvr5.lib.lib_v5 import nets_61968KB as Nets
from tools.uvr5.lib.lib_v5 import spec_utils from tools.uvr5.lib.lib_v5 import spec_utils
from tools.uvr5.lib.lib_v5.model_param_init import ModelParameters from tools.uvr5.lib.lib_v5.model_param_init import ModelParameters
@@ -16,6 +22,152 @@ from tools.uvr5.lib.lib_v5.nets_new import CascadedNet
from tools.uvr5.lib.utils import inference from tools.uvr5.lib.utils import inference
def _ensure_stereo(audio):
audio = np.asarray(audio, dtype=np.float32)
if audio.ndim == 1:
audio = audio[np.newaxis, :]
if audio.shape[0] == 1:
return np.repeat(audio, 2, axis=0)
if audio.shape[0] > 2:
return np.ascontiguousarray(audio[:2])
return audio
def _ensure_stereo_tensor(audio, device):
if audio.ndim == 1:
audio = audio.unsqueeze(0)
if audio.shape[0] == 1:
audio = audio.repeat(2, 1)
elif audio.shape[0] > 2:
audio = audio[:2]
return audio.to(device=device)
def _cuda_device(device):
parsed = device if isinstance(device, torch.device) else torch.device(device)
return parsed if parsed.type == "cuda" else None
def _vr_gpu_memory_fits(audio, mp, device):
highest_band = len(mp.param["band"])
frames = max(
1,
int(audio.shape[-1] // mp.param["band"][highest_band]["hl"] + 1),
)
band_bins = sum(
mp.param["band"][band]["n_fft"] // 2 + 1
for band in mp.param["band"]
)
combined_bins = mp.param["bins"] + 1
# Complex band spectra + combined/target spectra + magnitude/prediction.
estimated = frames * 2 * (
band_bins * 8 + combined_bins * (8 * 3 + 4 * 3)
)
free_bytes, _ = torch.cuda.mem_get_info(device)
return estimated <= int(free_bytes * 0.42)
def _prepare_spectrogram(music_file, mp, data, device, allow_gpu=True):
cuda_device = _cuda_device(device)
use_gpu = bool(
allow_gpu and cuda_device is not None and TORCHAUDIO_GPU_ENABLED
)
if use_gpu:
try:
high_sr = mp.param["band"][len(mp.param["band"])]["sr"]
high_wave = _ensure_stereo_tensor(
load_audio_tensor(music_file, high_sr, force_mono=False),
cuda_device,
)
if not _vr_gpu_memory_fits(high_wave, mp, cuda_device):
use_gpu = False
high_wave = high_wave.float().cpu().numpy()
except torch.cuda.OutOfMemoryError:
torch.cuda.empty_cache()
use_gpu = False
high_wave = None
else:
high_wave = None
input_high_end_h = None
input_high_end = None
X_spec_s = {}
bands_n = len(mp.param["band"])
previous_wave = None
for d in range(bands_n, 0, -1):
bp = mp.param["band"][d]
if d == bands_n:
if high_wave is None:
current_wave = _ensure_stereo(
load_audio(music_file, bp["sr"], force_mono=False)
)
else:
current_wave = high_wave
elif use_gpu:
current_wave = resample_audio_tensor(
previous_wave,
mp.param["band"][d + 1]["sr"],
bp["sr"],
force_mono=False,
)
else:
current_wave = resample_audio(
previous_wave,
mp.param["band"][d + 1]["sr"],
bp["sr"],
force_mono=False,
res_type=bp["res_type"],
)
X_spec_s[d] = spec_utils.wave_to_spectrogram_mt(
current_wave,
bp["hl"],
bp["n_fft"],
mp.param["mid_side"],
mp.param["mid_side_b2"],
mp.param["reverse"],
)
if d == bands_n and data["high_end_process"] != "none":
input_high_end_h = (bp["n_fft"] // 2 - bp["crop_stop"]) + (
mp.param["pre_filter_stop"] - mp.param["pre_filter_start"]
)
input_high_end = X_spec_s[d][
:, bp["n_fft"] // 2 - input_high_end_h : bp["n_fft"] // 2, :
]
if torch.is_tensor(input_high_end):
input_high_end = input_high_end.clone()
previous_wave = current_wave
X_spec_m = spec_utils.combine_spectrograms(X_spec_s, mp)
del previous_wave, X_spec_s
return X_spec_m, input_high_end_h, input_high_end
def _wave_for_write(wave):
if torch.is_tensor(wave):
return wave.detach().to(device="cpu", dtype=torch.float32).numpy()
return np.asarray(wave)
def _separate_spectrogram(X_spec_m, device, model, aggressiveness, data):
with torch.no_grad():
pred, X_mag, X_phase = inference(
X_spec_m, device, model, aggressiveness, data
)
if data["postprocess"]:
if torch.is_tensor(pred):
pred_inv = torch.clamp(X_mag - pred, min=0)
else:
pred_inv = np.clip(X_mag - pred, 0, np.inf)
pred = spec_utils.mask_silence(pred, pred_inv)
if torch.is_tensor(X_spec_m):
ratio = pred.float() / X_mag.clamp_min(1e-8)
ratio = torch.nan_to_num(ratio)
y_spec_m = X_spec_m * ratio
else:
y_spec_m = pred * X_phase
return y_spec_m
class AudioPre: class AudioPre:
def __init__(self, agg, model_path, device, is_half, tta=False): def __init__(self, agg, model_path, device, is_half, tta=False):
self.model_path = model_path self.model_path = model_path
@@ -50,61 +202,32 @@ class AudioPre:
os.makedirs(ins_root, exist_ok=True) os.makedirs(ins_root, exist_ok=True)
if vocal_root is not None: if vocal_root is not None:
os.makedirs(vocal_root, exist_ok=True) os.makedirs(vocal_root, exist_ok=True)
X_wave, y_wave, X_spec_s, y_spec_s = {}, {}, {}, {}
bands_n = len(self.mp.param["band"])
# print(bands_n)
for d in range(bands_n, 0, -1):
bp = self.mp.param["band"][d]
if d == bands_n: # high-end band
(
X_wave[d],
_,
) = librosa.core.load( # 理论上librosa读取可能对某些音频有bug应该上ffmpeg读取但是太麻烦了弃坑
music_file,
sr=bp["sr"],
mono=False,
dtype=np.float32,
res_type=bp["res_type"],
)
if X_wave[d].ndim == 1:
X_wave[d] = np.asfortranarray([X_wave[d], X_wave[d]])
else: # lower bands
X_wave[d] = librosa.core.resample(
X_wave[d + 1],
orig_sr=self.mp.param["band"][d + 1]["sr"],
target_sr=bp["sr"],
res_type=bp["res_type"],
)
# Stft of wave source
X_spec_s[d] = spec_utils.wave_to_spectrogram_mt(
X_wave[d],
bp["hl"],
bp["n_fft"],
self.mp.param["mid_side"],
self.mp.param["mid_side_b2"],
self.mp.param["reverse"],
)
# pdb.set_trace()
if d == bands_n and self.data["high_end_process"] != "none":
input_high_end_h = (bp["n_fft"] // 2 - bp["crop_stop"]) + (
self.mp.param["pre_filter_stop"] - self.mp.param["pre_filter_start"]
)
input_high_end = X_spec_s[d][:, bp["n_fft"] // 2 - input_high_end_h : bp["n_fft"] // 2, :]
X_spec_m = spec_utils.combine_spectrograms(X_spec_s, self.mp)
aggresive_set = float(self.data["agg"] / 100) aggresive_set = float(self.data["agg"] / 100)
aggressiveness = { aggressiveness = {
"value": aggresive_set, "value": aggresive_set,
"split_bin": self.mp.param["band"][1]["crop_stop"], "split_bin": self.mp.param["band"][1]["crop_stop"],
} }
with torch.no_grad(): gpu_oom = False
pred, X_mag, X_phase = inference(X_spec_m, self.device, self.model, aggressiveness, self.data) try:
# Postprocess X_spec_m, input_high_end_h, input_high_end = _prepare_spectrogram(
if self.data["postprocess"]: music_file, self.mp, self.data, self.device
pred_inv = np.clip(X_mag - pred, 0, np.inf) )
pred = spec_utils.mask_silence(pred, pred_inv) y_spec_m = _separate_spectrogram(
y_spec_m = pred * X_phase X_spec_m, self.device, self.model, aggressiveness, self.data
v_spec_m = X_spec_m - y_spec_m )
except torch.cuda.OutOfMemoryError:
X_spec_m = None
input_high_end = None
y_spec_m = None
gpu_oom = True
if gpu_oom:
torch.cuda.empty_cache()
X_spec_m, input_high_end_h, input_high_end = _prepare_spectrogram(
music_file, self.mp, self.data, self.device, allow_gpu=False
)
y_spec_m = _separate_spectrogram(
X_spec_m, self.device, self.model, aggressiveness, self.data
)
if is_hp3 == True: if is_hp3 == True:
ins_root, vocal_root = vocal_root, ins_root ins_root, vocal_root = vocal_root, ins_root
@@ -128,14 +251,14 @@ class AudioPre:
ins_root, ins_root,
head + "{}_{}.{}".format(name, self.data["agg"], format), head + "{}_{}.{}".format(name, self.data["agg"], format),
), ),
(np.array(wav_instrument) * 32768).astype("int16"), (_wave_for_write(wav_instrument) * 32768).astype("int16"),
self.mp.param["sr"], self.mp.param["sr"],
) # ) #
else: else:
path = os.path.join(ins_root, head + "{}_{}.wav".format(name, self.data["agg"])) path = os.path.join(ins_root, head + "{}_{}.wav".format(name, self.data["agg"]))
sf.write( sf.write(
path, path,
(np.array(wav_instrument) * 32768).astype("int16"), (_wave_for_write(wav_instrument) * 32768).astype("int16"),
self.mp.param["sr"], self.mp.param["sr"],
) )
if os.path.exists(path): if os.path.exists(path):
@@ -149,6 +272,12 @@ class AudioPre:
except: except:
pass pass
if vocal_root is not None: if vocal_root is not None:
if torch.is_tensor(y_spec_m):
y_spec_m.neg_().add_(X_spec_m)
v_spec_m = y_spec_m
else:
np.subtract(X_spec_m, y_spec_m, out=y_spec_m)
v_spec_m = y_spec_m
if is_hp3 == True: if is_hp3 == True:
head = "instrument_" head = "instrument_"
else: else:
@@ -165,14 +294,14 @@ class AudioPre:
vocal_root, vocal_root,
head + "{}_{}.{}".format(name, self.data["agg"], format), head + "{}_{}.{}".format(name, self.data["agg"], format),
), ),
(np.array(wav_vocals) * 32768).astype("int16"), (_wave_for_write(wav_vocals) * 32768).astype("int16"),
self.mp.param["sr"], self.mp.param["sr"],
) )
else: else:
path = os.path.join(vocal_root, head + "{}_{}.wav".format(name, self.data["agg"])) path = os.path.join(vocal_root, head + "{}_{}.wav".format(name, self.data["agg"]))
sf.write( sf.write(
path, path,
(np.array(wav_vocals) * 32768).astype("int16"), (_wave_for_write(wav_vocals) * 32768).astype("int16"),
self.mp.param["sr"], self.mp.param["sr"],
) )
if os.path.exists(path): if os.path.exists(path):
@@ -224,61 +353,32 @@ class AudioPreDeEcho:
os.makedirs(ins_root, exist_ok=True) os.makedirs(ins_root, exist_ok=True)
if vocal_root is not None: if vocal_root is not None:
os.makedirs(vocal_root, exist_ok=True) os.makedirs(vocal_root, exist_ok=True)
X_wave, y_wave, X_spec_s, y_spec_s = {}, {}, {}, {}
bands_n = len(self.mp.param["band"])
# print(bands_n)
for d in range(bands_n, 0, -1):
bp = self.mp.param["band"][d]
if d == bands_n: # high-end band
(
X_wave[d],
_,
) = librosa.core.load( # 理论上librosa读取可能对某些音频有bug应该上ffmpeg读取但是太麻烦了弃坑
music_file,
sr=bp["sr"],
mono=False,
dtype=np.float32,
res_type=bp["res_type"],
)
if X_wave[d].ndim == 1:
X_wave[d] = np.asfortranarray([X_wave[d], X_wave[d]])
else: # lower bands
X_wave[d] = librosa.core.resample(
X_wave[d + 1],
orig_sr=self.mp.param["band"][d + 1]["sr"],
target_sr=bp["sr"],
res_type=bp["res_type"],
)
# Stft of wave source
X_spec_s[d] = spec_utils.wave_to_spectrogram_mt(
X_wave[d],
bp["hl"],
bp["n_fft"],
self.mp.param["mid_side"],
self.mp.param["mid_side_b2"],
self.mp.param["reverse"],
)
# pdb.set_trace()
if d == bands_n and self.data["high_end_process"] != "none":
input_high_end_h = (bp["n_fft"] // 2 - bp["crop_stop"]) + (
self.mp.param["pre_filter_stop"] - self.mp.param["pre_filter_start"]
)
input_high_end = X_spec_s[d][:, bp["n_fft"] // 2 - input_high_end_h : bp["n_fft"] // 2, :]
X_spec_m = spec_utils.combine_spectrograms(X_spec_s, self.mp)
aggresive_set = float(self.data["agg"] / 100) aggresive_set = float(self.data["agg"] / 100)
aggressiveness = { aggressiveness = {
"value": aggresive_set, "value": aggresive_set,
"split_bin": self.mp.param["band"][1]["crop_stop"], "split_bin": self.mp.param["band"][1]["crop_stop"],
} }
with torch.no_grad(): gpu_oom = False
pred, X_mag, X_phase = inference(X_spec_m, self.device, self.model, aggressiveness, self.data) try:
# Postprocess X_spec_m, input_high_end_h, input_high_end = _prepare_spectrogram(
if self.data["postprocess"]: music_file, self.mp, self.data, self.device
pred_inv = np.clip(X_mag - pred, 0, np.inf) )
pred = spec_utils.mask_silence(pred, pred_inv) y_spec_m = _separate_spectrogram(
y_spec_m = pred * X_phase X_spec_m, self.device, self.model, aggressiveness, self.data
v_spec_m = X_spec_m - y_spec_m )
except torch.cuda.OutOfMemoryError:
X_spec_m = None
input_high_end = None
y_spec_m = None
gpu_oom = True
if gpu_oom:
torch.cuda.empty_cache()
X_spec_m, input_high_end_h, input_high_end = _prepare_spectrogram(
music_file, self.mp, self.data, self.device, allow_gpu=False
)
y_spec_m = _separate_spectrogram(
X_spec_m, self.device, self.model, aggressiveness, self.data
)
if ins_root is not None: if ins_root is not None:
if self.data["high_end_process"].startswith("mirroring"): if self.data["high_end_process"].startswith("mirroring"):
@@ -295,14 +395,14 @@ class AudioPreDeEcho:
ins_root, ins_root,
"vocal_{}_{}.{}".format(name, self.data["agg"], format), "vocal_{}_{}.{}".format(name, self.data["agg"], format),
), ),
(np.array(wav_instrument) * 32768).astype("int16"), (_wave_for_write(wav_instrument) * 32768).astype("int16"),
self.mp.param["sr"], self.mp.param["sr"],
) # ) #
else: else:
path = os.path.join(ins_root, "vocal_{}_{}.wav".format(name, self.data["agg"])) path = os.path.join(ins_root, "vocal_{}_{}.wav".format(name, self.data["agg"]))
sf.write( sf.write(
path, path,
(np.array(wav_instrument) * 32768).astype("int16"), (_wave_for_write(wav_instrument) * 32768).astype("int16"),
self.mp.param["sr"], self.mp.param["sr"],
) )
if os.path.exists(path): if os.path.exists(path):
@@ -316,6 +416,12 @@ class AudioPreDeEcho:
except: except:
pass pass
if vocal_root is not None: if vocal_root is not None:
if torch.is_tensor(y_spec_m):
y_spec_m.neg_().add_(X_spec_m)
v_spec_m = y_spec_m
else:
np.subtract(X_spec_m, y_spec_m, out=y_spec_m)
v_spec_m = y_spec_m
if self.data["high_end_process"].startswith("mirroring"): if self.data["high_end_process"].startswith("mirroring"):
input_high_end_ = spec_utils.mirroring(self.data["high_end_process"], v_spec_m, input_high_end, self.mp) input_high_end_ = spec_utils.mirroring(self.data["high_end_process"], v_spec_m, input_high_end, self.mp)
wav_vocals = spec_utils.cmb_spectrogram_to_wave(v_spec_m, self.mp, input_high_end_h, input_high_end_) wav_vocals = spec_utils.cmb_spectrogram_to_wave(v_spec_m, self.mp, input_high_end_h, input_high_end_)
@@ -328,14 +434,14 @@ class AudioPreDeEcho:
vocal_root, vocal_root,
"instrument_{}_{}.{}".format(name, self.data["agg"], format), "instrument_{}_{}.{}".format(name, self.data["agg"], format),
), ),
(np.array(wav_vocals) * 32768).astype("int16"), (_wave_for_write(wav_vocals) * 32768).astype("int16"),
self.mp.param["sr"], self.mp.param["sr"],
) )
else: else:
path = os.path.join(vocal_root, "instrument_{}_{}.wav".format(name, self.data["agg"])) path = os.path.join(vocal_root, "instrument_{}_{}.wav".format(name, self.data["agg"]))
sf.write( sf.write(
path, path,
(np.array(wav_vocals) * 32768).astype("int16"), (_wave_for_write(wav_vocals) * 32768).astype("int16"),
self.mp.param["sr"], self.mp.param["sr"],
) )
if os.path.exists(path): if os.path.exists(path):

View File

@@ -2,10 +2,9 @@ import logging
import os import os
import traceback import traceback
import ffmpeg
import torch import torch
from configs.config import Config, IS_GPU from configs.config import Config
from tools.uvr5.bsroformer import Roformer_Loader from tools.uvr5.bsroformer import Roformer_Loader
from tools.uvr5.mdxnet import MDXNetDereverb from tools.uvr5.mdxnet import MDXNetDereverb
from tools.uvr5.vr import AudioPre, AudioPreDeEcho from tools.uvr5.vr import AudioPre, AudioPreDeEcho
@@ -35,11 +34,16 @@ def uvr(model_name, inp_root, save_root_vocal, paths, save_root_ins, agg, format
if model_name == "onnx_dereverb_By_FoxJoy": if model_name == "onnx_dereverb_By_FoxJoy":
if config.dml: if config.dml:
providers = ["DmlExecutionProvider", "CPUExecutionProvider"] providers = ["DmlExecutionProvider", "CPUExecutionProvider"]
elif IS_GPU: elif torch.device(config.device).type == "cuda":
providers = ["CUDAExecutionProvider", "CPUExecutionProvider"] cuda_device = torch.device(config.device)
device_id = cuda_device.index if cuda_device.index is not None else 0
providers = [
("CUDAExecutionProvider", {"device_id": str(device_id)}),
"CPUExecutionProvider",
]
else: else:
providers = ["CPUExecutionProvider"] providers = ["CPUExecutionProvider"]
pre_fun = MDXNetDereverb(15, providers) pre_fun = MDXNetDereverb(15, providers, config.device)
elif "roformer" in model_name.lower(): elif "roformer" in model_name.lower():
pre_fun = Roformer_Loader( pre_fun = Roformer_Loader(
model_path=os.path.join(weight_uvr5_root, model_name + ".ckpt"), model_path=os.path.join(weight_uvr5_root, model_name + ".ckpt"),
@@ -68,44 +72,18 @@ def uvr(model_name, inp_root, save_root_vocal, paths, save_root_ins, agg, format
inp_path = os.path.join(inp_root, path) inp_path = os.path.join(inp_root, path)
if not os.path.isfile(inp_path): if not os.path.isfile(inp_path):
continue continue
need_reformat = True
done = False
try: try:
info = ffmpeg.probe(inp_path, cmd="ffprobe") # Let each model loader decode the original file. Its
if ( # torchaudio path can then perform any required 44.1 kHz
info["streams"][0]["channels"] == 2 # conversion on the selected CUDA device instead of hiding it
and info["streams"][0]["sample_rate"] == "44100" # behind a CPU FFmpeg pre-conversion.
): pre_fun._path_audio_(
need_reformat = False inp_path,
pre_fun._path_audio_( save_root_ins,
inp_path, save_root_vocal,
save_root_ins, format0,
save_root_vocal, is_hp3,
format0,
is_hp3,
)
done = True
except:
traceback.print_exc()
if need_reformat:
tmp_path = "%s/%s.reformatted.wav" % (
os.environ["TEMP"],
os.path.basename(inp_path),
) )
os.system(
'ffmpeg -i "%s" -vn -acodec pcm_s16le -ac 2 -ar 44100 "%s" -y'
% (inp_path, tmp_path)
)
inp_path = tmp_path
try:
if not done:
pre_fun._path_audio_(
inp_path,
save_root_ins,
save_root_vocal,
format0,
is_hp3,
)
infos.append(i18n("%s → 成功") % os.path.basename(inp_path)) infos.append(i18n("%s → 成功") % os.path.basename(inp_path))
yield "\n".join(infos) yield "\n".join(infos)
except Exception: except Exception:

View File

@@ -8,9 +8,8 @@ import logging
import numpy as np import numpy as np
from infer.audio import load_audio from i18n.i18n import I18nAuto
from i18n.i18n import I18nAuto from tools.progress import should_report
from tools.progress import should_report
i18n = I18nAuto() i18n = I18nAuto()
@@ -44,6 +43,9 @@ elif mode in ("dml", "directml"):
else: else:
raise ValueError("Unsupported F0 extraction mode: %s" % mode) raise ValueError("Unsupported F0 extraction mode: %s" % mode)
# CUDA_VISIBLE_DEVICES must be set before infer.audio imports torch/configs.
from infer.audio import load_audio
f = open("%s/extract_f0_feature.log" % exp_dir, "a", encoding="utf8") f = open("%s/extract_f0_feature.log" % exp_dir, "a", encoding="utf8")

View File

@@ -1,15 +1,15 @@
import numpy as np import numpy as np
# This function is obtained from librosa. # This function is obtained from librosa.
def get_rms( def get_rms(
y, y,
frame_length=2048, frame_length=2048,
hop_length=512, hop_length=512,
pad_mode="constant", pad_mode="constant",
): ):
padding = (int(frame_length // 2), int(frame_length // 2)) padding = (int(frame_length // 2), int(frame_length // 2))
y = np.pad(y, padding, mode=pad_mode) y = np.pad(y, padding, mode=pad_mode)
axis = -1 axis = -1
# put our new within-frame axis at the end for now # put our new within-frame axis at the end for now
@@ -72,16 +72,16 @@ class Slicer:
] ]
# @timeit # @timeit
def slice(self, waveform): def slice(self, waveform):
if len(waveform.shape) > 1: if len(waveform.shape) > 1:
samples = waveform.mean(axis=0) samples = waveform.mean(axis=0)
else: else:
samples = waveform samples = waveform
if samples.shape[0] <= self.min_length: if samples.shape[0] <= self.min_length:
return [waveform] return [waveform]
rms_list = get_rms( rms_list = get_rms(
y=samples, frame_length=self.win_size, hop_length=self.hop_size y=samples, frame_length=self.win_size, hop_length=self.hop_size
).squeeze(0) ).squeeze(0)
sil_tags = [] sil_tags = []
silence_start = None silence_start = None
clip_start = 0 clip_start = 0

View File

@@ -10,13 +10,13 @@ n_p = int(sys.argv[3])
exp_dir = sys.argv[4] exp_dir = sys.argv[4]
noparallel = sys.argv[5] == "True" noparallel = sys.argv[5] == "True"
per = float(sys.argv[6]) per = float(sys.argv[6])
import os
import traceback import traceback
import librosa import librosa
import numpy as np import numpy as np
from scipy.io import wavfile from scipy.io import wavfile
os.environ["RVC_AUDIO_FORCE_CPU"] = "1"
from infer.audio import load_audio from infer.audio import load_audio
from train.dataset.slicer2 import Slicer from train.dataset.slicer2 import Slicer
from i18n.i18n import I18nAuto from i18n.i18n import I18nAuto
@@ -73,13 +73,13 @@ class PreProcess:
self.sr, self.sr,
tmp_audio.astype(np.float32), tmp_audio.astype(np.float32),
) )
tmp_audio = librosa.resample( audio_16k = librosa.resample(
tmp_audio, orig_sr=self.sr, target_sr=16000 tmp_audio, orig_sr=self.sr, target_sr=16000
) # , res_type="soxr_vhq" ).astype(np.float32)
wavfile.write( wavfile.write(
"%s/%s_%s.wav" % (self.wavs16k_dir, idx0, idx1), "%s/%s_%s.wav" % (self.wavs16k_dir, idx0, idx1),
16000, 16000,
tmp_audio.astype(np.float32), audio_16k,
) )
return True return True
@@ -140,19 +140,24 @@ class PreProcess:
("%s/%s" % (inp_root, name), idx, total) ("%s/%s" % (inp_root, name), idx, total)
for idx, name in enumerate(names) for idx, name in enumerate(names)
] ]
println(i18n("[数据切分] 待处理:%s | 进程数:%s") % (total, n_p)) worker_count = max(n_p, 1)
worker_count = min(worker_count, max(total, 1))
println(
i18n("[数据切分] 待处理:%s | 进程数:%s")
% (total, worker_count)
)
if noparallel: if noparallel:
for i in range(n_p): for i in range(worker_count):
self.pipeline_mp(infos[i::n_p]) self.pipeline_mp(infos[i::worker_count])
else: else:
ps = [] ps = []
for i in range(n_p): for i in range(worker_count):
p = multiprocessing.Process( p = multiprocessing.Process(
target=self.pipeline_mp, args=(infos[i::n_p],) target=self.pipeline_mp, args=(infos[i::worker_count],)
) )
ps.append(p) ps.append(p)
p.start() p.start()
for i in range(n_p): for i in range(worker_count):
ps[i].join() ps[i].join()
except Exception: except Exception:
println(i18n("[数据切分][失败] %s") % traceback.format_exc()) println(i18n("[数据切分][失败] %s") % traceback.format_exc())

View File

@@ -487,10 +487,28 @@ def run_preprocess_dataset(trainset_dir, exp_dir, sr, n_p, state, format_output=
config.noparallel, config.noparallel,
config.preprocess_per, config.preprocess_per,
) )
process = start_train_process(state, cmd) extract_start_time = time.time()
yield from wait_train_processes( requested_workers = max(int(n_p), 1)
state, [process], log_path, "数据切分", format_output actual_workers = 1 if config.noparallel else requested_workers
print(
i18n(
"数据提取开始start_time=%.6f,请求并行数=%s,实际并行数上限=%s"
)
% (extract_start_time, requested_workers, actual_workers),
flush=True,
) )
try:
process = start_train_process(state, cmd)
yield from wait_train_processes(
state, [process], log_path, "数据切分", format_output
)
finally:
extract_end_time = time.time()
print(
i18n("数据提取结束end_time=%.6f,总耗时=%.3f")
% (extract_end_time, extract_end_time - extract_start_time),
flush=True,
)
if not train_task_stopped(state): if not train_task_stopped(state):
validate_preprocess_outputs(exp_dir) validate_preprocess_outputs(exp_dir)