AI_声纹识别综述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Julialove102123/article/details/89711789

声纹识别,也称作说话人识别,是一种通过声音判别说话人身份的技术【比如:微信的语音登录】。从直觉上来说,声纹虽然不像人脸、指纹的个体差异那样直观可见,但由于每个人的声道、口腔和鼻腔也具有个体的差异性,因此反映到声音上也具有差异性。如果说将口腔看作声音的发射器,那作为接收器的人耳生来也具备辨别声音的能力。

最直观的是当我们打电话给家里的时候,通过一声“喂?”就能准确地分辨出接电话的是爸妈或是兄弟姐妹,这种语音中承载的说话人身份信息的唯一性使得声纹也可以像人脸、指纹那样作为生物信息识别技术的生力军,辅助甚至替代传统的数字符号密码,在安防和个人信息加密的领域发挥重要的作用。本文意在和读者一起分享声纹识别中主流的技术以及优图实验室在声纹识别的研发积累中取得的成果,希望能让读者对于声纹识别这个糅合语音信号处理+模式识别,且理论研究与工程背景兼具的领域有一个基本又全面的认识。

基本原理

声纹识别是通过对一种或多种语音信号的特征分析来达到对未知声音辨别的目的,简单的说就是辨别某一句话是否是某一个人说的技术。

该项技术最早是在40年代末由贝尔实验室开发,主要用于军事情报领域。随着该项技术的逐步发展,60年代末后期在美国的法医鉴定、法庭证据等领域都使用了该项技术,从1967年到现在,美国至少5000多个案件包括谋杀、强奸、敲诈勒索、走私毒品、赌博,政治腐败等都通过声纹识别技术提供了有效的线索和有力的证据。特别强调的是,声纹鉴别目前已经是公安部的标准,是可以作为证据进行鉴定的。

声纹识别的理论基础是每一个声音都具有独特的特征,通过该特征能将不同人的声音进行有效的区分。

这种独特的特征主要由两个因素决定:

  1. 第一个是声腔的尺寸,具体包括咽喉、鼻腔和口腔等,这些器官的形状、尺寸和位置决定了声带张力的大小和声音频率的范围。因此不同的人虽然说同样的话,但是声音的频率分布是不同的,听起来有的低沉有的洪亮。每个人的发声腔都是不同的,就像指纹一样,每个人的声音也就有独特的特征。
  2. 第二个是发声器官被操纵的方式,发声器官包括唇、齿、舌、软腭及腭肌肉等,他们之间相互作用就会产生清晰的语音。而他们之间的协作方式是人通过后天与周围人的交流中随机学习到的。人在学习说话的过程中,通过模拟周围不同人的说话方式,就会逐渐形成自己的声纹特征。

因此,理论上来说,声纹就像指纹一样,很少会有两个人具有相同的声纹特征。

美国研究机构已经表明在某些特点的环境下声纹可以用来作为有效的证据。并且美国联邦调查局对2000例与声纹相关的案件进行统计,利用声纹作为证据只有0.31%的错误率。目前利用声纹来区分不同人这项技术已经被广泛认可,并且在各个领域中都有应用。

声纹识别是个宽泛的概念,技术方面有分为两类:即说话人确认技术说话人辨认技术,说话人确认技术是用于判断未知说话人是否为某个指定人;后者则是用于辨认未知说话人是已记录说话人中的哪一位。

我们通常理解的都是说话人辨认技术,常常应用于刑侦破案、罪犯跟踪、国防监听、个性化应用等等,说话人确认技术常常应用于证券交易、银行交易、公安取证、个人电脑声控锁、汽车声控锁、身份证、信用卡的识别等。 

目前来看,声纹识别常用的方法包括模板匹配法、最近邻方法、神经元网络方法,VQ聚类法等。

这些方法虽然处理手段不同,但基本原理是类似的,比如刚开始给大家展示的语谱图。语谱图是声音信号的一种图像化的表示方式,它的横轴代表时间,纵轴代表频率,语音在各个频率点的幅值大小用颜色来区分。说话人的声音的基频及谐频在语谱图上表现为一条一条的亮线,再通过不同的处理手段就可以得到不同语谱图之间的相似度,最终达到声纹识别的目的。

目前公安部声纹鉴别就采用类似方法,而且语谱图还是用的灰度来表示。主要抽取说话人声音的基音频谱及包络、基音帧的能量、基音共振峰的出现频率及其轨迹等参数表征,然后再与模式识别等传统匹配方法结合进行声纹识别。

美国和国内都有不少企业生产声纹识别的设备,公安部为采购这些设备还正式颁布了《安防声纹识别应用系统技术要求》的行业标准。但是这种方法是一种静态检测的方法,存在很大的弊端,实时性不好,动态检测声纹的需求实际上更大。

