MAW / DOCS

MAW documentation

Launcher 工具箱

文稿匹配、AI 整理、翻译、时间码与媒体处理。

本文同步自 MAW 原始仓库的 docs/user/TOOLBOX.md。

工具箱分为「字幕处理」与「媒体工具」。前者处理字幕文字或时间码,后者处理媒体。希望转写后自动执行多个步骤时,使用 自动处理链。

选择输入与输出

字幕后处理的「处理文件」可用 .mosp、旧 .json 或 SRT,默认跟随 Launcher 的当前工程/字幕。成功处理生成带操作后缀的新文件,并将新路径填回处理输入;源文件不覆盖。可选择「工程 + SRT」「仅工程」「仅 SRT」。

媒体工具有独立「媒体文件」输入,默认跟随 Launcher,允许手动覆盖;清空后恢复跟随。它不会改写字幕后处理的输入链。

文稿匹配

选择 UTF-8 的 .txt、.md 或 .markdown 文稿,用其文字修正已有字幕。该模式在本地执行,不需要 LLM,也不上传文稿。

  • 按顺序对齐,比较时忽略大小写、空白和标点;匹配度不足时不写产物。
  • 断句与句尾标点共用「⚙️ 设置 → 断句与标点」清单,默认剥除 ,。;,.、保留 ?!;删掉符号即取消它的断句作用,换行始终生效。
  • 默认清理成对的 Markdown 标记,只保留可见文字;预览与匹配共用同一结果,可关闭清理。
  • 所有启用字幕都有完整 items 时,根据字符时间码重新断句;SRT 或时间码不完整的工程保留原有分段时间槽。
  • 文字变化后清除不能对应新文字的旧 items;禁用字幕保留原样。
  • 录音里存在、文稿里没有的完整 ASR 字幕段会保留,不会并进下一句文稿。

结果使用 .文稿匹配(英文 .match)后缀。这是把文稿作为文字真源的修正方式,需要保留录音中的改说时可使用下面的 AI 整理。

AI 口播整理:以录音为准

进入「AI 处理」,选择「AI 口播整理」。参考文稿可选;没有文稿时直接根据原始转写和上下文判断。补充要求填写在自定义提示词中。普通「文稿匹配」仍是本地的确定性文字对齐工具,不调用 LLM。

模型按完整表达比较重录版本,而非孤立的短字幕:保留独有的方法、数字、条件、否定和承接,清理明确的过程话、作废 take、真重复、假起头和句内磕巴。不能仅凭文字判断音质,也不会按目标删减比例压缩。

模型输出类 Markdown 编辑稿,本地固定脚本转换为 MOSP:

[c001] 原文直接保留
[c002] ~~整段删除的原文~~ %删除:后面有完整重录版本%
[c003] ~~重复起头~~保留的原文
[c004] 原文 %待确认:需要回听原声%

每个目标行必须出现一次,整段删除也要明确划删,漏输出不能作为删除。脚本拒绝改写、重排行、无效 ID 和切开多字 item 的划删;模型不生成时间码。时间范围只取工程中完整 item 的整数毫秒来源。缺少完整字词时间的段保留并标待核查,SRT 通常需先生成字词时间码。

原文已有 ~~、百分号或反斜杠格式会在编辑底稿中转义,仍按原文字面保留;只有模型新增的划删才用于整理。数字、比例、否定与限定条件不能因重复折叠而被静默删去,无法安全核验时保留并标待确认。

编辑稿 MOSP 结果
未标记的文字 保留原始转写,无需生成逐段「保留原因」。
整段划删 禁用该字幕及其绑定副字幕,删除范围写入可恢复空隙层。
句内划删 只写入 gap_remove.provenance.sources.ai_cleanup,保留原始 segments/items。
待确认 保留原文,写入 markers.items[*].review.status=pending 的待核查区段。

整理后默认追加一轮漏清扫描,再通读剩余文稿审计信息覆盖与承接。首轮没有删除也会扫描;最终审计只能恢复危险删除或标注疑点,不能扩删。每批最多一次漏清和一次安全审计,每个工序的无效响应至多重试一次,任一最终协议失败或写出前取消,不生成部分结果。内部 review_enabled=False 可跳过这两个复查工序,GUI 不提供开关。

