术语表 / 它怎样听你说话

词错误率

又称:WER

更新于

定义

词错误率(WER)是衡量语音识别准确度的标准指标:模型出错的词数,除以实际说出的词数。5%的WER意味着大约每二十个词中,就有一个被替换、遗漏或凭空添加。

WER统计三种错误。替换是在正确的位置写了错误的词(把“there”写成“their”)。删除是说出的词没有出现。插入是出现了一个从未说过的词。把三者加起来,除以正确转写文本中的词数,就得到这个比率。在音频很差时,它可能超过100%,因为插入的数量没有上限。

这个数字只有对照测量时所用的音频才有意义。一个在播客麦克风录制的、清晰朗读的英语上得到3%的模型,同一个说话人换到咖啡馆里可能得到15%,换成它训练时见得较少的语言则更差。公开的WER数字几乎都是在标准基准数据集上测得的,这些数据比你桌前的实际环境干净得多。

WER反映不了什么

每个错误都算作一样,而它们并不一样。漏掉一个“um”是改进;漏掉一个“not”则会让意思完全相反。拼错一个姓氏,你得改一次;拼错一个“the”则毫无代价,因为你根本看不到它。格式对WER来说完全不可见:“1030 am”和“10:30 AM”是同样的词。所以,一个原始WER稍差、但格式化处理好得多的工具,生成的文字需要的修改可能少得多。

所以你真正在意的数字,更接近“格式化之后每百词的修改次数”。没有任何基准会报告它,你只能用自己的工作听写一周来测量。

如何看待厂商的准确度宣称

问一问是哪个基准、哪种语言、哪支麦克风。没有说明数据集的“99%准确”只是一句营销话术。问一问这个数字是在任何纠错步骤之前还是之后,以及是否用上了个人词典。再把它与WER看不到的东西放在一起权衡:名字、数字,以及文字出来时是成文还是转写文本。

降低你自己的错误率

换一支更好的麦克风、离嘴更近,比更换任何模型都更有帮助。在松开按键之前把句子说完,能给模型提供消除歧义的上下文。再为你实际会说的名字和术语建立个人词典,就能修复反复出现的错误,而这些正是要紧的错误:一个月出现一次的错误只是小麻烦,每天都出现的错误则会让你不想再听写。

如何在Mac上测量你自己的词错误率

你可以用一个叫jiwer的免费开源工具,在你自己的声音和麦克风上测量WER。它计算正确转写文本与识别器输出之间的最小编辑距离,这与基准测试使用的计算方法相同。

结果反映的是你的使用环境、你的麦克风和你朗读的段落。这是一个很小的样本,所以只把它当作粗略的读数,在得出结论之前,换用不同的文本再测几次。

  1. 选一段几百个词的文字,存为名为ref.txt的纯文本文件,每行一句。这就是你的参考文本。
  2. 用你想测试的工具听写同一段文字,把输出存为hyp.txt,相同的句子放在相同的行上。
  3. 决定如何处理大写、标点和数字,然后对两个文件做同样的清理。一种简单的做法是在两个文件中都把所有字母改为小写,并去掉标点。
  4. 打开“终端”,用以下命令安装该工具:pip install jiwer(需要Python 3.8或更高版本)。
  5. 运行:jiwer -r ref.txt -h hyp.txt,即可输出词错误率。
  6. 在命令中加上-a,可以输出每个句子的对齐结果,让你看到哪些词被替换、遗漏或插入。
  7. 如果你想要的是字符错误率,请加上-c。

为什么同一个模型的两个WER数字会不一致?

通常是因为评分前对文本的清理方式不同。WER基于字符串编辑距离,所以两份转写文本之间的每处差异都会被扣分,包括人会认为正确的差异,例如把缩约形式写成完整形式,或者把数字写成阿拉伯数字。

Whisper论文描述了这个问题,并用一个文本规范化器来应对:在统计错误之前,对两份转写文本都应用它。作者报告称,在几个数据集上,仅这一步就让WER最多降低了50%。没有说明背后规范化方式的WER数字,无法与另一个WER数字相比较。

  • Whisper规范化器在评分前会删除hmm、mm、mhm、mmm、uh和um这些词。
  • 它会删除方括号或圆括号中的任何短语。
  • 它会把缩约形式展开为完整形式。
  • 它会把用文字拼写的数字和金额改写为阿拉伯数字,例如“ten thousand dollars”会变成“$10000”。
  • 它会把英式拼写转换为美式拼写,并去掉大部分标点和符号。

WER与CER:词还是字符

字符错误率(CER)是同样的计算,只是以字符而非词为单位。一个长单词中错了一个字母,在WER中算一个完整的错误,在CER中只算一个错误的一小部分,所以CER是更宽松的数字,两者不能互相比较。

模型发布者会按语言选择单位。例如,Whisper项目在Common Voice 15和Fleurs数据集上,为每种语言报告WER或CER。阅读准确度表格时,先看清某一行用的是哪一种,再与其他行比较。

大家常问的问题。

什么样的词错误率算好?

在干净的英语基准音频上,目前最好的模型得分低于5%。在实际使用中,用笔记本电脑的麦克风、正常说话,5%到10%很常见;如果工具有好的格式化处理,还有一个收录你常用名字的词典,这个水平仍然非常好用。

词错误率是如何计算的?

替换数加删除数加插入数,除以正确转写文本中的词数。一个模型在一段一百词的文字中改错一个词、漏掉一个词、多加一个词,它的WER就是3%。

WER越低,工具就一定越好吗?

不是。WER忽略了格式和标点,也不管错的是哪些词。一个能正确写出时间、价格和名字并去掉语气词的工具,需要的修改可能比一个原始WER更低、却没有格式化处理的工具更少。

我该如何自己计算WER?

把正确文本和识别器输出存为两个文本文件,用pip install jiwer安装开源工具jiwer,然后在“终端”中运行jiwer -r ref.txt -h hyp.txt。先对两个文件做同样的大写和标点清理,否则格式上的差异会被算作错误。

WER和CER有什么区别?

WER统计错误的词,CER统计错误的字符,各自除以正确转写文本的长度。对于同样的输出,CER更低,因为一个错了一个字母的词,在字符层面上大部分是对的。

标点会计入词错误率吗?

这取决于所用的文本规范化方式。大多数基准测试设置会在评分前去掉两份转写文本中的标点和大写,Whisper论文的规范化器就是这样做的,所以公布的数字完全不能说明模型的标点能力。

相关术语

你的声音一直都更快。

免费试用7天,之后$19 USD买断。无需账户,无需订阅,不上传任何内容。

macOS 14或更高版本 · Apple芯片