{
  "app": {
    "title": "🎛️ ACE-Step V1.5 游乐场💡",
    "subtitle": "推动开源音乐生成的边界"
  },
  "common": {
    "language_metadata": {
      "name": "Chinese",
      "native_name": "中文"
    }
  },
  "dataset": {
    "title": "📊 数据集浏览器",
    "dataset_label": "数据集",
    "dataset_info": "选择要浏览的数据集。",
    "import_btn": "📥 导入数据集",
    "search_type_label": "搜索类型",
    "search_type_info": "如何查找项目。",
    "search_value_label": "搜索值",
    "search_value_placeholder": "输入键或索引(留空表示随机)",
    "search_value_info": "键: 精确匹配, 索引: 0到数据集大小-1。",
    "instruction_label": "📝 指令",
    "instruction_placeholder": "无可用指令",
    "metadata_title": "📋 项目元数据 (JSON)",
    "metadata_label": "完整项目信息",
    "source_audio": "源音频",
    "target_audio": "目标音频",
    "reference_audio": "参考音频",
    "get_item_btn": "🔍 获取项目",
    "use_src_checkbox": "使用数据集中的源音频",
    "use_src_info": "勾选以使用数据集中的源音频。",
    "data_status_label": "📊 数据状态",
    "data_status_default": "❌ 未导入数据集",
    "autofill_btn": "📋 自动填充生成表单"
  },
  "service": {
    "title": "🔧 服务配置",
    "checkpoint_label": "检查点文件",
    "checkpoint_info": "选择训练好的模型检查点文件(完整路径或文件名)。",
    "refresh_btn": "🔄 刷新",
    "model_path_label": "主模型路径",
    "model_path_info": "选择模型配置目录(从检查点自动扫描)。",
    "device_label": "设备",
    "device_info": "处理设备(建议自动检测)。",
    "lm_model_path_label": "5Hz LM 模型路径",
    "lm_model_path_info": "选择5Hz LM模型检查点(从检查点自动扫描)。",
    "backend_label": "5Hz LM 后端",
    "backend_info": "选择5Hz LM的后端: vllm(更快)或pt(PyTorch, 更兼容)。",
    "init_llm_label": "初始化 5Hz LM",
    "init_llm_info": "勾选以在服务初始化期间初始化5Hz LM。",
    "lm_unavailable_vram": "⚠️ 当前GPU档位不支持LM（显存不足）",
    "flash_attention_label": "使用Flash Attention",
    "flash_attention_info_enabled": "启用flash attention以加快推理速度(需要flash_attn包)",
    "flash_attention_info_disabled": "Flash attention不可用(未安装flash_attn包)",
    "offload_cpu_label": "闲置时转移到 CPU",
    "offload_cpu_info": "不使用时将模型转移到CPU以节省GPU显存。",
    "offload_dit_cpu_label": "将DiT转移到CPU",
    "offload_dit_cpu_info": "将DiT转移到CPU(需要启用闲置时转移到 CPU)。",
    "compile_model_label": "编译模型",
    "compile_model_info": "使用 torch.compile 优化模型（量化必需）。",
    "quantization_label": "INT8 量化",
    "quantization_info": "启用 INT8 仅权重量化以减少显存占用（需要启用编译模型）。",
    "mlx_dit_label": "MLX DiT (Apple Silicon)",
    "mlx_dit_info_enabled": "使用原生 MLX 加速 DiT 扩散推理（比 MPS 更快）",
    "mlx_dit_info_disabled": "MLX 不可用（需要 macOS + Apple Silicon + mlx 包）",
    "init_btn": "初始化服务",
    "status_label": "状态",
    "language_label": "界面语言",
    "language_info": "选择界面语言。",
    "gpu_auto_tier": "自动检测层级",
    "tier_label": "GPU 层级覆盖",
    "tier_info": "手动选择 GPU 层级以调整优化默认值（卸载、量化、后端等）。"
  },
  "generation": {
    "tab_title": "🎵 生成",
    "required_inputs": "📝 必需输入",
    "task_type_label": "任务类型 *",
    "task_type_info": "选择生成的任务类型。",
    "instruction_label": "指令",
    "instruction_info": "指令根据任务类型自动生成。",
    "load_btn": "📂 加载",
    "track_name_label": "音轨名称",
    "track_name_info": "为lego/extract任务选择音轨名称。",
    "track_classes_label": "音轨名称",
    "track_classes_info": "为complete任务选择多个音轨类别。",
    "audio_uploads": "🎵 音频上传",
    "reference_audio": "参考音频",
    "source_audio": "源音频",
    "convert_codes_btn": "转换为代码",
    "analyze_btn": "🔍 分析",
    "sample_btn": "🎲 试试看",
    "lm_codes_hints": "🎼 LM 代码提示",
    "lm_codes_audio_upload_label": "音频 → Codes（工具）",
    "lm_codes_label": "LM 代码提示",
    "lm_codes_placeholder": "<|audio_code_10695|><|audio_code_54246|>.",
    "lm_codes_info": "粘贴用于text2music生成的LM代码提示。",
    "lm_codes_sample": "LM 代码提示(样本 {n})",
    "lm_codes_sample_info": "样本{n}的代码。",
    "transcribe_btn": "转录",
    "repainting_controls": "🎨 重绘控制(秒)",
    "repainting_start": "重绘开始",
    "repainting_end": "重绘结束",
    "mode_label": "生成模式 *",
    "mode_info": "选择一种生成模式开始创作。",
    "mode_info_simple": "用自然语言描述你想要的音乐，AI 将自动生成描述、歌词和元数据。",
    "mode_info_custom": "完全控制描述、歌词和所有参数。",
    "mode_info_remix": "上传源音频，用你的描述和歌词创建混音版本。",
    "mode_info_repaint": "上传源音频，重绘指定时间范围的内容。",
    "mode_info_extract": "从源音频中提取特定音轨（人声、鼓等）。",
    "mode_info_lego": "重新组装音轨：替换源音频中的特定音轨。",
    "mode_info_complete": "补全源音频中缺失的音轨。",
    "mode_simple": "简单",
    "mode_custom": "自定义",
    "simple_query_label": "歌曲描述 *",
    "simple_query_placeholder": "描述你想创作的音乐，例如：'给我生成一首暗黑的戏剧古风，歌词要华丽'。留空则随机生成样本。",
    "simple_query_info": "输入你想生成的音乐的自然语言描述。",
    "simple_vocal_language_label": "人声语言",
    "simple_vocal_language_info": "选择歌词的首选语言。使用 'unknown' 表示任意语言。",
    "create_sample_btn": "创建样本",
    "caption_title": "📝 音乐描述",
    "caption_label": "音乐描述",
    "caption_placeholder": "一段平和的原声吉他旋律,配有柔和的人声.",
    "caption_info": "描述风格、流派、乐器和情绪。",
    "lyrics_title": "📝 歌词",
    "lyrics_label": "歌词",
    "lyrics_placeholder": "[第一段]\\n在星空下\\n我感到如此活跃.",
    "lyrics_info": "带有结构的歌曲歌词。",
    "instrumental_label": "纯音乐",
    "format_btn": "格式化",
    "format_caption_btn": "增强描述",
    "format_lyrics_btn": "增强歌词",
    "optional_params": "⚙️ 可选参数",
    "optional_music_props": "🎵 音乐属性",
    "optional_gen_settings": "📐 生成设置",
    "advanced_dit_section": "🎛️ DiT 扩散参数",
    "advanced_lm_section": "🤖 LM 生成参数",
    "advanced_output_section": "🔊 音频输出与后处理",
    "advanced_automation_section": "⚡ 自动化与批量",
    "vocal_language_label": "人声语言",
    "vocal_language_info": "'unknown' = 纯音乐/自动。",
    "bpm_label": "BPM",
    "bpm_info": "留空表示 N/A。",
    "keyscale_label": "调",
    "keyscale_placeholder": "留空表示N/A",
    "keyscale_info": "A-G, #/♭, 大调/小调。",
    "timesig_label": "拍号",
    "timesig_info": "2/4, 3/4, 4/4。",
    "duration_label": "音频时长 (秒)",
    "duration_info": "使用-1表示随机。",
    "batch_size_label": "批量大小",
    "batch_size_info": "要生成的音频数量(最多8个)。",
    "advanced_settings": "⚙️ 设置",
    "inference_steps_label": "DiT 推理步数",
    "inference_steps_info": "Turbo: 最多8, Base: 最多200。",
    "guidance_scale_label": "DiT 引导比例(仅支持base模型)",
    "guidance_scale_info": "更高的值更紧密地遵循文本。",
    "seed_label": "种子",
    "seed_info": "批量使用逗号分隔的值。",
    "random_seed_label": "随机种子",
    "random_seed_info": "启用以自动生成种子。",
    "audio_format_label": "音频格式",
    "audio_format_info": "保存文件的音频格式。",
    "use_adg_label": "使用 ADG",
    "use_adg_info": "启用角域引导。",
    "shift_label": "Shift",
    "shift_info": "时间步偏移因子，仅对 base 模型生效 (范围 1.0~5.0，默认 3.0)。对 turbo 模型无效。",
    "infer_method_label": "推理方法",
    "infer_method_info": "扩散推理方法。ODE (欧拉) 更快，SDE (随机) 可能产生不同结果。",
    "sampler_mode_label": "采样器模式",
    "sampler_mode_info": "Euler: 标准一阶求解器（快速，默认）。Heun: 二阶预测-校正器，每步评估模型两次以获得更高精度——在8步turbo推理中产生更干净的音频，但扩散时间约为2倍。",
    "velocity_norm_threshold_label": "速度范数阈值",
    "velocity_norm_threshold_info": "在每个扩散步骤中限制速度预测范数。防止导致音频伪影的异常预测。0 = 禁用。1.5-3.0之间的值可减少伪影。",
    "velocity_ema_factor_label": "速度EMA因子",
    "velocity_ema_factor_info": "通过指数移动平均平滑去噪轨迹。0 = 禁用。0.05-0.2之间效果较好。",
    "dcw_section": "🧪 DCW — 小波域差分校正（实验性）",
    "dcw_enabled_label": "启用 DCW",
    "dcw_enabled_info": "采样器端 SNR-t 偏差校正（CVPR 2026，arXiv:2604.16044）。在每一步去噪后，在小波域对频带逐个施加差分修正。默认开启；如需与未校正采样器做 A/B 对照，可取消勾选。",
    "dcw_mode_label": "DCW 模式",
    "dcw_mode_info": "low：仅校正低频带（与论文 README 示例一致，我们推荐的起点）。high：仅校正高频带。double：双频带各自校正（ACE-Step 扩展，参考实现里没有此模式）。pix：不做小波变换，直接在潜在空间做校正。",
    "dcw_scaler_label": "DCW 强度",
    "dcw_scaler_info": "低频带（或 high/pix 模式下的单一频带）校正强度。内部按 t_curr 逐步衰减，所以该值是 t=1 附近的名义强度，会随 t→0 线性趋于 0。默认 0.02，推荐范围 0–0.1；过大会引入伪影。",
    "dcw_high_scaler_label": "DCW 高频强度",
    "dcw_high_scaler_info": "仅在 double 模式下使用的高频带校正强度。推荐范围 0–0.1；想让采样器同时增强高频细节时，可在 0.01–0.02 左右配合较小的 DCW 强度使用。",
    "dcw_wavelet_label": "DCW 小波基",
    "dcw_wavelet_info": "沿时间轴做 1-D DWT 使用的 PyWavelets 小波基。haar 最快（低通响应偏块状）；db4 / sym8 低频提取更平滑。",
    "custom_timesteps_label": "自定义时间步",
    "custom_timesteps_info": "从 1.0 到 0.0 的逗号分隔值（例如 '0.97,0.76,0.615,0.5,0.395,0.28,0.18,0.085,0'）。会覆盖推理步数和 shift 设置。",
    "cfg_interval_start": "CFG 间隔开始",
    "cfg_interval_end": "CFG 间隔结束",
    "lm_params_title": "🤖 LM 生成参数",
    "lm_temperature_label": "LM 温度",
    "lm_temperature_info": "5Hz LM温度(越高越随机)。",
    "lm_cfg_scale_label": "LM CFG 比例",
    "lm_cfg_scale_info": "5Hz LM CFG (1.0 = 无CFG)。",
    "lm_top_k_label": "LM Top-K",
    "lm_top_k_info": "Top-K (0 = 禁用)。",
    "lm_top_p_label": "LM Top-P",
    "lm_top_p_info": "Top-P (1.0 = 禁用)。",
    "lm_negative_prompt_label": "LM 负面提示",
    "lm_negative_prompt_placeholder": "输入CFG的负面提示(默认: NO USER INPUT)",
    "lm_negative_prompt_info": "负面提示(当LM CFG比例 > 1.0时使用)。",
    "cot_metas_label": "CoT 元数据",
    "cot_metas_info": "使用 LM 生成 CoT 元数据(取消勾选则跳过 LM CoT 生成)。",
    "cot_language_label": "CoT 语言",
    "cot_language_info": "在CoT中生成语言(思维链)。",
    "constrained_debug_label": "约束解码调试",
    "constrained_debug_info": "启用约束解码的调试日志(勾选以查看详细日志)。",
    "lm_use_legacy_cfg_prompt_label": "LM CFG: 使用旧版无条件 Prompt",
    "lm_use_legacy_cfg_prompt_info": "调试用 A/B 开关。关闭(默认): CFG 无条件分支 user 为裸 'NO USER INPUT'(训练对齐，真正的无条件)。开启: 无条件分支保留 caption+lyrics(修复前的设计——无条件仍带着条件，CFG 只能放大 CoT 元数据方向)。两种状态下字节级结构(assistant turn 开放、分隔换行、空 reasoning 渲染)完全一致，开关只隔离这一个设计变量。仅影响 codes 阶段 CFG。",
    "auto_score_label": "自动评分",
    "auto_score_info": "自动计算所有生成音频的质量分数。",
    "auto_lrc_label": "自动 LRC",
    "auto_lrc_info": "自动为所有生成的音频生成LRC歌词时间戳。",
    "lm_batch_chunk_label": "LM 批量块大小",
    "lm_batch_chunk_info": "每个LM批量块的最大项目数(默认: 8, 受GPU内存限制)。",
    "codes_strength_label": "LM 代码强度",
    "codes_strength_info": "控制使用LM生成代码的去噪步骤数量。",
    "similarity_denoise_label": "相似度 / 降噪",
    "similarity_denoise_info": "控制输出与参考音频的贴合程度。数值越高保留越多结构。",
    "cover_strength_label": "音频覆盖强度",
    "cover_strength_info": "控制使用覆盖模式的去噪步骤数量。",
    "remix_strength_label": "混音强度",
    "remix_strength_info": "控制混音对原始音频的还原程度（越高越接近原始音频）。",
    "cover_noise_strength_label": "翻唱强度",
    "cover_noise_strength_info": "控制 Remix 模式下的旋律还原程度。推荐：使用 SFT 模型，值设为 0.1–0.25。稍微提升即可还原旋律，但风格迁移可能需要额外的 prompt 调参。（0 = 纯噪声/无翻唱效果，1 = 最接近原始音频）。",
    "score_sensitivity_label": "质量评分敏感度",
    "score_sensitivity_info": "更低 = 更敏感(默认: 1.0). 调整PMI如何映射到[0,1]。",
    "think_label": "思考",
    "parallel_thinking_label": "并行思考",
    "parallel_thinking_info": "并行处理批量样本以加速生成。",
    "generate_btn": "🎵 生成音乐",
    "extract_stem_btn": "🎵 提取分轨",
    "add_stem_btn": "🎵 添加分轨",
    "stem_area_controls": "🧩 新分轨区域（秒）",
    "stem_start": "分轨开始",
    "stem_end": "分轨结束",
    "autogen_label": "自动生成",
    "caption_rewrite_label": "描述重写",
    "caption_rewrite_info": "生成前使用LM重写描述。",
    "auto_label": "自动",
    "bpm_auto_label": "BPM 自动",
    "key_auto_label": "调 自动",
    "timesig_auto_label": "拍号 自动",
    "vocal_lang_auto_label": "语言 自动",
    "duration_auto_label": "时长 自动",
    "reset_all_auto": "🔄 全部重置为自动",
    "advanced_dit_params": "DiT 高级参数"
  },
  "results": {
    "title": "🎵 结果",
    "generated_music": "🎵 生成的音乐(样本 {n})",
    "send_to_remix_btn": "🔗 发送到混音",
    "send_to_repaint_btn": "🔗 发送到重绘",
    "save_btn": "💾 保存",
    "score_btn": "📊 获取评分",
    "lrc_btn": "🎵 获取 LRC",
    "save_lrc_btn": "💾 保存 LRC",
    "convert_to_codes_btn": "🔄 转换为代码",
    "quality_score_label": "质量分数(样本 {n})",
    "quality_score_placeholder": "点击'评分'以计算基于困惑度的质量分数",
    "codes_label": "LM 代码(样本 {n})",
    "lrc_label": "歌词时间戳(样本 {n})",
    "lrc_placeholder": "点击'LRC'生成时间戳",
    "details_accordion": "📊 评分与LRC与LM代码",
    "generation_status": "生成状态",
    "current_batch": "当前批次",
    "batch_indicator": "批次 {current} / {total}",
    "next_batch_status": "下一批次状态",
    "prev_btn": "◀ 上一个",
    "next_btn": "下一个 ▶",
    "restore_params_btn": "↙️ 将这些设置应用到UI(恢复批次参数)",
    "batch_results_title": "👇 点击查看批量结果和生成详情",
    "all_files_label": "📁 所有生成的文件(下载)",
    "generation_details": "生成详情"
  },
  "messages": {
    "no_audio_to_save": "❌ 没有要保存的音频",
    "save_success": "✅ 已将音频和元数据保存到 {filename}",
    "save_failed": "❌ 保存失败: {error}",
    "no_file_selected": "⚠️ 未选择文件",
    "params_loaded": "✅ 已从 {filename} 加载参数",
    "invalid_json": "❌ 无效的JSON文件: {error}",
    "load_error": "❌ 加载文件时出错: {error}",
    "example_loaded": "📁 已从 {filename} 加载示例",
    "example_failed": "解析JSON文件 {filename} 失败: {error}",
    "example_error": "加载示例时出错: {error}",
    "lm_generated": "🤖 使用LM生成的示例",
    "lm_fallback": "使用LM生成示例失败,回退到示例目录",
    "lm_not_initialized": "❌ 5Hz LM未初始化。请先初始化它。",
    "think_requires_lm": "⚠️ \"Think\"功能需要先初始化 5Hz LM。Think 已自动关闭，生成将不使用 LM 思考。",
    "autogen_enabled": "🔄 已启用自动生成 - 下一批次将在此之后生成",
    "batch_ready": "✅ 批次 {n} 就绪!点击'下一个'查看。",
    "batch_generating": "🔄 开始为批次 {n} 进行后台生成.",
    "batch_failed": "❌ 后台生成失败: {error}",
    "viewing_batch": "✅ 查看批次 {n}",
    "at_first_batch": "已在第一批次",
    "at_last_batch": "没有下一批次可用",
    "batch_not_found": "在队列中未找到批次 {n}",
    "no_batch_data": "没有要恢复的批次数据。",
    "params_restored": "✅ 已从批次 {n} 恢复UI参数",
    "scoring_failed": "❌ 错误: 未找到批次数据",
    "no_codes": "❌ 没有可用的音频代码。请先生成音乐。",
    "score_failed": "❌ 评分失败: {error}",
    "score_error": "❌ 计算分数时出错: {error}",
    "lrc_save_memory_disabled": "❌ 省内存模式已开启 (ACESTEP_SAVE_MEMORY=1)，LRC 生成不可用。中间张量未保存以减少内存占用。",
    "lrc_no_batch_data": "❌ 未找到批次数据。请先生成音乐。",
    "lrc_no_extra_outputs": "❌ 未找到额外输出。条件张量不可用。",
    "lrc_missing_tensors": "❌ 缺少LRC生成所需的张量。",
    "lrc_sample_not_exist": "❌ 当前批次中不存在该样本。",
    "lrc_empty_result": "⚠️ LRC生成结果为空。",
    "empty_query": "⚠️ 请输入音乐描述。",
    "sample_creation_failed": "❌ 创建样本失败。请重试。",
    "sample_created": "✅ 样本已创建！检查描述和歌词，然后点击生成音乐。",
    "simple_examples_not_found": "⚠️ 未找到简单模式示例目录。",
    "simple_examples_empty": "⚠️ 简单模式示例中没有示例文件。",
    "simple_example_loaded": "🎲 已从 {filename} 加载随机示例",
    "format_success": "✅ 描述和歌词格式化成功",
    "format_failed": "❌ 格式化失败: {error}",
    "skipping_metas_cot": "⚡ 跳过 Phase 1 元数据 COT（样本已格式化）",
    "invalid_timesteps_format": "⚠️ 时间步格式无效，使用默认调度。",
    "timesteps_out_of_range": "⚠️ 时间步必须在 [0, 1] 范围内，使用默认调度。",
    "timesteps_count_mismatch": "⚠️ 时间步数量 ({actual}) 与推理步数 ({expected}) 不匹配，将使用时间步数量。"
  },
  "training": {
    "tab_title": "🎓 LoRA 训练",
    "tab_dataset_builder": "📁 数据集构建",
    "tab_train_lora": "🚀 训练 LoRA",
    "quick_start_title": "🚀 快速开始",
    "load_dataset_label": "数据集 JSON 路径",
    "load_dataset_info": "加载之前保存的数据集。",
    "load_btn": "📂 加载",
    "load_status": "加载状态",
    "scan_label": "音频目录路径",
    "scan_info": "扫描音频文件（wav、mp3、flac、ogg、opus）。",
    "scan_btn": "🔍 扫描",
    "scan_status": "扫描状态",
    "found_audio_files": "已找到的音频文件",
    "dataset_name": "数据集名称",
    "dataset_name_placeholder": "输入数据集名称",
    "dataset_settings_header": "数据集设置",
    "tag_prepend": "前置（标签，描述）",
    "tag_append": "后置（描述，标签）",
    "tag_replace": "替换描述",
    "step2_title": "步骤 2：AI 自动标注",
    "step2_instruction": "点击下方按钮，使用 AI 自动为所有音频文件生成元数据：\n- **描述**：音乐风格、流派、情绪描述\n- **BPM**：每分钟节拍数\n- **调性**：音乐调（例如 C Major、Am）\n- **拍号**：4/4、3/4 等。",
    "step3_title": "步骤 3：预览与编辑",
    "step4_title": "步骤 4：保存数据集",
    "step5_title": "步骤 5：预处理为张量",
    "step5_intro": "**预处理将您的数据集转换为预计算的张量，以便快速训练。**\n\n您可以：\n- 使用上述步骤 1-4 的数据集，**或者**\n- 加载现有的数据集 JSON 文件（如果您已经保存了一个）",
    "step5_details": "此步骤：\n- 将音频编码为 VAE 潜变量\n- 将描述和歌词编码为文本嵌入\n- 运行条件编码器\n- 将所有张量保存到 `.pt` 文件\n\n⚠️ **这需要加载模型，可能需要几分钟。**",
    "train_section_tensors": "预处理数据集选择",
    "train_section_lora": "LoRA 设置",
    "train_section_params": "训练参数",
    "train_tensor_selection_desc": "选择包含预处理张量文件（`.pt` 文件）的目录。\n这些文件在「数据集构建」标签页中使用「预处理」按钮创建。",
    "all_instrumental": "全部为纯音乐",
    "all_instrumental_info": "勾选表示所有曲目均为纯音乐（无人声）。",
    "custom_tag": "自定义激活标签",
    "custom_tag_info": "用于激活此 LoRA 风格的唯一标签。",
    "tag_position": "标签位置",
    "tag_position_info": "在描述中放置自定义标签的位置。",
    "genre_ratio": "风格比例 (%)",
    "genre_ratio_info": "0%=全部描述，100%=全部风格。单样本覆盖优先。",
    "skip_metas": "跳过 BPM/调性/拍号",
    "skip_metas_info": "跳过 BPM/调性/拍号生成。描述和风格仍由 LM 生成。",
    "only_unlabeled": "仅未标注",
    "only_unlabeled_info": "仅标注无描述的样本（用于继续失败的标注）。",
    "auto_label_btn": "🏷️ 自动标注全部",
    "label_progress": "标注进度",
    "select_sample": "选择样本 #",
    "select_sample_info": "选择要预览和编辑的样本。",
    "audio_preview": "音频预览",
    "filename": "文件名",
    "caption": "描述",
    "genre": "风格",
    "prompt_override_label": "提示覆盖（本样本）",
    "prompt_override_info": "覆盖本样本的全局比例。",
    "lyrics_editable_label": "歌词（可编辑，用于训练）",
    "raw_lyrics_label": "原始歌词（来自 .txt 文件）",
    "no_lyrics_placeholder": "（无 .txt 歌词文件）",
    "bpm": "BPM",
    "key_label": "调性",
    "key_placeholder": "C 大调",
    "time_sig": "拍号",
    "duration_s": "时长 (秒)",
    "language": "语言",
    "instrumental": "纯音乐",
    "save_changes_btn": "💾 保存更改",
    "edit_status": "编辑状态",
    "save_path": "保存路径",
    "save_path_info": "数据集 JSON 的保存路径。",
    "save_dataset_btn": "💾 保存数据集",
    "save_status": "保存状态",
    "load_existing_label": "加载已有数据集",
    "load_existing_info": "之前保存的数据集 JSON 文件路径。",
    "load_dataset_btn": "📂 加载数据集",
    "tensor_output_dir": "张量输出目录",
    "tensor_output_info": "保存预处理张量文件的目录。",
    "preprocess_btn": "⚡ 预处理",
    "preprocess_progress": "预处理进度",
    "preprocessed_tensors_dir": "预处理张量目录",
    "preprocessed_tensors_info": "包含预处理 .pt 张量文件的目录。",
    "dataset_info": "数据集信息。",
    "lora_rank": "LoRA 秩 (r)",
    "lora_rank_info": "越高容量越大，显存占用越多。",
    "lora_alpha": "LoRA Alpha",
    "lora_alpha_info": "缩放因子（通常为 2× 秩）。",
    "lora_dropout": "LoRA Dropout",
    "learning_rate": "学习率",
    "learning_rate_info": "建议从 3e-4 开始，按需调整。",
    "max_epochs": "最大轮数",
    "batch_size": "批大小",
    "batch_size_info": "显存充足时可增大。",
    "gradient_accumulation": "梯度累积",
    "gradient_accumulation_info": "有效批大小 = batch_size × 累积步数。",
    "save_every_n_epochs": "每 N 轮保存",
    "shift": "Shift",
    "shift_info": "Turbo 模型时间步偏移。",
    "seed": "随机种子",
    "output_dir": "输出目录",
    "output_dir_info": "保存训练后 LoRA 权重的目录。",
    "start_training_btn": "🚀 开始训练",
    "stop_training_btn": "⏹️ 停止训练",
    "training_progress": "训练进度",
    "training_log": "训练日志",
    "training_loss_title": "训练损失",
    "step": "步数",
    "loss": "损失",
    "export_header": "导出 LoRA",
    "export_path": "导出路径",
    "export_lora_btn": "📦 导出 LoRA",
    "export_status": "导出状态",
    "stop_no_training": "ℹ 当前没有正在进行的训练",
    "stop_stopping": "⏹️ 正在停止训练...",
    "latest_auto": "最新（自动）",
    "export_path_required": "❌ 请输入导出路径",
    "invalid_lora_output_dir": "❌ LoRA 输出目录无效",
    "no_checkpoints_found": "❌ 未找到检查点",
    "no_trained_model_found": "❌ 在 {path} 中未找到训练好的模型",
    "invalid_export_path": "❌ 导出路径无效",
    "lora_exported": "✅ LoRA 已导出到 {path}",
    "export_failed": "❌ 导出失败: {error}",
    "lokr_output_dir_required": "⚠️ 请先输入 LoKr 输出目录",
    "lokr_no_checkpoints_use_latest": "ℹ 未找到检查点；导出将使用最新可用权重",
    "lokr_no_exportable_checkpoints": "ℹ 未找到可导出的轮次检查点",
    "lokr_found_checkpoints": "✅ 找到 {count} 个 LoKr 检查点",
    "lokr_selected_epoch_not_found": "❌ 未找到所选轮次: {chosen}。可用: {available}",
    "lokr_no_weights_selected_epoch": "❌ 所选轮次 {epoch} 中未找到 LoKr 权重",
    "lokr_no_weights_latest_checkpoint": "❌ 最新检查点 {checkpoint} 中未找到 LoKr 权重",
    "lokr_no_trained_weights_found": "❌ 在 {path} 中未找到训练好的 LoKr 权重",
    "lokr_exported": "✅ LoKr 已导出到 {path}",
    "tab_train_lokr": "🚀 训练 LoKr",
    "lokr_section_tensors": "预处理数据集选择",
    "lokr_section_settings": "LoKr 设置",
    "lokr_tensor_selection_desc": "选择包含预处理张量文件（`.pt` 文件）的目录。\n这些文件在「数据集构建」标签页中使用「预处理」按钮创建。",
    "lokr_linear_dim": "LoKr Linear Dim",
    "lokr_linear_dim_info": "Rank (dimension) for LoKr adaptation matrices.",
    "lokr_linear_alpha": "LoKr Linear Alpha",
    "lokr_linear_alpha_info": "Scaling factor for LoKr (usually similar to dim).",
    "lokr_factor": "LoKr Factor",
    "lokr_factor_info": "Kronecker factor (-1 for auto).",
    "lokr_decompose_both": "Decompose Both Sides",
    "lokr_decompose_both_info": "When enabled, decomposes both left and right matrices.",
    "lokr_use_tucker": "Use Tucker Decomposition",
    "lokr_use_tucker_info": "Apply Tucker decomposition when applicable.",
    "lokr_use_scalar": "Use Scalar Gate",
    "lokr_use_scalar_info": "Enable scalar gating for LoKr weights.",
    "lokr_weight_decompose": "Weight Decompose (WD)",
    "lokr_weight_decompose_info": "Enable weight decomposition for more stable LoKr training.",
    "lokr_learning_rate_info": "LoKr commonly uses a higher LR than LoRA. Tune per dataset.",
    "lokr_output_dir_info": "保存训练后 LoKr 权重的目录。",
    "start_lokr_training_btn": "🚀 开始训练 LoKr",
    "lokr_training_loss_title": "LoKr 训练损失",
    "lokr_export_header": "导出 LoKr",
    "export_lokr_btn": "📦 导出 LoKr",
    "lokr_checkpoint_epoch": "Checkpoint Epoch",
    "lokr_checkpoint_epoch_info": "Select a specific epoch checkpoint to export, or keep Latest (auto).",
    "refresh_epochs_btn": "↻ 刷新 Epochs"
  },
  "help": {
    "btn_label": "?",
    "close_label": "✕",
    "getting_started": "## 快速入门\n\n1. 在设置面板中**选择模型**（如 `acestep-v15-turbo`）\n2. 如需 Thinking 模式，**选择 5Hz LM**（推荐）\n3. 点击**初始化服务**，等待绿色状态\n4. 选择**生成模式**（建议从 Simple 开始）\n5. 描述你想要的音乐，点击**生成音乐**\n\n> **提示：** Turbo 模型最快。启用 Think 获得更智能的生成。",
    "service_config": "## 服务配置\n\n### 快速设置\n1. 选择**主模型路径**（推荐 turbo）\n2. 选择 **5Hz LM 模型路径**（按 GPU 自动筛选）\n3. 选择**后端**：`vllm`（快速，NVIDIA ≥8GB）或 `pt`（通用）\n4. 勾选**初始化 5Hz LM** 以启用 Thinking 模式\n5. 点击**初始化服务**\n\n### 性能提示\n- **Flash Attention**：更快推理（需要 flash_attn）\n- **闲置时转移到 CPU**：GPU <20GB 时自动启用\n- **INT8 量化**：减少显存，<20GB 时自动启用\n- **编译**：量化必需，默认启用\n\n### LoRA\n- 设置 LoRA 路径 → 加载 → 启用「使用 LoRA」\n- ⚠️ 不能在 INT8 量化下使用 LoRA",
    "generation_simple": "## Simple 模式教程\n\n**适合：** 快速创作音乐，最少操作。\n\n### 步骤\n1. 在生成模式中选择 **Simple**\n2. 输入描述，如 *\"欢快的流行歌曲，带有吉他即兴演奏\"*\n3. （可选）勾选**纯音乐**不要人声\n4. （可选）选择**人声语言**\n5. 点击**创建样本** — AI 生成描述、歌词、元数据\n6. 检查并编辑生成的内容\n7. 点击**生成音乐**\n\n### 提示\n- 点击 🎲 获取随机灵感\n- 描述越具体，结果越好\n- 留空 BPM/调性让 AI 自动决定",
    "generation_custom": "## Custom 模式教程\n\n**适合：** 完全控制每个参数。\n\n### 步骤\n1. 在生成模式中选择 **Custom**\n2. 编写详细的**描述**（风格、流派、乐器、情绪）\n3. 编写带结构标签的**歌词**：`[Verse]`、`[Chorus]`、`[Bridge]`\n4. （可选）上传**参考音频**用于风格引导\n5. 设置 **BPM**、**调性**、**时长**，或留空自动\n6. 点击**格式化**用 LM 增强（可选）\n7. 点击**生成音乐**\n\n### 描述技巧\n- 要具体：*\"梦幻的 shoegaze，带有大量混响的吉他和低语般的人声\"*\n- 包含：流派、乐器、情绪、节奏感、人声风格",
    "generation_remix": "## Remix 模式教程\n\n**适合：** 创建翻唱版本或风格迁移。\n\n### 步骤\n1. 在生成模式中选择 **Remix**\n2. 上传**源音频**（要 remix 的歌曲）\n3. 编写描述目标风格的**描述**\n4. （可选）修改**歌词**\n5. 调整 **Remix 强度**（0.0–1.0）：\n   - 越高 = 越接近原始结构\n   - 越低 = 更多创意自由\n6. 点击**生成音乐**\n\n### 提示\n- 从强度 0.5 开始调整\n- 使用 SFT 模型，翻唱强度 0.1–0.25 以保留旋律",
    "generation_repaint": "## Repaint 模式教程\n\n**适合：** 修复或重新生成音乐的特定部分，同时保留其余部分不变。\n\n### 步骤\n1. 在生成模式中选择 **Repaint**\n2. 上传**源音频**\n3. 设置**重绘开始**（秒）和**结束**（-1 表示文件末尾）\n4. 编写描述重绘部分内容的**描述**\n5. 选择 **Repaint Mode**，按需调节 **Repaint Strength**\n6. 点击**生成音乐**\n\n### Repaint Mode（重绘模式）\n控制模型如何处理非重绘区域：\n\n- **Conservative**（Strength = 0）：最大程度保留原音频。每步扩散都注入源 latent，并使用较长的边界交叉淡入淡出。适合无缝衔接。\n- **Balanced**（默认）：在 Repaint Strength 控制的一部分扩散步骤中注入源 latent。推荐起始设置。\n- **Aggressive**（Strength = 1）：完全不注入源 latent，纯扩散生成。创作自由度最高，但边界一致性最弱。\n\n### Repaint Strength（重绘强度）\n仅在 **Balanced** 模式下可调。拖动滑杆控制保留与重生成的平衡：\n- **0** = 保守行为（自动切换为 Conservative 模式）\n- **0.5** = 默认 — 前 50% 扩散步骤注入源 latent\n- **1** = 激进行为（自动切换为 Aggressive 模式）\n\n### 提示\n- 从结果中使用「发送到重绘」快速加载音频\n- 建议从 Balanced (0.5) 开始，根据结果调整\n- 降低 Strength 可改善边界衔接，提高 Strength 可获得更多创作空间",
    "generation_extract": "## Extract 模式（仅 Base 模型）\n\n**适合：** 音轨分离 — 从混音中分离乐器。\n\n### 步骤\n1. 在生成模式中选择 **Extract**\n2. 上传**源音频**\n3. 选择要提取的**音轨名称**（如 vocals、drums、bass）\n4. 点击**提取分轨**\n\n### 可用音轨\nvocals、backing_vocals、drums、bass、guitar、keyboard、percussion、strings、synth、fx、brass、woodwinds",
    "generation_lego": "## Lego 模式（仅 Base 模型）\n\n**适合：** 为现有音频添加新乐器轨道。\n\n### 步骤\n1. 在生成模式中选择 **Lego**\n2. 上传**源音频**\n3. 选择要添加的**音轨名称**\n4. 编写描述该音轨的**描述**\n5. 点击**添加分轨**\n\n### 提示\n- 非常适合叠加：为吉他轨道添加鼓，为人声添加贝斯\n- 描述应只描述新音轨的特征",
    "generation_complete": "## Complete 模式（仅 Base 模型）\n\n**适合：** 自动编排 — 填充缺失的乐器。\n\n### 步骤\n1. 在生成模式中选择 **Complete**\n2. 上传**源音频**（部分编排）\n3. 选择多个要添加的**音轨名称**\n4. 编写描述期望风格的**描述**\n5. 点击**生成音乐**",
    "generation_caption": "## 编写好的描述\n\n### 结构\n好的描述包括：\n- **流派/风格**：pop、rock、jazz、electronic、classical…\n- **乐器**：guitar、piano、synth、drums、strings…\n- **情绪**：upbeat、melancholic、energetic、dreamy…\n- **人声风格**：whispered、powerful、falsetto、rap…\n- **节奏感**：fast、slow、moderate、driving…\n\n### 示例\n- *\"充满能量的朋克流行，失真吉他，快速鼓点，嘶吼人声\"*\n- *\"流畅的爵士三重奏，行走贝斯，刷子鼓，柔和钢琴\"*\n- *\"氛围电子，层叠的合成器垫和无人声\"*\n\n### 提示\n- 越详细 = 越好的结果\n- 使用**格式化**按钮让 AI 增强你的描述\n- 点击 🎲 查看示例描述",
    "generation_lyrics": "## 编写歌词\n\n### 结构标签\n使用段落标签来组织歌曲：\n```\n[Verse 1]\n在这里写你的主歌歌词\n\n[Chorus]\n在这里写你的副歌歌词\n\n[Verse 2]\n第二段主歌\n\n[Bridge]\n过渡段\n\n[Outro]\n结尾歌词\n```\n\n### 提示\n- 主歌保持 4-8 行\n- 副歌应该朗朗上口且有重复性\n- 使用 `[Instrumental]` 或 `[Interlude]` 表示无人声段落\n- 勾选**纯音乐**复选框生成纯器乐音乐\n- 选择**人声语言**以匹配歌词语言",
    "generation_advanced": "## 高级设置\n\n### 关键参数\n- **推理步数**：Turbo=8（默认），Base=最多 200。对 turbo 来说更多步数不一定更好\n- **引导比例**：仅 Base 模型。越高 = 越严格遵循提示\n- **Shift**：时间步偏移（1.0–5.0）。turbo 推荐 3.0\n- **种子**：设置特定种子以获得可重现的结果\n\n### LM 参数\n- **温度**（0.0–2.0）：越高 = 越有创意/随机\n- **CFG 比例**（1.0–3.0）：越高 = 越遵循提示\n- **Top-K / Top-P**：多样性的采样策略\n\n### Think 模式\n启用 **Think** 使用 5Hz LM 进行更智能的生成：\n- 生成语义代码和元数据\n- 需要初始化 LM\n- **并行思考**：并行处理批次（更快）",
    "generation_retake": "## Retake（变体生成）\n\n**适用场景：** 在不改变提示的情况下，对已固定 seed 的 baseline 做受控的、平滑的变体。\n\n### 原理\nRetake 通过 variance-preserving 的 sin/cos 混合，把一组独立的新噪声叠加到固定 seed 噪声上：\n\n```\nmixed = cos(v · π/2) · base_noise + sin(v · π/2) · retake_noise\n```\n\n由于 `cos² + sin² = 1`，总噪声方差精确保持不变。`v=0` 完全等价于不开 Retake；`v=1` 把噪声整组替换。\n\n### 输入\n- **variance**（0–1）：混合系数。\n  - `0` = baseline（与不开 Retake 完全一致）\n  - `0.05–0.15` = 微变，旋律/结构基本不变，细节略有差异\n  - `0.3–0.5` = 中等漂移\n  - `0.5+` = 强漂移，可能跑得比较远\n- **seed**（整数，可选）：retake 噪声的独立种子。留空 = 每次随机。\n\n### ⚠️ 一致性要求\nRetake 只有在**其它所有条件都跟 baseline 一致**时才有意义。具体：\n\n- 主 **seed** 必须一致——关掉 random-seed 复选框，沿用 baseline 那一批的 seed。\n- **Think 必须关闭**，或者复用 baseline 的 LM codes。Think 开启时 LM 每次都重新生成 audio codes，扩散模型的输入起点就变了——Retake 的噪声混合叠加在已经不同的起点上，结果是「LM 漂移 + 噪声漂移」混在一起。\n- 其它所有参数（caption、lyrics、BPM、key、duration、guidance_scale、shift、sampler、DCW 等）都应跟 baseline 对齐。\n\n### 在 Think 模式结果上做 Retake 的工作流\n1. 在你想做变体的那个结果上，展开 **📊 Score & LRC & LM Codes** 折叠面板。\n2. 复制其中的 **LM Codes** 文本。\n3. 粘贴到生成区顶部的 **LM Codes Hints** 输入框。\n4. **取消勾选 Think** —— 现在扩散模型会直接使用粘贴的 LM codes，不再重新生成。\n5. 锁定主 seed 为 baseline 的 seed，勾选 **Retake**，给 `retake_seed` 一个固定整数，调 `variance`。\n\n### 参考\n详见 [issue #1155](https://github.com/ace-step/ACE-Step-1.5/issues/1155)。",
    "generation_edit": "## Edit（Flow-Edit 叠加）\n\n**适用场景：** 把现有音频朝新的歌词/风格平滑漂移，同时保留原音频的结构。通过沿扩散 schedule 做配对速度场积分实现。\n\n### 原理\nFlow-Edit 在扩散 schedule 上积分一个速度差：\n\n```\nz_edit_{t-Δt} = z_edit_t + (V_tar(z_tar_t, c_tar) − V_src(z_src_t, c_src)) · Δt\n```\n\n其中 `c_src` 和 `c_tar` 是配对的文本/歌词条件。两个分支共用相同的音频上下文，所以 V_delta 隔离出**纯文本**层面的差异，沿 `[n_min, n_max]` 段累积进 `z_edit`。\n\n### 操作流程\n1. 选择 **Custom**（推荐做新编辑）或 **Remix**（想保留 cover 的参考骨架）模式。\n2. 把待编辑的音频上传到顶部的 **Source Audio** 输入框。\n3. 在顶部的 **Music Caption / Lyrics** 填**原始**描述（描述源音频是什么样的，这是下一步的 V_src）。\n4. 勾选 **Edit** 展开面板。\n5. 点 **Copy current → source** —— 把刚填的**原始**条件快照到下面的 source 字段，作为 V_src。\n6. 现在再把顶层 **Music Caption / Lyrics** 改成**目标**（你想要 morph 后的结果）—— V_tar。\n7. 第一次试用建议保留 `n_min=0`、`n_max=1`、`n_avg=1`。\n8. 在 **Optional Parameters** 里把 `shift` 设为 **3.0**（所有变体都推荐）。\n9. 点 **Generate Music**。\n\n> 提示：如果你是通过 **Send to Remix** / **Send to Repaint** 跳过来的，source 字段已经从上次的运行自动填好——直接跳过第 3、5 步，去顶层改成目标就行。\n\n### 不同模式的行为\n- **Custom**（text2music）：后端**自动忽略 Think 和 LM Codes Hints** —— 始终对你上传的 Source Audio 做 VAE 编码作为 flow-edit 的起点。V_delta 完全由文本驱动。v1 最稳定的模式。\n- **Remix**（cover / cover-nofsq）：后端复用 cover 自然的 LM-codes 上下文，两分支共享。适合想保留 cover 任务参考骨架的场景。\n- **Repaint / Extract / Lego**：v1 不支持 —— 后端会打 warning 并按普通任务跑（这些 task shape 的配对 CFG 推导留给后续 PR）。\n\n### 输入\n- **source caption / lyrics**：描述**原始**音频（V_src）。\n- 顶层 **caption / lyrics**：你想要的**目标**（V_tar）。\n- **n_min / n_max**：V_delta 积分的扩散 schedule 窗口。`0 / 1` = 全 schedule（推荐）。\n- **n_avg**：每步的蒙特卡洛采样数（1 = 快；越高 = 越稳定但越慢）。\n\n### 模型\n6 个 DiT 变体全部支持。Turbo / XL-turbo 是 CFG-distilled 的，后端会自动强制 `guidance_scale=1.0`。Turbo 的 8 推理步够用；`base / sft / xl_base / xl_sft` 建议 ≥60 步。\n\n### 提示\n- `Send to Remix` / `Send to Repaint` 已经会把上次运行的 prompt 自动填到 source 字段，方便快速迭代。\n- 推荐的 `shift=3.0` 与 ACE-Step 1.0 默认 flow-edit schedule 一致，经验上对 6 个变体都稳定。\n\n### 参考\n- Kulikov, V. et al. *FlowEdit: Inversion-Free Text-Based Editing Using Pre-Trained Flow Models.* CVPR 2025. [arXiv:2412.08629](https://arxiv.org/abs/2412.08629)\n- [Issue #1156](https://github.com/ace-step/ACE-Step-1.5/issues/1156)。",
    "results": "## 结果区域\n\n### 每个样本的控制\n- **音频播放器**：播放、暂停、下载\n- **发送到混音/重绘**：将此结果作为源进行进一步编辑\n- **保存**：导出音频 + 元数据为 JSON\n- **评分**：计算质量分数（基于困惑度）\n- **LRC**：生成歌词时间戳\n\n### 批次导航\n- 使用 **◀ 上一个** / **下一个 ▶** 浏览批次\n- 启用 **自动生成** 自动生成下一批\n- 点击**将这些设置应用到 UI** 以重用好结果的参数\n\n### 提示\n- 生成 2-4 个变体（批量大小）并选择最好的\n- 使用评分客观比较结果\n- 保存好的结果以备参考",
    "training_dataset": "## 数据集构建教程\n\n### 步骤 1：加载或扫描\n- **加载**：输入现有数据集 JSON 路径 → 点击加载\n- **扫描**：输入音频文件夹路径 → 点击扫描\n  - 支持：wav、mp3、flac、ogg、opus\n\n### 步骤 2：配置\n- 设置**数据集名称**\n- 勾选**全部为纯音乐**（如果没有人声）\n- 设置**自定义激活标签**（LoRA 的唯一触发词）\n- 选择**标签位置**：前置、后置或替换\n\n### 步骤 3：自动标注\n- 点击**自动标注全部**生成描述、BPM、调性、拍号\n- 使用**跳过元数据**跳过 BPM/调性/拍号（更快）\n\n### 步骤 4：预览与编辑\n- 使用滑块浏览样本\n- 手动编辑描述、歌词、BPM、调性\n- 每个样本点击**保存更改**\n\n### 步骤 5：保存\n- 输入保存路径 → 点击**保存数据集**\n\n### 步骤 6：预处理\n- 设置张量输出目录 → 点击**预处理**\n- 将音频/文本编码为张量用于训练\n\n### 📖 文档\n- [LoRA 训练教程](https://github.com/ACE-Step/ACE-Step-1.5/blob/main/docs/zh/LoRA_Training_Tutorial.md) — 完整分步指南\n- [Side-Step 高级训练](https://github.com/ACE-Step/ACE-Step-1.5/blob/main/docs/sidestep/Getting%20Started.md) — 命令行训练，支持高级功能",
    "training_train": "## LoRA 训练教程\n\n### 设置\n1. 输入**预处理张量目录** → 点击**加载数据集**\n2. 配置 LoRA：\n   - **秩** (r)：默认 64。越高 = 容量越大\n   - **Alpha**：通常为秩的 2 倍（128）\n   - **Dropout**：0.1 用于正则化\n\n### 训练\n3. 设置**学习率**（从 1e-4 开始）\n4. 设置**最大轮数**（默认 500）\n5. 点击**开始训练**\n6. 监控损失曲线 — 应该随时间下降\n7. 满意时点击**停止训练**\n\n### 导出\n8. 输入导出路径 → 点击**导出 LoRA**\n9. 在设置中加载：设置 LoRA 路径 → 加载 LoRA → 启用使用 LoRA\n\n### 🚀 推荐使用 LoKr 加速训练\nLoKr 大幅提升了训练效率，原来需要一小时的训练现在只需 5 分钟——**速度提升超过 10 倍**。这对于在消费级 GPU 上训练至关重要。切换到 **Train LoKr** 标签页即可开始。\n\n### 提示\n- 显存有限时使用小批量（1）\n- 梯度累积增加有效批量大小\n- 频繁保存检查点（每 200 轮）\n\n### 📖 文档\n- [LoRA 训练教程](https://github.com/ACE-Step/ACE-Step-1.5/blob/main/docs/zh/LoRA_Training_Tutorial.md) — 完整分步指南\n- [Side-Step 高级训练](https://github.com/ACE-Step/ACE-Step-1.5/blob/main/docs/sidestep/Getting%20Started.md) — 命令行训练，修正时间步采样、LoKR、显存优化",
    "training_lokr": "## 🚀 LoKr 训练教程\n\nLoKr（低秩 Kronecker 积）大幅提升了训练效率，原来使用 LoRA 需要一小时的训练现在只需 5 分钟——**速度提升超过 10 倍**。这对于在消费级 GPU 上训练至关重要。\n\n### 设置\n1. 输入**预处理张量目录** → 点击**加载数据集**\n2. 配置 LoKr：\n   - **Linear Dim**：默认 64（类似 LoRA 的秩）\n   - **Linear Alpha**：默认 128（缩放因子）\n   - **Weight Decompose (DoRA)**：默认启用，质量更好\n\n### 训练\n3. 设置**学习率**（LoKr 通常使用更高的学习率，从 1e-3 开始）\n4. 设置**最大轮数**（默认 500）\n5. 点击**开始 LoKr 训练**\n6. 监控损失曲线 — 应该随时间下降\n7. 满意时点击**停止训练**\n\n### 导出\n8. 输入导出路径 → 点击**导出 LoKr**\n9. 在设置中加载：设置 LoRA 路径 → 加载 LoRA → 启用使用 LoRA\n\n### LoKr vs LoRA 对比\n| | LoKr | LoRA |\n|---|---|---|\n| 速度 | ⚡ 快约 10 倍 | 较慢 |\n| 显存 | 更低 | 更高 |\n| 质量 | 相当 | 基准 |\n| 适合 | 消费级 GPU、快速迭代 | 追求最高保真度 |\n\n### 提示\n- LoKr 使用 Kronecker 分解实现极致效率\n- 启用 **DoRA**（Weight Decompose）可提升质量\n- 使用 **Tucker 分解** 可进一步压缩\n- 更高的学习率（1e-3）通常比 LoRA 的 1e-4 效果更好",
    "training_export": "## 使用训练好的 LoRA\n\n### 导出\n1. 训练后，输入导出路径\n2. 点击**导出 LoRA**\n\n### 加载与使用\n1. 在设置中，将 **LoRA 路径**设置为导出目录\n2. 点击**加载 LoRA**\n3. 启用**使用 LoRA** 复选框\n4. 生成音乐 — 你的 LoRA 风格将被应用\n\n### 提示\n- 在描述中使用你的**自定义激活标签**来触发风格\n- ⚠️ LoRA 与 INT8 量化不兼容\n- 你可以卸载并在不同的 LoRA 之间切换"
  },
  "gen": {
    "enable_normalization": "启用归一化",
    "enable_normalization_info": "将音频音量归一化到目标峰值电平，以防止削波或确保一致的响度。",
    "normalization_db": "目标峰值 (dB)",
    "normalization_db_info": "分贝单位的目标峰值电平。-1.0 dB 是标准安全峰值。-0.1 dB 是最大值。",
    "latent_shift": "Latent 偏移",
    "latent_shift_info": "VAE 解码前对 DiT latent 施加的偏移量。默认 0（不偏移）。负值（如 -0.04）可减少爆音。",
    "latent_rescale": "Latent 缩放",
    "latent_rescale_info": "VAE 解码前对 DiT latent 施加的缩放因子。默认 1.0（不缩放）。小于 1.0 的值（如 0.91）可减少爆音。"
  }
}