输出新 .AI整理.mosp / .AI整理.srt(英文 .ai-cleanup)。导出 SRT、ASS 和动态字幕时按当前生效的 AI 空隙派生文字,源工程文字保持可恢复;恢复局部空隙后派生文字随之恢复。编辑器原始字幕列表仍用于查看与恢复来源。整段删除同时禁用了字幕,恢复时还需启用该字幕。绑定副字幕的句内文字不会自动翻译或改写。

在「标记与区段」检查待核查项,并试听删除接口。删除 [AI] 注释不会恢复字幕或空隙决定。LLM 收到临时 ID、字幕、完整词项和可选参考文稿文字,不收到音频、路径或时间码;请求次数增加,费用以供应商账单为准。

生成处理前后对比结果

「AI 处理」中勾选此项后,同时生成离线 HTML;口播整理、校对、翻译、断句和自定义任务均可使用。结果列表中的「对比 HTML」可打开页面,展示连续文稿、原文与结果、划删及待核查原因,支持筛选和搜索。页面是生成时的快照,之后编辑工程不会更新页面。合并/拆分字幕的逐段对应按时间范围展示,连续文稿用于通读最终结果。

未勾选不生成 HTML。自动计划的口播整理、校对、断句与翻译共用并保存此开关;旧计划任一 AI 步骤启用了对比页,载入时都会恢复勾选,即使不保留中间文件,对比页仍保留在输出目录。旧版「文稿匹配 + AI 整理」计划会迁移成独立的口播整理步骤,供应商旧记忆也迁移,已有的新选择优先;单文件限制保留。

也可由两个工程快照生成页面:

python scripts/build_ai_comparison.py before.mosp after.mosp --output comparison.html

固定替换

每行填写 原文 => 新文,按顺序执行;可在替换后转简体或转繁体。该功能在本地运行,不改变分段时间;文字变化的段清除旧逐词时间码。

AI 校对、翻译与断句

先在 Launcher 的 LLM 后处理配置保存供应商、地址、模型与 Key,并测试连接。工具支持校对、重新断句、翻译成中文/英文和自定义文字任务。

预设任务说明只读,自定义提示词始终可编辑;切换任务不清空自定义文字。普通文字任务返回经过校验的文字或 ID 分组;重新断句只标断点,原文与时间由本地程序重建。完整规则见 LLM 协议。

重新断句与最大字数

选择「重新断句」,可填写「每条字幕最大字数」,例如 18;留空按自然语义断句。计数按中文、英文、标点逐字符计算,空白不计,限制每条字幕的总字数而非排版后的每行字数。

模型先通读前后文,按完整意群合并过碎短句、拆分过长表达;脚本校验断点并对超长结果补拆,原文、标点和词级时间保持来源。完整词项、数字单位或缺时间码的整段本身超过上限时保留并提示,可先生成词级时间再重新断句。部分段缺时间码不会让其他段整体降级。已有禁用、说话人变化与长停顿作为处理边界。

口播整理后再断句会保留已有局部删减及其恢复能力:字幕的原文和全部词项仍在工程中,导出继续隐藏当前生效的删减内容;人工恢复对应空隙后,文字也会恢复。已有可靠删减无法保持词项绑定时会中止写出,保留输入工程。

当前副字幕绑定要求一对一。已有绑定的主字幕会保持原 ID、文字、时间和词项,并成为断句边界;其他未绑定字幕正常处理,绑定段超过字数限制会提示。建议先重新断句,再翻译或创建副字幕绑定;已有工程需调整这类段时,先解除对应绑定。

设置字数上限时,脚本会对连接词悬尾、孤立引导语等相邻断点局部重平衡,优先保留模型的自然边界,数字与帧、像素等单位不拆开。这些语义规则是软偏好,严格上限仍可能拆开主谓或动宾;如果结果过碎,可放宽上限或留空,并生成对比页检查。完整短回答不会仅因字数少而被强行合并。

上限会保存到自动处理计划。勾选「生成处理前后对比结果」可查看字幕边界变化与连续原文,结果仍需人工确认阅读节奏;网络失败保留的原段可能超过上限,会明确提示。

翻译输出 结果
双语合一 原文与译文放入同一个字幕段,按设置上下排列。
回填 将需翻译的句子替换为译文,其他句子保留。