声纹识别技术的三个分水岭

李稀敏将近年来声纹识别技术的发展总结为3个分水岭。

  • 第一个分水岭是2000年。在2000年以前,进行声纹识别验证,主要是基于模板匹配,这种算法基于信号比对,通常要求比对双方的内容相同,比如要验证说“床前明月光”的人是谁,那验证人也必须要说“床前明月光”才能验证,如果他说“疑似地上霜”的话,验证就不能完成。2000年以后,开始出现基于高斯混合模型的声纹识别算法,高斯混合模型是典型基于统计学习理论的方法,该算法采用大量数据为每个说话人训练模型,使用高斯混合模型验证已经与文本无关了,即要验证“床前明月光”的说话人时,说“疑似地上霜”也能够验证成功。之后产生的许多主流研究方法都是在高斯混合模型的基础上改进的,但高斯混合模型注册语音的时间过长,无法满足实际应用场景的需求,因此需要新的技术来突破限制。
  • 第二个分水岭是2010年左右,这时候出现了iVector/PLDA算法。iVector最大的亮点在于,把语音映射到了一个固定的且低维的向量上,这意味这所有机器学习的算法都可以用来解决声纹识别的问题了,因此这是一个巨大的进步。PLDA是一种信道补偿算法,因为在iVector中,既包含说话人的信息,也包含信道信息,而我们只关心说话人的信息,所以才做信道补偿,目前PLDA是最好的信道补偿算法,但噪声对结果依然有很大的影响。
  • 第三分水岭是在2011年,在第十一届全国人机语音通讯学术会议上,邓力分享了他在微软DNN-based speech recognition的研究结果,将识别率提升了30%,这将声纹识别的准确率一下子提升了一个层次。DNN能从大量样本中学习到高度抽象的说话人特征,并对噪声有很强的免疫力,至此深度学习被引入业界,国内对声纹识别技术的关注点也放到了深度学习上。

局限

现在的大部分研究都是有关动态实时检测方面的,动态检测的方法自然要利用静态检测的各种原理方法,同时也需要增加其他很多算法, 比如VAD、降噪、去混响等。VAD的目的是检测是不是人的声音,降噪和去混响是排除环境干扰,这不仅对于声纹检测很中重要,对于语音识别更加重要。    

VAD常用两个方法,基于能量检测和LTSD(Long-Term Spectral Divergence),当前用的较多是LTSD,另外特征提取方面还需要:动态时间规整 (DTW)、矢量量化 (VQ)、支持向量机 (SVM),模型方面则需要隐马尔可夫模型 (HMM)和高斯混合模型 (GMM)。

这是声纹识别常用算法的结构图,所有的声纹识别,不管是用传统算法还是深度学习,都需要事先建立声纹库,目前最全的应该是公安部的声纹鉴别库。

声纹è¯å«ææ¯çç°ç¶ãå±éä¸è¶å¿ä¸¨ç¡¬åå¬å¼è¯¾

从上面模型不难看出,声纹识别还是一种基于数据驱动的模式识别问题,因为所有模式识别存在的问题声纹都存在,而且声纹识别还有一些不太好解决的物理和计算问题。

虽然声纹识别的唯一性很好,但实际上我们现有的设备和技术仍然很难做出准确分辨,特别是人的声音还具有易变性,易受身体状况、年龄、情绪等的影响。刚才也提到,若在环境噪音较大和混合说话人的环境下,声纹特征也是很难提取和建模的。

虽然深度学习带给模式识别极大的提升,甚至还有开源的相关算法,但是声纹识别的研究进展仍然不大,这仍然受制于声纹的采集和特征的建立。

另外就是真实环境下的各种影响,包括:

  • 1、噪音问题
  • 2、多人说话
  • 3、音乐噪声
  • 4、身体状况
  • 5、情绪影响

先看噪声问题,下图是Mitchell McLaren在论文中做的研究,噪声对不同模型的声纹识别影响。

声纹è¯å«ææ¯çç°ç¶ãå±éä¸è¶å¿ä¸¨ç¡¬åå¬å¼è¯¾

从这个图中可以看出,混响和噪声对各类模型和方法都有非常大的影响,这和人类似,嘈杂环境中确实很难分辨出某个人的声音,但是人耳比较奇特,我们可以很好的处理这种“鸡尾酒会”效应,但是目前机器还做不到。

音乐噪声很好理解,因为音乐通常是宽带信号,完全覆盖了人声的频段,这会非常影响声纹的特征表现,动态检测的时候更是难以提取,我们目前在语音识别中采用的是回声抵消的方法(严格来说是自噪声去除),同样也可以用到声纹识别,但是面对其他设备音乐也很难处理,当前仅有波束形成这一方法。

