工作中有测试AI智能助手,当时没有工具,脚本来不及写,人工手动进行测试,从头到尾人工手动测试比对,字错和句错也都是直接在excel中计算,感触就是,确实很累人!
接触HTK,有文章已经写过下载以及安装,详情请看HTK下载安装以及示例
先来介绍一下基本概念
一、语音识别(ASR)
语音识别(speech recognition)技术,也被称为自动语音识别(英语:Automatic Speech Recognition, ASR)
狭隘一点白话说:将语音转换为文字的技术。
二、句错率(SER)
句错误率:Sentence Error Rate
解释:句子识别错误的的个数,除以总的句子个数即为SER
计算公式:
SER=错误句数/总句数
三、字错率(WER/CER)
WER,Word error rate,词错率,但一般称为字错率,是语音识别领域的关键性评估指标,WER越低表示效果越好!
CER,Character Error Rate,字符错误率,中文一般用CER来表示字错率。
计算方式:
WER=(S+D+I)/N=(S+D+I)/(S+D+C)
S--被替换的字数
D--被删除的字数
I--被插入的字数
C--识别正确的字数
N=S+D+C
四、字成功率(W.Corr)和字正确率(W.Acc)
字正确率,Word Correct,一般国内宣传用的多,识别率(识别正确率)达到多少多少。
计算公式:
W.Corr=(N-S-D)/N=C-N
W.Acc=1-WER=(N-S-D-I)/N
五、问题
1、WER会大于1(100%),按照上述计算方式,I的字数较多情况下会出现、
之前手工测试的时候,N是按照实际句子总字符数算的,不知道合理不合理,沟通的时候就这么定的,哈哈哈~
2、字错率的概念,WER和CER,字错和字符错,这里是按照:一个汉字=一个word计算,天=day
之前手工测试的时候,一个英文字母等同于一个汉字,会议沟通确认过的,怎么要求怎么来呗~
3、字正确率,只计算了识别正确的字,没有管多出来的字
4、同理,因为有插入的字,所以计算结果会有负数
六、HTK之HResults的使用
开头有讲HTK的下载安装,但是没有模型训练,因为还没有接触,暂时先不了解,后续有机会在看
下面是使用方式,本地用一个小demo已经测试过了,可以直接使用,下面是使用步骤:
1、整理已有的txt文档,需要输入的指令,去除标点符号,按序号写入,如下:
1 今天天气怎么样
2 明天天气怎么样
保存为txt文件,命名src.txt
2、查看设备识别的ASR结果,整理到txt文档,按序号写入,如下:
1 惊天天气
2 明天天怎么啊
保存为txt文件,命名为testResult.txt
3、将上述两个txt文件转换为mlf文件,可以百度下,或写个python脚本
脚本可以从语音识别ASR获取
4、最终终端命令比对
HResults -t -I src.mlf NUL testResult.mlf
输入命令需注意:
1.上述转换的mlf文件需要放置在htk根目录下
2.终端可以先行展示中文字符:chcp 65001,然后输入命令