[异步播报打断]:完成播放中麦克风监听和音色隔离,包含后台监听、助手回放抑制和用户音色打断测试

This commit is contained in:
mkbk
2026-06-18 16:19:30 +08:00
parent d83f5a19cb
commit 6153cd2826
16 changed files with 584 additions and 71 deletions
@@ -126,3 +126,11 @@
- [x] 16.3 重构 `VoiceAssistantPipeline/TurnController` 支持自动 follow-up;前置条件:16.2 完成;验收标准:回复后先判定 continue/standbycontinue 时播放完进入 `followup_listening`,3 秒内用户直接回答无需 wake/ACK,超时恢复 standby;测试要点:连续对话、follow-up timeout、上下文只写 final STT;优先级:P0;预计:60 分钟。
- [x] 16.4 实现可打断播放路径;前置条件:16.3 完成;验收标准:TTS 播放前 500 ms 忽略回声,之后检测到至少 250 ms 有效用户语音且 realtime partial 有效时触发 `barge_in_detected -> playback_interrupted`,上下文只写已播出的 assistant 文本;测试要点:guard window 不打断、有效输入打断、未播文本不进上下文;优先级:P0;预计:60 分钟。
- [x] 16.5 执行门禁并提交“连续对话判断”模块;前置条件:16.1 至 16.4 完成;验收标准:compileall、unittest、simulate-live --turns 3、real-live-check --turns 2 --no-playback、security-check、model-check、device-check、OpenSpec strict、git diff check 通过后提交;优先级:P0;预计:60 分钟。
## 17. 异步播报打断与音色隔离
- [x] 17.1 更新 OpenSpec 和 README 描述异步监听与音色隔离;前置条件:用户确认当前打断仍未真正异步且会被助手回放干扰;验收标准:proposal/design/spec/tasks/README 明确后台监听线程、停止信号、用户临时音色画像、助手回放音色抑制和非持久化边界;测试要点:OpenSpec strict;优先级:P0;预计:45 分钟。
- [x] 17.2 扩展配置和 Transport 停止接口;前置条件:17.1 完成;验收标准:新增 `OWNER_BARGE_IN_SPEAKER_GATE_ENABLED``OWNER_BARGE_IN_USER_SIMILARITY_THRESHOLD``OWNER_BARGE_IN_ASSISTANT_REJECT_THRESHOLD``OWNER_BARGE_IN_LISTEN_INTERVAL_MS``OWNER_BARGE_IN_CHUNK_MS``play_pcm_chunks()` 支持播放侧只检查 stop signal;测试要点:配置默认值、校验和 chunk 停止测试;优先级:P0;预计:45 分钟。
- [x] 17.3 实现 `AsyncBargeInMonitor``BargeInSpeakerGate`;前置条件:17.2 完成;验收标准:播放时后台线程独立读取麦克风,排除助手回放音色,确认用户音色后设置 stop event,并把已确认用户帧接入后续 capture;测试要点:异步读取、助手音色不触发、用户音色触发、画像不足降级;优先级:P0;预计:60 分钟。
- [x] 17.4 接入 `VoiceAssistantPipeline` 播放路径并补充文档;前置条件:17.3 完成;验收标准:TTS 回复使用异步打断,ACK 和结束提示音不打断,播放期间不输出实时字幕,README 说明新参数和调参边界;测试要点:打断事件顺序、上下文只写已播文本、pending capture 不丢首字;优先级:P0;预计:60 分钟。
- [x] 17.5 执行门禁并提交“异步播报打断”模块;前置条件:17.1 至 17.4 完成;验收标准:compileall、unittest、simulate-live、real-live-check --no-playback、security-check、model-check、device-check、OpenSpec strict 通过后提交;优先级:P0;预计:60 分钟。