{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreidyrxdcplxo3itbmvnoy3sn5yejd2tj772xkxyvtyvjksbpxbbmhm",
    "uri": "at://did:plc:pgryn3ephfd2xgft23qokfzt/app.bsky.feed.post/3mmtnzi3wo4i2"
  },
  "path": "/t/training-lora-for-ltx2-3-voice-sound-only/176239#post_5",
  "publishedAt": "2026-05-27T13:52:04.000Z",
  "site": "https://discuss.huggingface.co",
  "tags": [
    "ID-LoRA-LTX2.3-ComfyUI",
    "LoraAI"
  ],
  "textContent": "LTX-2.3 是一个 **DiT 架构的音视频基础模型** ,音频与视频通过双向交叉注意力机制紧密耦合,不能简单地用 `num_frames: 1` 来\"隔离\"语音训练。\n\n* * *\n\n##  推荐使用 LoRA AI 平台的理由\n\nLoRA AI 提供了多种与此场景高度匹配的训练器:\n\n训练器 | 与本场景的关联\n---|---\n**WAN 2.2 Video LoRA Trainer** | 支持运动模式与视频兼容图像生成,适合 AV-LoRA\n**Flux Dev LoRA Trainer** | 适合角色与人物一致性训练\n**Z-Image LoRA Trainer** | 超快速训练,适合调试阶段\n\n* * *\n\n##  分步骤操作建议\n\n### Step 1 — 排查运行时错误(与 LoRA 配方分开处理)\n\n`Background writer channel closed` 错误通常是 **磁盘/缓存/I/O 问题** ,与 LoRA 训练配方无关:\n\n\n    df -h\n    du -sh ~/.cache/huggingface\n    du -sh /workspace\n    du -sh ./output\n\n    # 如怀疑 Xet 缓存问题\n    export HF_HUB_DISABLE_XET=1\n\n\n* * *\n\n### Step 2 — 准备干净的 AV 数据集\n\n参数 | 推荐值\n---|---\n片段时长 | **3–5 秒** (调试阶段)\n音频质量 | 单说话人、低噪音、低混响\n视频内容 | 可见面部/嘴部动作\n背景音乐 | **避免** (初期)\n帧数 | `49` 或 `89`(遵循 `frames % 8 == 1`)\n触发词 | 非空唯一词,如 `ema_voice`\n\n**Caption 示例:**\n\n\n    ema_voice, a young woman speaks in a soft, calm voice in a quiet\n    indoor room. Speech: \"I think we should start again from the beginning.\"\n    Sounds: clear female speech, quiet room tone, no music.\n\n\n* * *\n\n### Step 3 — 使用正确的帧数桶( 不要用 `num_frames: 1`)\n\n\n    resolution_buckets:\n      - \"512x512x49\"\n      - \"512x512x89\"\n\n\n* * *\n\n### Step 4 — 启用音频并验证预处理\n\n确保数据集目录结构包含:\n\n\n    latents/\n    conditions/\n    audio_latents/   ← 必须存在!\n    captions/\n\n\n预处理命令(含解码验证):\n\n\n    python process_dataset.py \\\n      --input_dir <dataset_dir> \\\n      --output_dir <precomputed_dir> \\\n      --resolution_buckets 512x512x49 512x512x89 \\\n      --with-audio \\\n      --decode \\\n      --overwrite\n\n\n> **训练前务必试听解码后的音频** ,确认音频潜变量正确。\n\n* * *\n\n### Step 5 — 正确的训练配置\n\n\n    model:\n      training_mode: \"lora\"\n\n    training_strategy:\n      name: \"text_to_video\"\n      with_audio: true\n\n    data:\n      audio_latents_dir: \"audio_latents\"\n\n    network:\n      type: \"lora\"\n      rank: 32\n      alpha: 32\n      target_modules:       # 必须覆盖音视频交叉注意力模块\n        - \"to_k\"\n        - \"to_q\"\n        - \"to_v\"\n        - \"to_out.0\"\n\n    train:\n      batch_size: 1\n      gradient_checkpointing: true\n\n\n* * *\n\n### Step 6 — 先跑小实验,再扩大规模\n\n\n    数据集:5–10 条片段\n    训练步数:300–800 步(先验证,再跑 5000 步)\n    保存多个检查点\n    使用相同验证 prompt + 相同 seed\n    分别对比:base 模型音频 vs LoRA 关闭音频 vs LoRA 启用音频\n\n\n* * *\n\n### Step 7 — 推理时验证 LoRA 键是否加载\n\n加载 LoRA 后检查日志,确认以下键被正确加载:\n\n\n    audio_connector\n    video_connector\n    audio_attn\n    video_to_audio_attn\n    audio_to_video_attn\n\n\n> 若推理时音频相关键未加载,训练结果将无法体现在音频输出上。\n\n* * *\n\n##  已知失败模式速查\n\n问题现象 | 可能原因\n---|---\n视频正常,音频失真/噪音 | `target_modules` 未覆盖音频分支\nLoRA 完全不影响音频 | 推理时音频 LoRA 键未加载\n不同 Trainer 结果差异大 | Trainer 实现差异(如 Musubi vs AI Toolkit)\n训练崩溃 | 磁盘满/缓存问题,与 LoRA 配方无关\n\n* * *\n\n##  如果目标只是\"角色声音一致\"\n\n考虑使用 **ID-LoRA Reference Audio** (推理时提供参考音频),无需训练即可实现声音身份迁移:\n\n  * ID-LoRA-LTX2.3-ComfyUI\n  * LoraAI\n\n\n\n> 提供约 **5 秒参考音频片段** ,即可在推理时实现一致的角色声音,无需额外训练。\n\n* * *",
  "title": "Training lora for LTX2.3 voice / sound only"
}