背景
上游 funasr_spk_server 的 I1 已合并(PR zlxlabs/funasr_spk_server#4),服务端现在支持结构化 ASR terms,并通过 HTTP/WS capabilities 明确声明当前默认引擎是否可消费该能力。
本 issue 只跟踪 VideoTranscriptAPI 消费侧接入;上游仓不会跨仓修改这里的代码。
协议
- 先请求 ASR server
GET /capabilities。
- 建立 WebSocket 后读取
connected.data.capabilities。
- 两侧都必须满足:
schema_version == 1
features.terms == true
engine 与预期 effective engine 一致
capability_id 存在且完全相同
- 只有上述检查全部通过,才可在
upload_request.data.terms 中发送非空字符串数组。
- 缺失、404、超时、非 JSON、schema 不支持、engine 不符、
terms=false、两侧 id 不一致或重连后未重新探测,均须 fail closed:不发送非空 terms,并返回/记录稳定的 terms_not_supported 原因。
- 空 terms 不触发 capability gate,也不改变现有上传与转录行为。
capability_id 绑定 schema_version/engine/runtime/features 的 canonical 内容;客户端不自行计算,只比较 HTTP 与当前 WS 连接收到的值。
terms 来源与整理
- 从当前业务的 KeyInfo/术语库提取专名词条,在调用 ASR 前完成来源聚合。
- 只发送词条数组,不发送任意 prompt 或整段上下文。
- 保持稳定顺序;空项、重复项可以由上游再次规范化,但消费侧应避免无意义膨胀。
- 不在日志中记录术语原文;只记录数量、能力判定和失败原因。
验收标准
非目标
- 不在客户端构造 Qwen prompt。
- 不引入 terms fingerprint/cache variant。
- 不修改上游 speaker diarization、word_align 或转录引擎选择。
背景
上游
funasr_spk_server的 I1 已合并(PR zlxlabs/funasr_spk_server#4),服务端现在支持结构化 ASRterms,并通过 HTTP/WS capabilities 明确声明当前默认引擎是否可消费该能力。本 issue 只跟踪 VideoTranscriptAPI 消费侧接入;上游仓不会跨仓修改这里的代码。
协议
GET /capabilities。connected.data.capabilities。schema_version == 1features.terms == trueengine与预期 effective engine 一致capability_id存在且完全相同upload_request.data.terms中发送非空字符串数组。terms=false、两侧 id 不一致或重连后未重新探测,均须 fail closed:不发送非空 terms,并返回/记录稳定的terms_not_supported原因。capability_id绑定schema_version/engine/runtime/features的 canonical 内容;客户端不自行计算,只比较 HTTP 与当前 WS 连接收到的值。terms 来源与整理
验收标准
upload_request携带 terms;后续 chunk/finalize 不重复携带或改写 terms。task_complete.result.metadata回显context_applied=true与正确terms_count。invalid_terms+ reason 做结构化错误映射,不静默截断或吞错。非目标