Files
tps-dashboard/doco/note/doco_P3_设计稿.md
T
simonkoson 1372600d71 doco P3-C2: 讯飞ASR适配层接入 + 修复 doco/programs 忽略规则
- C2: asr_adapter 并入讯飞上传/轮询/解析,复用 extract_audio 分离音频,
  新增 doco asr 命令读 C1 热词;真转写 ep001 出 310 句带时间戳
- 补提交 C1 代码(llm.py / term_extract.py)与累积词典
- .gitignore: 挡 doco/programs 下 png/wav/mp4 及中间帧目录、本地 settings

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-17 10:19:08 +08:00

8.9 KiB

Doco 子项目 · P3 设计稿(三方交叉融合)

模块定位:《军事科技》中台终极目标。把 A 稿(脚本)、B 稿 v2(屏幕字幕)、ASR(口语实况)三方交叉融合,产出最接近播出的终版文稿。 前置:P1(帧筛)、P2(本地 OCR + 扒词流水线,产出 B稿_v2.txt 743 行)已完工。 状态:设计冻结,待开发。 设计时间:2026-06-15 本稿在原 doco_project_design.md 基础上,据 P2 成果与制片人最新决策修订。冲突处以本稿为准


一、两个交付物(内容一致,形态不同)

交付物 给谁 形态 用途
融合 B 稿 爱德华(另一项目) 逐条碎句 + 密集字幕级时间戳 [XmYs] 文本 字幕/片段定位,时间精度优先
融合 A 稿 编导 公文格式 docx,保留【导视】【主持人N】【解说N】【专家N】【隔断】分段 最像播出版的存档稿,方便编导复用

一致性约束:融合 A 稿由融合 B 稿生成(按 A 稿分段结构归拢 + 套格式),所以两者内容天然一致——是"构造出来的一致",不是事后比对硬凑。


二、流水线四阶段(注意依赖顺序:术语提取必须在 ASR 之前)

A稿 ──► ①术语提取·更新词典 ──► 本期热词表
                                   │
视频 ──► ②分离音频·转码WAV ──► 讯飞STT(热词+pd=mil) ──► 新ASR(带时间戳)
                                                            │
B稿v2 ⊕ 新ASR ──► ③交叉复审 ──► 融合B稿(碎句·时间戳·给爱德华) + fusion_review留痕
                                   │
融合B稿 + A稿(语义对齐分段) ──► ④LLM语义融合 ──► 融合A稿(公文docx·给编导)

沿用 P2 的工程纪律:各阶段解耦、中间产物落缓存、可断点续跑、可单独重跑

Stage C1 — 术语提取 + 词典更新(规则层 + 轻量 AI)

  • 从 A 稿提取专有名词(武器/型号/番号/人名/机构/技术概念),并入中台累积词典
  • 词典字段:term / domain / first_seen_episode / frequency逐期累积,越用越准
  • demo 词典(34 条热词)作为基线,本期在其上增量更新(如 F/A-18E/F 大黄蜂、歼-10、黄貂鱼无人加油机…)。
  • 产出本期热词表(讯飞上限 200 个,每个 2–16 字,| 分隔)供 Stage C2 用。

Stage C2 — 音频分离 + 讯飞 ASR(适配层)

  • ffmpeg 从视频分离音频 → 转码 16kHz / 单声道 / 16bit WAV(讯飞硬要求,否则报误导性 language verify fail)。
  • 调讯飞「录音文件转写(标准版)」(不要大模型版,免费包阉割 language 参数)。参数:pd=mileng_smoothproc=trueeng_colloqproc=truehotWord=<C1热词>
  • 签名:signa = base64(HmacSHA1(MD5(appid + ts), secretKey))。上传 /upload 拿 orderId,轮询 /getResult 到 status=4。
  • 产出新 ASR(句级,带时间戳,格式 [XmYs] 文本),落缓存 asr_v2_timed.txt + 原始 json。
  • 起点代码:xfyun_asr_standard.py(demo 已跑通),按下方安全要求改造。

Stage C3 — B⊕ASR 交叉复审 → 融合 B 稿(给爱德华)

  • 形态:甲 — 保持 B稿v2 的碎句粒度(743 行),密集字幕级时间戳原样保留;ASR 只做复审纠错,不改变行结构、不并到句级
  • 复审做三件事:① 用 ASR 比对查 B 稿有没有重复行/错漏;② 屏幕术语拼写以 B稿v2 为准(见优先级表);③ B 稿明显 OCR 错字而 ASR 对的,用 ASR 覆盖。
  • 不机械逐字标记:由 LLM 读语义判断"是否真分歧",一两个字的等价差异不算分歧。
  • 产出:融合B稿.txt(碎句+时间戳) + fusion_review.csv(机器做了选择/拿不准的地方留痕)。

Stage C4 — 语义融合 → 融合 A 稿(给编导)

  • 拿融合 B 稿,按 A 稿分段结构语义对齐归拢成段(参照未融合的 A 稿语义,不是机械时间切分)。
  • LLM 读 A 稿语义,理解后重组为"最像播出版"的段落文本,套公文格式。
  • 全自动,不阻塞主流程:拿不准的段落照常产出 + 进 fusion_review,不卡住出稿。
  • 产出:融合A稿.docx(公文格式)。

