语音转文字(ASR)识别完毕后,目前对于各家的结果都是纯手工的计算,标注错别字和漏识字,感觉到很费时费力,少量的还可以,大量的就有点太费劲了。
所以,为了解放自己的劳动力,让代码帮忙做更多的事情,所以调研如何对ASR的识别结果进行比对。
也看过相关的公式,偷个懒,百度了下哈哈
这篇文章帮助很大啊,原来市面上已经有很成熟的。
前言
好久没发文,看到仍有这么多关注的小伙伴,觉得不发篇文对不住。确实好久没有输出经验总结相关的文档,抽了个时间,整理了下笔记,发一篇关于ASR常用测试指标。比如字错率、句错率指标,以及计算工具HResults的使用篇,后续慢慢找时间输出一些人工智能领域,小白可理解可用的基础知识,或者整理一些其他笔记发一发。
转载说明
本文为原创文章,如需转载,请在开篇显著位置注明作者Findyou和出处
一、基础概念
1.1、语音识别(ASR)
语音识别(speech recognition)技术,也被称为自动语音识别(英语:Automatic Speech Recognition, ASR),
狭隘一点白话说:将语音转换为文字的技术。
Findyou:一般使用ASR缩写。
1.2、句错率(SER)
句错误率:Sentence Error Rate
解释:句子识别错误的的个数,除以总的句子个数即为SER
计算公式:(所有公式省了 * 100%)
SER = 错误句数 / 总句数
1.3、句正确率(S.Corr)
句正确率:Sentence Correct
计算公式:
S.Corr = 1 - SER = 正确句数 / 总句数
1.4、字错率(WER/CER)
WER,Word error rate,词错率,但一般称为字错率,是语音识别领域的关键性评估指标,WER越低表示效果越好!
CER,Character Error Rate,字符错误率,中文一般用CER来表示字错率,原因请见1.4.3。
»1.4.1 、计算原理
字符串编辑距离(Levenshtein距离)算法
»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举个栗子:
啰嗦文字解释,就是:
英文,因为最小单元是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
(图片和文字一样,方便拷贝,W.Acc是Findyou自己用的简写)
特殊情况:当 I=0 时, W.Acc = W.Corr
问题:为什么W.Acc会是负数?
同WER,因为有插入字。换个说法,因为字准确率=1 - WER,而WER可能大于1,所以W.Acc会出现负数,但实际情况基本不存在。
1.7、聊点其他
ASR影响素因
人群:男、女、老人、小孩...
音量)
距离(与拾音设备的距离)
角度(与拾音设备的角度)
设备(拾音设备的硬件)
环境:安静、嘈杂(自噪、外噪)、家庭、商场...
句长
口音、方言
语速
语言:中文、英语
等等
大概举例几个影响因素(懒得放脑图,文字也方便大家拷贝),
因为ASR的识别影响因素过多,所以很多时候会从各种纬度测试,比如:男生字错率、女生字错率,或者小孩字错率、平均字错率等等,
如果没有公布测试数据与方法,不可信,因会存在几个操作,最大的问题是:
过拟合:训练数据、测试数据、验证数据是同一份,打外比方说:要考试的卷子就是你前一天发的老师发的练习卷还带答案的。
先扯到这,后面找时间再整理一篇ASR测试方法系统讲一讲,
做为测试我们如何去测ASR以及制定各种测试标准。
行业水平
英语-WER;