在声纹识别中,有几个重要的性能指标,far、frr、eer。
假设有1000人,每人采集了两条音频,构成了1000组数据,每组用一条音频当做注册音频,一条当做验证音频,通过每一通验证音频和每一通注册音频去比对,得到1000*1000条数据的结果。
Far:错误接受率,把不是一个人当成同人的占所非同人比对的概率,例如,所有非同人比对的次数等于1000*(1000-1)
Frr:错误拒绝率,当同一个人的声音当做不同的人占,所有同人比对的比例,例如上面1000个人和自己比对的只有1000条
Eer:等错误率,Far=Frr=eer
一般来说我们判断两通音频是不是同一个人是通过阈值,当比对的分数大于阈值就是同一个人,反之,就不是同一个人。通过上面的音频一一比对,我们能得到1000*1000条数据的结果,通过改变不同的阈值的分数【一般是0到1】,可以得到不同阈值下的Far、Frr,得到这个就可以计算eer了。
那怎么计算等错误率呢?为了得到eer【等错误率】,我们需要得到不同阈值下的far、frr,然后把它连成两条线,相交的点就是eer。这里我们可能根据阈值得到两个far、frr数组,然后通过相减取最小值的下标,我们可能通过这个下标获取对应的far、frr的值,然后相减除以二就可以得到近似的eer。
这里比较简单通过numpy就很很简单的实现