test+docs: 「对白没读完」教训固化到框架(引擎回归测试 + 审计工具 + 四处文档)

- web/harness/engine-voice.test.mjs:引擎 voice 句尾保真三不变式(I1 源未耗尽不得结算 /
  I2 耗尽后排空窗才断开 / I3 零消耗走旧路径),可驱动 SPN mock 模拟真实消耗,
  15 断言全绿;防止未来重构回潮
- tools/audit_voice_tails.py:voice 资产尾部静默审计工具入库(含判读口径头注:
  尾静默紧=裁剪工艺≠剪字,句尾完整性验收在引擎层)
- 文档:HANDOVER(§1.4 回归清单 / §5.3 质量手段 / §6 已解决账)、roadmap §4
  新增全游戏「句尾完整性」真机听测项、asset-pipeline QC 口径、methodology §5
  度量盲区教训(媒体播完类问题转写层无效,必须真人耳测+引擎断言)、
  web-engine-api voice 自然结束语义
- 修正:结束判定改用 filter.sourcePosition(SimpleFilter 单调精确计数器);
  10 套件全绿(8 playtest + guide + engine-voice)
This commit is contained in:
xsl
2026-09-06 16:08:18 +08:00
parent da01c2d20b
commit f5eae6d37c
7 changed files with 254 additions and 2 deletions
+6
View File
@@ -33,6 +33,12 @@ flock .gpu.lock .venv-tts/bin/python app/src/escape/gen/gen_voice.py
```
- 每条生成后自动校验:**时长 > 0.3s 且峰值 > 0.05**,不达标直接 assert 失败。
- **尾部裁剪与句尾完整性(2026-09 口径)**:管线峰值归一 + 静音尾裁剪很紧,
绝大多数 voice 文件尾部静默 <120ms 属预期,**不等于剪字**。「句子是否读完」
的验收在引擎层(源消耗位置判定 + 300ms 排空窗,见 `web/engine/audio.js
_finishVoice` 与 `web/harness/engine-voice.test.mjs`);资产侧怀疑剪字时用
ASR 抽查末字/语气词核对,量化工具 `tools/audit_voice_tails.py`(判读口径
见其文件头注)。
- 音色分配见各游戏文档(docs/games/*.md):旁白 Uncle_Fu、林晚 Serena、
猎狗 Dylan、小满/广播 Vivian;escape 全员 Uncle_Fu 靠 instruct 区分语气。
- 已知不稳条目:reflex 的 `num_6`("六"),单独用