fix: ASR字幕路径叠加标题,修复封面没有标题的问题 #1374
Reference in New Issue
Block a user
Delete Branch "fix/cover-title-asr-path"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
根因
_maybe_generate_ass的 ASR 路径直接return,跳过了generate_ass_subtitles()(负责标题叠加),导致 ASR 字幕生成的 ASS 文件中没有标题generation.py设置auto_generated=True但未设置enabled=True,导致模板subtitle.enabled=false时 ASR 路径从未被触发修复
unified_render_service.py
_overlay_title_on_ass()追加标题事件_overlay_title_on_ass()辅助函数:复用build_ass_content生成 TitleStyle + Dialogue,插入到 ASR 生成的 ASS 文件中generation.py
voice_ids注入时同步设置subtitle_cfg["enabled"] = True测试
根因: 1. _maybe_generate_ass 的 ASR 路径直接 return,跳过了 generate_ass_subtitles() (负责标题叠加),导致 ASR 字幕生成的 ASS 文件中没有标题 2. generation.py 设置 auto_generated=True 但未设置 enabled=True, 导致模板 subtitle.enabled=false 时 ASR 路径从未被触发 修复: - unified_render_service.py: - ASR 路径生成 ASS 后,调用 _overlay_title_on_ass() 追加标题事件 - ASR 无结果/失败时,如有标题仍降级生成标题 ASS - 新增 _overlay_title_on_ass() 辅助函数:复用 build_ass_content 生成 TitleStyle + Dialogue,插入到 ASR 生成的 ASS 文件中 - generation.py: - voice_ids 注入时同步设置 subtitle_cfg['enabled'] = True 新增 6 个测试,全量 13651 passed🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
代码审查结果 - PR #1374
⚠️ 问题(2个需要修改)
[Events]段或Format: Layer,行(即events_format_idx为 -1)时,执行events_format_idx += 1会导致索引变为 0。随后的插入操作会将标题 Dialogue 错误地插入到文件头部(如[Script Info]之后),导致 ASS 文件结构损坏,字幕无法正常渲染。subtitle_cfg["enabled"]设为True会覆盖用户的配置。如果用户明确配置了“不显示字幕”但配置了“显示标题”,此修改会导致系统强制生成 ASR 字幕并显示,违背了用户意图,属于功能逻辑错误。💡 建议(1个可选)
splitlines()再"\n".join()会统一换行符为\n。如果原文件是 Windows 风格(\r\n),写入后会被改变。建议在读取时记录换行符类型或统一使用\r\n(ASS 标准通常兼容),以避免 Git diff 出现大量换行符变更或某些严格播放器的兼容性问题。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-08-15 06:19:21 | 模型:
🗑️ 预览环境已清理
PR #1374 已关闭或合并,对应的预览环境已被清理。