【语音算法系列】声纹识别助力身份认证

2020 年 9 月 30 日 AINLP

声纹识别,也称为说话人识别(speaker recognition),是一种基于语音中能表征说话人的信息,来判别说话人身份的生物特征识别技术,相比其他生理特征在远程身份认证中具有先天优势。

拨云见日--初识声纹

生活中对于声纹最直观认识就是:我们在打电话时,一声“喂?”就能分辨出接电话的人是谁。从直觉上来讲,说话人语音的差异并不如人脸、指纹的差异那么直观,但是由于每个人的声道、口腔、鼻腔都各具差异,这些个体差异可以直接反映到人们的发音上。

人脸识别和指纹识别都是基于图像的二维信号,而语音是一种时变的一维信号,其表现形态简单,但蕴含的语音信息非常丰富。以下图为例,展示的是贝壳的唤醒词“hey,小贝”的时域波形图,其承载的首先是语意信息,即唤醒词,其次它还可以包含语种(中文、英文)信息,性别信息,情感信息(高兴、悲伤……)等等,而在这成百上千的语音信息背后只对应了一个唯一不变的身份信息。

继续观察“hey,小贝”的波形特征,比较不同人说话之间的差异。图1是说话人A对应的“贝”,图2是说话人B对应的“贝”,图3是说话人A对应的“小”。

图1

图2

图3

如果左侧的语音波形图不够直观,我们也可以观察右侧对应的语音频谱图。从图片上看,似乎图1和图2更相似一点,但实际上图1和图3来自同一个人,因为图3承载了不同的语义信息,所以图3和图1,图2有了明显的差异。在语音识别中声纹特征有助于语音识别,而在声纹识别中语义信息反而会影响声纹特征的提取,因此在这句话的声纹识别中干脆不要比较“小”和“贝”,直接都比较同一个字“贝”好了,这样更容易分析出声纹的差异。所以,根据声纹识别是否比较同一批字也可以将声纹识别进行应用上的分类,将在下一节进行详细介绍。

声纹识别的应用分类

从发音是否受限上来区分,声纹识别可以分为文本无关识别与文本相关识别。

文本无关:顾名思义就是声纹识别系统对用户的输入语音内容不做限制,识别系统需要克服用户发音的多变性和差异性,从中挖掘出用户唯一的身份信息,对发音背后的身份做出准确判断。

文本相关:识别时会限制发音词典,要求说特定文本,往细了分,文本相关又可以分为文本全相关和文本半相关。文本全相关就是固定识别口令,比如在我们的唤醒系统中,只有用户说“小贝,小贝”或者“hey,小贝”,系统才会去识别声纹,而说其它词,则概不识别;而文本半相关就是将发音限制在有限的集合中,一般使用在账户登录、支付等场景,在这些种场景中,系统会随机搭配一些数字,用户需要根据字符顺序正确的念出内容才可以进行声纹判断,这种随机性的引入无疑提升了系统的安全性,保障了用户的安全,杜绝了仿冒、窃取、复制用户声纹信息的可能性。

除了从发音是否受限来区分声纹应用外还可以从识别场景上来分类声纹应用,具体可以分为以下两类:说话人确认(Speaker Verification,SV)、说话人辨认(Speaker Identification,SI):

说话人确认:是一种1对1的二分类问题。系统需要接收到一段待识别语音和该段语音的说话人编号,然后计算出该段语音的声纹特征并与数据库中对应的声纹特征进行比对,如果比对分数高于预设阈值则通过,否则拒绝。这方面典型的应用就是手机端的声纹锁和唤醒系统等。

说话人辨认:是一种1对多的判别问题。系统需要接收到一段未知说话人的待测语音,然后将这段语音与声纹库中的一系列声纹信息进行比对。如果比对分数均高于预设阈值,则输出比对分数最高的那个说话人,如果比对分数均低于预设阈值,则说明该声纹库中暂未录入该说话人信息。

