# ADR 0006: 本地语音端点检测所有权 ## 状态 Accepted(实现与主机/构建验证;声学阈值待实机验收) ## 决策 - `domain` 独占本地语音端点契约、VAD 实例、分帧和连续人声/静音状态,声明于 `domain.h`。不向其他 facade 复制这些契约。 - `platform` 保持通用 PCM 观察者原语,将单订阅扩为固定两个槽位,供本地命令 和端点检测共享同一份 AEC 后 PCM。回调同步执行、不可阻塞,不新增采集任务。 - `control_plane` 在真实网络拾音启动后按 PTT generation 启用检测,查询领域快照, 只结束匹配代次的活动输入;保留 8 秒兜底和现有状态机的唯一收尾路径。 - 端点检测不在回调中停止采集或发送协议。平台停止先与在途采集串行,再由原采集任务补齐 最后一个 Opus 帧、限时排空发送;失败时废弃传输,不宣告正常结束或无限重试。 - 停止端点检测先禁用订阅并等待在途回调,再释放 VAD。超时保留资源供重试, 不安排后台释放。快照按值返回,所有 VAD 状态由互斥锁保护。 ## 迁移与资源 1. 先扩展通用 PCM 订阅和明确音频停止语义,维持旧调用兼容。 2. 新增领域检测器和可关闭配置,再接入现有 PTT 推进器。 3. 主机验证实际 C 的分帧、代次、失败释放、订阅隔离和尾包顺序,构建启用/关闭配置。 4. 实机检查慢语速/停顿/噪声/远场/提示音、唤醒和按键、取消/断网/OTA,记录 端点到 StopSpeech/首个下行/播放的分段延迟及内部 RAM 最低余量。 固定检测帧为 320 个 int16 样本(640 B),不新增任务、队列或 DMA 缓冲。 WebRTC VAD 的库内分配及采集任务栈峰值需日志和设备测量,不能用帧大小冒充总开销。 检测初始化失败回退原输入窗口,不影响流式上行。