Resample ASR audio to task sample rate

This commit is contained in:
2026-10-12 13:42:49 +08:00
parent 2a5d4f2365
commit 969e9639ec
17 changed files with 239 additions and 34 deletions
+8 -7
View File
@@ -1,13 +1,14 @@
# 当前待办
## ASR 对接边界音频转换(未实现)
## ASR 对接边界音频转换(本地已实现,待真实验收)
- [ ] 将内部媒体格式与 ASR 输入要求分离;内部可继续使用统一格式,不要求服务商支持内部固定的 16000 采样率。
- [ ] 使用获批任务现有参数确定 ASR 目标输入格式,在发送边界转换音频;实际格式已经匹配时不转换。请求中的采样率必须与实际发送音频一致。
- [ ] 不忽略或覆盖任务参数,不仅修改采样率声明,不补 SDK 默认值,不因失败换采样率或换服务商。输入要求不能明确、目标不支持或转换失败时明确报错,不发送格式不匹配的音频。
- [ ] 实现前核查现有音频依赖的转换能力;按 TDD 补充至少 16000→8000、8000→16000、同采样率直通、流式分块与失败测试,核验实际音频而非只检查参数。
- [ ] 真实供应商兼容性须在另获授权后验证;本地结构校验、模拟测试不代替真实签收。
- [x] 内部媒体继续使用单声道 16 kHz PCM16;绑定时读取并校验任务现有 `sample_rate`,不补默认值。
- [x] 在 ASR 发送边界按目标采样率转换实际音频;请求参数原样保留,发送的采样率与音频一致,同采样率时不重采样。
- [x] 缺失、非整数、超出 8–48 kHz 范围或转换后没有完整 PCM16 样本时明确失败;不改写参数、不换率、不换服务商。
- [x] 复用已有 PCM16 转换能力;TDD 覆盖 16→8 kHz ASR、8↔16 kHz 媒体转换、同率直通、分块收发和错误输入。
- [ ] 在获批的隔离 ASR-only 与 full-AI 任务上完成真实 ASR 验证;本地测试不能代替供应商和通话验收。
- [ ] 修正隔离 full-AI 测试任务的 TTS 输出格式与 Agent PCM16 要求不匹配问题,再验证 TTS、LLM、ASR 全链路。
唯一规则来源是共享合同的 [业务规范](../contracts/schema/saas-dispatcher.md) 与 [任务 Schema](../contracts/schema/http-task-detail.schema.json),这里仅记录未完成工作,不维护第二份字段定义。
**当前边界:** Agent 仍使用单声道 16 kHz PCM16,尚未实现上述 ASR 转换。Schema 允许 8000、16000 等参数,只表示配置结构有效,不表示当前程序或任意供应商已经支持。此次仅更新待办、合同、示例及测试,不改变运行行为、不部署、不拨号、不调用 AI。
**当前边界:** 实现位于本地分支 `fix/asr-sample-rate-20261012`,尚未部署。Dispatcher 当前只有 full-AI 任务,没有 ASR-only 测试任务。测试管理页通过 NatApp 隧道访问失败(目标 `192.168.0.3:8888` 不可用),因此尚未创建测试任务,也未对 `15003164745` 或 `15830461047` 发起新呼叫。