说话人辨认的典型应用有刑侦、智能推荐、风控管理等。在贝壳的经纪人业务指标考量体系中,为了防止经纪人私下作弊,互相刷业绩,引入了说话人辨认系统,贝壳声纹系统可以对语音中客户的录音进行声纹辨认,通过建立的经纪人声纹库并结合说话人辨认系统的检索功能,及时发现经纪人冒充客户的情况,加强了对经纪人工作的管控及对客户身份的有效辨别。

声纹识别的性能评价指标

初步了解完声纹的表象特征和其应用场景后,本小结开始逐步深入声纹内部,介绍一下声纹识别的主要性能指标。

首先,声纹识别系统最重要的两个性能指标:错误拒绝率(False Rejection Rate,FRR)和错误接受率(False Acceptance Rate, FAR)。这是说话人确认系统中的两种错误情况。

错误拒绝率:分类问题中,若两个样本为同类(同一个人),却被系统误认为异类(非同一个人),则为错误拒绝。错误拒绝率为错误拒绝案例在所有同类匹配案例的比例。

错误接受率:分类问题中,若两个样本为异类(非同一个人),却被系统误认为同类(同一个人),则为错误接受。错误接受率为错误接受案例在所有异类匹配案例的比例。

为了直观的说明这两种错误情况可以用贝壳的唤醒系统来举例:假设唤醒系统的错误拒绝率为3%,就是当真实用户唤醒100次时会出现3次设备不被唤醒的情况;假设错误接受率为0.3%,就是当1000个人假冒用户唤醒设备时会有三个人唤醒成功。

等错误率(Equal Error Rate, EER):声纹系统中会设置一个判断阈值,该阈值与FRR和FAR都相关。当系统中阈值固定,FRR与 FAR也会相应固定。当阈值降低时,会有更多的测试通过,此时FAR增大,FRR减小;反之,阈值增大,测试更不易通过,FRR增大,FAR减小。随着阈值的变化,如图所示,EFR和EFA将会绘制出两条曲线,我们将两条曲线的交点的错误率定义为等错误率EER,此时EER = FRR= FAR,EER是说话人确认系统中最常用的性能评价指标。

检测误差权衡曲线(Detection Error Trade-off, DET) :DET曲线也是声纹识别中常用的评价方法,如图所示,DET曲线建立对数刻度下FAR与FRR的关系,曲线与45°线的交点即为 EER 点,曲线上的不同点对应不同的阈值。曲线离原点越近,FAR与 FRR越小,系统性能越好。

最小检测代价(Minimum Detection Cost Function, minDCF):DCF是NIST SRE(声纹识别技术评测)中定义且常用的一种性能评定方法。其定义为:

公式中CFR和CFA分别代表错误拒绝和错误接受的惩罚代价,Ptarget和1 − Ptarget分别为真实说话测试和假冒测试的先验概率。可以根据不同的应用场景来设定它们的值。当 CFR、CFA、Ptarget和1−Ptarget取定后,EFR与 EFA的某一组取值使得DCF最小,此时的DCF为minDCF。在NIST SRE 2008中设定CFR=10,CFA=1,Ptarget=0.01为准。minDCF不仅考虑了两类错误的不同代价,还考虑了两种测试情况的先验概率,比EER更合理。

动中取静-从语音信号到声纹特征

第一章中提到了,声音之所以能被用于说话人识别,是因为每个人的口腔、鼻腔与声道都存在着个体差异,但这些差异既看不到也摸不着,更要命的是,声音还是一个时刻变化同时包含成百上千信息的一维信号,正是这些特点使声纹识别具有极强的安全性的同时也具有巨大的挑战性。那么,如何从语音中提取纯粹的声纹特征呢?

从离散信号到语音特征

对于语音信号,我们只能通过各种录音设备采集到它的离散信号,间接的分析发声器官的差异。虽然语音一直在变,但是其具备了一个良好的性质--短时平稳性,即在20-50毫秒的范围内,音频可以近似看作一段良好的周期信号。

这种短时平稳性为语音信号的分析提供了极大的便利,在音频的音调,响度和音色这些基本属性中,音色是最能反映身份信息的(当产品经理向你提需求的时候,响度和音调都可以快速飙升,但音色是不大会剧烈变化的)。音色的差异在信号层面可以表示为音频在频域不同频段能量的差异,因此我们选取音频不同频段上的能量值,表示这个短时语音的特征属性。

