说话人识别/声纹识别学习路径的资料整理,从零学声纹识别

昨天帮新同事讲解了一波说话人识别的理论,并且帮他整理了资料让他学习,

这个博客就是把最具有代表性的资料记录下来,前提,我假设你知道啥是MFCC,啥是VAD,啥是CMVN了.

说话人识别学习路径无非就是 GMM-UBM -> JFA -> Ivector-PLDA -> DNN embeddings -> E2E

 首先 GMM-UBM, 最经典代表作: Speaker Verification Using Adapted Gaussian Mixture Models

从训练普遍人声纹特征的UBM到经过MAP的目标人GMM-UBM到后面的识别的分数似然比,分数规整都有介绍,老哥Reynold MIT教授,这篇论文可以说是说话人识别开发者必读

(然后,直接跳过JFA吧)JFA太多太繁琐,但假如你是个热爱学习的好孩子,那想必这篇论文你应该很喜欢 Patrick Kenny的: Eigenvoice Modeling With Sparse Training Data

接下来我们来看看Ivector, ivector的理论,ivector 总变化空间矩阵的训练.

首先你需要知道Ivector的理论知识, 所以经典中的经典: Front-End Factor Analysis for Speaker Verification

训练算法推荐: A Straightforward and Efficient Implementation of the Factor Analysis Model for Speaker Verification

但假如你很喜欢数学,Patrick Kenny的这篇结合Eigenvoice应该很适合你: A Small Footprint i-Vector Extractor

到这里,基本上从GMM-UBM 到IVECTOR的理论和训练,你只要读完以上,再加上kaldi的一些小实验,相信聪明的朋友们绝对没问题.

Kaldi参考:train_ivector_extractor.sh和extract_ivector.sh,注意要看他们的底层C++,对着公式来,然后注意里面的符号跟论文的符号是不同的,之前的博客有说过. 你会发现,跟因子分析有关的论文不管是JFA还是Ivector都会有Patrick Kenny这个人物!没有错,这老哥公式狂魔,很猛很变态,对于很多知识点,跟着它公式推导的思路来绝对会没错,但对于像我这种数学渣,我会直接跳过.

记下来我们来看看PLDA的训练和打分

首先, 需要知道PLDA的理论,他从图像识别发展而来的,也跟因子分析有关.参考:Probabilistic Linear Discriminant Analysis for Inferences About Identity

PLDA的参数训练请主要看他的EM的算法,在该论文的APPENDIX里面

接着是PLDA的打分识别,请参考:  Analysis of I-vector Length Normalization in Speaker Recognition Systems

将EM训练好的PLDA参数结合着两个IVECTOR进行打分, 这篇论文值得拥有,另外推荐Daniel Garcia-Romero,这老哥的论文多通俗易懂, 重点清晰不含糊, 并且这老哥在speaker diarization的造诣很高,在x-vector也很活跃,十分推荐.

接着来看看深度学习的东西

首先给个直觉,为什么要用深度学习,说话人能用DNN,如何借鉴语音识别在DNN的应用,参考: NOVEL SCHEME FOR SPEAKER RECOGNITION USING A PHONETICALLY-AWARE DEEP NEURAL NETWORK

有了DNN的技术后, 各种老哥们开始用embeddings的方法取代ivector的方法,最开始的是GOOGLE的 d-vector

d-vector: DEEP NEURAL NETWORKS FOR SMALL FOOTPRINT TEXT-DEPENDENT SPEAKER VERIFICATION

d-vector: End-to-End Text-Dependent Speaker Verification

然后众所周知,说话人识别or声纹识别对语音的时长是很敏感的,短时音频的识别性能是决定能不商用的一个很关键的点,所以x-vector应运而生,也是JHU的那帮人,就是Kaldi的团队

x-vector前身 : DEEP NEURAL NETWORK-BASED SPEAKER EMBEDDINGS FOR END-TO-END SPEAKER VERIFICATION

x-vector底座: IME DELAY DEEP NEURAL NETWORK-BASED UNIVERSAL BACKGROUND MODELS FOR SPEAKER RECOGNITION

x-vector正宫: X-VECTORS: ROBUST DNN EMBEDDINGS FOR SPEAKER RECOGNITION

然后然后呢,牛逼的Triplet Loss出来了, 输入是一个三元组,目的就是提升性能,(但我实验的过程经常会不收敛,摊手,本渣也不知道为什么)

Triplet Loss : TRISTOUNET: TRIPLET LOSS FOR SPEAKER TURN EMBEDDING

Triplet Loss : End-to-End Text-Independent Speaker Verification with Triplet Loss on Short Utterances

Deep speaker:  Deep Speaker: an End-to-End Neural Speaker Embedding System

最后E2E,但可能我个人才疏学浅,感觉论文上说的E2E其实都是做了一个EMBEDDING出来,然后外接cosine distance,但真正的EMBEDDING是输入注册和测试音频,直接输出分数,所以emmm

emmm, 感觉看完这些论文加上实践,大概若干年后,你已经能成为一个牛逼的声纹识别算法工程师

猜你喜欢

转载自blog.csdn.net/robingao1994/article/details/82659005