声纹识别
- 1. 声纹概念
- 2. 声纹识别的分类
- 3. 声纹识别的原理
- 4. 声纹识别的关键
- 特征提取
- 模式识别
- 5. 声纹识别的技术指标
- 6. 影响声纹识别水平的因素
初识声纹
1. 声纹概念
-
声波频谱
声纹(Voice print)是用电声学仪器现实的携带言语信息的声波频谱, 是由波长频率以及强度等百余种特征维度组成的生物特征,具有稳定性、可测量性、唯一性等特点。 -
易变性
每个人的语音声学特征既有相对稳定性,又有易变性,不是一成不变的。这种变异可来自生理、病理、心理、模拟、伪装,也与环境干扰有关。
2. 声纹识别的分类
(1)Verification 和 Identification
与人脸识别类似,声纹识别有人声验证和人声识别两类应用场景(汉语可能不准确,以英文为准)
- 人声验证(Speaker Verification):一对一(1:1),用以确认某段语音是否是指定的某个人所说的
- 人声识别(Speaker Identification):多对一(N:1),用于判断某段语音是若干人中的哪一个所说的
(2)Text-Dependent 和Text-Independent
在识别(Identification)应该场景下,还有文本相关的(Text-Dependent)和文本无关的(Text-Independent)两种。
- 与文本相关的(Text-Dependent)
与文本有关的声纹识别系统要求用户按照规定的内容发音,每个人的声纹模型逐个被精确地建立,而识别时也必须按规定的内容发音,因此可以达到较好的识别效果,但系统需要用户配合,如果用户的发音与规定的内容不符合,则无法正确识别该用户 - 与文本无关的(Text-Independent)
与文本无关的识别系统则不规定说话人的发音内容,模型建立相对困难,但用户使用方便,可应用范围较宽。
(3)open-set 和 close-set
- 开集(open-set) 辨认:假定待识别说话人可以在集合外
- 闭集(close-set) 辨认:假定待识别说话人在集合内
显然,闭集辨认需要有一个对集外说话人的“拒识问题”,而且闭集辨认的结果要好于开集辨认结果。本质上讲,说话人确认和开集说话人辨认都需要用到拒识技术,为了达到很好的拒识效果,通常需要训练一个假冒者模型或背景模型,以便拒识时有可资比较的对象,阈值容易选定。而建立背景模型的好坏直接影响到拒识甚至声纹识别的性能。一个好的背景模型,往往需要通过预先采集好的若干说话人的数据,通过某种算法去建立。
3. 声纹识别的原理
人声差异的主要方面:
- 共鸣方式特征:咽腔共鸣、鼻腔共鸣和口腔共鸣
- 嗓音纯度特征:不同人的嗓音,纯度一般是不一样的,粗略地可分为高纯度(明亮)、低纯度(沙哑)和中等纯度三个等级
- 平均音高特征:平均音高的高低就是一般所说的嗓音是高亢还是低沉
- 音域特征:音域的高低就是通常所说的声音饱满还是干瘪
不同人的声音在语谱图中共振峰的分布情况不同,声纹识别正是通过比对两段语音的说话人在相同音素上的发声来判断是否为同一个人,从而实现“闻声识人”的功能。
4. 声纹识别的关键
声纹识别可以说有两个关键问题,一是特征提取,二是模式匹配(模式识别)。
特征提取
特征提取的任务是提取并选择对说话人的声纹具有可分性强、稳定性高等特性的声学或语言特征。
大部分声纹识别系统用的都是声学层面的特征,但是表征一个人特点的特征应该是多层面的,包括:
(1)与人类的发音机制的解剖学结构有关的声学特征(如频谱、倒频谱、共振峰、基音、反射系数等等)、鼻音、带深呼吸音、沙哑音、笑声等;
(2)受社会经济状况、受教育水平、出生地等影响的语义、修辞、发音、言语习惯等;
(3)个人特点或受父母影响的韵律、节奏、速度、语调、音量等特征。
从利用数学方法可以建模的角度出发,声纹自动识别模型可以使用的特征包括:
(1)声学特征(倒频谱);
(2)词法特征(说话人相关的词n-gram,音素n-gram);
(3)韵律特征(利用n-gram描述的基音和能量“姿势”);
(4)语种、方言和口音信息;
(5)通道信息(使用何种通道);等等。
更多:
MFCC特征(梅尔频率倒谱系数)提取
语音信号是连续不断的值,无法直接用于建模,当然现在火热的DNN模型已经不需要提取特征啥的。MFCC特征(梅尔频率倒谱系数)是一种在自动语音和说话人识别中广泛使用的特征。主要提取流程如下:
1、对语音进行预加重、分帧和加窗;(加强语音信号性能(信噪比,处理精度等)的一些预处理)
2、对每一个短时分析窗,通过快速傅里叶变化FFT得到对应的频谱;(获得分布在时间轴上不同时间窗内的频谱)
3、将上面的频谱通过Mel滤波器组得到Mel频谱;(通过Mel频谱,将线形的自然频谱转换为体现人类听觉特性的Mel频谱)
4、在Mel频谱上面进行倒谱分析(取对数,做逆变换,实际逆变换一般是通过DCT离散余弦变换来实现,取DCT后的第2个到第13个系数作为MFCC系数),获得Mel频率倒谱系数MFCC,这个MFCC就是这帧语音的特征;(倒谱分析,获得MFCC作为语音特征)
最终语音就可以通过一系列的倒谱向量来描述了,每个向量就是每帧的MFCC特征向量。当日还有FilterBank(fbank)也是一种提取特征的方法,没有做过log和DCT的就是fbank特征。
模式识别
对于模式识别,有以下几大类方法:
(1)模板匹配方法:利用动态时间弯折(DTW)以对准训练和测试特征序列,主要用于固定词组的应用(通常为文本相关任务)
(2)最近邻方法:训练时保留所有特征矢量,识别时对每个矢量都找到训练矢量中最近的K个,据此进行识别,通常模型存储和相似计算的量都很大;
(3)神经网络方法:有很多种形式,如多层感知、径向基函数(RBF)等,可以显式训练以区分说话人和其背景说话人,其训练量很大,且模型的可推广性不好;
(4)隐式马尔可夫模型(HMM)方法:通常使用单状态的HMM,或高斯混合模型(GMM),是比较流行的方法,效果比较好;
(5)VQ聚类方法(如LBG):效果比较好,算法复杂度也不高,和HMM方法配合起来更可以收到更好的效果;
(6)多项式分类器方法:有较高的精度,但模型存储和计算量都比较大;
(7)……
5. 声纹识别的技术指标
-
错误拒绝率(False Rejection Rate, FRR)
分类问题中,若两个样本为同类(同一个人),却被系统误认为异类(非同一个人),则为错误拒绝案例。错误拒绝率为错误拒绝案例在所有同类匹配案例的比例。 -
错误接受率(False Acceptance Rate, FAR)
分类问题中,若两个样本为异类(非同一个人),却被系统误认为同类(同一个人),则为错误接受案例。错误接受率为错误接受案例在所有异类匹配案例的比例。 -
准确率(Accuracy,ACC)
调整阈值,使得FAR+FRR最小,1减去这个值即为识别准确率,即ACC=1 - min(FAR+FRR) -
速度
(提取速度:提取声纹速度与音频时长有关、验证比对速度):Real Time Factor 实时比(衡量提取时间跟音频时长的关系,比如:1秒能够处理80s的音频,那么实时比就是1:80)。验证比对速度是指平均每秒钟能进行的声纹比对次数。 -
ROC曲线
ROC曲线:描述FAR与FRR之间相互变化关系的曲线,X轴为FAR的值,Y轴为FRR的值。从左到右,当阈值增长期间,每一个时刻都有一对FAR和FRR的值,将这些值在图上描点连成一条曲线,就是ROC曲线。 -
阈值
阈值:在接受/拒绝二元分类系统中,通常会设定一个阈值,分数超过该值时才做出接受决定。调节阈值可以根据业务需求平衡FAR与FRR。 当设定高阈值时,系统做出接受决定的得分要求较为严格,FAR降低,FRR升高;当设定低阈值时,系统做出接受决定的得分要求较为宽松,FAR升高,FRR降低。在不同应用场景下,调整不同的阈值,则可在安全性和方便性间平平衡
6. 影响声纹识别水平的因素
影响声纹识别水平的两个重要因素:
-
训练数据
-
算法
在应用落地过程中,还会受很多因素的影响: -
声源采样率
人类语音的频段集中于50Hz ~ 8KHz之间,尤其在4KHz以下频段
离散信号覆盖频段为信号采样率的一半(奈奎斯特采样定理)
采样率越高,信息量越大
常用采样率:8KHz (即0 ~ 4KHz频段),16KHz(即0 ~ 8KHz频段)
- 信噪比(SNR)
信噪比衡量一段音频中语音信号与噪声的能量比,即语音的干净程度
15dB以上(基本干净),6dB(嘈杂),0dB(非常吵)
- 信道
不同的采集设备,以及通信过程会引入不同的失真
声纹识别算法与模型需要覆盖尽可能多的信道
手机麦克风、桌面麦克风、固话、移动通信(CDMA, TD-LTE等)、微信……
- 语音时长
语音时长(包括注册语音条数)会影响声纹识别的精度
有效语音时长越长,算法得到的数据越多,精度也会越高 - 文本内容
通俗地说,声纹识别系统通过比对两段语音的说话人在相同音素上的发声来判断是否为同一个人
固定文本:注册与验证内容相同
半固定文本:内容一样但顺序不同;文本属于固定集合
自由文本
参考:
- 声纹识别知识整理
- AI老司机带你认识声音黑科技:声纹识别
- 声纹识别-百度百科
- 语音识别从入门到放弃