一般我们根据人耳的听觉属性(人耳对1000~4000Hz的声音最敏感),均衡不同频段的能量差异,设计一个合适的短时声学特征,通过一系列复杂的信号处理,将一段20-50毫秒长度的语音以映射为一段13-80维的向量。同时为了保留语音信息又不增加计算量,通常会以10-20ms的间隔依次取短语音,然后提取特征。

在声纹识别方面,传统的声学特征包括梅尔倒谱系数MFCC、感知线性预测系数PLP等,都是可选的并具有良好表现的声学特征。

通过以上方法,输入系统的语音段就被映射成为一组向量集合,这部分特征集合再通过一些规整化(CMVN、LDA)操作后,就可以成为反映发音特性的语音特征集合。但仅靠这些语音特征集合还难以直接表达声纹特征,这时就需要各种建模方法来抽取特征中有关声纹的信息了。

从语音特征到声纹特征

声纹识别系统是一个典型的模式识别的框架,系统会对目标用户的一段语音提取语音特征,然后将其映射为用户的声纹特征。因此,声纹识别性能的好坏的关键在于系统对语音中身份信息的建模能力与区分能力,同时对身份无关信息的抗干扰能力和鲁棒性。

按照时间先后,声纹识别技术的发展可以大致分为:模板匹配 -> GMM-UBM ->  GMM-SVM -> JFA -> I-Vector PLDA -> DNN I-Vector PLDA -> E2E。以下简单介绍三个经典的声纹识别算法。

GMM-UBM:高斯混合模型(GMM)是一系列的高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布。一个充分训练的GMM模型,可以比较好的表征说话人的空间。通用背景模型(UBM)实际上是一个表征大量非特定说话人语音特征分布的GMM。UBM的训练通常采用大量的与特定说话人无关、信道无关的语音数据,因此它只是拟合人的语音特征分布,而并不代表某个具体的说话人。在进行声纹特征提取时,通常利用少量的说话人信息和一个UBM,通过自适应算法(如大后验概率MAP、最大似然线性回归MLLR等)得到声纹特征。

I-Vector:在实际应用中,由于说话人语音中说话人信息和各种干扰信息掺杂在一起,不同的采集设备的信道之间也具有差异性,会使我们收集到的语音中掺杂信道干扰信息。这种干扰信息会引起说话人信息的扰动。传统的GMM-UBM方法,没有办法克服这一问题,导致系统性能不稳定。联合因子分析(Joint Factor Analysis, JFA)可以对说话人差异和信道差异分别建模,从而可以很好的对信道差异进行补偿,提高系统表现。但由于JFA需要大量不同通道的训练语料,获取困难,并且计算复杂,所以难以投入实际使用。基于I-Vector因子分析技术,提出了全新的解决方法。JFA方法是对说话人差异空间以与信道差异空间分别建模,而基于I-Vector的方法是对全局差异进行建模,将其二者作为一个整体进行建模,这样处理放宽了对训练语料的限制,并且计算简单,性能也相当。

X-Vector:利用深度神经网络可以比I-Vector更好的利用大数据,在大数据集下训练的神经网络模型的性能已经超越了I-Vector。其中X-Vector是这类神经网络模型的代表,其声纹特征提取流程如下:

Layer layer contex total contex input*output
frame1 {t-2,t+2} 5 120x512
frame2 {t-2,t,t+2} 9 1536x512
frame3 {t-3,t,t+3} 15 1536x512
frame4 {t} 15 512x512
frame5 {t} 15 512x1500
stats-pooling [0,T] T 1500Tx3000
segment6 {0} T 3000x512
segment7 {0} T 512x512

声纹特征提取的前5层为TDNN层,输入帧级别语音特征,到了第四和五层时,每1帧实际包含上下文15帧的信息,由于输入神经网络的语音通常具有不同的长度,在统计池化层(stats pooling)神经网络会计算所有输入帧的均值和方差,并将这两个统计量拼接起来作为segment6的输入,segment6和segment7为全连接层,负责输出说话人对应的声纹特征。通常我们会在segment6和segment7中进行比较并选择其中表现更好的作为最后输出的声纹特征。

