词错率(WER)
别称:WER · 字错率 · CER · Word Error Rate
词错率(Word Error Rate,WER)是衡量语音识别准确度的通用指标,等于插入、删除、替换三类错误的数量之和除以人工转写文本的总词数。中文场景通常改用以字为单位的字错率(CER)。
公式
WER = (I + D + S) / N × 100
- 插入(I):识别结果里多出来、参考文本中没有的词;
- 删除(D):参考文本里有、识别结果里丢失的词;
- 替换(S):被识别成了另一个词;
- N:人工转写的参考文本总词数。
微软在自定义语音的评估文档里采用的就是这个定义,并推荐用 NIST 评分工具包(SCTK)里的 sclite 在本地复算。
中文用字错率
中文没有天然的词边界,分词方式不同会让同一段识别结果算出不同的词错率。因此中文一般改用字错率(CER):把单位从词换成字,公式与三类错误的划分完全不变。
三类错误的分布指向不同的问题
总分相同的两次测试,问题可能完全不同。微软官方给出的对应关系是:
- 删除偏多通常意味着音频信号偏弱,应该把拾音拉近;
- 插入偏多说明录制环境嘈杂或存在串音;
- 替换偏多说明领域术语的覆盖不足。
所以拿到测试结果时,先看三类错误的分布,再决定改硬件还是改术语表。
它没有覆盖的部分
词错率只比较词,不管标点、大小写和数字格式。微软为此定义了扩展指标词元错误率(TER),把标点、大小写与逆文本规范化的差异一并计入。字幕的实际可读性更接近 TER 而不是 WER。
数字只在同一条件下可比
厂商公布的准确率几乎都测自干净音频与标准发音。有参考价值的只有你用自己的直播音频、在固定条件下测出来的那个值——换了背景音乐、麦克风或语速,数字就不再可比。