多人说话是声纹识别和语音识别都面临的问题,当前的所有模型都无法盲分离两个以上的人声并且同时进行识别。

身体状况和情绪影响是我们每个人的主要个体差异,这种差异是基于时间变化的,所以声纹特征会出现某些变化,声纹鉴别可以通过反复取样避免这个问题,但是动态检测目前还没有好办法。

从上面几点分析,也和我们主题相关,就是华帝的小V机器人,通过记录歌手的声纹信息进行判断歌手,理论上是没有问题的。但是难的就是,这是声纹识别最复杂的情况,不仅是要保证实时性,还要解决噪声问题、音乐干扰、两人识别以及歌手刻意隐藏的问题,至少目前来看,这项技术还远远没有成熟。

即便从应用来看也是这样,除了声纹鉴别,声纹识别基本上就是在应用中充当娱乐的功能。另外,声纹可以作为认证手段,但是不应该放在第一位独立使用,而是配合其他认证手段同时使用。 

详情

1. 拨云见日 – 声纹的基础“姿势”

我们常常会用“花言巧语”来形容一个嘴皮子不靠谱的人,但其实这个成语用来形容语音信号也是十分贴切的。人脸、指纹都是基于图像的二维信号,而语音是一种时变的一维信号,语音承载的首先是语意的信息,即我们说了什么内容,在语意信息的背后才是身份信息的体现。我们讲的话可以对应到成百上千个字词信息,但是这背后却只对应了一个不变的身份。

图1. 说话人A对应“四”的语音波形
图2. 说话人B对应“四”的语音波形
图3. 说话人A对应“九”的语音波形


如果上方的时域波形不够直观的话,那下方的短时语谱图从二维图像的角度能提供更多的直观信息。似乎图1和图2的相似度更高一些,图3因为对应了不同的语意,因此和图1,2差别更明显,但实际上图1和图3来自于同一个说话人,按照需求,1和3应该被分在同一类别! 似乎有点难,那我们干脆不要比较九了,只比较四好了。

因此,从语音字典是否受限的角度上来区分,声纹识别可以分为:

  1. 文本无关识别:文本无关,顾名思义就是说系统对于输入的语音的内容并不做限制,识别系统应当可以克服语音中字典信息(亦或语意信息)的多变性和差异性,对语音背后的身份做出准确判断;
  2. 文本相关识别:而文本相关识别,意思是我们预先会限制语音的字典集合的规模。

再往细了区分又有两种常用的应用场景:

  1.  一种是固定口令,用户必须要说“天王盖地虎”,系统才会去识别声纹,你说“宝塔镇河妖”,对不起,不管你是谁,一概不行;
  2. 一种是有限搭配的字典集合,系统会随机搭配一些数字或符号,用户需正确念出对应的内容才可识别声纹,这种随机性的引入使得文本相关识别中每一次采集到的声纹都有内容时序上的差异。

相较于指纹和人脸等静态的图像特征,这种数序的随机性无疑提升了安全性和防盗取能力。优图实验室自研的随机数字声纹识别方案已经应用于线上系统中,通过自主研发的人脸识别、活体检测、语音+声纹的多重验证手段,在最大程度上保障了用户的安全,杜绝了仿冒、窃取或复制用户自身生物信息的可能性.

图4:优图人脸核身示意图

文本相关识别因为限制了可选的字典信息,因此在系统复杂度和识别准确率上都要远好于文本无关的系统,只要采集相对比较短的一段语音即可实现声纹的识别;但文本无关的识别系统在某些领域也会有重要的作用,例如刑侦比对,我们可以采集到嫌疑人的一段声音,但是没法对声音对应的内容做限制,这时候文本无关识别就会派上重要的用场。

在过去的20年中,学界研究的重点大部分放在了更具挑战性的文本无关识别上,所取得的突破也都是围绕着文本无关的识别展开。美国国家标准技术局(National Institute of Standard and Technology,NIST)从90年代开始都会不定期地举办声纹识别评测竞赛(Speaker Recognition Evaluation, NIST SRE)[1],也是针对文本无关的识别进行评测,吸引了学术界和工业界的诸多重量级团队参与。

2014年,在语音界的学术盛会interspeech上,新加坡的I2R实验室发布了一套用于评测文本相关识别的标准数据集RSR 2015,涵盖了文本相关领域的多个应用场景[2]。自此,文本相关识别的研究热度开始渐渐提升,而近几年大热的“深度学习”也是最先在文本相关识别上取得了比较大的突破 [3]。这里不再过多展开,有兴趣的读者可以参考各大学术数据库的资源,或者和我们团队进行交流。

