mirror of
https://github.com/modelscope/FunASR.git
synced 2026-10-12 02:19:18 +00:00
40 lines
3.4 KiB
Markdown
40 lines
3.4 KiB
Markdown
# 电话车牌语音的微调与评测
|
|
|
|
电话挪车、客服确认和方言口音中的车牌识别,应把逐字 ASR 与最终车牌提取分成两个任务。本文适用于 Fun-ASR-Nano 的离线推理或 LoRA 微调;它不承诺热词能够对车牌做字符级纠错。
|
|
|
|
## 先建立基础模型基线
|
|
|
|
在训练前,对同一批脱敏音频固定模型 revision、运行路径、GPU、语言提示和 `itn=True`,至少保存三组原始输出:无热词、仅省份前缀热词、以及省份前缀加业务词的热词。`hotwords` 是提示词偏置,**不是确定性纠错**;它可能影响局部文本,却不能保证恢复重复确认、中文数字与字母混读里的完整车牌。
|
|
|
|
不要只记录最终业务系统选出的车牌。保存原始 ASR 文本、热词列表、推理日志和音频 SHA-256,才能区分声学漏转、ITN 规整和下游提取错误。
|
|
|
|
## 切分与标注
|
|
|
|
训练样本以一次完整播报或确认轮次为单位,建议切成 **2-12 秒** 的语义片段,并在两端保留约 0.2-0.5 秒自然上下文。不要把整段客服通话随机拼成一条训练样本,也不要只截取孤立的 7 个车牌字符。
|
|
|
|
ASR 标签写实际听到的内容,即**逐字转写**:保留重复、修正、停顿词、中文数字和确认语气。不要把“鄂A六T R零七......六T六G R零七”直接标成一个业务系统选择的最终车牌。最终车牌属于下游规则或结构化模型的任务;把两类标签混用会导致模型学到不可预测的删改。
|
|
|
|
保留原始整通电话只用于端到端回归。训练、开发和测试集应按通话或说话人划分,避免同一通话的相邻片段跨集合泄漏。脱敏后再保存数据,删除手机号、姓名和非必要对话内容。
|
|
|
|
## 数据量与迭代
|
|
|
|
先准备约 **1,000** 条高质量切分片段,留出 15%-20% 的通话级独立验证/测试集。确认相对基础模型存在稳定增益后,再扩到 **3,000-5,000** 条;优先补充当前失败最多的方言、男女声、电话压缩、噪声、字母/数字混读、重复与纠正样本,而不是机械复制相近音频。
|
|
|
|
LoRA 前后必须在同一份冻结集上对照,并记录 checkpoint、训练/验证样本数、随机种子和完整启动日志。若 LoRA 前后的原始输出完全一致,先检查 adapter 是否加载、训练是否收敛,以及标签是否真正进入数据集。
|
|
|
|
## 三项评测
|
|
|
|
每次实验同时报告:
|
|
|
|
1. 逐字 **CER**,用于观察基础转写质量;
|
|
2. 车牌片段 exact match,衡量目标字符是否完整;
|
|
3. **整通话** 的最终车牌准确率,衡量下游规则或小模型是否正确处理重复确认。
|
|
|
|
只看 CER 会掩盖一个字符错位导致的业务失败;只看最终车牌又会掩盖 ASR 漏转。将三项指标和失败样例一起保存,才能决定下一轮应补数据、调整后处理,还是回归模型质量。
|
|
|
|
## 推理边界
|
|
|
|
对 Fun-ASR-Nano vLLM 推理,使用仓库文档中的 `language="中文"`,并把 `itn=True` 传给 `generate()`。ITN 只能规整已识别的文本,无法补回声学模型没有转出的字符,也不会自动在多次确认语音中选择最终车牌。
|
|
|
|
生产链路应先保存 ASR 原始候选,再以省份简称、字母和数字规则生成候选;必要时让下游结构化模型在固定 JSON schema 和合法性校验下选择最终值。详细的 vLLM 参数和热词接口见 [vLLM 中文指南](./vllm_guide_zh.md)。
|