声纹特征后处理

由于声纹特征中不仅包含说话人差异信息,同时也存在信道差异信息,此时需要信道补偿技术来消除声纹特征的信道干扰,主要有以下两种信道补偿方法:

线性鉴别分析(LDA):LDA的主要作用是最大化类间距离,最小化类内距离,体现在声纹识别中就是:当一个说话人有很多语音时,这些语音在说话人空间中聚集为一簇,如果这些语音的输入设备或输入方式不同,就会受到信道的影响,那么该说话人这些语音方差会很大。此时,LDA尝试着找到一个新的方向,将原来的所有数据投影到这个方向,使得在这个方向中同一说话人的数据具有最小的类内方差,同时不同说话人之间的距离尽量大,这样,就可以减小信道差异的影响了。同时LDA也是一种降维方法。它尽量移除特征中不需要的方向,最小化类内方差信息量,也就是,LDA寻找一个新的方向去更好地对不同的类做出分类。

概率线性判别分析(PLDA):又称为概率形式的LDA,其信道补偿能力比LDA更好,目前已成为主流信道补偿算法。

贝壳的声纹识别

目前,虽然已经有许多成熟的算法使声纹识别的准确率得到了显著的提高,但相对于其它的生物特征(人脸,指纹),声纹识别仍需要很多努力才能达到相同的水准。在贝壳的声纹识别算法中,我们使用了百万人级别的训练数据对声纹系统进行训练,相较于小数量级的系统,性能得到明显提升,即使在万人级别的测试集中,EER仍可以降低到1%以下。除此之外我们还通过以下方法改善了声纹引擎在实际使用中的体验。

多算法结合

根据声纹发展历程,总结各类声纹算法的优缺点后,我们在声纹识别系统中集成了多种声纹技术,可以针对场景使用不同的声纹技术。例如:在唤醒系统上,虽然唤醒词是短语音,但是其发音集有限,是一种文本相关的声纹识别,在实验中I-Vector的效果比X-Vector更好,因此在唤醒系统上我们选择I-Vector模型;而在风控领域,声纹识别主要应用在说话人辨认的场景,对声纹引擎有比较高的准确率要求,因此系统融合多种声纹算法计算出的声纹特征,输出更准确的声纹信息。

抗噪音

在贝壳声纹的应用场景中,面临的最大问题就是噪音场景下的声纹识别。最然声纹模型可以通过加噪训练去改善噪声环境下声纹识别准确率,但是每种技术都有一定的局限性,不能无限制的使用在任何场景。因此,我们在系统中集成了环境语音检测系统,该系统可以监测输入语音长短、音量和信噪比,将不符合声纹识别的语音隔离在系统之外。这套系统中使用了结合能量和神经网络的端点检测算法(端点检测相关算法及原理请关注下一期语音算法系列公众号),该算法可以有效排除噪音、背景人声、环境音等不利于声纹识别的语音,使噪声场景下声纹识别的准确率得到进一步提升。

抗时变

人的发声器官并不是一个一成不变的系统,随着时间的推移,人的声音也会产生一定的变化,这些发音变化直接导致了其语音中声纹信息的变化。模型训练时如果不把这些变化考虑进去,那么一段时间后,系统的准确率将会下降。因此,我们持续采集了一批人不同时间段的语音,构建了时变语音库,基于此语音库我们找到声纹随时间变化的一些信息,训练出针对时变更具鲁棒性的模型。同时,我们的声纹引擎中也专门设计了声纹更新算法,可以定时挑选用户符合条件的近期语音更新声纹特征库。

总结

声纹特征作为生物特征中的行为特征,可以做到对用户无感核身,提升系统安全性的同时减少用户身份验证时间,这是其他生物特征难以替代的优势。当然,任何技术都有一定的局限性,只有通过结合声纹和其他生物特征组成多因子身份认证,才能更好地提升身份认证的安全性。

作者介绍

颜瑞,2020年1月毕业于北京科技大学自动化学院,毕业后加入贝壳找房语言智能与搜索部语音交互团队,主要从事语音识别等相关工作。


