Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

16.6 ASR 评估:词错误率

语音识别系统的标准评估指标是词错误率。词错误率取决于识别器返回的词串(假设词串)与参考转写之间的差异。计算词错误率的第一步,是计算假设词串与正确词串之间的词级最小编辑距离,得到把正确词串映射为假设词串所需的最少词替换、词插入和词删除次数。词错误率(WER)定义如下(注意,由于公式包含插入,错误率可能高于 100%):

 Word Error Rate =100× Insertions + Substitutions + Deletions  Total Words in Correct Transcript \text { Word Error Rate } = 1 0 0 \times \frac {\text { Insertions } + \text { Substitutions } + \text { Deletions }}{\text { Total Words in Correct Transcript }}

图 16.17 RNN-T 模型在时间 tt 通过整合 CTC 声学编码器和独立“预测器”语言模型的输出,计算输出词元分布。

对齐

下面是 CallHome 语料库中一段参考话语与假设话语的对齐示例,其中展示了计算错误率所用的计数:

参考:i *****UM the PHONE ISi LEFT THE portable ****PHONE UPSTAIRS last night
假设:i GOTIT TO the *****FULLREST i LOVE TO portable FORM OF STORES last night
评估:IISDSSSISS

这段话语有 6 次替换、3 次插入和 1 次删除:

Word Error Rate=1006+3+113=76.9%\text {Word Error Rate} = 100 \frac{6 + 3 + 1}{13} = 76.9\%

计算词错误率的标准工具是免费脚本 sclite,由美国国家标准与技术研究院(NIST)提供(NIST, 2005)。sclite 接收一组参考句子(人工转写的金标准句子)和对应的一组假设句子。除了执行对齐和计算词错误率,sclite 还会执行许多其他有用任务。例如,在错误分析中,它会给出混淆矩阵,展示哪些词经常被误识别为其他词,并汇总经常被插入或删除的词的统计信息。如果句子带有说话人 ID,sclite 还会按说话人给出错误率,以及句错误率等有用统计量;句错误率是至少包含一个词错误的句子所占的比例。

对评估前的文本进行归一化

在计算词错误率之前,系统通常会先对文本进行归一化。有多种软件包可以实现归一化规则。例如,一些标准的英语归一化规则包括:

  1. 删除出现在匹配方括号([,])之间的元语言内容[非语言内容、注释、转写说明]。

  2. 删除或统一感叹词和填充停顿(uhuhumumerrerr)。

  3. 统一英语的缩写形式和非缩写形式(“I’m”/“I am”)。

  4. 归一化非标准词(数字、数量、日期、时间)[例如 “$100”/“One hundred dollars”]。

  5. 统一美式和英式拼写惯例。

ASR 的统计显著性:MAPSSWE 或 McNemar 检验

和其他语言处理算法一样,我们需要知道词错误率的某项改进是否具有显著性。

判断两个词错误率是否不同的标准统计检验是匹配对句段词错误率(Matched-Pair Sentence Segment Word Error,MAPSSWE)检验,由 Gillick and Cox(1989)提出。

MAPSSWE 是一种参数检验,考察两个系统产生的词错误数量之差,并在若干片段上取平均。片段可以很短,也可以长到包含完整话语;一般而言,希望使用尽可能多的(短)片段,以证明正态性假设并最大化检验效力。该检验要求一个片段中的错误与另一个片段中的错误在统计上相互独立。由于 ASR 系统往往使用三元语言模型,我们可以这样近似满足这一要求:把两端都由两个识别器正确识别的词所界定的区域(或轮次/话语边界)定义为一个片段。下面是 NIST(2007)的一个例子,共有四个区域:

IIIIIIIV
参考:|it was|the best|of|times it|was the worst|of times||it was
系统 A:|ITS|the best|of|times it|IS the worst|of times|OR|it was
系统 B:|it was|the best||times it|WON the TEST|of times||it was

在区域 I 中,系统 A 有两个错误(一个删除和一个插入),系统 B 没有错误;在区域 III 中,系统 A 有一个错误(替换),系统 B 有两个错误。定义变量序列 ZZ,表示两个系统错误数之差:

NAiN_A^i:系统 A 在片段 ii 上产生的错误数;

NBiN_B^i:系统 B 在片段 ii 上产生的错误数;

Z=NAiNBi,i=1,2,,nZ=N_A^i-N_B^i,\quad i=1,2,\ldots,n

其中 nn 是片段数。

在上面的例子中,ZZ 值序列为 2,1,1,1{2,-1,-1,1}。直观地说,如果两个系统完全相同,我们会期望平均差异(即 ZZ 值的平均值)为零。如果把差异的真实平均值称为 μz\mu_z,就希望知道 μz=0\mu_z=0 是否成立。沿用 Gillick and Cox(1989)的原始提议和记号,可以用有限样本估计真实平均值:

μ^z=i=1nZi/n\hat{\mu}_z=\sum_{i=1}^{n}Z_i/n

ZiZ_i 的方差估计为

σz2=1n1i=1n(Ziμz)2(16.24)\sigma_ {z} ^ {2} = \frac {1}{n - 1} \sum_ {i = 1} ^ {n} (Z _ {i} - \mu_ {z}) ^ {2}\tag{16.24}

W=μ^zσz/n(16.25)W = \frac {\hat {\mu} _ {z}}{\sigma_ {z} / \sqrt {n}}\tag{16.25}

nn 足够大(n>50n>50)时,WW 近似服从方差为 1 的正态分布。原假设是 H0:μz=0H_0:\mu_z=0,因此,如果

2P(Zw)0.052*P(Z\geq |w|)\leq 0.05(双侧)或 P(Zw)0.05P(Z\geq |w|)\leq 0.05(单侧),就可以拒绝原假设。其中 ZZ 是标准正态变量,wwWW 的实际取值;这些概率可以从标准正态分布表中查得。

早期工作有时使用 McNemar 检验进行显著性检验,但 McNemar 检验只适用于系统产生的错误彼此独立的情况;在连续语音识别中并非如此,因为一个词上的错误与相邻词上的错误高度相关。

我们能否改进词错误率这一指标?例如,如果不是为每个词赋予相同权重,而是让 Tuesday 这样的实词比 a 或 of 这样的功能词更有价值,那将很有用。研究者普遍同意这是一个好想法,但很难达成一个适用于所有 ASR 应用的指标。