这是学习时的笔记,包含相关资料连接
欢迎感兴趣的小伙伴一块儿讨论,跪求大神指点~ios
tags: voicegit
新加坡的I2R实验室发布了一套用于评测文本相关识别的 标准数据集RSR2015,涵盖了文本相关领域的多个应用场景。github
在声纹识别,包括语音识别领域,传统的声学特征包括梅尔倒谱系数MFCC、感知线性预测系数PLP、近几年的逐渐受到关注的深度特征Deep Feature、以及15年公开发表的能量规整谱系数PNCC等,都能做为声纹识别在特征提取层面可选且表现良好的声学特征。算法
GMM中高斯份量的数量足够多的时候,GMM能够模拟任意的几率分布。 从模式识别的相关定义上来讲,GMM是一种参数化(Parameterized)的生成性模型(Generative Model),具有对实际数据极强的表征力;但反过来,GMM规模越庞大,表征力越强,其负面效应也会越明显:参数规模也会等比例的膨胀,须要更多的数据来驱动GMM的参数训练才能获得一个更加通用(或称泛化)的GMM模型。
DA Reynolds的团队,提出了一种改进的方案:既然无法从目标用户那里收集到足够的语音,那就换一种思路,能够从其余地方收集到大量非目标用户的声音,聚沙成塔,咱们将这些非目标用户数据(声纹识别领域称为背景数据)混合起来充分训练出一个GMM,这个GMM能够看做是对语音的表征,可是又因为它是从大量身份的混杂数据中训练而成,它又不具有表征具体身份的能力。 这个混合GMM相似于贝叶斯框架的先验模型,它对语音特征在空间分布的几率模型给出了一个良好的预先估计,咱们没必要再像过去那样从头开始计算GMM的参数(GMM的参数估计是一种称为EM的迭代式估计算法),只须要基于目标用户的数据在这个混合GMM上进行参数的微调便可实现目标用户参数的估计,这个混合GMM叫**通用背景模型**(Universal Background Model,UBM)。 UBM的一个重要的优点在于它是经过最大后验估计(Maximum A Posterior,MAP)的算法对模型参数进行估计,避免了过拟合的发生。MAP算法的另一个优点是咱们没必要再去调整目标用户GMM的全部参数(权重,均值,方差)只须要对各个高斯成分的均值参数进行估计,就能实现最好的识别性能。 可是,待估参数仍是太多了,检测时须要输入的语音片断太长,不符合实际使用需求。 GMM-UBM缺少对应于信道多变性的补偿能力,直白点说就是它不抗干扰。 UBM受训练时长、混合度、信道类型、男女比例等因素影响比较大。
WM Campbell将支持向量机(Support Vector Machine,SVM)引入了GMM-UBM的建模中,经过将GMM每一个高斯份量的均值单独拎出来,构建一个高斯超向量(Gaussian Super Vector,GSV)做为SVM的样本,利用SVM核函数的强大非线性分类能力,在原始GMM-UBM的基础上大幅提高了识别的性能,同时基于GSV的一些规整算法,例如扰动属性投影(Nuisance Attribute Projection, NAP),类内方差规整(Within Class Covariance Normalization,WCCN)等,都在必定程度上补偿了因为信道易变形对声纹建模带来的影响。
在MAP框架下,咱们都是单独去调整GMM的每个高斯份量,参数太多太累了,那有没有办法同时调整一串高斯份量呢? 借助一种称为因子分析(Factor Analysis,FA)的算法框架,只用数百个基向量的线性组合(每一个基向量的权重就能够看做是在这个基坐标上的坐标点),就足够能表征全体高斯超向量的变化了,也就是说,咱们如今只须要几百个变量(一般为400-600),就足够表示一个50000维度的高斯份量均值集合! 基向量的估计是经过一种称为基于几率的主成份分析的(Probabilistic Principal Component Analysis, PPCA)的类EM算法,基于海量的背景说话人数据学习而来。这样少许的数据就能实现GMM高斯份量的总体参数估计,随着数据量的增长,GMM会迅速趋于一个稳定的参数估计。
加拿大蒙特利尔研究所(Computer Research Institute of Montreal,CRIM)的科学家兼公式推导帝Patrick Kenny在05年左右提出了一个设想,既然声纹信息能够用一个低秩的超向量子空间来表示,那噪声和其余信道效应是否是也能用一个不相关的超向量子空间进行表达呢? 基于这个假设,Kenny提出了联合因子分析(Joint Factor Analysis,JFA)的理论分析框架,将说话人所处的空间和信道所处的空间作了独立不相关的假设,在JFA的假设下,与声纹相关的信息所有能够由特征音空间(Eigenvoice)进行表达,而且同一个说话人的多段语音在这个特征音空间上都能获得相同的参数映射,之因此实际的GMM模型参数有差别,都是由特征信道(Eigenchannel),即信道效应的干扰致使的,咱们只须要同时估计出一段语音在特征音空间上的映射和特征信道上的映射,而后撇掉特征信道上的干扰就能够实现更好的声纹环境鲁棒性。
数据之间都具备相关性,但绝对的独立同分布的假设又是一个过于强的假设。 09年,Kenny的学生,N.Dehak,提出了一个更加宽松的假设:既然声纹信息与信道信息不能作到彻底独立,那干脆就用一个超向量子空间对两种信息同时建模;即正交独立性没有办法知足,那咱们就干脆用一个子空间同时描述说话人信息和信道信息。 这时候,同一个说话人,无论怎么采集语音,采集了多少段语音,在这个子空间上的映射坐标都会有差别,这也更符合实际的状况。这个即模拟说话人差别性又模拟信道差别性的空间称为全因子空间(Total Factor Matrix),每段语音在这个空间上的映射坐标称做身份向量(Identity Vector, i-vector),i-vector向量一般维度也不会过高,通常在400-600左右。 I-vector的出现使得说话人识别的研究一会儿简化抽象为了一个数值分析与数据分析的问题:任意的一段音频,无论长度怎样,内容如何,最后都会被映射为一段低维度的定长i-vector。 咱们只须要找到一些优化手段与测量方法,在海量数据中可以将同一个说话人的几段i-vector尽量分类得近一些,将不一样说话人的i-vector尽量分得远一些。 Dehak在实验中还发现i-vector具备良好的空间方向区分性,即使上SVM作区分,也只须要选择一个简单的余弦核就能实现很是好的区分性。 截至今日,i-vector在大多数状况下仍然是文本无关声纹识别中表现性能最好的建模框架,学者们后续的改进都是基于对i-vector进行优化,包括线性区分分析(Linear Discriminant Analysis, LDA),基于几率的线性预测区分分析(probabilistic linear discriminant analysis,PLDA)甚至是度量学习(Metric Learning)等。
文本相关识别spring
在看似更简单的文本相关声纹识别任务上,i-vector表现得却并不比传统的GMM-UBM框架更好。 由于i-vector简洁的背后是它舍弃了太多的东西,其中就包括了文本差别性,在文本无关识别中,由于注册和训练的语音在内容上的差别性比较大,所以咱们须要抑制这种差别性;但在文本相关识别中,咱们又须要放大训练和识别语音在内容上的类似性,这时候牵一发而动全身的i-vector就显得不是那么合适了。 在文本相关识别应用中,安全性最高的仍然是随机数字声纹识别。
常常用的有gmm-ubm,ivector-plda,deep feature,bottleneck feature 还有一些d-vector对数据量要求比较大的,主流的仍是用nn去提取特征
再补充几个,MFCC、Fbank、BNF特征,GMM-UBM、ivector+PLDA/CDS、GMM+SVM、d-vector最近也挺火的自从谷歌带起来
http://www.leiphone.com/news/201611/ISBPJpacXH5bI7hE.html?_t=t安全
转wav、去静音VAD,MFCC提取、CVN归一化等等根据语料的状况作出要用哪些怎么处理;接着是训练GMM-UBM,训练出每一个高斯份量的参数(均值方差权值),当中是使用EM和MAP;接着是训练整体变化子空间T,使高斯份量从高维映射到低维的i-vector,获得i-vector矢量之后要继续从400维降到200维,比较多用的是LDA,而后用WCCN对类内空间归一化来提高类间的差别;这样就能够获得该speaker的均值和方差做为一个对比的根据。最后把待识别的speaker也通过上面的步骤,获得待识别的参数,再和训练speakers进行打分判断哪一个类似度更高;打分的方法能够用PLDA几率形式LDA或者CDS余弦距离打分。要实现更低的EER适应复杂噪声环境,能够用到DNN的Bottleneck方法提取speaker的充分统计量,并且各类算法合理组合优化也成了目前趋势。
语音--预处理--提取特征向量--模式匹配(根据特征向量训练声纹模型库)--后处理--识别结果
(1)模板匹配方法:利用动态时间弯折(DTW)以对准训练和测试特征序列,主要用于固定词组的应用(一般为文本相关任务);在训练过程当中从每一个说话人的训练语句中提取相应的特征矢量来描述各个说话人的行为,在测试阶段,从说话人的测试语音信号中用一样的方法提取测试模板,主要有动态时间规整方法和矢量量化方法。 (2)最近邻方法:训练时保留全部特征矢量,识别时对每一个矢量都找到训练矢量中最近的K个,据此进行识别,一般模型存储和类似计算的量都很大; (3)神经网络方法:有不少种形式,如多层感知、径向基函数(RBF)等,能够显式训练以区分说话人和其背景说话人,其训练量很大,且模型的可推广性很差; (4)隐式马尔可夫模型(HMM)方法:一般使用单状态的HMM,或高斯混合模型(GMM),是比较流行的方法,效果比较好; (5)VQ聚类方法(如LBG,K-均值):效果比较好,算法复杂度也不高,和HMM方法配合起来更能够收到更好的效果; (6)多项式分类器方法:有较高的精度,但模型存储和计算量都比较大。 表征说话人确认系统性能的两个重要参数是错误拒绝率和错误接受率,前者是拒绝真正说话人而形成的错误,后者是接受集外说话人而形成的错误,两者与阈值的设定相关。在现有的技术水平下,二者没法同时达到最小,须要调整阈值来知足不一样应用的需求,好比在须要“易用性”的状况下,可让错误拒绝率低一些,此时错误接受率会增长,从而安全性下降;在对“安全性”要求高的状况下,可让错误接受率低一些,此时错误拒绝率会增长,从而易用性下降。
对输入的语音数据序列(PCM 码流)进行预处理。框架
a) 去除非语音信号 和 静默语音信号;b) 对语音信号分帧,以供后续处理。iphone
提取每一帧语音信号的MFCC 参数 并保存。
1)预加强(Pre-Emphasis) :差分语音信号。
2)音框化(Framing) :对语音数据分帧。
3)汉明窗(Hamming Windowing) :对每帧信号加窗,以减少吉布斯效应的影响。
4)快速傅立叶变换(FFT) :将时域信号变换成为信号的功率谱。
5)三角带通滤波器(Triangle Filters) :三角滤波器覆盖的范围都近似于人耳的一个临界带宽,以此来 模拟人耳的掩蔽效应。
6)离散余弦转换(DCT) :去除各维信号之间的相关性,将信号映射到低维空间。
声纹识别。提供输入话音与GMM 声纹模型的匹配运算函数,以判断输入话音是否与声纹匹配。
高斯混合模型GMM将空间分布的几率密度用多个高斯几率密度函数的加权和来拟合,能够平滑地逼近任意形状的几率密度函数,而且是一个易于处理的参数模型。在具体表示上,这个模型实际上就是把高斯混合模型的每一个高斯份量的均值向量排列在一块儿组成一个超向量做为某一个说话人的模型,称为均值超矢量。
在训练说话人模型的时候,因为注册时说话人的数据稀疏,一般利用一个通用背景模型(Universal Background Model,UBM)和少许的说话人数据,经过自适应算法(如最大后验几率MAP,最大似然线性回归MLLR等)获得目标说话人模型。
对数似然比的评价指标。用测试数据分别与模型和UBM进行似然度比较,而后将这两个似然相除再取对数,用获得的值做为打分来评价一条测试数据是否和模型匹配。因为UBM表明了最最广泛的平凡的语音特征,而模型表明了属于这一个说话人的特征。用对数似然比来表示,就是评价测试数据到底和模型更接近仍是和UBM最接近。最后设定一个阀值,用来进行最后的分类判断。
UBM平均每一个混合获得100帧左右训练样本时,可以得到较高且较稳定识别率
信道鲁棒
联合因子分析认为,在GMM-UBM系统中的高斯模型均值超矢量,大致上能够分为跟说话人自己有关的矢量特征和跟信道以及其余变化有关的矢量特征的线性叠加。也就是,将说话人GMM均值超矢量所在的空间划分为本征空间,信道空间,最后还有一个残差空间。这样,若是咱们能抽取出跟说话人自己相关的特征而去掉和信道相关的特征,就能很好地克服信道影响进行识别了。
受联合因子分析理论的启发,Dehak提出了从GMM均值超矢量中提取一个更紧凑的矢量,称为I-Vector。这里的I是身份(Identity)的意思,出于天然的理解,I-Vector至关于说话人的身份标识。
信道补偿主要分三个层次:基于特征的补偿,基于模型的补偿和基于得分的补偿。
LDA至多可生成C-1维子空间(C为分类类别数),LDA降维后的度区间在 [1,C-1] ,与原始特征数n无关,所以二分类问题至多能够降维到一维,致使有些线性不可分数据分布状况没法分类。在说话人识别中,大部分状况是二分类问题,因此这里LDA的做用是将原始高维特征数据降维到一维,这样每个样本特征向量映射为一维上的一个点,这个点的数值表示该点到原点的距离。
当一个说话人有不少语音时,表现为这些语音在说话人空间中汇集为一簇。若是这些语音收到信道的影响,那么就表现为这个说话人的语音的方差很大。而后,LDA尝试着找到一个新的方向,将原来的全部数据投影到这个方向,使得在这个方向中同一说话人的数据具备最小的类内方差,同时不一样说话人之间的距离尽可能大。这样,就达到减少信道差别的影响了。
LDA其实也是一种降维方法。它尽可能去移除不须要的方向,最小化类内的方差信息量。也就是,LDA寻找一个新的方向去更好地对不一样的类作出分类。可见,LDA很是适合做为说话人识别系统的信道补偿算法。
当使用LDA对测试数据和模型的I-vector进行从新投影后,而后计算它们之间的cosine距离,就能够做为最后的得分。
最后简单说一下,LDA如何找到这个映射方向。前面不是说LDA的目的是最大化类间距离,最小化类内距离么。咱们很容易认为只要定义一个目标函数而后去用通常的最优化方法去求近似解就行了。其实,不用这么麻烦的,LDA是能够直接求取解析解的。具体方法就是对目标函数求导而且令导数为零。可是在求导以前,记得对分母进行归一化,由于若是不归一化的话,映射方向扩大任意倍等成立,因此很差肯定映射方向的具体值。
OK,求解析解的过程当中,通过一系列变化,咱们最终只要求出原始样本的均值和方差就能够最佳映射方向 w,这就是Fisher 于 1936年提出的线性判别分析。
GMM+UBM
i-vector
基于短语音和信道变化的说话人识别研究: 全面 清楚
中科院不公开论文摘要(2016.5)
声纹识别是根据语音对说话人进行自动区分,从而进行说话人身份鉴别以及认证的生物特征识别技术。其中,文本无关的声纹识别更是因为其应用环境的灵活性,成为学术界以及工业界的一个研究热点。本文将以文本无关的声纹识别为研究重点,致力于完成一个完善的且性能良好的声纹识别系统。主要采用四种建模方法进行研究以及系统实现,包括:
一、介绍基于GMM-UBM的声纹识别系统,以此为基础,研究并实现了基于TVM-I-Vector的声纹识别系统。混合高斯-通用背景模型(Gaussian Mixture Model-Universal Background Model,GMM-UBM)将声学特征投影到高维空间上,获得高维的均值超矢量。UBM采用大规模的说话人语料训练完成,并所以能够被采进行说话人的共性特征的描述。而后,以UBM为初始模型,采用目标说话人数据进行基于最大后验几率(Maximum A Posterior, MAP)的自适应训练,获得目标说话人的混合高斯模型(GMM)。经过计算似然值的方法进行说话人打分,进而进行识别判决。说话人矢量因子(Identity-Vector,I-Vector)模型以GMM-UBM为基础,基于的假设是全部的说话人信息隐含在高维的均值超矢量中。它的基本思想是将高维的均值超矢量投影至低维空间中进行建模,即将长短不一的语音文件经过全局差别空间建模(Total Variable space Model, TVM)的方式,获得长度一致的低维向量做为说话人模型。这个低维矢量即为I-Vector。因为I-Vector建模中没有区分语音中说话人信息以及信道信息,为了下降信道对识别的影响,本文分别采用了线性判别分析(Linear Discriminant Analysis,LDA)以及几率线性判别分析(Probability Linear Discriminant Analysis,PLDA)对I-Vector进行信道补偿,提升识别效果。
二、研究并实现了基于DNN统计量提取的I-Vector声纹识别系统。在基于TVM-I-Vector的声纹识别系统中,采用UBM计算后验几率,提取相关统计量,从而进行全局差别空间的估计。考虑到UBM数据驱动的建模方式可能会致使后验几率计算的偏差较大,从而影响识别性能,本文采用自动语音识别(Automatic Speech Recognition, ASR)任务中训练获得的深度神经网络(Deep Neural Network, DNN)模型做为计算后验几率的模型替代UBM,以获得更准确的统计量进行模型估计,从而提升识别效果。
三、研究并实现了基于深度瓶颈特征(Deep Bottleneck Feature, DBF)的I-Vector声纹识别系统。深度瓶颈层(Deep Bottleneck Layer)在语音识别中的成功应用证实了DBF在特征表示上的优点。低维的DBF在网络结构中可以实现高维输入至输出的重现,说明它是一种抽象、凝练且更具区分性的特征。相比于声纹识别中的Mel频率倒谱系数 (Mel Frequency Cepstral Coefficients, MFCC)特征,DBF在声纹识别上也表现出了必定的优点。在本文中,实现了基于DBF的I-Vector模型的估计。此外,考虑到MFCC以及DBF的互补做用,进行了基于DBF以及MFCC特征融合的I-Vector建模,进一步提升声纹识别系统的性能。
有些可能记录时忘记记录获取信息的网站地址,有不当之处请指正~~ (若非特别声明,文章均为Vanessa的我的笔记,转载请注明出处。文章若有侵权内容,请联系我,我会及时删除)