从识别的场景上考虑,声纹识别又可以分为两个不同的应用场景:

  1. 说话人辨识(Speaker Identification,SI):SI指的是我们有了一段待测的语音,需要将这段语音与我们已知的一个集合内的一干说话人进行比对,选取最匹配的那个说话人。这方面的应用案例是刑侦比对,暗中收集到的一段嫌疑人(身份未知)的声音,需要与数个可能的嫌疑人身份进行比对,选取最相似的那一个,则我们就可以认为收集到的这段语音在很大程度上就是来自于锁定的这个嫌疑人,SI是一个1对多的判别问题;
  2. 说话人确认(Speaker Verification,SV):SV指的是我们只有一个目标身份,对于一段未知的语音,我们只需要判断这段语音是否来源于这个目标用户即可,SV本质上是1对1的二分类问题。这方面典型的应用是手机端的声纹锁或声纹验证工具,对于一段验证语音,系统只需要回答“通过”或者“拒绝”即可。

而SI可以间接分解为多个SV的问题,因此对于声纹识别系统性能的评测多是以SV的方式进行。

2. 动中取静-从离散信号到特征

声纹之所以能被识别,是因为每个人的口腔、鼻腔与声道结构都存在唯一的差异性,但这种差异性既看不到又摸不着,更要命的是,它是一个时刻都在运动着的器官构造。我们只能通过录音设备采集到的离散语音信号,间接去分析发声器官的差异性。

既然语音一直在变,那我们该如何去对语音进行分析呢?答案是:语音具备了一个良好的性质,称为短时平稳,在一个20-50毫秒的范围内,语音近似可以看作是良好的周期信号。

图5:图1中话者A“四”的发声中截取出的30毫秒长度的信号。


这种良好的平稳性为我们针对语音进行信号处理层面的分析提供了极大的便利。读者都应该还记得,在音调,响度和音色这三个声音的基本属性中,音色是最能反映一个人身份信息的属性。而音色上的差异在信号处理的层面可以表示为在频域不同频段能量的差异,因此我们通过抽取不同频段上的能量值,即可以表示在这个短时语音范围内频谱的性质。通常我们会综合考虑人耳的听觉属性(人耳的一个听觉属性是在可听到的频段内,对于低频的变化更加敏感,而对于高频相对弱一些)、均衡不同频段的能量差异(对于一段8KHz采样的音频,尽管语音会分布于0-4KHz的范围内,但能量更多的集中在相对比较低频的区域)、噪声鲁棒性(我们希望特征只对语音的变化敏感,而对其他噪声等无关信息不变)以及后续的计算便利(系数之间尽可能要去除相关性)设计合适的短时声学特征,通过一系列复杂的信号处理层面的变换,一段20-50毫秒长度的语音(以8KHz采样为例,这个长度的语音对应着160-400个采样点)可以映射为一段39-60维的向量。为了充分保留语音中的原始信息,同时不增加计算的负担,通常会以15-20毫秒为间隔依次取短时段语音,然后提取特征。

图6:短时声学特征的提取


在声纹识别,包括语音识别领域,传统的声学特征包括梅尔倒谱系数MFCC、感知线性预测系数PLP、近几年的逐渐受到关注的深度特征Deep Feature [4]、以及15年公开发表的能量规整谱系数PNCC [5]等,都能作为声纹识别在特征提取层面可选且表现良好的声学特征。

综上,一段语音就被映射为时间轴上一系列的向量集合,这些集合再通过一些规整的操作后,即可成为反映语音特性的特征集合。但仅靠这些特征集合还难以实现声纹识别的目标,声学特征可以理解为时间轴上为声道拍摄的一系列快照,它直接映射的仍然是语意的内容,如何从一堆变化的特征中提取出不变的身份特性呢?接下来,就是统计建模发挥威力的时候了。

3. 化繁为简-声纹模型的进化路

既然希望计算机能够识别一个用户的声纹,那首先得让计算机“认识”这个用户的身份。典型的声纹识别的系统的框架如下图所示:

图7:典型的说话人确认系统流程图


声纹识别系统是一个典型的模式识别的框架,为了让计算机认识一个用户的身份,需要目标用户首先提供一段训练语音,这段语音经过特征提取和模型训练等一系列操作,会被映射为用户的声纹模型。在验证阶段,一个身份未知的语音也会经过一系列的操作被映射为测试特征,测试特征会与目标模型进行某种相似度的计算后得到一个置信度的得分,这个得分通常会与我们人工设定的期望值进行比较,高于这个期望值,我们认为测试语音对应的身份与目标用户身份匹配,通过验证;反之则拒绝掉测试身份。因此,识别性能好坏的关键在于对语音中身份信息的建模能力与区分能力,同时对于身份无关的其余信息具有充分的抗干扰能力和鲁棒性。

