这是学习时的笔记,包含相关资料链接
欢迎感兴趣的小伙伴一起讨论,跪求大神指点~
声纹识别
tags: voice
声音特性
- 语音的特殊性。发音器官分为声门上系统、喉系统、声门下系统,每个人都有自己的一套发音器官,它们的形态、构造各有差别,每次发音需要众多发音器官相互配合、共同运动。这决定了语音的物理属性(也称语音四要素):音质、音长、音强、音高。这些物理量人各不同,因而语音在声纹图谱上呈现不同的声纹特征,根据这些声纹特征参数,我们不但可以区分语声,而且可以认定同一人的语声。
- 语音的稳定性。一个人的发音器官发育成熟后,其解剖结构和生理状态是稳定不变的,加之发音人的言语习惯等语音的社会心理属性,使得每个人在不同时段所说的相同文本内容的话,基本语音特征是稳定不变的。因此,你可以把人的声道看做管乐中的号,长号、短号虽然都是号,但由于声道的形状、长短不同,吹出来的音质也不同。
声纹识别综述
发展历史
新加坡的I2R实验室发布了一套用于评测文本相关识别的 标准数据集RSR2015,涵盖了文本相关领域的多个应用场景。
在声纹识别,包括语音识别领域,传统的声学特征包括梅尔倒谱系数MFCC、感知线性预测系数PLP、近几年的逐渐受到关注的深度特征Deep Feature、以及15年公开发表的能量规整谱系数PNCC等,都能作为声纹识别在特征提取层面可选且表现良好的声学特征。
1. GMM
GMM中高斯分量的数量足够多的时候,GMM可以模拟任意的概率分布。
从模式识别的相关定义上来说,GMM是一种参数化(Parameterized)的生成性模型(Generative Model),具备对实际数据极强的表征力;但反过来,GMM规模越庞大,表征力越强,其负面效应也会越明显:参数规模也会等比例的膨胀,需要更多的数据来驱动GMM的参数训练才能得到一个更加通用(或称泛化)的GMM模型。
2. UBM
DA Reynolds的团队,提出了一种改进的方案:既然没法从目标用户那里收集到足够的语音,那就换一种思路,可以从其他地方收集到大量非目标用户的声音,积少成多,我们将这些非目标用户数据(声纹识别领域称为背景数据)混合起来充分训练出一个GMM,这个GMM可以看作是对语音的表征,但是又由于它是从大量身份的混杂数据中训练而成,它又不具备表征具体身份的能力。
这个混合GMM类似于贝叶斯框架的先验模型,它对语音特征在空间分布的概率模型给出了一个良好的预先估计,我们不必再像过去那样从头开始计算GMM的参数(GMM的参数估计是一种称为EM的迭代式估计算法),只需要基于目标用户的数据在这个混合GMM上进行参数的微调即可实现目标用户参数的估计,这个混合GMM叫**通用背景模型**(Universal Background Model,UBM)。
UBM的一个重要的优势在于它是通过最大后验估计(Maximum A Posterior,MAP)的算法对模型参数进行估计,避免了过拟合的发生。MAP算法的另外一个优势是我们不必再去调整目标用户GMM的所有参数(权重,均值,方差)只需要对各个高斯成分的均值参数进行估计,就能实现最好的识别性能。
但是,待估参数还是太多了,检测时需要输入的语音片段太长,不符合实际使用需求。
GMM-UBM缺乏对应于信道多变性的补偿能力,直白点说就是它不抗干扰。
UBM受训练时长、混合度、信道类型、男女比例等因素影响比较大。
3. 支持向量机
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)等,都在一定程度上补偿了由于信道易变形对声纹建模带来的影响。
4. FA因子分析
在MAP框架下,我们都是单独去调整GMM的每一个高斯分量,参数太多太累了,那有没有办法同时调整一串高斯分量呢?
借助一种称为因子分析(Factor Analysis,FA)的算法框架,只用数百个基向量的线性组合(每个基向量的权重就可以看作是在这个基坐标上的坐标点),就足够能表征全体高斯超向量的变化了,也就是说,我们现在只需要几百个变量(通常为400-600),就足够表示一个50000维度的高斯分量均值集合!
基向量的估计是通过一种称为基于概率的主成份分析的(Probabilistic Principal Component Analysis, PPCA)的类EM算法,基于海量的背景说话人数据学习而来。这样少量的数据就能实现GMM高斯分量的整体参数估计,随着数据量的增加,GMM会迅速趋于一个稳定的参数估计。
5. JFA联合因子分析
加拿大蒙特利尔研究所(Computer Research Institute of Montreal,CRIM)的科学家兼公式推导帝Patrick Kenny在05年左右提出了一个设想,既然声纹信息可以用一个低秩的超向量子空间来表示,那噪声和其他信道效应是不是也能用一个不相关的超向量子空间进行表达呢?
基于这个假设,Kenny提出了联合因子分析(Joint Factor Analysis,JFA)的理论分析框架,将说话人所处的空间和信道所处的空间做了独立不相关的假设,在JFA的假设下,与声纹相关的信息全部可以由特征音空间(Eigenvoice)进行表达,并且同一个说话人的多段语音在这个特征音空间上都能得到相同的参数映射,之所以实际的GMM模型参数有差异,都是由特征信道(Eigenchannel),即信道效应的干扰导致的,我们只需要同时估计出一段语音在特征音空间上的映射和特征信道上的映射,然后撇掉特征信道上的干扰就可以实现更好的声纹环境鲁棒性。
6. 全因子空间 I-vector
数据之间都具有相关性,但绝对的独立同分布的假设又是一个过于强的假设。
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)等。
文本相关识别
在看似更简单的文本相关声纹识别任务上,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)多项式分类器方法:有较高的精度,但模型存储和计算量都比较大。
表征说话人确认系统性能的两个重要参数是错误拒绝率和错误接受率,前者是拒绝真正说话人而造成的错误,后者是接受集外说话人而造成的错误,二者与阈值的设定相关。在现有的技术水平下,两者无法同时达到最小,需要调整阈值来满足不同应用的需求,比如在需要“易用性”的情况下,可以让错误拒绝率低一些,此时错误接受率会增加,从而安全性降低;在对“安全性”要求高的情况下,可以让错误接受率低一些,此时错误拒绝率会增加,从而易用性降低。
声纹提取及识别
[MFCC+GMM]
-
对输入的语音数据序列(PCM 码流)进行预处理。
a) 去除非语音信号 和 静默语音信号;
b) 对语音信号分帧,以供后续处理。 -
提取每一帧语音信号的MFCC 参数 并保存。
1)预增强(Pre-Emphasis) :差分语音信号。
2)音框化(Framing) :对语音数据分帧。
3)汉明窗(Hamming Windowing) :对每帧信号加窗,以减小吉布斯效应的影响。
4)快速傅立叶变换(FFT) :将时域信号变换成为信号的功率谱。
5)三角带通滤波器(Triangle Filters) :三角滤波器覆盖的范围都近似于人耳的一个临界带宽,以此来 模拟人耳的掩蔽效应。
6)离散余弦转换(DCT) :去除各维信号之间的相关性,将信号映射到低维空间。 -
用第2 步提取的 MFCC 参数训练话者的 GMM (高斯混合模型),得到专属某话者的 GMM 声纹模型。
-
声纹识别。提供输入话音与GMM 声纹模型的匹配运算函数,以判断输入话音是否与声纹匹配。
GMM-UBM系统框架
- [ ] 不大明白
高斯混合模型GMM将空间分布的概率密度用多个高斯概率密度函数的加权和来拟合,可以平滑地逼近任意形状的概率密度函数,并且是一个易于处理的参数模型。在具体表示上,这个模型实际上就是把高斯混合模型的每个高斯分量的均值向量排列在一起组成一个超向量作为某一个说话人的模型,称为均值超矢量。
在训练说话人模型的时候,由于注册时说话人的数据稀疏,通常利用一个通用背景模型(Universal Background Model,UBM)和少量的说话人数据,通过自适应算法(如最大后验概率MAP,最大似然线性回归MLLR等)得到目标说话人模型。
对数似然比的评价指标。用测试数据分别与模型和UBM进行似然度比较,然后将这两个似然相除再取对数,用得到的值作为打分来评价一条测试数据是否和模型匹配。由于UBM代表了最最普遍的平凡的语音特征,而模型代表了属于这一个说话人的特征。用对数似然比来表示,就是评价测试数据到底和模型更接近还是和UBM最接近。最后设定一个阀值,用来进行最后的分类判断。
UBM平均每个混合得到100帧左右训练样本时,能够获得较高且较稳定识别率
联合因子分析
信道鲁棒
联合因子分析认为,在GMM-UBM系统中的高斯模型均值超矢量,大体上可以分为跟说话人本身有关的矢量特征和跟信道以及其他变化有关的矢量特征的线性叠加。也就是,将说话人GMM均值超矢量所在的空间划分为本征空间,信道空间,最后还有一个残差空间。这样,如果我们能抽取出跟说话人本身相关的特征而去掉和信道相关的特征,就能很好地克服信道影响进行识别了。
I-vector特征
受联合因子分析理论的启发,Dehak提出了从GMM均值超矢量中提取一个更紧凑的矢量,称为I-Vector。这里的I是身份(Identity)的意思,出于自然的理解,I-Vector相当于说话人的身份标识。
信道补偿算法
信道补偿主要分三个层次:基于特征的补偿,基于模型的补偿和基于得分的补偿。
LDA线性鉴别分析
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年提出的线性判别分析。
PLDA(概率线性判别分析)算法
Paper
- DNN方法
- Speaker Recognition Using Wavelet Packet Entropy(小波包熵), I-Vector, and Cosine Distance Scoring
- An overview of text-independent speaker recognition:From features to supervectors
GMM+UBM
i-vector
-
PLDA in the i-supervector space for text-independent speaker verification: GOOD HELPFUL
-
基于短语音和信道变化的说话人识别研究: 全面 清楚
Blog
-
中科院不公开论文摘要(2016.5)
声纹识别是根据语音对说话人进行自动区分,从而进行说话人身份鉴别以及认证的生物特征识别技术。其中,文本无关的声纹识别更是由于其应用环境的灵活性,成为学术界以及工业界的一个研究热点。本文将以文本无关的声纹识别为研究重点,致力于完成一个完善的且性能良好的声纹识别系统。主要采用四种建模方法进行研究以及系统实现,包括:
1、介绍基于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进行信道补偿,提高识别效果。
2、研究并实现了基于DNN统计量提取的I-Vector声纹识别系统。在基于TVM-I-Vector的声纹识别系统中,采用UBM计算后验概率,提取相关统计量,从而进行全局差异空间的估计。考虑到UBM数据驱动的建模方式可能会导致后验概率计算的误差较大,从而影响识别性能,本文采用自动语音识别(Automatic Speech Recognition, ASR)任务中训练得到的深度神经网络(Deep Neural Network, DNN)模型作为计算后验概率的模型替代UBM,以得到更准确的统计量进行模型估计,从而提高识别效果。
3、研究并实现了基于深度瓶颈特征(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的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除)