做人工智能测试,准确一点,做语音聊天机器人、智能音箱等测试,一定会接触到语音误别即ASR (Automatic Speech Recognition)。本篇主要讲ASR的几个最重要的指标字错率、句错率。

1

基础概念

1.1语音识别(ASR)
语音识别(speech recognition)技术,也被称为自动语音识别(英语:Automatic Speech Recognition, ASR),狭隘一点白话说:将语音转换为文字的技术。

维基百科:

https://zh.wikipedia.org/wiki/语音识别

1.2句错率(SER)
SER,句错误率(Sentence Error Rate),句子识别错误的的个数,除以总的句子个数即为SER。

计算公式:(下面所有公式省了 * 100%)

SER = 错误句数 / 总句数

1.3句正确率(S.Corr)
句正确率:Sentence Correct,句子识别正确的个数,除以总的句子个数即为S.Corr。

计算公式:

S.Corr = 1 – SER
= 正确句数/总句数

1.4字错率(WER/CER)
WER:Word error rate,词错率,但一般称为字错率,是语音识别领域的关键性评估指标,WER越低表示效果越好!

CER:Character Error Rate,字符错误率,中文一般用CER表示字错率,原因请见1.4.3。字错率是中文语音识别领域的关键性评估指标,一般认为字错率在低于 3% 时不会影响可读性,而超过 15% 则毫无可读性。

维基百科:

https://en.wikipedia.org/wiki/Word_error_rate

1.4.1 计算原理

算法:字符串编辑距离(Levenshtein距离)算法。

编辑距离

https://en.wikipedia.org/wiki/Levenshtein_distance

1.4.2 计算公式(重要)

WER=(S+D+I)/N
=(S+D+I)/(S+D+H)
S 为替换的字数,常用缩写WS

D 为删除的字数,常用缩写WD

I 为插入的字数,常用缩写WI

H 为正确的字数,维基百科是C,但我统一改用H

N 为(S替换+ D删除+ H正确)的字数

Findyou:

1.正确的字数:维基百科里用的是C代表,H = N – (S+D) = C,我这边直接改成H,减少过多概念与变量。

2.大多数文章都没有给出N的计算方式,很容易误以为是原句总字数或者识别结果总字数。

3.不理解没关系,下面实例会帮助理解。

1.4.3 问题

问题1:为什么WER会大于100%

因为有插入字(识别多的字),所以理论上WER有可能大于100%,在下面实例我会举例(请见2.3.5),但实际场景,特别是大样本量的时候,基本太不可能出现。

问题2:说中文应该用CER,即“字符错误率”(Character Error Rate)

Findyou举个栗子:

1
2
英文:hello # 算一个Word
中文:你好 # 算两个字符
啰嗦文字解释,就是:

英文,因为最小单元是Word,语音识别应该用”字错误率”(WER),

中文,因为最小单元是字符,语音识别应该用“字符错误率”(CER)。

BUT(就是但是的意思…),他跟我前面那一句一样,说的都是废话!

我们计算的时候谁不是按:中文的一个字符 = 英文的一个Word,那这样用WER的公式有什么问题呢?

谁再跟你咬文嚼字,怼他,使劲怼!

怼完,说回严谨的话,建议采用CER表示中文字错率,哈哈哈哈哈…

1.5字正确率(W.Corr)
字正确率,Word Correct,一般国内宣传用得多,识别率(识别正确率)达到多少多少(请见1.7)。

计算公式:

W.Corr = (N – D – S)/N
= H / N
问题:只计算了识别正确的字,没有管多出来的字(I插入),当然一般情况下不会有什么问题。

1.6字准确率(W.Acc)
字准确率,Word Accuracy

计算公式:

W.Acc = 1 – WER
= (N – D – S – I)/N
= (H – I)/N
特殊情况:当 I=0 时, W.Acc = W.Corr

问题:为什么W.Acc会是负数?

同WER,因为有插入字。换个说法,因为 字准确率 =1 – WER,而WER可能大于1,所以W.Acc会出现负数,但实际情况基本不存在。

1.7聊点其他
ASR影响因素

人群:男、女、传统的柜子、小孩…

音量)

距离(与拾音设备的距离)

角度(与拾音设备的角度)

设备(拾音设备的硬件)

环境:安静、嘈杂(自噪、外噪)、家庭、商场…

句长

口音、方言

语速

语言:中文、英语

大概举几个因素(懒得放脑图,文字也方便大家拷贝),

因为ASR的识别影响因素过多,所以很多时候会从各种纬度测试,比如:男生字错率、女生字错率,或者小孩字错率、平均字错率等等,如果没有公布测试数据与方法,不可信,因会存在很多可操作的地方,最大的问题是:

过拟合:训练数据、测试数据、验证数据是同一份,打外比方说:要考试的卷子就是你前一天发的老师发的练习卷还带答案的。

先扯到这,后面找时间再整理一篇ASR测试方法系统讲一讲,做为测试我们如何去测ASR以及制定各种测试标准。

行业水平

英语-WER

IBM:行业标准Switchboard语音识别任务,2016年 6.9%,2017年 5.5%

微软:行业标准Switchboard语音识别任务,2016年 6.3% -> 5.9%,2017年 5.1%,这个目前最低的。

说明:ICASSP2017上IBM说人类速记员WER是5.1%,一般认为5.9% 的字错率是人类速记员的水平。

中文-WER/CER

百度:2016年 短语识别 3.7%

小米:2018年 小米电视 2.81%

中文-W.Acc:

百度:2019年 识别准确率 99%

搜狗:2019年 识别准确率 997%

讯飞:2019年 识别准确率 99%

中文-W.Acc:

百度:2016年 识别准确率 97%

搜狗:2016年 识别准确率 97%

讯飞:2016年 识别准确率 97%