判断中文语音转写准不准,先用同一份人工校对稿作参考,再统计替换、删除和插入错误。中文通常没有天然空格分词,字符错误率 CER 是一个便于复现的起点;它回答的是“相对参考稿有多少字符编辑错误”,不能单独证明说话人、时间轴或会议结论正确。
下面使用 JiWER 4.0.0。两组短句是人工构造的计算示例,不来自任何产品的真实识别记录,也不代表工具排行榜。文档与接口核验日期为 2026 年 10 月 1 日。

一、先定义人工真值和比较规则
从有权处理的录音中挑一组能代表使用场景的短片段,人工逐句回听,保存参考文本 reference。对每个候选工具提交同一段音频,把未经人工修好的识别结果保存为 hypothesis。不要拿已修过的稿子参加工具比较,也不要用一个模型的输出当作另一个模型的真值。
比较前写清口径:是否统计标点、空格、大小写、繁简、数字写法和语气词。本例采用 NFKC 规范化、英文转小写、去标点与空白;保留数字、否定词与语气词,也不自动转换繁简。若你关心标点质量,应另做检查,不能在去掉标点的 CER 上声称标点正确。
二、理解 CER 公式
CER = (S + D + I) / N。S 是替换字符数,D 是删除字符数,I 是插入字符数,N 是参考文本字符数;匹配使用最小编辑距离。工具和指标定义见 JiWER 官方项目说明。
| 人工参考 | 模拟识别稿 | 错误 | CER |
|---|---|---|---|
| 明天下午三点开会 | 明天下午四点开会 | 三→四,1次替换;参考8字 | 1/8=12.50% |
| 请确认方案 | 请确认新的方案 | 多出“新的”,2次插入;参考5字 | 2/5=40.00% |
这两句整体 CER 为 (1+2)/(8+5)=23.08%,不是两句百分比的简单平均。要比较长短不一的片段,用全组错误数除以全组参考字符数,否则一句很短的片段会被赋予过大权重。
三、复制代码计算并查看错误位置
Windows PowerShell 中建立独立环境:
py -3.11 -m venv .venv-cer
.\.venv-cer\Scripts\python.exe -m pip install jiwer==4.0.0
保存为 check_cer.py:
import unicodedata
from jiwer import process_characters, visualize_alignment
def normalize_text(text):
text = unicodedata.normalize("NFKC", text).lower()
return "".join(
ch for ch in text
if not ch.isspace()
and not unicodedata.category(ch).startswith("P")
)
reference = ["明天下午三点开会。", "请确认方案。"]
hypothesis = ["明天下午四点开会。", "请确认新的方案。"]
if len(reference) != len(hypothesis):
raise ValueError("参考与识别片段必须一一对应")
ref = [normalize_text(x) for x in reference]
hyp = [normalize_text(x) for x in hypothesis]
if any(not x for x in ref):
raise ValueError("本例只评估非空语音片段,空参考请单独评估")
out = process_characters(ref, hyp)
print(f"CER={out.cer:.2%}")
print(f"S={out.substitutions} D={out.deletions} I={out.insertions}")
print(visualize_alignment(out))
执行:
.\.venv-cer\Scripts\python.exe check_cer.py
对上面两组模拟文本,应得到 CER=23.08%,错误计数 S=1 D=0 I=2。再查看字符对齐,确认“点”前的三/四被替换、第二句多出新的。这里是确定文本的计算结果;它没有调用语音模型,也没有测量任何产品的转写效果。字符级计算和可视化接口依据 JiWER 官方使用文档。
四、换成真实录音后,怎样得到有用结论
把 reference 和 hypothesis 替换成你逐片段整理的文本,两份列表保持相同顺序。每个片段记录音频文件名、起止时间、人工参考、原始识别稿、工具与模型版本、语言配置、规范化规则。转写有漏段时,对应 hypothesis 仍留空字符串,不能删掉这一对样本来让结果变好看。
先按同一规则得到整体 CER,再分开检查人名、数字、单位、日期和否定词。上例“三点→四点”只有一次字符替换,却改变了会议时间;另一个稿子即使 CER 更低,若把“不要付款”识别成“要付款”,也可能更不适用。最终选择应同时看关键事实错误、人工修改时间,以及所需字幕或发言人字段是否正确。
不同口音、噪声、多人抢话和专业术语应分别记录。只测一条干净普通话录音,不能推断复杂会议的表现;也不能把去标点后的数字与别人采用原文口径的数字直接比较。
五、这些结果容易被误读
- CER 可能超过 100%:插入字符数很多时,错误总数可能大于参考字符数。不能把它当作“准确率”,也不应机械地用 1−CER 得到一个业务准确率。
- 空参考需要单独处理:JiWER 4.0 对空参考有明确行为,纯静音却输出文字会形成插入错误;这类样片可以检查幻觉,不能混淆成普通非空句子的误差比例。
- 错误不是模型全部造成的:人工真值写错、片段对应错位或两组不同的文本清洗规则,也会增加误差。异常时先回听和检查数据配对。
- 中文直接套默认 WER 会改变统计单位:没有一致的中文分词规则时,先用 CER;需要 WER 时,必须给所有候选使用同一个分词器与规则,并报告该口径。
两个转写工具 CER 一样,怎么选择?
逐项看错在哪:关键姓名和数字是否正确、漏段是否严重、人工修正要多久、输出能否回听定位。CER 是可比较的文本指标之一,不提供统一合格分数;你应按实际用途制定关键错误不可接受的条件。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30397.html