低置信度路由:转写质量的分层兜底设计
批量转写场景里有个绕不开的矛盾:机器转写 95% 的段落没问题,但剩下 5% 的错误如果混进合同、纪要、客服质检这类下游,代价远超省下的人工。全量人工复核太贵,全信机器又不敢。解决方案是把引擎返回的置信度(confidence)当成路由依据,做分层兜底——这套设计我们内部叫"置信度路由"。
为什么置信度值得单独设计一层
多数转写接口都会返回逐句或逐词的置信度分数,但常见用法只是拿来做个统计报表。其实它最值钱的用法是分流:不同分数段的文本,走不同的处理通道,每条通道只花该花的钱和人力。
三层路由结构
| 层 | 置信度区间 | 处理方式 | 典型占比 |
|---|---|---|---|
| 直出层 | ≥ 0.9 | 原文直接进下游 | 70~80% |
| 二跳层 | 0.7 ~ 0.9 | 换引擎重转或 LLM 顺滑,双结果对比 | 15~25% |
| 人工层 | < 0.7 | 进人工复核队列 | 5% 左右 |
直出层没什么可说,关键在后两层的设计。
二跳层是性价比所在。中置信段落通常错在专有名词、同音词这类"可修复错误",两种二跳策略按成本选:换第二个转写引擎重转一次,取两版一致的部分(一致即高概率正确);或者用大模型对着音频上下文做顺滑校正。实践中二跳能把这层里 60% 以上的段落修复到可直出。
人工层要做得足够轻。进队列的段落带上时间戳上下文(前后各一句),复核的人不需要听完整音频,只听对应片段——两小时录音的人工工作量被压缩到几分钟。
工程实现的关键点
阈值不是拍出来的,是校准出来的
0.9 / 0.7 不是魔法数字。正确做法:抽一批人工校对过的样本,画出置信度-实际错误率曲线,按业务容错度选阈值。合同类场景可以把人工层阈值提到 0.8,内部速记场景可以砍掉人工层。
置信度要校准后再比
不同引擎的置信度分布不同(有的引擎天然偏高),跨引擎对比前先做线性校准,否则路由会系统性偏向某一个引擎。
路由要有观测面板
三层的分流比例、二跳修复率、人工队列积压量,三个指标盯住。某天直出层占比突然掉 10 个点,通常意味着音频源质量变了(换了录音设备、会议室变了),这是比错误率更早的预警信号。
一段参考实现
def route(sentences, hi=0.9, lo=0.7):
direct, second, manual = [], [], []
for s in sentences:
if s.confidence >= hi:
direct.append(s)
elif s.confidence >= lo:
second.append(s)
else:
manual.append(s)
fixed = second_pass(second) # 二跳修复
return direct + fixed, manual # 成品 + 人工队列
小结
置信度路由的思路可以推广到几乎所有概率性 AI 能力的落地上:TTS 的发音校验、OCR 的低分块复核、翻译的回译一致性检查。核心是同一个判断——不要追求模型全对,把钱和人只花在模型没把握的那一小段上。我们用算邻坊的随心语音转文字跑这套分层,客服质检场景的人工复核量降到原来的二十分之一,而抽检错误率反而更低了:人工终于只看那些真正需要人看的东西。
- 点赞
- 收藏
- 关注作者
评论(0)