Files
Owner/openspec/changes/separate-wake-and-realtime-transcript/tasks.md
T

7.2 KiB
Raw Blame History

独立本地唤醒与终端转写显示任务

1. OpenSpec 修正与提交

  • 1.1 编写 proposal.md;前置条件:用户明确唤醒使用本地模型;验收标准:覆盖功能目标、详细需求、设计方案、风险与权衡、任务分解、Spec Deltas、实施计划、Git 提交规范;测试要点:人工检查不再把 ASR 唤醒作为默认方案;优先级:P0;预计:50 分钟。
  • 1.2 编写 design.md;前置条件:proposal 完成;验收标准:明确本地 KWS 模型、Runtime 生命周期、接口、错误处理和测试策略;测试要点:设计可映射到代码任务;优先级:P0;预计:35 分钟。
  • 1.3 编写 specs/voice-pet-pipeline/spec.md delta;前置条件:主 spec 已读;验收标准:修改 Wake word、模型管理、live runtime、终端状态和 testability 要求;测试要点:OpenSpec strict 通过;优先级:P0;预计:35 分钟。
  • 1.4 编写 tasks.md 原子任务;前置条件:design/spec 完成;验收标准:每项不超过 1 小时,包含前置条件、优先级、验收标准、测试要点;优先级:P0;预计:25 分钟。
  • 1.5 校验并提交 OpenSpec;前置条件:1.1 至 1.4 完成;验收标准:openspec validate separate-wake-and-realtime-transcript --strictopenspec validate --all --strict 通过后 commit;测试要点:中文提交信息;优先级:P0;预计:15 分钟。

2. 本地 KWS 模型与配置

  • 2.1 扩展 speech_models.py manifest 和路径 helper;前置条件:OpenSpec 提交完成;验收标准:包含 KWS URL、目录、tokens、encoder、decoder、joiner、keywords;测试要点:manifest/default paths 测试;优先级:P0;预计:45 分钟。
  • 2.2 扩展 download_speech_models.py 下载 KWS 模型并写入 keywords 文件;前置条件:2.1 完成;验收标准:脚本幂等,能补齐 models/wake;测试要点:真实下载或 skip existing;优先级:P0;预计:60 分钟。
  • 2.3 扩展 AppConfig.env.example wake 配置;前置条件:字段确定;验收标准:默认 local_kws;测试要点:配置加载测试;优先级:P0;预计:30 分钟。
  • 2.4 扩展 model-check 检查 wake 模型并尝试加载;前置条件:2.1 至 2.3;验收标准:完整模型通过,缺模型结构化失败;测试要点:临时目录和真实模型;优先级:P0;预计:45 分钟。
  • 2.5 验证并提交“本地唤醒模型”模块;前置条件:2.1 至 2.4 完成;验收标准:compileall、相关 unittest、security-check、model-check、OpenSpec 通过后 commit;优先级:P0;预计:20 分钟。

3. Runtime 独立唤醒与实时转写

  • 3.1 实现 SherpaOnnxKeywordWakeWordProvider;前置条件:KWS 路径 helper 完成;验收标准:可加载 KWS 模型,缺文件结构化失败;测试要点:missing/fake provider 测试;优先级:P0;预计:60 分钟。
  • 3.2 修改 LiveVoiceRuntime 注入并使用 wake provider;前置条件:3.1 完成;验收标准:wake 阶段不调用 STT,唤醒命中后录正式问题;测试要点:两轮 runtime STT 调用次数;优先级:P0;预计:60 分钟。
  • 3.3 增加 RuntimeReporter.transcript;前置条件:3.2 完成;验收标准:转写结果在 LLM 前输出;测试要点:reporter 状态顺序;优先级:P0;预计:40 分钟。
  • 3.4 增加唤醒词污染回归测试;前置条件:3.2 完成;验收标准:LLM user message 不含 wake 音频文本;测试要点:fake wake metadata;优先级:P0;预计:30 分钟。
  • 3.5 验证并提交“独立唤醒与转写显示”模块;前置条件:3.1 至 3.4 完成;验收标准:compileall、unittest、security-check、OpenSpec 通过后 commit;优先级:P0;预计:20 分钟。

4. 文档、真实验收与归档

  • 4.1 更新 README;前置条件:实现完成;验收标准:说明本地 KWS、模型下载、model-check、run-live 输出;测试要点:命令可复制;优先级:P0;预计:30 分钟。
  • 4.2 下载并验收 KWS 模型;前置条件:下载脚本完成;验收标准:python3.11 scripts/download_speech_models.py --dir modelsmodel-check 通过;测试要点:输出不泄露 key;优先级:P0;预计:60 分钟。
  • 4.3 执行真实 run-live 验收;前置条件:模型、设备、.env 齐全;验收标准:唤醒命中使用本地模型,终端显示转写结果;测试要点:单轮或两轮状态输出;优先级:P0;预计:60 分钟。
  • 4.4 最终门禁;前置条件:全部实现完成;验收标准:compileall、unittest、security-check、model-check、device-check、OpenSpec strict 全通过;优先级:P0;预计:30 分钟。
  • 4.5 归档变更并提交;前置条件:4.4 通过;验收标准:主 spec 更新,archive 完成,最终 commitgit status --short 为空;测试要点:中文提交信息;优先级:P0;预计:20 分钟。

5. 唤醒应答与快速端点修正

  • 5.1 增加唤醒后本地语音应答;前置条件:本地 KWS 已可唤醒;验收标准:wake 命中后播放“我在”再进入录音;测试要点:fake runtime 播放顺序;优先级:P0;预计:45 分钟。
  • 5.2 清理应答播放期间的麦克风缓冲;前置条件:5.1 完成;验收标准:应答音频不进入正式问题 VAD/STT;测试要点:transport flush 测试;优先级:P0;预计:45 分钟。
  • 5.3 live 默认改用本地 sherpa-onnx VAD 并缩短静音端点;前置条件:模型已下载;验收标准:.env 可配置 VAD provider、静音结束时间和最大录音时长;测试要点:配置和 runtime 构造测试;优先级:P0;预计:45 分钟。
  • 5.4 验证并提交“唤醒应答与快速端点”模块;前置条件:5.1 至 5.3 完成;验收标准:compileall、unittest、security-check、model-check、OpenSpec strict 通过后 commit;优先级:P0;预计:20 分钟。

6. 灵敏度与录音端点恢复

  • 6.1 调整唤醒提示顺序;前置条件:真人验收显示用户可能在“我在”播放前抢说;验收标准:终端顺序为“唤醒命中 -> 应答中:我在 -> 请说出问题 -> 录音中:正在听取问题”;测试要点:runtime reporter 顺序断言;优先级:P0;预计:30 分钟。
  • 6.2 降低默认 KWS 阈值;前置条件:真人反馈“小杰小杰”难触发;验收标准:默认 OWNER_WAKE_KWS_THRESHOLD=0.15README 给出 0.100.20 调参建议;测试要点:配置默认值测试;优先级:P0;预计:20 分钟。
  • 6.3 增加 hybrid VAD 并设为默认;前置条件:真人验收出现 VAD_TIMEOUT_NO_SPEECH;验收标准:本地 VAD 和能量阈值任一判断为语音即可开始/继续录音,默认 OWNER_VAD_PROVIDER=hybrid;测试要点:能量兜底单测、配置校验测试;优先级:P0;预计:45 分钟。
  • 6.4 验证并提交“唤醒灵敏度与端点恢复”模块;前置条件:6.1 至 6.3 完成;验收标准:compileall、unittest、security-check、model-check、device-check、OpenSpec strict 通过后 commit;优先级:P0;预计:30 分钟。