三、三方权威优先级(据 P2 修订 —— B 稿地位升级)

关键变化:原设计把 B 稿定为"OCR 错字多,仅作交叉验证,权威最低"。P2 后 DeepSeek-OCR 产出的 B稿v2 屏幕术语拼写又准又干净,故 B 稿升级加权

看什么 信谁 说明
屏幕术语 / 型号 / 番号(箭-3、萨德、见证者-136) B稿v2 ≈ A稿 并列权威 B 稿是屏幕实际打出的字,常更贴近播出;A 稿是规范写法。两者一致则采用,冲突进 review
口语实况 / 语序 / 语气 ASR 主持人/专家实际怎么念(含临场改词)
书面结构 / 完整语义 / 分段 A 稿 编导书面版,管【…】分段与段落语义骨架
同音事实错(美以→美伊) A 稿 / B稿v2 覆盖 ASR ASR 同音误识,句子通顺但语义荒谬,靠 A/B 发现
整段是否存在 B稿v2 + ASR 联合判定 两者都无 → A 稿该段为未播出,标记删除

四、融合 A 稿公文格式(Stage C4 出稿规范)

层级 字体 字号 / 其他
大标题 方正小标宋
一级标题 黑体
二级标题 仿宋,加粗
正文 仿宋 四号(14pt),1.25 倍行距

⚠️ 字体可用性:方正小标宋是商业字体,生成 docx 的机器若未安装,Word 会静默回退、版式垮掉(同字体类坑)。出稿前须确认制片机/编导机已装方正小标宋(公文常用,多半有);否则在脚本里配置回退字体(如标宋→宋体加粗)。用 docx skill 实现时按 GB/T 9704 党政机关公文格式参照。


五、留痕与人工策略

  • 全自动产出,绝不阻塞主流程。编导拿到的是干净成品,无需做对齐/确认工作。
  • 机器做了选择或拿不准的地方(B/ASR 分歧、低把握段落改写、疑似整段删除、疑似编导笔误)全部甩进 fusion_review.csv 留痕,供编导/爱德华事后复核,不卡出稿。
  • 改动类型枚举沿用原设计:unchanged / minor_edit / term_normalize / rewrite_large / segment_delete / segment_add / editor_typo;带 confidence,低把握的进 review 文件。

六、安全:密钥外置(开发第一件事)

  • 现状问题:xfyun_asr_standard.py 第 41-42 行明文硬编码了讯飞 APP_ID / SECRET_KEY,且该文件已进 project,凭证已暴露。建议在讯飞控制台轮换该密钥
  • 正式做法:凭证只存制片机本地(xfyun_credentials.json 或环境变量,且加入 .gitignore 不进库),脚本运行时读取。代码与对话中只引用变量名,绝不出现真值
  • 三套密钥互不相通:讯飞消费端(听见 App)≠ 讯飞开发端(开放平台,本模块用)≠ Claude API。本模块用开发端 + Claude API。

七、外部依赖

  • 讯飞开放平台「录音文件转写(标准版)」—— 开发端密钥已就绪(制片机本地)。
  • Claude API(Stage C4 语义融合)—— 建议 claude-sonnet-4-6 起步;单期上下文 A稿6k + ASR5k + B稿~5k ≈ 16k 字,窗口充裕;每期 1–3 次调用。
  • 本地 DeepSeek-OCR / Ollama —— 由 P2 提供 B 稿,本阶段不直接调。
  • ffmpeg —— 音频分离 + 转码。

八、数据资产(中台共享,逐期累积)

  1. A 稿术语表 / 词典(核心):讯飞热词来源 + 规则层纠错字典,双重身份;逐期累积,识别质量滚雪球上升。基线 = demo 34 热词。
  2. OCR 错字映射表:肘→时、娈→变、夭→天… 随版本扩展(P2 已观察到 DeepSeek-OCR 错字远少于旧引擎,此表主要兜底)。
  3. 编导风格档案(远期):累积每位编导删改偏好,用于参数自适应。

九、待办与风险

  • 并发版 Stage A 提速(P2 遗留):OCR 串行 ~30 分钟/期,GPU 空转;首选并发 4–8 路(OLLAMA_NUM_PARALLEL),预计压到十分钟出头。P3 期间并行处理。
  • 离线小机房模型搬运(P2 遗留):拷 .ollama/models 文件夹。
  • 方正小标宋字体可用性:出稿前确认,见第四节。
  • 讯飞单源依赖:远期接阿里云 ASR 做备份/交叉。
  • 整段删除/编导笔误判定:高风险,全自动产出但务必进 review 留痕。

十、本期可复用资产(demo / P2 产物)

文件 用途
B稿_v2.txt(743 行) Stage C3 输入(屏幕字幕,P2 产出)
A稿_..._定稿.docx(实为 md 文本) Stage C1 术语源 + Stage C4 分段语义参照
xfyun_asr_standard.py Stage C2 起点代码(须先密钥外置)
demo 词典(34 热词) Stage C1 词典基线
源视频 Stage C2 音频源
现代防空反导大对决_终版.docx / 差异报告.docx 集成测试黄金对照

P3 设计冻结。下一步:按 Stage C1→C4 拆任务给 Cline,沿用解耦+缓存+可重跑工程纪律。