基于说话人声音识别的技术研究Word格式文档下载.doc
《基于说话人声音识别的技术研究Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《基于说话人声音识别的技术研究Word格式文档下载.doc(21页珍藏版)》请在冰点文库上搜索。
二、设计目的 1
三、设计基本原理 2
1.说话人识别的分类 2
2.说话人识别的基本原理和系统结构 3
四、模式匹配与特征提取 4
1.模式匹配使用方法:
4
2.特征提取 5
2.1常用的特征参数 5
2.2语音的倒谱分析(MFCC)简介 5
2.3MFCC倒谱系数及其提取算法 6
2.4求取MFCC系数的具体算法和步骤 8
五、模式识别及算法优化 11
1. GMM模型的基本概念 11
2.GMM模型的参数估计 12
2.1EM算法的计算 13
3.算法优化(MFCC中加入能量信息) 15
六、实验代码及设计分析 16
1.实验代码 16
2.设计分析 16
2.1问题的分析 17
七、实验体会及总结 17
八、参考文献 18
皖西学院2012届信息工程学院课程设计
一、背景
伴随着全球化、网络化、信息化、数字化时代的到来,我们对高可靠性的身份验证技术与身份识别技术的需求也日益增长。
传统的以密码为特征的身份认证技术暴露出巨大的弊端,很难满足高安全性和长效安全性的要求,而在生物学和信息科学高度发展的今天,生物认证技术作为一种便捷、先进的信息安全技术已经在现实生活中得到广泛的应用。
这是根据人体自身的生理特征(指纹、手形、脸部、虹膜)和行为特征(声音、签名)来识别身份的技术,它是集光学、传感技术、红外扫描和计算机技术于一身的第三代身份验证技术,能满足现代社会对于身份鉴别的准确性、安全性与实用性的更高要求。
在信号检测与处理、模式识别、人工智能、机器学习等理论与技术迅速发展的推动下,不久的将来,生物认证技术必将进入一个光辉的时代。
比尔盖茨曾经预言“以人类生物特征进行身份验证的生物识别技术,在今后数年内将成为IT产业最为重要的技术革命。
”
语音是人的自然属性之一,由于说话人发声器官的生理差异以及后天形成的行为差异,每个人的语音都带有强烈的个人色彩,这使得通过分析语音信号来识别说话人成为可能。
用语音来鉴别说话人的身份有着许多独特的优点,如语音是人的固有特征,不会丢失或遗忘;
语音信号的采集方便,系统设备的成本低;
另外利用电话网还可以实现远程客户服务等等。
近年来,利用语音特征进行身份鉴别的说话人识别(也叫说话人识别)在生物认证技术领域中越来越受到研究者的关注。
二、设计目的
说话人识别(SpeakerRecognition),是近年来兴起的一种生物识别技术,说话人识别以其独特的方便性、经济性和准确性等优势受到世人瞩目。
近年来,随着科学技术的发展,说话人识别技术已经得到了极大的发展,它在公安侦察、声控系统、医疗诊断、电子金融等行业和领域有着极其广阔的市场应用前景。
说话人识别根据语音波形中反映说话人生理和行为特征的语音参数,自动识别说话人身份。
与语音识别不同,说话人识别技术并不注意语音信号中的语义内容,而是希望从语音信号中提取出个人的信息特征。
说话人识别有几个关键技术:
首先是特征选取的问题,从声学或者统计学的角度从声音信号中提取某些特征参数,用这些特征参数来描述说话人的声音特征。
其次是识别模型,用机器学习模型去学习、记忆说话人特征,从而达到识别的目的。
基于基本说话人识别理论和技术的研究,本文基于Mel倒谱系数(MFCC)语音特征参数,采用人工神经网络作为识别模型,研究设计了一个说话人识别的原型系统。
MFCC是目前使用最广泛的语音特征之一,具有计算简单、区分能力好等突出的优点.
三、设计基本原理
1.说话人识别的分类
说话人识别按其最终完成的任务可以分成两类:
说话人确认(SpeakerVerification,简称SV)和说话人辨识(SpeakerIdentification,简称SI)。
本质上它们都是根据说话人所说的测试语句或关键词,从中提取与说话人本人特征有关的信息,再与存储的参考模型比较,做出正确的判断。
不过说话人确认是确认一个人的身份,只涉及一个特定的参考模型和待识别模式之间的比较,系统只作出“是”或“不是”的二元判决,如下第一幅图所示,可表示为:
f(X,i)={0,1};
而对于说话人辨识,系统则需要在一个指定人群当中,确定某测试语音是其中哪一个说话人发出的,有时还要对这个人以外的语音做出拒绝的判别。
如下第二幅所示,可表示为:
f(x)={1,2,......,N},由于需要比较和判决,所以说话人辨识的误识率要说话人确认,并且随着数量的增加,其性能将会逐渐下降。
另外,用户在使用说话人识别系统时,需要向系统提供一段语音。
2.说话人识别的基本原理和系统结构
说话人识别本质上是一个模式识别问题,分为训练阶段和识别阶段在训练阶段系统的每个使用者说出若干训练语料,系统对这些训练语料进行数字化处理,根据特征参量建立每个使用者的模板或模型参数参考集。
在识别阶段,把从待识别说话人说出的语音信号中提取的特征参量,与在训练过程中得到的参考参量集或模型模板进行对比,根据一定的相似性准则进行决策从而得出识别结果。
对于说话人辨识来说,所提取的参数要与训练过程中的每一个人的参考模型加以比较,并把与它距离最近的那个参考模型所对应的使用者辨认为是发出输入语音的说话人。
对于说话人确认而言,则是将从输入语音中提取的特征参量与其声称为某人的参考模板比较,如果两者之间的距离小于一定的阀值,则予以确认,否则拒绝。
下图是说话人识别系统的结构框图,它由预处理,特征提取,模型训练,模式匹配,和判决等几个大部分组成。
自适应
模型训练
模型参数存储
训练
判决逻辑
模式匹配
特征提取
预处理
语音输入
识别
识别结果
本次试验采用基于MFCC和GMM的说话人辨识系统。
说话人识别是沿着两个基础设计的,即特征提取和模式匹配。
特征提取的任务是选取唯一表现说话人身份的有效且稳定可靠的特征,模式匹配的任务是对训练和识别时的特征模式做相似性匹配。
四、模式匹配与特征提取
在目前语义特征与说话人个性特征还不能很好地从语音特征中得到分离地情况下,为每一说话人建立的说话人个性特征模型实际上是话者的语音特征模型。
为了对说话人个性特征描述的一致起见,系统一般将每一个说话人的模型结构取得相同,不同的只是模型的参数。
动态时间归整方法(DTW)
说话人信息不仅有稳定因素(发声器官的结构和发声习惯),而且有时变因素(语速、语调、重音和韵律)。
将识别模板与参考模板进行时间比对,按照某种距离测度得出两模板间的相似程度。
常用的方法是基于最近邻原则的动态时间归整
说话人辨识系统的性能是与用户数量有关的。
因为它工作时把输入测试语音的特征参数与系统所存储的每个合法使用者的参考模型相比较,所以当用户数量增多时,不仅处理时间变长,而且各个用户之间变得难以区分,导致差错率增大。
而对于说话人确认系统差错率基本上不会随用户数量的增加而改
2.特征提取
特征提取的原则:
a)能够有效地区分不同的说话人,但又能在同一个说话人的语音发生变化时相对保持稳定。
b)易于从语音信号中提取。
c)不易被模仿。
d)尽量不随时间和空间变化。
2.1常用的特征参数
考虑到特征的可量化性,训练样本的数量和系统性能的评价问题,目前的说话人识别系统主要依靠较低层次的声学特征进行识别。
a)语音频谱直接导出的参数
语音短时谱中包含有激励源和声道的特性,因而可以反映说话人生识别。
而短时时谱随时间变化,又在一定程度上反映了说话人的发音习惯,因此,由时谱随时间变化,又在一定程度上反映了说话人的发音习惯,因此,由率谱、基音轮廓、共振峰及其带宽、语音强度及其变化等。
b)鲁棒性参数
包括Mel频率倒谱系数,以及经过噪声谱减或者信道谱减的去噪倒谱系数等。
综上所述,常用于说话人识别的特征参数有:
语音短时能量、基音周期、语音短时谱或BPFG特征、线性预测系数LPC、共振峰频率及带宽、LPC倒谱、MFCC倒谱等,以及反映这些特征动态变化的线性回归系数等。
2.2语音的倒谱分析(MFCC)简介
本次试验求取语音倒谱特征参数的方法是采用梅尔倒谱系数(MFCC),人们对频率低的声音,听起来感觉它的音调低,对于频率高的声音,听起来感觉它的音调高。
但是音调与声音频率并不成正比关系。
为了描写音调,人们采样梅尔(Mel)标度,规定音调的单位为Mel。
通常将频率为1000Hz60dB的纯音产生的音调定为1000Me1。
如果一个纯音听起来比1000Me1调子高了一倍,则它的音调为2000Me1和Walkman通过实验建立了一张如下图所示的音调一频率表,形象地阐述了在强度不变的情况下,音调和频率之间的关系。
从图上可以看出两者之间并不是简单的线性关系。
在1000-4000Hz范围内,两者之间基本上是线性相关的,当频率大于4000Hz时,基本上呈对数关系,而当频率小于1000Hz时,则近似于指数关系。
2.3MFCC倒谱系数及其提取算法
通过前人实验,人们已经知道:
当中心频率在1000Hz以下时,临界带宽一般保持恒定,约为100Hz。
当中心频率超过1000Hz时,随着中心频率的增长,临界带宽呈对数增长。
临界带宽的计算公式如下:
其中fc为中心频率
随音调的频率的变化而变化。
频率越低,人耳对频率的变化越敏感,即DL值较小。
在强度为40dB时,2000Hz的音调只要改变3Hz即可被觉察;
而当音调频率达到10000Hz时,DL值已上升到30Hz。
实验表明,只要音调频率高于1000Hz,能觉察到的频率差异所需频率变化是相对恒定的,大约是0.3%.这个结果说明:
我们可以设计模型使其在音调轴(Me1)上均等地逼近语音短时功率谱,从而更好地符合人的听觉特性。
根据语音信号的同态处理可知,求普通的倒谱系数的方法是:
先求一帧语音的FFT,然后取模,再取对数,最后求IFFT即可。
MFCC参数的计算要点是将线性功率谱转化成Mel频率下的功率谱。
为了实现功率谱的转换,使用临界频带的划分,在语音帧的频率范围内设置一系列带通滤波器组成的滤波器序列,即Me1滤波器组,用该滤波器组模拟人耳听觉的非线性特性。
下表给出了临界带滤波器组的一种典型的中心频率和带宽参数。
临界频带滤波器组
滤波器标号
中心频率(Hz)
临界带宽(Hz)
1
100
11
1149
160
2
200
12
1320
184
3
300
13
1516
211
4
400
14
1741
242
5
500
15
2000
278
6
600
16
2297
320
7
700
17
2639
367
8
800
18
3031
422
9
900
19
3482
484
每个滤波器其中心频率为f(i),与之对应的各个Mel频率点在Mel频率轴上是均匀分布的。
这样,在线性频率上,当m较小时,相邻的f(i)的间隔较小,随着m的增加,相邻的f(i)的间隔会逐渐加大。
滤波器的设计可以是各种类型,
本次实验滤波器采用构造一个频带交叉的三角型滤波器组。
如下图所示。
取每个三角形的滤波器频率带宽内所有信号幅度加权和作为某个带通滤波器的输出,然后对所有滤波器输出做对数运算,再进一步做离散余弦变换(DCT)即得到MFCC。
2.4求取MFCC系数的具体算法和步骤
如下图所示求取MFCC倒谱系数一般包含如下几个过程:
a)预处理
预处理一般包括预加重,端点检测,分帧和加窗:
预加重
由于语音信号的平均功率谱受声门激励和口鼻辐射的影响,高频端大约在800Hz以上按6dB/倍频程跌落,为此要进行预加重。
预加重的目的是将更为有用的高频部分的频谱进行提升,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求频谱,以便于进行频谱分析或声道参数分析。
预加重一般用具有6dB/倍频程的提升高频特性的数字滤波器来实现,其传递函数为:
,其中产为预加重系数,可取为1或比1稍小的值。
端点检测
端点检测就是对输入语音信号进行判断,从背景噪声中准确找出语音段的起始点和终止点。
有效的端点检测不仅能消除无声段的噪音,而且还可以使处理语音信号的时间减到最小。
目前的端点检测技术大都是基于语音信号的时域特征来进行的,一般常采用两种时域特征:
短时能量和短时过零率,通过设定它们的门限来进行检测。
设某个长度为N的短时语音信号为x(m),其短时能量E可用下式计算:
其短时过零率Z可用下式计算:
其中sgn[]是符号函数,即
分帧
由于语音信号的准平稳特性,使得只在短时段上才可视为是一个平稳过程,可以用对平稳过程的分析方法进行分析,因此需要将语音信号划分为一个一个的短时段,每一短时段称为一帧,每一帧的长度大概为10-30ms。
分帧可以采用连续分段的方法,但为了使帧与帧之间平滑过渡,保持其连贯性,一般采用交叠分段的方法,即每一帧的帧尾与下一帧的帧头是重叠的。
加窗
为了减小语音帧的截断效应,降低帧两端的坡度,使语音帧的两端不引起急剧变化而平滑过渡到零,就要让语音帧乘以一个窗函数。
设帧信号为x(n),窗函数为w(n),则加窗后的信号y(n)为:
N为每帧取样点数
目前常用的窗函数是Hamming窗(即升余弦窗):
b)快速傅立叶变换(FFT)
由于离散傅立叶变换(DFT)的运算量较大,可以采用高效的快速傅立叶变换(FFT)来把语音帧由时域变换到频域。
需要注意的是:
在进行FFT运算时要考虑到FFT的点数问题,如果FFT的点数选取过大,则运算的复杂度会增大,使系统的响应时间变慢,不能满足系统的实时性;
如果FFT的点数选取过小,则可能造成频率分辨率过低,提取的参数的误差过大。
一般要根据系统的具体情况选择FFT的点数。
c)离散余弦变换(DCT)
把上一步获得的mel频谱变换到时域,其结果就是mel频率倒谱系数(MFCC)。
因为mel频谱系数都是实数,可以使用离散余弦变换(DCT)把它们变换到时域。
d)Mel滤波
把上步变换得到的离散频谱用序列三角滤波器进行滤波处理,得到一组系数ml,m2,......。
该滤波器组的个数P由信号的截止频率决定,所有滤波器总体上覆盖从0Hz到Nyquist频率,即采样率的二分之一。
计算mi的公式如下:
其中
f[i]是三角滤波器的中心频率,满足:
五、模式识别及算法优化
说话人识别本质上是一个模式识别问题,而模式识别系统的目标是要在表示说话人确认(SV)是要判断某被测语音是否是其声明的说话人发出的,系统需要作出“是”或“不是”的二元判决,可表示为:
f(X,i)={0,1},其目的是要在被测语音和“是该说话人”或“不是该说话人”之间找到映射关系,这样就可以把说话人确认看作是具有两个分类的说话人识别问题。
如果把用户输入的语音提取成一系列的特征矢量,且特征矢量之间的序列关系被忽略不计的话,这时的说话人建模问题就转化为一个构造静态分类器的问题。
考虑到高斯函数(钟型函数)对真实数据的较好描述,另外由于高斯函数的线性组合仍然是高斯函数,而且在理论上任意形式的总体分布都可以用若干个高斯函数的混合来逼近。
所以采用高斯混合函数来估计语音特征的概率分布,这样就得到了说话人的高斯混合模型(GaussianMixtureModel,简称为GMM).
1.GMM模型的基本概念
GMM混合模型可以看作一种状态数为1的连续分布的隐马尔可夫模型CDHMM。
它是用M个单高斯分布的线性组合来描述帧特征在特征空间中的分布。
一个M阶的混合高斯模型的概率密度函数是由M个单高斯概率密度函数加权和得到的,表示如下:
其中M是混合模型的阶数,X是一个D维随机向量,wi,i=1,2,.......M,是混合权重,且混合权重应满足以下条件:
bi(X),i=1,2,.......M,是子分布,每个子分布是D维的联合高斯概率分布,可表示如下:
其中ui是均值向量,∑i是协方差矩阵。
整个的高斯混合模型便可由参数均值向量,协方差矩阵和混合权重来描述。
因此一个模型兄可以表示为如下一个三元组:
GMM的计算结构可以用图来表示。
图GMM的计算结构
2.GMM模型的参数估计
GMM模型的训练就是给定一组训练数据,依据某种准则确定模型的参数。
最常用的参数估计方法是最大似然(MaximumLikelihood,简称为ML)估计。
最大似然估计是把待估计的量看成固定但未知的量,然后求出能够使学习样本出现概率最大的参数值,并把它作为参数的估值。
设某说话人的训练特征矢量序列为X=Xi,t=1,2,......,T},它对于模型λ的似然度可表示如下:
似然度可看作样本给定时,参数λ的函数。
训练的目的就是要找到一组参数λ,使得P(X/λ)最大,即:
为了分析方便,通常用log(L(λ/X))即log(P(X/λ))来分析。
因为对数函数是单调的,所以使对数似然函数最大的λ也会使原来的似然函数最大。
将上式对λ求微分并令它为0的求极值法,可知λ的最大似然估计必然满足方程:
由于P(X/λ)是参数λ的非线性函数,很难直接求出其最大值。
因此,常常采用EM(ExpectationMaximization,简称为EM)算法估计参数λ。
2.1EM算法的计算
是从参数λ的一个初值开始,采用EM算法估计出一个新的参数,使得新的模型参数下的似然度。
新的模型参数再作为当前参数进行训练,这样迭代运算直到模型收敛oEM算法假设任一帧语音是出自模型的哪个高斯分量这一信息是可知的,来简化极大似然的优化目标函数,分别经过E-step求出期望值,和M-step调整模型参数最大化目标函数来逐步收敛。
定义Q函数;
其中i为高斯分量序号,或称隐状态号。
将上式带入得:
其中:
其中:
E_Step:
求训练数据落在假定的隐状态i的概率:
M_Step:
分别求Q式中相对于三个参数的偏导为零时的参数值
下面给出迭代过程中这些参数的重估公式,这些重估公式保证了每一次迭代运算中模型似然度的单调递增。
混合权重的重估公式:
另外还需进行均值的重估和方差的重估。
在使用EM算法训练GMM时,GMM模型的高斯分量的个数M和模型的初始参数必须首先确定。
这些很难从理论上推导出来,只能通过实验确定选择不同参数的性能。
另外还有考虑训练数据不充分的问题。
在实验应用中,往往得不到大量充分的训练数据对模型参数进行训练。
由于训练数据的不充分,GMM模型的协方差矩阵的一些分量可能会很小,这些很小的值对模型参数的似然对函数影响很大,严重影响系统的性能。
为了避免小的值对系统性能的影响,在EM算法的迭代计算中,可以对协方差的值设置一个门限值,在训练过程中令协方差的值不小于设定的门限值。
2.3GMM模型的识别算法
给定一个语音样本,说话人辨识的目的是要确定这个语音属于N个说话人中的哪一个。
在一个封闭的说话人集合里,只需要确认该语音属于语音库中的哪一个说话人。
在辨识任务中,目的是找到一个说话人1,其对应的模型不使得待测语音特征矢量组X具有最大后验概率P。
基于GMM模型的说话人辨识系统结构框图如下所示。
图GMM模型的说话人辨识系统结构框图
根据Bayes理论,最大后验概率可表示为:
其中()
其对数形式为:
因为P的先验概率未知,我们假定该语音信号出自封闭集里的每个人的可能性相等,也就是说:
对于一个确定的观察值矢量x,P(x)是一个确定的常数值,对所有说话人都相等。
因此,求取后验概率的最大值可以通过求取P获得,这样,辨识该语音属于语音库中的哪一个说话人可以表示为:
在这里,即为识别出的说话人。
3.算法优化(MFCC中加入能量信息)
针对MFCC使用的优化措施,包括在MFCC中加入短时能量信息和动态过渡信息。
这两种方法的本质都是在原有说话人信息的基础上靠增加信息量来提高识别性能。
3.1短时归一化能量
短时能量是语音信号处理中的一个重要参数,在说话人识别中,由于能量参数对识别性能有一定的提高作用,因此可以在语音特征中加入能量参数作为特征向量的一维分量。
给定语音段中的长度为N的一帧{s,(n),n=1,2,..,N},计算该帧的短时对数能量公式如下,其中L是语音段的帧数。
i=1,2,…..L
由于不同语音段不同语音帧的能量差别比较大,为了使其能够于前面的倒谱系数一起作为向量计算,需要进行归一化处理。
其中,即语音段中最大的对数能量
根据参考文献MFCC参数中各维分量对说话人识别的贡献不同,最有用的说话人信息包含在MFCC分量c,到C16之间,MFCC分量c。
和c:
包含
有负作用的说话人信息,其中分量C。
主要是直流分量,将其作为特征会引起识别率的降低,在实际应用中我们一般用归一化能量取代第0阶倒谱系数C0.
以上内容主要是介绍了基于MFCC和GMM的说话人辨识系统实验的设计方案以及实验的环境。
通过实验实现了MFCC等特征的提取方法,MFCC以及MFCC中加入归一化能量构成系统识别性能。
六、实验代码及设计分析
1.实验代码
见附件与电子档文件。
2.设计分析
语音录制时采用了质量较好的麦克风,录入的语音都转化为wav格式的语音文件。
编程主要使用Matlab2010b。
识别方法或模型的最重要指标是识别准确率,准确率越高越宜于应用于实际。
评价的另外一个重要指标就是识别所花的时间,即输入待识别的说话人语音到识别结果的输出说话的时间,该时间越短越好。
那么我们就需要解决了以下几个问题。
1)建立代表说话人身份的语音特征模型,通过编程从语音数据中提取说话人特征;
2)利用说话人特征建立说话人模型或语音识别模型;
3)利用语音数据评价你的说话人模型或语音识别模型评价的好坏;
4)分析影响准确率的因素,采取措施进一步提高语音识别的准确率。
2.1问题的分析
首先我们原准备直接对音频文件进行特征提取,后经编程提取后发现有大量无用数据,且干扰结果的准确性。
于是,我们决定先对音频文件编程进行预处理,处理过程包括:
预加重、分帧、加窗、端点检测。
然后对预处理后所得数据进行MFCC特征提取,得到合并的mfcc参数和一阶差分mfcc参数。
其次,我们利用第一问建立的模型特征:
mfcc参数和一阶差分mfcc参数用DTW算法进行建模。
最后,语音识别假设已训练了n个(n>
2)语音模型,现输入一位话者的语音序