本文的创新点与关键点之一:GMM,GMM-UBM,GMM-SVM的理解
大概是从10月20号开始由于项目需要开始接触说话人识别这一研究方向,这一个多月的时间主要是看论文中文英文,尤其是综述文章,当然也试着了解传统方法背后的思路和原理。经过这段时间的学习,有了一点自己的理解,故分享出来加深自己对理解的把握顺便水水文章。本文先是按照说话人识别发展脉络来展开,然后对五个传统方法进行了解读:
Ps:本人才疏学浅,肯定有地方理解不到位或者错误,欢迎大家交流和批评指正!
说话人识别发展脉络:
说话人识别的研究始于20世纪30年代[1],早期的工作主要集中在人耳听辨实验和探讨听音识别的可能性方面。在上个世纪60年代,Bell实验室的 L. G. Kestar 等人通过研究语谱图发现,同一个人所发同一个音的语谱总是比不同人发相同音的语谱更相近,据此他用目视语谱图的方法进行说话人识别,并在同年的文章[2]中提出“声纹”的概念。随后在1963年,Bell 实验室的 S. Pruzansky 提出的基于模板匹配(template matching)和统计方差分析的说话人识别方法[3],引起信号处理领域许多学者的注意,兴起了说话人研究的高潮。
从 20 世纪 70 年代末至 80 年代末,说话人识别的研究重点转向对声学特征参数的处理以及新的模式匹配方法上。研究者相继提出了线性预测系数(Linear Predictive Coefficient, LPC)[4]、线性预测倒谱系数(Linear Predictive Cepstrum Coefficient, LPCC)[5](4,5参考文献不一定准确,看了很多大佬的综述发现这两个的引用文献都不一样),梅尔倒谱系数(Mel-frequency Cepstrum Coefficient, MFCC)[6]和感知线性预测系数(Perceptual Linear Predictive, PLP)[7]等说话人识别特征参数。与此同时,动态时间规整法(Dynamic Time Warping, DTW)[8]、矢量量化法(Vector Quantization, VQ)[9]、隐马尔科夫模型(Hidden Markov Model, HMM)[10]、人工神经网络法(Artificial Neural Network, ANN)[11]等技术也被陆续提出,并被广泛应用到说话人识别中,进一步提高了说话人识别性能。
20 世纪 90 年代以后,尤其是 D. Reynolds 对高斯混合模型(Gaussian mixture model, GMM)[12]做了详细介绍后,GMM以其简单、灵活、有效以及较好的鲁棒性,迅速成了当时与文本无关的说话人识别中的主流技术,将说话人识别研究带入一个新的阶段。2000年,D. Reynolds 在说话人确认任务中提出了高斯混合模型-通用背景模型 GMM-UBM (Gaussian mixture model-Universal background model)[13]结构,为说话人识别从实验室走向实用作出了重要贡献。
进入 21 世纪,在传统 GMM-UBM 的方法上,Campbell等人发现将SVM用于高斯混合模型十分有效[14]。进一步,P. Kenny、N. Dehak 等人先后提出了联合因子分析(Joint factor analysis, JFA)[15]和 i-vector 模型[16],将说话人模型映射到低维子空间中,克服了 GMM-UBM 系统中高斯分量互相独立的局限性,提高了系统性能。为进一步提高模型的区分性能力,相关的区分性训练方法也应运而生(PLDA等,就是得到向量之后,我们用什么方法对两个向量进行相似度比较)。
2010年开始,随着计算器计算能力的增强,运用深度学习方法解决说话人识别问题变得越来越得到学术界的重视。可以利用深度神经网络(DNN)自动进行特征提取,也可以在传统i-vector的基础上将DNN作为后端分类器对所提取的特征进行分类,或者直接搭建一个端到端的说话人识别网络。在2014年,Ehsan Variani[17]等人用DNN对频谱图自动进行特征向量提取,并将提取出的向量命名为d-vector。这个网络十分简单,就是将一段话每一帧的频谱图分别送入DNN,然后将输出层的前一层作为d-vector(至于为什么要选择输出层的前一层,这个就自行百度了,我记得有一个回答是不错的),然后对每一帧的d-vector进行平均,最终所得即为代表这句话说话人的d-vecotr。然后2015年,Yu-hsin Chen[18]等人将卷积神经网络应用于文本依赖的说话人识别中,并取得了不错的效果(目前为止,两大主流之一就是使用ResNet进行说话人识别)。紧接着,在2017年,David Snyder等人提出了著名的x-vector[19],其是在TDNN结构上提取出来的,其网络中的时间池层在输入语音上进行聚合,从而捕获说话者的长期特征。这使得网络能够被训练来区分来自不同长度的语音片段的说话者(这是另一个主流方法,从18年开始,各种比赛VOXSRC, NIST SRE等的基线方法就是x-vector,现在很多性能卓越的方法就是在此基础上进行改造的)。
传统方法:
由于现在有很多资料对深度学习方法(针对和不针对说话人识别)进行讲述,在此就先不对深度学习方法进行讲解了。但将自己对几个经典的传统方法的学习感悟分享给大家。再次强调:本人才疏学浅,肯定有地方理解不到位或者错误,恳请指正!
GMM:高斯混合模型之前的方法都太古老了,太久远了。基本不需要花时间去理解,高斯混合模型的话可以花时间理解一下,但由于它是统计模型,数学基础,特别是概率论不好的同学(像我一样的)理解起来就会非常头疼,这里推荐哔哩哔哩一个up主视频BV13b411w7Xj,详细推导了GMM的原理。当然,我看了之后还是没能清晰的理解其原理,不过对其思想有了一定的了解。其相当于用多个高斯函数来模拟说话人的特征分布,通过一定的数学方法(EM)就可以找到这多个高斯函数的参数值,然后模型就确定下来了。下次再有说话人语句需要判断的时候,将说话人语句(先转换为MFCC)输入进去进行判断,会得到一个概率值,然后将这个值与阈值相比较,选择接受或者拒绝。
GMM-UBM:首先推荐视频BV1Wt4y1C736,这个方法是在GMM基础之上进行改进的,因为GMM为说话人建模需要大量的语句(GMM参数太多),比如100+。在世纪生活中你想一个用户为了使用你的产品不断说话几百句,这对用户来说肯定是相当不友好的。于是,要怎么解决参数太多,需要语句太多这个问题呢。大佬们就相当用和特定说话人无关的语料库来先建一个通用背景模型UBM,相当于每个人都有两条腿两只手,我们先把手的腿大致形状给做好,然后再根据特定要求进行修改。这里就是根据要识别的特定说话人进行修改为特定说话人GMM。大致示意图如下图2所示,我们得到GMM和UBM后,要对测试语音进行判断流程如图3所示,它既要和目标说话人GMM进行比较,又要和UBM比较,看到底是像目标说话人相似得多还是就是个普通人。
GMM-SVM:因此,GMM-SVM就是再用SVM对高斯超向量进行建模(现在我们默认高斯超向量就是这个说话人的特征向量),之后每当有语句需要进行判断的时候,先得到其高斯超向量,然后通过已经建立的SVM对其进行分类,确认其身份。
JFA:联合因子分析法是认为提取出来的GMM超向量不止含有说话人信息,还有信道和其他无关信息等等,于是他想利用一个公式或方法将其中重要的说话人信息(也是一个向量)提取出来,其他的丢弃掉。具体过程请自行百度了,或者看下(知乎)大佬@Leon晋的回答。
i-vecotr:JFA的想法是很好的,但最后的结果却发现,现实是残酷的。提取出来的向量不仅包含了说话人的信息,而且总是带有信道的信息。于是,提出JFA的研究者的学生提议,那我们不区分信道信息和说话人信息算了,把他们放在一起得了。于是i-vector就出现了,具体过程也有很多大佬已经讲述过了,当然也可以继续看刚才@的大佬回答。
至此,本文的任务基本结束了。最近关于深度学习的论文也看了不少,希望自己再找时间可以将部分经典的,但网上还没人翻译过的,讲解过的进行分享。
There is more to come. 于未来有更多期许。
[1]吴玺宏. 声纹识别听声辨认. 计算机世界. 2001. (8).
[2]Kersta L G. Voiceprint identification[J]. Nature, 1962, 196(4861): 1253-1257.
[3]Pruzansky, S.. “Pattern‐Matching Procedure for Automatic Talker Recognition.” Journal of the Acoustical Society of America 35 (1963): 354-358.
[4]Atal B S, Hanauer S L. Speech analysis and synthesis by linear prediction of the speech wave[J]. The journal of the acoustical society of America, 1971, 50(2B): 637-655.
[5]Atal B S. Effectiveness of linear prediction characteristics of the speech wave for automatic speaker identification and verification[J]. the Journal of the Acoustical Society of America, 1974, 55(6): 1304-1312.
[6]S. Davis and P. Mermelstein, “Comparison of parametric representations for monosyllabic word recognition in continuously spoken sentences,” IEEE Trans. Acoust. Speech Signal Processing, vol. 28, no. 4, pp. 357–366, 1980.
[7]Hermansky H. Perceptual linear predictive (PLP) analysis of speech [J]. the Journal of the Acoustical Society of America, 1990, 87(4): 1738-1752.
[8]Sakoe H, Chiba S. Dynamic programming algorithm optimization for spoken word recognition [J]. IEEE Transactions on Acoustics, Speech and Signal Processing, 1978, 26(1): 43-49.
[9]Burton D K, Shore J E, Buck J T. A generalization of isolated word recognition using vector quantization[C]. IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), 1983, 8: 1021-1024.
[10]Rabiner L R, Juang B H. An introduction to hidden Markov models [J]. ASSP Magazine, IEEE, 1986, 3(1): 4-16.
[11]Jain A K, Mao J, Mohiuddin K M. Artificial neural networks: A tutorial [J]. Computer, 1996 (3): 31-44.
[12]D. A. Reynolds and R. C. Rose, “Robust text-independent speaker identification using Gaussian mixture speaker models,” IEEE Trans. Speech Audio Processing, vol. 3, no. 1, pp. 72–83, 1995.
[13]D. A. Reynolds, T. F. Quatieri, and R. B. Dunn, “Speaker verification using adapted Gaussian mixture models,” Digital Signal Process., vol. 10, no. 1–3, pp. 19–41, Jan. 2000.
[14]W. M. Campbell, D. E. Sturim, and D. A. Reynolds, “Support vector machines using GMM supervectors for speaker verification,” IEEE Signal Process. Lett., vol.13, no. 5, pp. 308–311, 2006.
[15]Dehak N, Dumouchel P, Kenny P. Modeling prosodic features with joint factor analysis for speaker verification [J]. IEEE Transactions on Audio, Speech, and Language Processing, 2007, 15(7): 2095-2103.
[16]Dehak N, Kenny P, Dehak R, et al. Front-end factor analysis for speaker verification [J]. IEEE Transactions on Audio, Speech, and Language Processing, 2011, 19(4): 788-798.
[17]Variani E, Lei X, McDermott E, et al. Deep neural networks for small footprint text-dependent speaker verification [C]. IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), 2014: 4052-4056.
[18]Chen Y, Lopez-Moreno I, Sainath T N, et al. Locally-connected and convolutional neural networks for small footprint speaker recognition[C]//Sixteenth Annual Conference of the International Speech Communication Association. 2015.
[19]Snyder D, Garcia-Romero D, Povey D, et al. Deep Neural Network Embeddings for Text-Independent Speaker Verification[C]//Interspeech. 2017: 999-1003.