口播逐字稿(talk-transcription v1)
两条上位纪律(先读):① 逐字稿是口播的唯一事实源——字幕、剪取、弹幕、封面文案都引用它,
所以"宁可标听不清,也不许猜";② 不做书面化润色,把口语改成书面语属于篡改原话(G-TK1)。
适用场景
- 怼脸随手拍的单条长镜头口播(3–60 分钟),里面全是语气词、停顿、卡壳、跑题与口误自纠;
- 需要逐字字幕的视频(字幕就是他说的话,不是"文案组的改写版");
- 需要按句精剪的素材(逐句留删的前提是逐句时间戳);
- 访谈/连麦等多人素材也可以复用,但说话人分离必须另行标注(本技能不猜说话人)。
输出契约
产出 talk_transcript(契约 schemas/talk-transcript.schema.json,执行器 pnpm edit:talk-asr):
| 字段组 | 内容 | 下游用途 |
|---|
| 素材身份 | 指纹、路径、时长、帧率、语言 | 时间轴溯源(G-ED3) |
| 通道与精度 | 通道(导入/本机/引擎)+ 精度(词级/句级) | 精度非词级时禁止直接精剪(fail-closed) |
| 逐字稿 | 词级时间戳 + 句表(原样文本,不润色) | 字幕、剪取、弹幕的唯一来源 |
| 口语标记 | 语气词 / 停顿 / 重复 / 口误自纠 | 剪取决策的输入 |
| 话题块 | 块标题、起止、句清单、切换线索 | 选段、多片拆分、章节条 |
| 统计 | 词数、语气词率、停顿秒数、死停秒数、语速 | 人味指标基线 |
3. 三条通道与精度纪律
| 通道 | 触发方式 | 精度 | 适用 |
|---|
| 导入稿 | `--transcript <json | srt | vtt>` |
| 本机引擎 | 本机 whisper 词级时间戳 | 词级 | 单机离线、隐私素材 |
| 远端引擎 | --engine <url>(OpenAI 兼容接口) | 词级或句级(如实标注) | 无本机算力时 |
精度纪律(硬):句级/估算稿禁止直接进精剪——按估算时间码切片会切进词里(这是本管线最贵的返工)。
必须先用词级 ASR 重出,或显式 --allow-segment-precision 并在回执写明。
4. 断句与标记口径
- 断句:优先按气口(词间停顿 ≥0.45s)切;连续说话没有气口时按字数上限兜底(默认 42 字),
且不得切在未闭合的引号/括号里。
- 语气词(分两类,处置不同):填充(嗯/呃/啊,可删性高)与语篇连接(然后/其实/就是,可删性低,
删了容易断气)。标记不等于删除——删留由《口播精剪》按语境决定。
- 停顿(分三级):换气(<0.65s,保留)、思考(0.65–1.2s,压缩)、死停(>1.2s,压缩到保留一点气口)。
句间停顿优先保留(段落感),句内停顿按级处理。
- 重复(分四类):单字连续重复(卡壳)、词组重复(重录)、修辞性重复(一口气复述 = 强调,保留)、
整句重启(保留更完整的一次)。
- 口误自纠:命中提示词(不对/我是说/应该是…)时,把提示词前的"错句"与之后的"纠正"一起标记。
自纠是活人感高价值证据,默认保留,只压缩中间死停。
决策原则(含阈值与失败关闭)
- 逐字原样优先:输出文本与音频实际所说逐字一致(允许去标点差异);任何"顺手修正"都算篡改(G-TK1)。
- 精度如实标注:只用句级时间戳时必须写
precision=segment,并让下游显式放行才能继续;隐瞒精度即事故。
- 无通道不猜情绪:本技能不做情绪判断;情绪交给《情绪与活人感》,避免"转写工位顺手猜情绪"制造伪证据。
- 时间码只取引擎与信号层:禁止用"字数 ÷ 语速"自造时间戳;缺时间戳时整批失败关闭。
- 失败关闭(fail-closed):三条通道都不可用时明确报错并给出替代路径,绝不产出空壳逐字稿。
打法库(场景 → 动作序列 → 判据)
- 主线·长口播标准转写:抽音频(16k 单声道)→ 词级转写 → 断句 → 标记 → 统计 → 落库(判据:词级覆盖率 100%、标记齐全)。
- 分支·只有句级稿:标记
precision=segment → 回执写明"估算词级" → 下游显式放行或重出词级稿(判据:回执字段与下游放行记录同时存在)。
- 分支·背景噪声大:先做降噪/高通(不改变语速与停顿形态)再转写;不确定处标
[听不清](判据:听不清处不得出现"通顺但无依据"的句子)。
- 分支·多人素材:逐句标说话人并说明依据(音色/称呼/视觉),无把握不标(判据:说话人归属抽检 ≥90%)。
SOP(每步带触发/回执/失败路径)
- 触发(素材入库完成)→ 抽音频并跑词级转写 → 回执:逐字稿 + 通道 + 精度 + 词数;失败:通道不可用即明确报错,不产出空壳稿。
- 触发(转写完成)→ 断句与口语标记 → 回执:标记清单(语气词/停顿/重复/自纠)与统计;失败:时间码越界或词序倒置即整批退回重跑,不静默跳过。
- 触发(标记完成)→ 与信号层(停顿/包络)交叉复核 → 回执:冲突清单(转写停顿 vs 检测停顿);失败:冲突超阈值即重跑该段,并把结论写进回执。
关键指标(含基准与护栏)
| 指标 | 口径 | 基准/阈值 | 类型 | 来源 |
|---|
| 词级覆盖率 | 带词级时间戳的词 / 全部词 | 100%(非词级必须标注) | 护栏 | 逐字稿回执 |
| 逐字一致率 | 与音频逐字一致的句子 / 抽检句 | ≥98% | 质量 | 人工抽检 10% |
| 标记覆盖率 | 有标记的语气词/停顿/重复 / 检出总数 | 100% | 护栏 | 标记清单 |
| 听不清标注率 | 标 [听不清] 的片段 / 实际听不清片段 | ≥90% | 质量 | 人工抽检 |
| 单条转写耗时 | 每分钟音频的处理时间 | ≤0.5× 音频时长(本机) | 成本 | 回执时间戳 |
失败模式(症状 → 检测器 → 处置)
| 症状 | 检测器 | 处置 |
|---|
| 字幕像书面语 | 与音频逐字比对 | 判定为改写,回退重写并记录(G-TK1) |
| 时间码与画面对不上 | 停顿检测 vs 转写时间戳交叉核对 | 以信号层为准重对齐;仍不一致则换引擎重跑 |
| 语气词被"顺手删掉" | 逐字一致 + 语气词率异常低 | 判定为润色,退回原样转写 |
| 只有句级时间戳却按词级在用 | 精度字段与下游参数核对 | 立即停用该稿,标 precision=segment 并重出 |
| 出现素材里没说的话 | 人工抽检 + 与音频比对 | 删除该句并全量复核,必要时更换引擎 |
5. 自检清单