# Voiceprint Recognition **Repository Path**: TQLlab/voiceprint-recognition ## Basic Information - **Project Name**: Voiceprint Recognition - **Description**: 近年来,深度学习技术被广泛应用于生物信息识别领域,同时取得了很好的成绩。因此,项目组利用深度学习技术来实现声纹的智能识别,声纹识别系统旨在实现对用户身份的自动识别,并能扩展至更大规模声纹库的应用场景。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-04-25 - **Last Updated**: 2023-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 声纹识别 **Web地址https://voiceprint.hymsk.asia/** ## 一、模型选择 ​ 选题为“高性能声纹识别平台”,该选题旨在运用计算机技术对用户声纹进行智能识别,同时,要求:1.在复杂环境下语音识别准确率大于90%;2.系统在用户大量访问的情况下仍能保持高性能运行;3.系统可以推广到更大的应用场景。为达到以上要求,选择何种声纹模型至关重要,因此,小组查阅了声纹识别在国内外的研究情况。 ​ 在90年代初到20年代末,大部分团队使用基于统计学习的方法对声纹进行识别,主要的模型包括:GMM(高斯混合模型)[1],GMM-UBM(高斯混合-通用背景模型)[2],SVM(支持向量机)[3],JFA(联合因素分析)[4]等。在20年代后,大量团队开始使用基于深度学习的模型对声纹进行智能识别。比如:I-Vector[5],X-Vector[6],D-Vector[7],ECAPA-TDNN[8]等方法。 ​ ECAPA-TDNN全称Emphasized Channel Attention, Propagation and Aggregation in Time Delay Neural Network,由比利时哥特大学Desplanques等人提出,该网络在国际声纹识别比赛(VoxSRC2020)中取得了第一名的成绩。特别是百度旗下PaddleSpeech发布的开源声纹识别系统中就利用了ECAPA-TDNN提取声纹特征,其中识别的等错误率(EER)低至0.95%。因此,小组果断选择了ECAPA-TDNN模型用作声纹识别的模型。 ## 二、数据集介绍 小组选用的数据集为命题方给出的aidatatang_200zh中文普通话语料库,语料库包含200个小时的声学数据,且来自中国不同口音领域的600位演讲者被邀请参加录制。鉴于比赛时间限制,小组在初赛阶段选择的是其中120位演讲者所讲的全部语音数据来开发模型。 ​ 由于声纹识别任务的特殊性,验证集及测试集采用的标签和训练集有所不同,这将在下面进行介绍。因此,小组针对每个演讲者的所有语音集,按照0.95:0.025:0.025的比例将数据划分为训练集,验证集及测试集。 ​ 在对模型进行训练时,采用的标签为演讲人的唯一标识符,因此,在训练时将有120个不同的标签。在验证及测试时,采用的标签为0/1的布尔变量,表示两条语音是否出自同一演讲人。 ​ 例如:G0002演讲者共有474语音,按照对应比例划分语音,得到训练集数量:450,验证集数量:12 , 测试集数量:12。划分结果表示G0002演讲者有450条语音用于训练,但对于验证集的12条语音,首先将12条语音组内按照排列组合的方式生成标签为1(True)的记录,具体做法为:第一条语音与后续十一条语音匹配,第二条语音与后续十条匹配……直到第十一条语音与第十二条语音匹配,将产生11+10+…+1=66条记录,然后通过随机数的方式生成标签为0(False)的记录,具体做法为:第一条记录将随机匹配其他演讲者验证集中的语音,匹配次数为其排列组合数量的2倍。那么将产生22+20+…+2=132条记录。综上,对于G0002演讲者,验证集的TXT文件中将产生198条记录。测试集同验证集生成方式。 ## 三、模型训练 ### 3.1特征提取 ​ 使用计算机技术解决声纹识别任务时,由于原数据是时序形式的语音数据,如果直接对语音波形进行学习,将导致模型捕捉不到语音中多尺度上的特征。同时,人耳对声音频谱的响应是非线性的,因此,以类似于人耳的方式对音频进行处理,可以提高语音识别的性能。 ​ 小组使用Fbank方法对语音数据进行特征提取,主要采取四个步骤,1.预加重(Pre-emphasis) 2.对数据进行分帧及加窗处理 3.使用短时傅里叶变换算法计算帧的功率谱 4.使用Fbank计算功率谱的梅尔普特征(Mel-spectrum)。经过四个步骤后,将得到音频数据的梅尔普特征图,同时,为均衡频谱,提高信噪比,对特征图进行标准化操作。 ​ Fbank特征是希望模型训练数据更符合声音信号的本质,即拟合人耳的接收特性。同时,由于神经网络对高度相关的信息不敏感,因此,Fbank相较于Mfcc更加适合ECAPA-TDNN。 ### 3.2 数据增强 ​ 对特征提取后的特征图,进行数据增强,即在训练数据中随机加入噪音,小组采用了MUSAN及 RIRS数据集。MUSAN数据集中包括来自于音乐,演讲及噪音的背景声音。RIRS数据集主要是房间脉冲响应和噪声。 ​ 小组在两个辅助数据集中,随机挑选噪音加入到主音频数据中,这样增加了训练集的多样性,同时能保证模型的鲁棒性。在实际的开发环境中,若不加入噪音,声纹识别的效果将不尽人意。 ### 3.3 损失函数 ​ 有大量损失函数可用于深度学习算法,包括Softmax Loss[9],SphereFace(L-Softmax)[10],CosFace Loss(AM-Softmax)[11]及ArcFace Loss(AAM-Softmax)[12]等。Softmax Loss常常被用于图像分类领域,其旨在将类中数据的距离变小,类间数据的距离变大。但对声纹识别任务,其效果往往不佳。小组选择了ArcFace Loss作为实验中使用的损失函数。 ​ 邓建康等在2018.01发表了关于ArcFace文献,如式一所示,邓等人在xi和Wji之间的 上加上角度间隔m(注意是加在了角 上),以加法的方式惩罚深度特征与其相应权重之间的角度,从而同时增强了类内紧度和类间差异。同时,邓等人在不同数据库上对比了不同损失函数,实验结果表明ArcFace Loss效果突出。 ​ 图2展示了各损失函数的几何区别,图示表示损失函数对二元分类时的决策区域,虚线为决策边界。注意图2二分类情况下的决策边界的坐标轴是 ,而不是cos( )。尽管ArcFace与以往的工作相似,但由于角度与测地距离具有精确的对应关系,提出的加性角度间隔具有较好的几何属性,其也更适合声纹识别的场景。 ## 四、模型验证 ### 4.1 验证方式 ​ ECAPA-TDNN在训练阶段可分为:特征提取+回归分类两个部分,即先得到声纹特征向量(speaker embedding),然后对speaker embedding进行全连接-AAMsoftmax-输出预测标签。但使用ECAPA-TDNN来验证时,首先需要得到两条音频对应的speaker embedding,然后计算speaker embedding之间的相似度,若大于某个特定的阈值,那么这就是同一个人所发出,反之。验证集的形式在第二章节已经介绍,关于相似度的计算和阈值的设置将在下一节进行阐述。 ### 4.2分数计算 ​ A和B表示两个speaker embedding,A和B之间的余弦距离表示相似程度(分数),分数越大表示两个音频越有可能是同一个人所说。在有一些论文中,也有用欧氏距离表示A和B的相似程度,小组认为两者无太大差别。 ​ 实际应用时,小组采取“局部结合策略”来计算分数。现有wav1和wav2两条音频,其具体做法:1.首先计算wav1和wav2的similarity量,得到score1分数;2.然后分别将wav1和wav2划分为N个音频(N取5),计算wav1和wav2对应子音频的similarity量,最终将五个子分数取平均,得到score2分数;3.最后将score1和score2取平均作为wav1和wav2的分数,分数越大表示越有可能是同一个人所说。 ### 4.3 评价指标 ​ 小组采取等错误率(Equal Error Rate, EER)和最小检测代价函数(Minimum Detection Cost Function,minDCF)来评价模型性能。 ​ 错误拒绝(False Rejection,FR)和错误接受 (False Acceptance, FA),这是声纹识别系统中的两种错误情况。错误拒绝指正确的说话人在测试中被断定为冒认者,被错误拒绝;错误接受则指冒认者在测试中被认为是正确的说话人,被错误接受。由于存在错误拒绝和错误接受两类错误,单纯地使用错误率来评定说话人确认系统性能是不合理的。 ​ EER:不断调整可接受的阈值,当FR等于FA时,对应的错误率即为EER,这种方式认为FR和FA同等重要,然而在声纹识别过程中,两种错误的代价并不一样,因此,引入了minDCF指标。 ​ minDCF:如式3, 和 分别表示FR和FA, 和 表示两种错误的代价(均取1), 表示目标说话者的先验概率(取0.05)。minDCF不仅考虑了两类错误的不同代价,还考虑了两种测试情况的先验概率,比EER更合理。 ## 五、模型测试 ### 5.1 设置经验阈值 ​ ECAPA-TDNN在做声纹识别任务时,同验证过程,计算两条音频的分数,但是测试过程关心结果如何,即是或不是,因此,需要定义一个经验阈值,若分数大于这个阈值,那么是同一个说话人,反之。 ​ 小组在设置经验阈值时,采取了大数据+模拟退火方法求解。1.小组基于120个说话人的所有语音生成了48231495条索引记录(图1),占用2.5G的磁盘空间。2.在这基础上,使用模拟退火现代优化算法求解最优阈值,即取该阈值能使所有语音被识别准确的概率最大。小组设置精度为0.001,最终求解结果:当阈值取0.417时,准确率达到99.84%。 ### 5.2 优化测试分数 ​ 声纹识别系统中,需先入库一条标签已知的音频,记为E;对比E和一条标签未知的音频(即为T),根据5.1节的经验阈值,来判断E和T是否出自同一人。 ​ 有文献指出,需要对分数进行归一化,来避免阈值只拟合推理数据集的影响。因此,小组采取对称归一化(Symmetric Normalization, S-norm)来对测试分数进行优化。 ​ 如式4, 表示E和T的相似分数, 表示E与训练集中120个人的相似分数集合, 则表示T与训练集中120个人的相似分数集合。将E与120个人的每条语音做相似分数,在每个人区域上求平均值,最终得到120个分数组成的集合 ,同理得到 。 表示求均值, 表示求标准差。 ## 参考文献 [1] REYNOLDS D A, ROSE R C. Robust text-independent speaker identification using Gaussian mixture speaker models[J/OL]. IEEE Transactions on Speech and Audio Processing, 2002: 72-83. [2] REYNOLDS D A, QUATIERI T F, DUNN R B. Speaker Verification Using Adapted Gaussian Mixture Models[J/OL]. Digital Signal Processing, 2002: 19-41. [3] CAMPBELL W M, CAMPBELL J P, REYNOLDS D A, 等. Support vector machines for speaker and language recognition[J/OL]. Computer Speech & Language, 2005, 20(2-3): 210-229. [4] KENNY P, BOULIANNE G, OUELLET P, 等. Joint Factor Analysis Versus Eigenchannels in Speaker Recognition[J/OL]. IEEE Transactions on Audio, Speech and Language Processing, 2007: 1435-1447. [5] REYES-DÍAZ F J, HERNÁNDEZ-SIERRA G, DE LARA J R C. DNN and i-vector combined method for speaker recognition on multi-variability environments[J/OL]. International Journal of Speech Technology, 2021, 24(2): 409-418. [6] LIU X, SAHIDULLAH M, KINNUNEN T. Distilling Multi-Level X-vector Knowledge for Small-footprint Speaker Verification[Z]. 2023. [7] JUNG J, HEO H, YANG I, 等. D-vector based speaker verification system using Raw Waveform CNN[C/OL]//Proceedings of the 2017 International Seminar on Artificial Intelligence, Networking and Information Technology (ANIT 2017), Bangkok, Thailand. 2018. [8] DESPLANQUES B, THIENPONDT J, DEMUYNCK K. ECAPA-TDNN : Emphasized Channel Attention, Propagation and Aggregation in TDNN based speaker verification[C/OL]//Interspeech 2020. [9] LIU W, WEN Y, YU Z, 等. Large-margin softmax loss for convolutional neural networks[Z]//International Conference on Machine Learning. 2016. [10] LIU W, WEN Y, YU Z, 等. SphereFace: Deep Hypersphere Embedding for Face Recognition[C/OL]//2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Honolulu, HI. 2017. [11] WANG H, WANG Y, ZHOU Z, 等. CosFace: Large Margin Cosine Loss for Deep Face Recognition[C/OL]//2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition, Salt Lake City, UT. 2018. [12] DENG J, GUO J, YANG J, 等. ArcFace: Additive Angular Margin Loss for Deep Face Recognition[J/OL]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2021: 1-1.