由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方"AINLP",进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心


欢迎加入语音技术交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注语音技术

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
0

相关内容

说话人识别(Speaker Recognition),或者称为声纹识别(Voiceprint Recognition, VPR),是根据语音中所包含的说话人个性信息,利用计算机以及现在的信息识别技术,自动鉴别说话人身份的一种生物特征识别技术。 说话人识别研究的目的就是从语音中提取具有说话人表征性的特征,建立有 效的模型和系统,实现自动精准的说话人鉴别。
【EMNLP2020最佳论文】无声语音的数字化发声
专知会员服务
11+阅读 · 2020年11月20日
专知会员服务
71+阅读 · 2020年9月20日
专知会员服务
142+阅读 · 2020年9月6日
打怪升级!2020机器学习工程师技术路线图
专知会员服务
98+阅读 · 2020年6月3日
人机对抗智能技术
专知会员服务
201+阅读 · 2020年5月3日
多模态深度学习综述,18页pdf
专知会员服务
214+阅读 · 2020年3月29日
知识图谱更新技术研究及其应用,复旦大学硕士论文
专知会员服务
103+阅读 · 2019年11月4日
怎样用声纹识别,提升智能硬件产品的用户体验?
人人都是产品经理
6+阅读 · 2018年8月27日
苹果首次披露Siri声纹识别技术
AI前线
6+阅读 · 2018年4月17日
搜狗推出唇语识别技术 提升远场语音交互
智东西
3+阅读 · 2017年12月14日
人工智能老司机带你认识声音黑科技:声纹识别
人人都是产品经理
6+阅读 · 2017年12月11日
深度序列学习助力文字识别
机器学习研究会
7+阅读 · 2017年12月7日
一文读懂语音识别史
机械鸡
9+阅读 · 2017年10月16日
Arxiv
0+阅读 · 2020年12月1日
Arxiv
0+阅读 · 2020年11月29日
Arxiv
0+阅读 · 2020年11月27日
Arxiv
0+阅读 · 2020年11月26日
A Survey on Edge Intelligence
Arxiv
51+阅读 · 2020年3月26日
Arxiv
11+阅读 · 2018年4月25日
Arxiv
4+阅读 · 2018年3月14日
VIP会员
相关VIP内容
【EMNLP2020最佳论文】无声语音的数字化发声
专知会员服务
11+阅读 · 2020年11月20日
专知会员服务
71+阅读 · 2020年9月20日
专知会员服务
142+阅读 · 2020年9月6日
打怪升级!2020机器学习工程师技术路线图
专知会员服务
98+阅读 · 2020年6月3日
人机对抗智能技术
专知会员服务
201+阅读 · 2020年5月3日
多模态深度学习综述,18页pdf
专知会员服务
214+阅读 · 2020年3月29日
知识图谱更新技术研究及其应用,复旦大学硕士论文
专知会员服务
103+阅读 · 2019年11月4日
相关资讯
怎样用声纹识别,提升智能硬件产品的用户体验?
人人都是产品经理
6+阅读 · 2018年8月27日
苹果首次披露Siri声纹识别技术
AI前线
6+阅读 · 2018年4月17日
搜狗推出唇语识别技术 提升远场语音交互
智东西
3+阅读 · 2017年12月14日
人工智能老司机带你认识声音黑科技:声纹识别
人人都是产品经理
6+阅读 · 2017年12月11日
深度序列学习助力文字识别
机器学习研究会
7+阅读 · 2017年12月7日
一文读懂语音识别史
机械鸡
9+阅读 · 2017年10月16日
相关论文
Arxiv
0+阅读 · 2020年12月1日
Arxiv
0+阅读 · 2020年11月29日
Arxiv
0+阅读 · 2020年11月27日
Arxiv
0+阅读 · 2020年11月26日
A Survey on Edge Intelligence
Arxiv
51+阅读 · 2020年3月26日
Arxiv
11+阅读 · 2018年4月25日
Arxiv
4+阅读 · 2018年3月14日
Top
微信扫码咨询专知VIP会员