尽管每个人的语音看起来千变万化,但也不是完全没有规律可循。尽管我们每天会说很多话,但常用的字词至多只有数千个左右的级别;另外我们也做不到和家里的旺财发出一模一样的叫声。这也引出了声纹识别,同时也是传统的语音识别框架下的一个很合理的假设:将语音拆分到音素(phone)的级别,狭义的现代汉语只需要32个音素就已经足够用了。

如果考虑到每个音素的形态还会受到前后音素的影响,构建三音素模型(tri-phone)的话,那至多也只有几千个备选的三音素集合(不是简单的32的三次方,我们也会去掉一些稀有的和根本不会出现的搭配),而不同说话人的三音素样本尽管有明显的差异,但都能在空间中的某个区域内聚类。由语音和对应的声学特征的这些性质启发,1995年DA Reynolds首次将混合高斯模型(Gaussian Mixture Model,GMM)成功地应用于文本无关的声纹识别任务,至此之后的20多年,奠定了GMM在声纹识别中地基的地位,后续声纹的发展演进都是以GMM作为基础进行改进和拓展的。

在继续深入了解建模之前,我们有必要明确声纹识别,或者把范围再缩小一些,明确文本无关声纹识别任务,它的难点在哪里?在前文也提到过,声纹识别是一个兼具理论研究价值与工程应用背景的领域,声纹的难点主要在以下几个方面:

如何在语音多变性的背后,挖掘不变的身份信息。

实际应用中,从用户体验和成本的角度上考虑,针对目标用户可采集到的语料是极其有限的(按照学术上的定义,实际可用的语音是稀疏(sparse)的),如何在有限的数据中完成稳定的建模与识别。

对于同一个用户,即便采集到的两段语音内容都是相同的,但由于情绪、语速、疲劳程度等原因,语音都会有一些差异性。如何补偿这种说话人自身语音的差异性。

声音是通过录音设备进行采集的,不同的型号的录音设备对语音都会造成一定程度上的畸变,同时由于背景环境和传输信道等的差异,对语音信息也会造成不同程度的损伤,一般在研究中将这些外界影响语音的效应称为信道易变性(Channel Variability)。我们难以做到针对每一种信道效应都开发对应专属的声纹识别系统,那么如何补偿这种由于信道易变性带来的干扰。

明确了需要解决的问题之后,再回过来看GMM,它的优势在哪里?首先GMM是什么,它是一大堆形状不定的高斯分量的加权组合。有研究表明,当GMM中高斯分量的数量足够多的时候,GMM可以模拟任意的概率分布。

图8:我们只利用了七个葫芦娃就拟合出了一座山


从模式识别的相关定义上来说,GMM是一种参数化(Parameterized)的生成性模型(Generative Model),具备对实际数据极强的表征力;但反过来,GMM规模越庞大,表征力越强,其负面效应也会越明显:参数规模也会等比例的膨胀,需要更多的数据来驱动GMM的参数训练才能得到一个更加通用(或称泛化)的GMM模型。

假设对维度为50的声学特征进行建模,GMM包含1024个高斯分量,并简化多维高斯的协方差为对角矩阵,则一个GMM待估参数总量为1024(高斯分量的总权重数)+1024×50(高斯分量的总均值数)+1024×50(高斯分量的总方差数)=103424,超过10万个参数需要估计!

这种规模的变量别说目标用户几分钟的训练数据,就算是将目标用户的训练数据量增大到几个小时,都远远无法满足GMM的充分训练要求,而数据量的稀缺又容易让GMM陷入到一个过拟合(Over-fitting)的陷阱中,导致泛化能力急剧衰退。因此,尽管一开始GMM在小规模的文本无关数据集合上表现出了超越传统技术框架的性能,但它却远远无法满足实际场景下的需求。

时间来到了2000年前后,仍然是DA Reynolds的团队,提出了一种改进的方案:既然没法从目标用户那里收集到足够的语音,那就换一种思路,可以从其他地方收集到大量非目标用户的声音,积少成多,我们将这些非目标用户数据(声纹识别领域称为背景数据)混合起来充分训练出一个GMM,这个GMM可以看作是对语音的表征,但是又由于它是从大量身份的混杂数据中训练而成,它又不具备表征具体身份的能力。

那它有什么用呢?

学术圈的人就会告诉你:从贝叶斯框架的角度上来说,这个四不像GMM可以看作是某一个具体说话人模型的先验模型。形象的比方就是说你准备去相亲,媒人给你看了小莉的照片,你耳边浮现的肯定是小莉各种可能的温柔的声音,而不是你家旺财的叫声。

