|
| 1 | +# ADR-030:ASR 质量增强批——自验证路线 + 参数治理 + 全量精修 + 混淆画像闭环 |
| 2 | + |
| 3 | +> 状态:**已接受**(2026-09-03,用户裁决 C:P0~P2 全批立项,v0.20 系列) |
| 4 | +> 关联:[asr-optimization-plan(决策稿)](../Foresight/asr-optimization-plan.md) · [ADR-003](./ADR-003-streaming-asr-architecture.md)(本 ADR 修订其 §决策 4/5 口径)· [ADR-012](./ADR-012-streaming-asr-quality-fixes.md) · REQ-263~270(已登记)· [v0.20 版本文档](../versions/v0.20.md) · [v0.19 检索与发现层设计](../superpowers/specs/2026-09-03-v0.19-rag-retrieval-discovery-design.md)(转写文本质量互依) |
| 5 | +
|
| 6 | +## 背景 |
| 7 | + |
| 8 | +repowiki(.qoder/repowiki/zh/content,2026-09-03 生成)+ 代码互证盘点发现:① 纯 ASR 保真度 90% 为未实测经验值,多批"真机验收待执行";② VAD/端点/重打分/融合/去重阈值全员经验化、多处文档自注"需实测校准";③ 实时会话只有端点句 SenseVoice 重打分(3s 有界),导入才是全窗两遍——缺"会话级全量精修"档;④ 术语/专名错(同音)是笔记资产污染主因,ASR 侧无 OCR 那样的混淆画像闭环;⑤ 文档/实现落差三例(Silero VAD 零代码引用、GPU 决策仅属 OCR、DTW 漂移校正未接线)。用户裁决:人工真机验证几乎不可能 → 验证必须**代码自验证**;按 C 范围立项 P0~P2。 |
| 9 | + |
| 10 | +## 决策 |
| 11 | + |
| 12 | +1. **自验证路线(验证主纲)**:新增 `bin/asr_eval` harness——批量样本(音频/视频+参考)→ 转写(流式/离线、参数矩阵、预处理开关)→ dtw_align 对齐 → cer.rs 计 CER → 同音错对画像 → A/B 对比表 → 回归退出码;有参考样本沉淀 fixtures + CI 回归。 |
| 13 | +2. **参考信道策略**:外挂/内嵌字幕轨(~100%)> 字幕 OCR 多帧投票(~99%)> 会话内字幕段;**无参考素材不进 CER 评测**(只做稳定性/画像/回归)。结论只作相对对比与回归,不宣称绝对指标。 |
| 14 | +3. **DTW 漂移校正接线**:`dtw_align.rs` 纯函数+测试已备但无生产调用点 → 接入字幕融合入口 + 漂移估计分布统计(无人工观测依赖)。 |
| 15 | +4. **参数治理**:阈值族(VAD 预热/窗口/倍率、端点 rule1/2/3、重打分门限、融合 gap/SIM/权重、去重阈值)集中**配置化/档案化**(JSON 校准与 audio_preproc_config 先例);经 asr_eval 自动 A/B 标定后定默认并持久化;预处理链(默认关)默认定案以数据支撑(REQ-101 口径延续)。 |
| 16 | +5. **会话全量离线精修档**:会话结束用 S4 落盘音频全量 SenseVoice 第二遍 → 段级 diff → 预览**采纳/回退**;原料层不可变(可逆契约延续),替换段标记来源与置信。 |
| 17 | +6. **混淆画像闭环**:ASR 同音错对画像(以参考文本对齐统计)→ 候选纠错表(**共现才替换**、确认制——OCR ocr_confusion 机制迁移)→ 反哺 hotwords;全部 JSON 可校准、golden 防误删。 |
| 18 | +7. **可选 LLM 文本校对**:建议制逐句(非直改),content_gate 双闸门**默认关** + 成本审计;**仅文本上云,语音不出本机红线维持**;失败/离线降级规则路径。 |
| 19 | +8. **换芯门控**:同 crate 换模型(sherpa-onnx 生态内)经 asr_eval 同评测集裁决(CER×延迟×体积×热词支持);跨运行时(FunASR/FireRed/Qwen3 系)与语音上云需**另行 ADR + 用户授权决策**,默认不做。 |
| 20 | +9. **规范口径修订(规范先行)**:ADR-003 §决策 4/5 与 AGENTS.md 技术栈行更新为实现口径——VAD 为**能量自适应**(vad_adaptive.rs,Silero 未接线)、"两遍解码"实现语义 = 实时端点句重打分/导入全窗;GPU 设备决策仅属 OCR(wiki 混写案例不入规范)。 |
| 21 | + |
| 22 | +## 备选(否决) |
| 23 | + |
| 24 | +- **人工语料/真机验证基线**:用户裁决不可行(无人工转写与真机走查条件)——验证主纲改自验证。 |
| 25 | +- **直接跨运行时换芯**(FunASR 服务/FireRedASR/Qwen3-ASR):无自测证据 + 服务形态/GPU 与本地单机架构冲突;精度收益(公开口径 2.9~3.8% 级)需产品场景裁决——门控为决策 8。 |
| 26 | +- **无治理的参数乱调**:阈值全量进代码常量→无法 A/B 与回退——配置化/档案化先行。 |
| 27 | +- **LLM 校对直改产物文本**:破坏"人类裁决+可逆契约"——建议制(决策 7)。 |
| 28 | +- **语音上云高精度档**:隐私红线(学习数据不出本机)——默认不做,需独立授权+ADR。 |
| 29 | + |
| 30 | +## 影响 |
| 31 | + |
| 32 | +- 正向:验证尺子落地(后续所有 ASR 改动可自动回归);参数族首次有数据支撑的默认值;实时会话获得导入同级的离线质量档;术语/专名错误有自动发现与修正闭环;文档口径收敛。 |
| 33 | +- 代价:asr_eval 与 fixtures 为新增开发面;全量精修命令与采纳/回退 UX;配置化迁移涉及既有常量与 env 入口(向后兼容:默认值不变则零行为漂移);AGENTS/ADR-003 修订记录。 |
| 34 | +- 风险:字幕参考误差稀释 CER 精度(只作相对结论);画像纠错误改(共现+确认制防御);全量精修 CPU 峰值(后台任务+可取消)。 |
| 35 | + |
| 36 | +## 合规性验证 |
| 37 | + |
| 38 | +- asr_eval 回归退出码挂 CI;fixtures goldens 全绿(cargo test);每批产出 A/B 结论页(预处理默认/VAD/端点/融合/去重);精修采纳流单测(原料不可变断言);画像闭环单测(共现才替换、确认制);content_gate 默认关路径测试;全量回归(cargo test/clippy/vitest/tsc)。 |
| 39 | + |
| 40 | +## 相关决策 |
| 41 | + |
| 42 | +- ADR-003(本 ADR 修订其 §4/5 实现口径)· ADR-012(流式质量修复——重打分/端点规则基调)· ADR-010(AI 增强层·文本上云契约)· REQ-041/068/101(预处理/音频落盘/CER 微基准) |
| 43 | + |
| 44 | +## 参考 |
| 45 | + |
| 46 | +- [asr-optimization-plan(决策稿,含证据分级与待核查清单)](../Foresight/asr-optimization-plan.md) · v0.20 版本文档 · repowiki 相关页面(溯源见方案附 A/B) |
0 commit comments