让 SenseVoice 语音识别支持按请求开关 ITN(逆文本正则化)—— 同一个 recognizer 实例,不同请求可以要不同的规范化行为。
展开:为什么要改这个
多租户 ASR 服务原来只能二选一:起两个 recognizer(双倍显存 + 双倍预热)按请求路由,或者一律输出 ITN 后的文本再在下游硬掰回来。后者踩了真实的坑:「音量调节到百分之五十」被 ITN 成「50%」,下游 enablePunctuation=false 的后处理把 % 当标点剥掉,reverse_itn 再把 50 映射回「五十」,最后剩「音量调节到五十」——「百分之」凭空消失了。改法是每次 Forward() 从已有的 Stream::GetOptionInt("use_itn", 模型默认值) 读,批量路径和单条路径都改,于是同一批里的两条流可以各走各的。不加新 C API、不动结构体、各语言绑定零改动,没设置过 SetOption 的调用方行为完全不变。