这个混合GMM就是起到了类似的作用,它对语音特征在空间分布的概率模型给出了一个良好的预先估计,我们不必再像过去那样从头开始计算GMM的参数(GMM的参数估计是一种称为EM的迭代式估计算法),只需要基于目标用户的数据在这个混合GMM上进行参数的微调即可实现目标用户参数的估计,这个混合GMM也有一个很洋气的名字,叫通用背景模型(Universal Background Model,UBM)。

UBM的一个重要的优势在于它是通过最大后验估计(Maximum A Posterior,MAP)的算法对模型参数进行估计,避免了过拟合的发生。MAP算法的另外一个优势是我们不必再去调整目标用户GMM的所有参数(权重,均值,方差)只需要对各个高斯成分的均值参数进行估计,就能实现最好的识别性能。 这下子待估的参数一下子减少了一半还多(103424 -> 51200),越少的参数也意味着更快的收敛,不需要那么多的目标用户数据即可模型的良好训练。

图10:基于UBM的MAP用户模型训练算法


但GMM-UBM框架够好了吗?并没有 ,至少有两个问题GMM-UBM框架仍然没法解决:

(1)待估的参数仍然还是太多了。在NIST SRE的标准测试中,一个目标用户的可用语音约在5min左右,去掉静音段和停顿,大约只能保留1分半到2分半左右的有效长度,看起来已经挺短了,但是你能想象在在实际产品中一个用户对着手机连续读五分钟进行注册吗?这个长度的有效语音对于一个1024个高斯分量组成的GMM模型来说还是太短了,MAP算法只能对其中一部分落在某些高斯分量上的特征进行相应的高斯分量进行参数优化,而另外相当一部分得不到观测数据的高斯分量怎么办?那就只能老老实实待在原地不动了。这就造成了目标用户GMM某些区域具备良好的目标用户身份表达能力,而另外一些GMM区域则基本和UBM的参数相同,这无疑降低了文本无关识别应用中模型的表达能力;

(2)GMM-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)等,都在一定程度上补偿了由于信道易变形对声纹建模带来的影响,这里也不多过多展开,有兴趣的读者们也可以查阅相关文献或与我们一起讨论。

时间继续前进,为了解决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用户模型训练算法

加拿大蒙特利尔研究所(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]。

这是什么概念读者们?折腾来折腾去声纹还是在搞GMM,但一路走来,从最初95年采用的32个高斯分量的GMM,一路飙升到1024、2048、甚至4096(敢这么玩的都是业界土豪)个高斯分量的GMM,模型改改改,公式推推推,折腾到最后一个说话人的声纹模型只需要保存一个400×1的向量就够了?

是的!就是这个样子,这也是为什么我用化繁为简来作为文章的副标题,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)等。

4. 迷思-文本相关?文本无关?

既然i-vector在文本无关声纹识别上这么牛逼,那它在文本相关识别上一定也很厉害吧?No!在看似更简单的文本相关声纹识别任务上,i-vector表现得却并不比传统的GMM-UBM框架更好。

为什么?因为i-vector简洁的背后是它舍弃了太多的东西,其中就包括了文本差异性,在文本无关识别中,因为注册和训练的语音在内容上的差异性比较大,因此我们需要抑制这种差异性;但在文本相关识别中,我们又需要放大训练和识别语音在内容上的相似性,这时候牵一发而动全身的i-vector就显得不是那么合适了。

5. 进击:我们的youtu-vector

尽管学术界喜欢更难的挑(zuo)战(si),但工业界在很多时候没法和学术界保持一致。识别稳定,快速,用户体验好,才是一个声纹系统能够落地的核心评价指标。为此,首选的仍然是文本相关识别的应用,而在文本相关识别应用中,安全性最高的仍然是随机数字声纹识别。

尽管i-vector在文本相关上识别上似乎有点水土不服,但毕竟它在擅长的领域上已经展现了强大的性能。因此,如何能将i-vector的实力应用在我们的任务中,让随机数字声纹识别也能发挥出最大的能量,是优图实验室一致努力的目标。

针对i-vector弱化语意建模的属性,我们细化了i-vector的表征范围,即我们不再用i-vector针对一整段语音进行建模,而是将i-vector拆解为针对每个数字进行建模,这样i-vector从只表征说话人身份的一段向量细化为了表征身份+数字内容的一个向量。

图12:传统的i-vector提取框架,并不针对文本差异进行区分
图13:针对数字内容的差异性进行更细粒度的i-vector提取

这种更细粒度的i-vector划分为i-vector应用于随机数字声纹识别带来了两个明显的改进:

  • 为了驱动i-vector背后的UBM和全因子矩阵,我们不再需要海量的数据,只需要专注于具体的数字片段切分,极大降低了驱动系统所需的训练数据的规模;
  • 由于每个i-vector只针对数字进行建模,每个数字i-vector背后的数字UBM和数字全因子矩阵,都不需要像文本无关那样庞大的模型规模,相较于文本无关识别的任务,模型复杂度降低数十倍后,依然能在实际场景下表现出同样好的性能。

