中文语音识别为什么看 CER 不看 WER

2026-08-24

中文语音识别不按词算错误率,而按字算 CER(Character Error Rate),根本原因只有一条:中文书面语没有天然的词边界,词数本身就不是一个客观量。

英文句子里,空格已经替你把词切好了,“how are you”就是三个词,谁来数都一样。中文没有这个东西。“语音识别系统”是一个词、两个词还是三个词,取决于你用哪个分词器。而 WER 的分母恰恰是参考文本的词数——分母都不稳定,算出来的比率自然没法拿来比。

WER 的公式推导和手算过程属于WER 怎么算:一个公式说清语音识别的准确率,本篇不重复,只讲中文为什么必须换一套口径。

换个分词器,错误率就变了

举个具体的例子。参考文本是:

我们需要一个语音识别系统

识别结果把”识别”错成了”是别”,其余全对。这是一处替换错误,事实层面没有任何争议。

现在看两种分词方式:

  • 粗粒度分词器切成:我们 / 需要 / 一个 / 语音识别系统 → 共 4 个词。错的那个字落在”语音识别系统”里,这一整个词判错,WER = 1 / 4。
  • 细粒度分词器切成:我们 / 需要 / 一 / 个 / 语音 / 识别 / 系统 → 共 7 个词。只有”识别”这个词判错,WER = 1 / 7。

同一段音频、同一个模型、同一处错误,两个数字差了将近一倍。变的不是识别质量,只是分词工具

如果按字算:参考文本 12 个字,错 1 个字,CER = 1 / 12。换谁来数都是 12,这个分母不会因为换工具而变。

CER 就是把”词”换成”字”

CER 与 WER 是同构的,公式一模一样:

CER =(替换数 + 删除数 + 插入数)/ 参考文本的字数

同样由参考文本与识别结果之间的编辑距离对齐得出,同样在插入错误足够多时可以超过 100%——分子里的插入数不受分母约束。唯一的改动就是把计数单位从”词”降到”字”,从而绕开分词这个不确定环节。

要注意 CER 换来的是可比性,不是”更准确地描述体验”。它让不同团队、不同时间的数字能放在一起看,仅此而已。

中英混说,口径必须写出来

现实里的中文语音很少是纯中文。“这个 API 的 latency 有点高”这类句子,一半汉字一半英文单词。这时候按字算就出问题了:英文单词如果拆成字母来数,一个 latency 就顶七个计数单位,权重被严重放大;整词算又和汉字的粒度对不齐。

常见约定是:中文按字、英文按词,混在一起统计,有时写作 MER(混合错误率)。这是个合理的折中,但它是约定而不是标准——有人把英文也按字符算,有人把连续英文当一个整体,有人干脆把英文段落单独统计。

所以真正的关键结论是:口径必须随测试集一起说明。一个孤零零的 CER 数字,如果没告诉你英文怎么处理、标点算不算、数字用什么形式,它就不具备被比较的资格。这不是学究气,是因为上面那些选择造成的差异,经常比模型之间的真实差距还大。

CER 也在掩盖东西

按字算解决了分母的争议,但它把所有错误都当成等价的一个单位,这本身也丢掉了信息:

  • 同音字错误和不相干错误,对 CER 的贡献完全一样。把”在”识别成”再”,读者一眼扫过去基本不受影响;把”在”识别成”载”,句子可能就读不通了。两者在 CER 里都是”错 1 个字”。
  • 标点算不算字,结果会明显不同。标点由后处理模型补,本身就是一个独立的误差来源。把标点纳入统计,测的是整条管道;剔除标点,测的是声学识别。两个数字不该混着比。
  • 数字用什么形式也会左右结果。“二零二五年”和”2025 年”字数不同,评测前有没有做逆文本规范化、比对时统一成哪种形式,都会改变分母和错误计数。

所以合理的做法是:CER 用来做纵向对比和回归监控,具体错在哪、影响多大,还得回去看错误样本。只盯一个数字优化,很容易把资源花在对用户无感的地方。

评测口径检查清单

下次有人给你一个 CER 数字,按这七条挨个问。问不出来的,就当这个数字不存在:

要追问的为什么重要
1. 字怎么数的?标点、空格算不算?直接决定分母,是差异最大的一项
2. 中英混说按什么口径?英文按词还是按字符?不说清就无法与任何其他数字比较
3. 评测前做了哪些归一化?(去标点、繁简统一、数字转写、大小写)归一化越多,数字越好看,也越远离真实产品
4. 测试集从哪来?有没有可能和训练数据重叠?公开集被反复训练过,成绩会虚高
5. 音频有没有被裁过?静音段、串音段是否保留?裁干净的音频不代表线上录到的音频
6. 报的是平均还是分布?最差的那批长什么样?少数长音频的崩溃会被平均值稀释
7. 是每条算一个 CER 再取平均,还是全部错误求和除以全部字数?前者(宏平均)里短句权重被放大,后者(微平均)由长音频主导,两个数经常对不上

第 7 条最容易被忽略,也最容易在两个团队对数时吵起来——双方公式都没错,只是聚合方式不同。报数字的时候顺手写一句聚合方式,能省掉很多来回。

常见问题

问:中文场景下 WER 就完全没用了吗?

不是没用,是不能跨团队比。如果你在自己内部固定一个分词器、固定一份测试集,WER 的变化趋势依然是有效信号。它失效的地方是横向比较:别人报的 WER 和你的 WER 不是同一把尺子。

问:CER 低是不是就等于用户体验好?

不一定。关键信息错一个字(比如金额、人名、订单号)造成的后果,远大于虚词错三个字,但 CER 分不出来。业务上通常要额外定一个关键字段准确率,单独盯专名和数字。

问:粤语、方言、少数民族语言呢?

原则一样:看这门语言的书面形式有没有天然的、无歧义的切分单位。有汉字书写体系的一般沿用按字算;使用拼音文字且有空格分词的,用 WER 更自然。真正要小心的是书写不规范的语言,参考文本本身就不唯一,这时候光换指标解决不了问题,得先把标注规范定死。

问:那我到底该怎么开始?

先建一份用你自己业务音频做的测试集,把上面那七条口径当作测试集文档的一部分写下来。指标是拿来做决策的,决策的前提是数字可比。

相关阅读


本文讲的是语音识别评测领域的通用口径问题,不绑定某一个具体实现。 各家系统与各份公开测试集的统计规则差异很大,请以你所用系统或数据集的官方说明为准。 我们没有对任何方案做过性能实测,因此全文不给准确率、速度一类的数字。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。