闻声识人——声纹识别技术简介

  时间继续前进,为了解决GMM-UBM待估参数过多的问题,学界与工业界可谓费尽心思,忽然有一天,学者们发现了:在MAP框架下,我们都是单独去调整GMM的每一个高斯分量,参数太多太累了,那有没有办法同时调整一串高斯分量呢?我们玩街霸也不用给每个关节都配备一个按钮,四个按键照样也能发出波动拳啊。

  那有没有这样一种方法,让我们只能用少量的参数就能控制GMM中所有高斯成分的变化呢?答案当然是有,我们借助一种称为因子分析(Factor Analysis,FA)的算法框架,只用数百个基向量的线性组合(每个基向量的权重就可以看作是在这个基坐标上的坐标点),就足够能表征全体高斯超向量的变化了,也就是说,我们现在只需要几百个变量(通常为400-600),就足够表示一个50000维度的高斯分量均值集合!

  其实,这种降维的思想在过去就已经广泛应用于图像,语音和数据的压缩技术中,因为真实数据总是带着相当多的冗余信息,我们可以做到只损失一小部分精度,甚至不损失精度,就能实现数据的压缩与降维,而基向量的估计是通过一种称为基于概率的主成份分析的(Probabilistic Principal Component Analysis, PPCA)的类EM算法,基于海量的背景说话人数据学习而来。这下好了,模型参数一下子从50000一下子降到了500,简直堪比梦中的房价走势。这样少量的数据就能实现GMM高斯分量的整体参数估计,随着数据量的增加,GMM会迅速趋于一个稳定的参数估计。在上面提到的难点中,a,b,c在很大程度上得到了解决。

物联网

  图11:基于FA框架的Eigenvoice MAP用户模型训练算法

  但是,别忘了还有难点d啊,那怎么办?加拿大蒙特利尔研究所(Computer Research Institute of Montreal,CRIM)的科学家兼公式推导帝Patrick Kenny在05年左右提出了一个设想,既然声纹信息可以用一个低秩的超向量子空间来表示,那噪声和其他信道效应是不是也能用一个不相关的超向量子空间进行表达呢?

  基于这个假设,Kenny提出了联合因子分析(Joint Factor Analysis,JFA)的理论分析框架,将说话人所处的空间和信道所处的空间做了独立不相关的假设,在JFA的假设下,与声纹相关的信息全部可以由特征音空间(Eigenvoice)进行表达,并且同一个说话人的多段语音在这个特征音空间上都能得到相同的参数映射,之所以实际的GMM模型参数有差异,都是由特征信道(Eigenchannel),即信道效应的干扰导致的,我们只需要同时估计出一段语音在特征音空间上的映射和特征信道上的映射,然后撇掉特征信道上的干扰就可以实现更好的声纹环境鲁棒性。

  而JFA两个子空间的联合推导简直堪称是Kenny大神夺目的数学表演,有兴趣的读者可以参考 [5],我估计不是声纹圈的翻了第一页和最后一页就可以直接关闭pdf了。

  JFA在05之后的NIST声纹比赛中以绝对的优势成为了性能最优的识别系统,但JFA就足够好了吗?声纹领域的天空中仍然漂浮着一小朵乌云,尽管JFA对于特征音空间与特征信道空间的独立假设看似合理,但天下没有免费的午餐,现实世界中,尽管任何数据都存在冗余,即数据之间都具有相关性,但绝对的独立同分布的假设又是一个过于强的假设,你可以说你和你家旺财在长相上没什么相关性,但你们都有一对儿眼睛一张嘴啊…(也许都很能吃),这种独立同分布的假设往往为数学的推导提供了便利,但却限制了模型的泛化能力。

  那肿么办?时间来到了09年,Kenny的学生,N.Dehak,提出了一个更加宽松的假设:既然声纹信息与信道信息不能做到完全独立,那干脆就用一个超向量子空间对两种信息同时建模拉倒!回想下JFA的假设:

  同一个说话人,不管怎么采集语音,采集了多少段语音,在特征音子空间上的参数映射都应该是相同的;而最终的GMM模型参数之所以有差别,这个锅就丢给特征信道子空间来背;

  特征音子空间和特征信道子空间互相独立。

  JFA的这种“强”假设在实际使用中已经被验证必然不会满足。 因此N.Dehak同志说:大家都是战友,不要再分你的我的,有福同享有难同当啦。这个更宽松的假设就是:既然正交独立性没有办法满足,那我们就干脆用一个子空间同时描述说话人信息和信道信息。

  这时候,同一个说话人,不管怎么采集语音,采集了多少段语音,在这个子空间上的映射坐标都会有差异,这也更符合实际的情况。这个即模拟说话人差异性又模拟信道差异性的空间称为全因子空间(Total Factor Matrix),每段语音在这个空间上的映射坐标称作身份向量(Identity Vector, i-vector),i-vector向量通常维度也不会太高,一般在400-600左右 [6]。