模型的简化带来的直接优势就是计算复杂度和空间复杂度的压缩,同时,尽管需要提取的i-vector数量比过去多了(目标用户语音中包含数字的集合数就是目标用户最终的i-vector集合数),但将提取过程并行化后,这种细化带来的额外计算与存储基本上是可以忽略的。

在识别性能上,我们以团队内部真实环境下采集的数据作为测试样例将数字i-vector与传统的i-vector、和RSR 2015一起发布的HiLAM文本相关识别框架进行了比较,包括了数万规模的目标样本测试与数十万规模的攻击样本测试,实现了等错误概率(EER)小于1%,千分之一错误率下的召回率大于95%的识别性能。我们自主研发的数字i-vector,性能要远好于现有的声纹识别框架。

6. 且行且思-关于声纹的展望与反思

尽管在适配i-vector与文本相关识别中,我们的尝试与探索有了一些突破,但我们仍然需要看到声纹识别在应用中的局限:动态变化的发声器官与声音,它们的稳定性依然还不及人脸与图像。除非哪天中风了,很难想像会有什么理由使得人脸识别失灵;但是感冒发烧则会改变我们的声道结构,自己的声音也会发生变化。

而声纹的识别精度相较人脸与图像还有比较明显的差距。深度学习的浪潮中,声纹的演进似乎也还是不温不火,而声纹识别的“兄弟”语音识别早已乘着深度学习的航母向前驰骋,这其中的原因有声纹固有的难点,想啃下这块硬骨头,我们要做的事情还有很多。

而优图在声纹的深度学习推进中也从未停下脚步,除了随机数字识别,在文本无关识别应用中,我们自研的从基于DNN的说话人分类网络中提取的深度特征(也称为瓶颈特征(bottleneck feature)),辅助i-vector进行分数层面的融合也让i-vector的识别性能在过去的基础上跨进了扎实的一步。在未来,优图团队有信心在人工智能的这股浪潮中激流勇进,贡献出更多更好的产品,服务大众,让每个人都能感受到科技为生活带来的便捷。

参考文献

[1] http://www.itl.nist.gov/iad/mig/tests/spk/

[2] Larcher, Anthony, et al. "RSR2015: Database for Text-Dependent Speaker Verification using Multiple Pass-Phrases." INTERSPEECH. 2012.

[3] Fu Tianfan, et al. "Tandem deep features for text-dependent speaker verification." INTERSPEECH. 2014.

[4] Vasilakakis, Vasileios, Sandro Cumani, and Pietro Laface. "Speaker recognition by means of deep belief networks." (2013).

[5] Kenny, Patrick. "Joint factor analysis of speaker and session variability: Theory and algorithms." CRIM, Montreal,(Report) CRIM-06/08-13 (2005).

[6] Dehak, Najim, et al. "Front-end factor analysis for speaker verification." IEEE Transactions on Audio, Speech, and Language Processing 19.4 (2011): 788-798.

趋势

声纹识别也和其他识别一样,也向着深度学习的方向发展,但是又和语音识别稍有差异,传统算法和模型在声纹识别中还占有相当大的比重。

下图是Fred Richardson在论文中提出的声纹识别的深度学习模型示意

声纹è¯å«ææ¯çç°ç¶ãå±éä¸è¶å¿ä¸¨ç¡¬åå¬å¼è¯¾

深度学习的效果还是有的,下图就是各种方法的一种比较,也就说,将来实时声纹识别将会有比较大的突破。

声纹è¯å«ææ¯çç°ç¶ãå±éä¸è¶å¿ä¸¨ç¡¬åå¬å¼è¯¾

但是难度也很大,因为深度学习是基于数据驱动的模型,需要庞大的数据,这些数据最好是真实场景的数据,以及对数据的精确标注,这些都是很费钱很费人的事情。而且声纹识别训练库的建立,至少要保证性别比例分布为50%±5%,包含有不同年龄段、不同地域、不同口音、不同职业。同时,测试样本应该涵盖文本内容是否相关、采集设备、传输信道、环境噪音、录音回放、声音模仿、时间跨度、采样时长、健康状况和情感因素等影响声纹识别性能的主要因素。也就是说,声纹识别对数据的要求其实比语音识别还要高很多,这本身就是个很大的门槛,也是突破声纹识别,真正能让声纹识别落地千家万户的核心因素。   
 

声智科技创始人陈孝良-读者提问:

  • 现在的声纹识别能够做到多人的同时识别吗?比如一个场景有一群人,可以识别区分出有哪些人或者人数吗?