翻译成中文时,无其他文字脚本且 CJK 占中文与拉丁字母总量至少 70% 的句子会跳过,其余发送;翻译成英文时不把所有拉丁字母文本当成英语跳过,以免漏翻其他语言。双语合一会清除无法对应双行文字的旧 items;回填中未翻译的句子保留原数据。带双语合一/回填标记的文件会阻止重复翻译。

重新断句在完整字词时间码输入上可使用 item-aware 协议,保留字词时间码;普通文字变化会清除失配的 items。无效响应的补救、部分结果和失败行为按协议区分,不保证每种任务都能输出部分结果。

长任务中单批网络中断、超时或 HTTP 408 / 429 / 5xx 会保留该批原字幕并继续,翻译补齐请求也按整批保留。按警告列出的字幕范围复核;全部请求失败、没有可用结果或鉴权/配置/协议错误仍中止。详见 LLM 协议。

生成时间码

各功能的输入、文字真源、时间处理和重录能力见 文稿与时间码工具对比。

已有准确文稿与录音但没有工程时,将处理方式切为「仅使用文稿对齐」。每个非空行生成一条字幕,同时输出新 MOSP 与 SRT;短录音整段对齐,长录音使用静音或人工锚点。此模式只使用 Qwen ForcedAligner,需听审录音,详见 文稿驱动对齐(实验性)。

可先检查输入与分块,无需下载模型;检查不改变当前工程或写出字幕。文稿模式支持独立的音轨序号 / 输出目录,生成结果列出采用的策略、行数与块数。

为 SRT 或缺少字词时间码的工程选择原始媒体,再使用 Qwen3-ForcedAligner 或 FireRedASR2-CTC:

  • 「补充缺失」只处理缺少完整 items 的段。
  • 「重新生成」替换原来的字词时间码。
  • 工程有有效媒体引用时可直接使用;SRT 必须指定媒体。

结果写入新文件;失败段保留原时间并报告。环境、缓存和对齐器准备见 本地 ASR。

OCR 去重

视频画面已烧录字幕时,可检测重复字幕并将命中段禁用,避免再次叠加。先安装独立 OCR 运行环境,再选择 CPU RapidOCR tiny 或 small、画面范围及相似度阈值。

默认完整画面,长视频可限制到字幕区域。OCR 不改文字和时间;可额外生成逐段 CSV 报告。纯音频或无媒体引用的 SRT 需要另选视频。完整说明见 OCR 字幕去重。

媒体工具

生成波形

可只生成媒体工程和缓存,也可生成后直接打开编辑器。频谱另行选择;它比普通波形耗时。生成波形只为定位和显示,不执行 ASR。

烧录字幕

选择视频与 .srt、.ass 或 .ssa,生成新的 H.264 MP4;输入视频不覆盖,重名结果加后缀,任务可停止。

SRT 使用样式库中的 SRT 默认样式;ASS / SSA 保留文件内嵌样式。编码器可自动、CPU 或显式硬件编码器;CRF、预设和音频码率可保存默认值。默认 CRF 18、预设 medium、音频 192k。

「生成绿幕视频」无需视频源:使用纯绿色画布输出无音轨 MP4,结束于最后字幕之后半秒。SRT 默认 1920×1080、30 fps;ASS / SSA 优先采用其脚本分辨率,奇数尺寸补成偶数。没有有效字幕结束时间时不生成结果。

macOS 烧录需要支持 libass 的 FFmpeg;安装了 Homebrew ffmpeg-full 时程序优先尝试它,显式 FFMPEG_PATH 仍优先。

提取音频

FFprobe 列出音轨序号、语言、标题、编码和声道信息。选择音轨后输出新的 AAC .m4a,不修改原媒体。

FFconcat 媒体重组

在编辑器中使用「去空隙导出 → 重组后视频」,按当前工程绑定的源媒体和保留区间生成新媒体。视频重组采用流复制,实际切点受关键帧与编码包边界影响,需试听核对。音频工程显示「重组后音频」,使用当前选定音轨解码后按样本精确裁切和拼接,导出 WAV,保持源采样率、声道及采样精度;音频切点不受视频关键帧或压缩音频包边界限制。工程与 SRT 时间轴不会自动改写,应同时导出配套的去空隙字幕。

如果要交给外部 FFmpeg 工具,可从「去空隙导出」单独导出 FFconcat 文件,并与配套的去空隙字幕一起使用。