声纹识别模型- ECAPA从0到1 -5

387 阅读2分钟

1. 测试数据评估pipline

输入内容:输入说话人A 和 B(wav文件,不需要增加任何其他数据) :获取A和B的speaker embedding (不需要进入分类层,因为此处只需要判断是否是同一人,并非属于分类问题) 输出内容:两者之间的相似度评分

流程图:

graph LR
source(Input Speech) 
feature[Feature extraction]
speaker[Speaker Model]
impostor[Impostor Model]
sum((Σ))
deci[Decision]
acc{Accept}
rej{Reject}

source --> feature --> speaker -->sum -->deci --> acc
feature --> impostor -->sum
deci --> rej

在evaluation 中需要传入file,以下是file格式说明

    label speaker/utterances/video     spaker/utterances/video
    
    0    id1921/H5asdf-KHQy7/0001.wav  id1981/BTasdf-IIQy7/0002.wav 
    1    id0981/Fhkdfs6R6d/0009.wav    id0981/Fhkdfs6R6d/00012.wav 

1:代表后两个utterances属于相同的发音人 0:代表不同的发音人

根据0和1 已经知道后面的两个utterances是否属于同一个人,我需要对此判断,给出一个评分,评分很低则是不同的人,评分高则属于同一个人

ps: 之前训练的时候,为了每个batch是需要相同的长度,所以会对音频数据进行等时间截取,但是在test时 可以直接将整个音频放入,不需要截取

通过两个utterances得到两个speaker embedding,接下来要做的就是根据这两个speaker embedding 算出一个得分,这个得分代表的是这两个speaker embedding属于同一发音人的概率

2.声纹指标(Metrics for evaluation)

通过训练之后得到的评分如下

  prediction  speaker/utterances/video      spaker/utterances/video
    0.107     id1921/H5asdf-KHQy7/0001.wav  id1981/BTasdf-IIQy7/0002.wav 
    0.508     id0981/Fhkdfs6R6d/0009.wav    id0981/Fhkdfs6R6d/00012.wav 

其中0.107就是本次得到的评分,获取到评分之后,需要将performance表述出来,表述的方式常用有两种:

    1. Equal Error Rate(EER)
    1. Minimum Detection Cost (MinDCF)

2.1 EER

评分规则

首先 需要对于score需要定一个阈值,表示大于该阈值则表示属于同一发音人,比如 prediction>0.4 则表示正确 P

  • T or F :prediction compare with label --> true false -->(先)lable 和prediction做比较是否相同
  • P or N :prediction --> positive negative -->(后)prediction 是否为P

通过评分结果可以算出两个Rate:

  • 1.False Acceptance Rate (FAR),label is 0,prediction is 1.(标签表示不同人,预测结果是同一个人) ·FAR = FP/(TN+FP)
  • 2.False Rejection Rate(FRR),label is 1,prediction is 0.(标签标识同一人,预测结果不是同一个) ·FRR = FN/(FN+TP) 当FAR=FRR 此时的值就是EER 截屏2022-10-19 23.07.53.png 此公式中:
  • 1.ERR 越小越好
  • 2.权重 FAR = FRR

2.2 minDCF

公式:

截屏2022-10-19 23.19.24.png

  • Miss:False Reject
  • FalseAlarm:False Accept 在VoxCeleb2中设置如下
  • 1.CMiss (cost of a missed detection) =1
  • 2.CFalseAlarm(cost of a spurious detection)=1
  • 3.PTarget (a priori probability of the specified target speaker) =0.05 此公式中:
  • 1.minDCF 越小越好
  • 2.权重 FAR>FRR