声纹识别和语音识别从技术上目前都还无法做到多人同时识别,上面第二个问题是声纹区分,这是可以做到的,不同人说话的声纹是不一样的,采用传统的方法即可区分出来,当然也可计算人数,但是有的声音仍然可能会被漏过。人耳有个掩蔽效应,简单说就是强的声音会淹没弱的声音,当前的声学模型还无法很好的解决。    

  • 微信的摇一摇功能的电视语音识别技术使用的什么技术?

微信摇一摇是声波通信技术,这和识别差异较大,声波通信和无线通信类似,特别是在水中,基本只能依赖声音进行信息传输。

  • Adobe VoCo利用ml合成的音频,声纹识别是否还有效?

合成的音频仍然是可以鉴别的,公安部的检测首先就要排除是否合成,但是当前动态检测的方法,特别是DNN训练的模型可能无法区分。

  • 根据语谱图使用CNN提取特征,会比使用常用的短时声学特征组合更有效吗? 长时声学特征,比如常用语,语速,口音特征,词法特征等,一般会被用来辅助进行声纹识别吗?

长时特征比短时特征效果会提升,但是目前来看,计算的压力会非常大,所以长时特征现在实时检测中用的还较少,声纹鉴别基本都是20秒以上,而实时检测每帧还是20毫秒居多。

  • 刚刚在分享中有提到声波是有机器学习的,如果黑客一开始就去诱骗数据库怎么办?

这个问题非常好,是所有深度学习都无法回避的问题,如果保证采样数据的真实性,将来肯定是大问题,但是现在连如何保证数据的完整性都还没做到。实际上,我们采集的数据问题就非常多,标注的数据准确性就更难保证了,这是个困扰深度学习,也是深度学习研究人员尽量避免谈及的问题。

  • 做声纹识别这类声学研究,需要用到哪些基础的软硬件环境才能快速上手?能否推荐一些给初学者。

声学研究因为偏物理一些,所以需要一些物理实验环境,比如声学方面的消声室,混响室,这可以帮助更好地理解声音,另外还需要精密的采集设备,软件方面倒是要求不高,有一些声学方面计算模拟的软件,信号处理方面的就是matlab为主。

应用

声纹识别可以应用的范围很宽,可以说声纹识别几乎可以应用到人们日常生活的各个角落。比如下面举几个例子。

(1)信息领域。比如在自动总机系统中,把身份证之声纹辨认和关键词检出器结合起来,可以在姓名自动拨号的同时向受话方提供主叫方的身份信息。前者用于身份认证,后者用于内容认证。同样,声纹识别技术可以在呼叫中心(Call Center)应用中为注册的常客户提供友好的个性化服务。

(2)银行、证券。鉴于密码的安全性不高,可以用声纹识别技术对电话银行、远程炒股等业务中的用户身份进行确认,为了提供安全性,还可以采取一些其他措施,如密码和声纹双保险,如随机提示文本用文本相关的声纹识别技术进行身份确认(随机提示文本保证无法用事先录好的音去假冒),甚至可以把交易时的声音录下来以备查询。

(3)公安司法。对于各种电话勒索、绑架、电话人身攻击等案件,声纹辨认技术可以在一段录音中查找出嫌疑人或缩小侦察范围;声纹确认技术还可以在法庭上提供身份确认(同一性鉴定)的旁证。在监狱亲情电话应用中,通过采集犯人家属的声纹信息,可有效鉴别家属身份的合法性。在司法社区矫正应用中,通过识别定位手机位置和呼叫对象说话声音的个人特征,系统就可以快速的自动判断被监控人是否在规定的时间出现在规定的场所,有效地解决人机分离问题。

(4)军队和国防。声纹辨认技术可以察觉电话交谈过程中是否有关键说话人出现,继而对交谈的内容进行跟踪(战场环境监听);在通过电话发出军事指令时,可以对发出命令的人的身份进行确认(敌我指战员鉴别)。目前该技术在国外军事方面已经有所应用,据报道,迫降在我国海南机场的美军EP-3侦察机中就载有类似的声纹识别侦听模块。

(5)保安和证件防伪。如机密场所的门禁系统。又如声纹识别确认可用于信用卡、银行自动取款机、门、车的钥匙卡、授权使用的电脑、声纹锁以及特殊通道口的身份卡,把声纹存在卡上,在需要时,持卡者只要将卡插入专用机的插口上,通过一个传声器读出事先已储存的暗码,同时仪器接收持卡者发出的声音,然后进行分析比较,从而完成身份确认。同样可以把含有某人声纹特征的芯片嵌入到证件之中,通过上面所述的过程完成证件防伪。

参考资料:

 

猜你喜欢

转载自blog.csdn.net/Julialove102123/article/details/89711789