声纹识别还是一个比较窄的学科,应用也相对较少,在此之前,先给大家看几个声纹的例子。
1个月大婴儿的哭声声纹
男人的口哨声声纹
下雨打雷声声纹
接吻声声纹
人声和枪声声纹
每个例子都代表了不同的声音特征,从表面上来看还是非常容易区分的。直观就是看亮色的曲线差别,具体就是基音频谱及包络、基音帧的能量、基音共振峰的出现频率及其轨迹,有条件的可以实时看自己的声纹。
现状
那我们就从声纹识别的基本原理谈起,声纹识别是通过对一种或多种语音信号的特征分析来达到对未知声音辨别的目的,简单的说就是辨别某一句话是否是某一个人说的技术。
该项技术最早是在40年代末由贝尔实验室开发,主要用于军事情报领域。随着该项技术的逐步发展,60年代末后期在美国的法医鉴定、法庭证据等领域都使用了该项技术,从1967年到现在,美国至少5000多个案件包括谋杀、强奸、敲诈勒索、走私毒品、赌博,政治腐败等都通过声纹识别技术提供了有效的线索和有力的证据。特别强调的是,声纹鉴别目前已经是公安部的标准,是可以作为证据进行鉴定的。
声纹识别的理论基础是每一个声音都具有独特的特征,通过该特征能将不同人的声音进行有效的区分。
这种独特的特征主要由两个因素决定,第一个是声腔的尺寸,具体包括咽喉、鼻腔和口腔等,这些器官的形状、尺寸和位置决定了声带张力的大小和声音频率的范围。因此不同的人虽然说同样的话,但是声音的频率分布是不同的,听起来有的低沉有的洪亮。每个人的发声腔都是不同的,就像指纹一样,每个人的声音也就有独特的特征。
第二个决定声音特征的因素是发声器官被操纵的方式,发声器官包括唇、齿、舌、软腭及腭肌肉等,他们之间相互作用就会产生清晰的语音。而他们之间的协作方式是人通过后天与周围人的交流中随机学习到的。人在学习说话的过程中,通过模拟周围不同人的说话方式,就会逐渐形成自己的声纹特征。
因此,理论上来说,声纹就像指纹一样,很少会有两个人具有相同的声纹特征。
美国研究机构已经表明在某些特点的环境下声纹可以用来作为有效的证据。并且美国联邦调查局对2000例与声纹相关的案件进行统计,利用声纹作为证据只有0.31%的错误率。目前利用声纹来区分不同人这项技术已经被广泛认可,并且在各个领域中都有应用。
声纹识别是个宽泛的概念,技术方面有分为两类:即说话人确认技术和说话人辨认技术,说话人确认技术是用于判断未知说话人是否为某个指定人;后者则是用于辨认未知说话人是已记录说话人中的哪一位。
我们通常理解的都是说话人辨认技术,常常应用于刑侦破案、罪犯跟踪、国防监听、个性化应用等等,说话人确认技术常常应用于证券交易、银行交易、公安取证、个人电脑声控锁、汽车声控锁、身份证、信用卡的识别等。
目前来看,声纹识别常用的方法包括模板匹配法、最近邻方法、神经元网络方法,VQ聚类法等。
这些方法虽然处理手段不同,但基本原理是类似的,比如刚开始给大家展示的语谱图。语谱图是声音信号的一种图像化的表示方式,它的横轴代表时间,纵轴代表频率,语音在各个频率点的幅值大小用颜色来区分。说话人的声音的基频及谐频在语谱图上表现为一条一条的亮线,再通过不同的处理手段就可以得到不同语谱图之间的相似度,最终达到声纹识别的目的。
目前公安部声纹鉴别就采用类似方法,而且语谱图还是用的灰度来表示。主要抽取说话人声音的基音频谱及包络、基音帧的能量、基音共振峰的出现频率及其轨迹等参数表征,然后再与模式识别等传统匹配方法结合进行声纹识别。
美国和国内都有不少企业生产声纹识别的设备,公安部为采购这些设备还正式颁布了《安防声纹识别应用系统技术要求》的行业标准。
但是这种方法是一种静态检测的方法,存在很大的弊端,实时性不好,动态检测声纹的需求实际上更大。
局限
现在的大部分研究都是有关动态实时检测方面的,动态检测的方法自然要利用静态检测的各种原理方法,同时也需要增加其他很多算法, 比如VAD、降噪、去混响等。VAD的目的是检测是不是人的声音,降噪和去混响是排除环境干扰,这不仅对于声纹检测很中重要,对于语音识别更加重要。
VAD常用两个方法,基于能量检测和LTSD(Long-Term Spectral Divergence),当前用的较多是LTSD,另外特征提取方面还需要:动态时间规整 (DTW)、矢量量化 (VQ)、支持向量机 (SVM),模型方面则需要隐马尔可夫模型 (HMM)和高斯混合模型 (GMM)。
这是声纹识别常用算法的结构图,所有的声纹识别,不管是用传统算法还是深度学习,都需要事先建立声纹库,目前最全的应该是公安部的声纹鉴别库。
从上面模型不难看出,声纹识别还是一种基于数据驱动的模式识别问题,因为所有模式识别存在的问题声纹都存在,而且声纹识别还有一些不太好解决的物理和计算问题。
虽然声纹识别的唯一性很好,但实际上我们现有的设备和技术仍然很难做出准确分辨,特别是人的声音还具有易变性,易受身体状况、年龄、情绪等的影响。刚才也提到,若在环境噪音较大和混合说话人的环境下,声纹特征也是很难提取和建模的。
虽然深度学习带给模式识别极大的提升,甚至还有开源的相关算法,但是声纹识别的研究进展仍然不大,这仍然受制于声纹的采集和特征的建立。
另外就是真实环境下的各种影响,包括:
1、噪音问题
2、多人说话
3、音乐噪声
4、身体状况
5、情绪影响
先看噪声问题,下图是Mitchell McLaren在论文中做的研究,噪声对不同模型的声纹识别影响。
从这个图中可以看出,混响和噪声对各类模型和方法都有非常大的影响,这和人类似,嘈杂环境中确实很难分辨出某个人的声音,但是人耳比较奇特,我们可以很好的处理这种“鸡尾酒会”效应,但是目前机器还做不到。
音乐噪声很好理解,因为音乐通常是宽带信号,完全覆盖了人声的频段,这会非常影响声纹的特征表现,动态检测的时候更是难以提取,我们目前在语音识别中采用的是回声抵消的方法(严格来说是自噪声去除),同样也可以用到声纹识别,但是面对其他设备音乐也很难处理,当前仅有波束形成这一方法。
多人说话是声纹识别和语音识别都面临的问题,当前的所有模型都无法盲分离两个以上的人声并且同时进行识别。
身体状况和情绪影响是我们每个人的主要个体差异,这种差异是基于时间变化的,所以声纹特征会出现某些变化,声纹鉴别可以通过反复取样避免这个问题,但是动态检测目前还没有好办法。
从上面几点分析,也和我们主题相关,就是华帝的小V机器人,通过记录歌手的声纹信息进行判断歌手,理论上是没有问题的。但是难的就是,这是声纹识别最复杂的情况,不仅是要保证实时性,还要解决噪声问题、音乐干扰、两人识别以及歌手刻意隐藏的问题,至少目前来看,这项技术还远远没有成熟。
即便从应用来看也是这样,除了声纹鉴别,声纹识别基本上就是在应用中充当娱乐的功能。另外,声纹可以作为认证手段,但是不应该放在第一位独立使用,而是配合其他认证手段同时使用。
趋势
声纹识别也和其他识别一样,也向着深度学习的方向发展,但是又和语音识别稍有差异,传统算法和模型在声纹识别中还占有相当大的比重。
下图是Fred Richardson在论文中提出的声纹识别的深度学习模型示意
深度学习的效果还是有的,下图就是各种方法的一种比较,也就说,将来实时声纹识别将会有比较大的突破。
但是难度也很大,因为深度学习是基于数据驱动的模型,需要庞大的数据,这些数据最好是真实场景的数据,以及对数据的精确标注,这些都是很费钱很费人的事情。而且声纹识别训练库的建立,至少要保证性别比例分布为50%±5%,包含有不同年龄段、不同地域、不同口音、不同职业。同时,测试样本应该涵盖文本内容是否相关、采集设备、传输信道、环境噪音、录音回放、声音模仿、时间跨度、采样时长、健康状况和情感因素等影响声纹识别性能的主要因素。
也就是说,声纹识别对数据的要求其实比语音识别还要高很多,这本身就是个很大的门槛,也是突破声纹识别,真正能让声纹识别落地千家万户的核心因素。
读者提问:
现在的声纹识别能够做到多人的同时识别吗?比如一个场景有一群人,可以识别区分出有哪些人或者人数吗?
声纹识别和语音识别从技术上目前都还无法做到多人同时识别,上面第二个问题是声纹区分,这是可以做到的,不同人说话的声纹是不一样的,采用传统的方法即可区分出来,当然也可计算人数,但是有的声音仍然可能会被漏过。人耳有个掩蔽效应,简单说就是强的声音会淹没弱的声音,当前的声学模型还无法很好的解决。
微信的摇一摇功能的电视语音识别技术使用的什么技术?
微信摇一摇是声波通信技术,这和识别差异较大,声波通信和无线通信类似,特别是在水中,基本只能依赖声音进行信息传输。
Adobe VoCo利用ml合成的音频,声纹识别是否还有效?
合成的音频仍然是可以鉴别的,公安部的检测首先就要排除是否合成,但是当前动态检测的方法,特别是DNN训练的模型可能无法区分。
根据语谱图使用CNN提取特征,会比使用常用的短时声学特征组合更有效吗? 长时声学特征,比如常用语,语速,口音特征,词法特征等,一般会被用来辅助进行声纹识别吗?
长时特征比短时特征效果会提升,但是目前来看,计算的压力会非常大,所以长时特征现在实时检测中用的还较少,声纹鉴别基本都是20秒以上,而实时检测每帧还是20毫秒居多。
刚刚在分享中有提到声波是有机器学习的,如果黑客一开始就去诱骗数据库怎么办?
这个问题非常好,是所有深度学习都无法回避的问题,如果保证采样数据的真实性,将来肯定是大问题,但是现在连如何保证数据的完整性都还没做到。实际上,我们采集的数据问题就非常多,标注的数据准确性就更难保证了,这是个困扰深度学习,也是深度学习研究人员尽量避免谈及的问题。
做声纹识别这类声学研究,需要用到哪些基础的软硬件环境才能快速上手?能否推荐一些给初学者。
声学研究因为偏物理一些,所以需要一些物理实验环境,比如声学方面的消声室,混响室,这可以帮助更好地理解声音,另外还需要精密的采集设备,软件方面倒是要求不高,有一些声学方面计算模拟的软件,信号处理方面的就是matlab为主。