基于MATLAB的说话人语音识别
目录
- 系统设计任务及要求………………………………………………3
- 语音识别的简介……………………………………………………3
三、语音识别原理………………………………………………………3
3.1语音识别系统总体框架……………………………………………4
3.2语音信号预处理……………………………………………………4
3.3特征参数的提取…………………………………………………6
3.4用矢量量化聚类法生成码本……………………………………7
3.5 VQ的说话人识别 ………………………………………………8
- 仿真实现……………………………………………………………9
- 总结……………………………………………………………………9
附录1………………………………………………………………………10
附录2………………………………………………………………………14
一.系统设计任务及要求
1.用MATLAB实现50个特定人的语音识别功能;
2.语音识别的正确率在百分之九十以上;
二.语音识别的简介
说话人识别就是根据说话人的语音信号来判别说话人的身份。语音是人的自然属性之一,由于说话人发音器官的生理差异以及后天形成的行为差异,每个人的语音都带有强烈的个人色彩,这就使得通过分析语音信号来识别说话人成为可能。用语音来鉴别说话人的身份有着许多独特的优点,如语音是人的固有的特征,不会丢失或遗忘;语音信号的采集方便,系统设备成本低;利用电话网络还可实现远程客户服务等。因此,近几年来,说话人识别越来越多的受到人们的重视。与其他生物识别技术如指纹识别、手形识别等相比较,说话人识别不仅使用方便,而且属于非接触性,容易被用户接受,并且在已有的各种生物特征识别技术中,是唯一可以用作远程验证的识别技术。因此,说话人识别的应用前景非常广泛:今天,说话人识别技术已经关系到多学科的研究领域,不同领域中的进步都对说话人识别的发展做出了贡献。说话人识别技术是集声学、语言学、计算机、信息处理和人工智能等诸多领域的一项综合技术,应用需求将十分广阔。
说话人识别系统设计中的根本问题是如何从语音信号中提取表征人的基本特征。即语音特征矢量的提取是整个说话人识别系统的基础,对说话人识别的错误拒绝率和错误接受率有着极其重要的影响。同语音识别不同,说话人识别利用的是语音信号中的说话人信息,而不考虑语音中的字词意思,它强调说话人的个性。因此,单一的语音特征矢量很难提高识别率,所以语音信号的时候如何提取信号中关键的成分尤为重要。语音信号的特征参数的好坏直接导致了辨别的准确性。
系统在说话人的识别中采用基于Mel的频率倒谱系数的模板匹配的说话人识别方法。具体的实现过程当中,采用了matlab软件来帮助完成这个项目。在matlab中实现采集,分析,特征提取,配对,识别。
三.语音识别原理
3.1 语音识别系统总体框架
说话人识别系统的总体结构如图1所示。首先通过语音的录制作为输入信号,输入的模拟语音信号要进行预处理,包括预滤波、采样和量化、加窗、端点检测、预加重等等。经过预处理后,接下来就是重要的一环:特征参数提取。具体要求是:
- 提取的特征参数要能有效地代表语音特征,具有很好的区分性。
- 各阶参数之间有良好的独立性。
-
特征参数要计算方便,最好有高效的计算方法,以保证语音识别的实时实现。
图1 说话人语音识别系统总体框图
考虑到数据量、实时性以及识别率的问题,本文采用基于矢量量化的方法识别语音。对于特征参数的选取,我们使用mfcc的方法来提取。
3.2语音信号预处理
3.2.1 滤波
在模/数转换之前,通常要进行滤波处理,滤波的作用主要有两个:一是用高通滤波器抑制50Hz电源噪声的干扰;二是用低通滤波器滤除语音信号中频率分量超过采样频率一半的部分,防止采样信号的混叠。
3.2.2 模数转换
将原始采集得来的语音模拟信号转换为计算机能够处理的数字信号,就需要对其进行数字化,此过程成为数/模转换,最常见的方式就是脉冲编码调制(Palse
Code Modulation ),它的过程分为采样、量化和编码;
采样是对模拟信号进行周期性的扫描,将实际上连续变化的信号转换为时间上离散的信号,从而便于表示为计算机的语言。根据Nyquist采样定理,当采样频率高于信号最高频率的一倍时,原来的连续信号就可以从采样样本中完全重建出来。人耳可以分辨的声音频率范围为(20Hz,20KHz),因此,当采样的频率高于40KHz时,采样的过程就不会丢失信息,但考虑到设备的实际性能,且说话人语音频率主要集中在3.4KHz,故本系统以8KHz为采样率。 量化就是把经过采样得到的瞬时值将其幅度离散,即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示出来,最终用整数倍的数字表示的过程。经过时间上的采样后,连续的模拟信号变成了离散信号,再经过振幅的量化,把量化好的采样值用二进制代码表示出来,就转换成了数字信号。
编码:就是用一组二进制码组来表示每一个有固定电平的量化值。然而,实际上量化是在编码过程中同时完成的,故编码过程也就称为模/数转换,
该系统以实验者50人的声音为分析样本,将语音信号都保存为符合RIFF规范的wav文件格式,便于在windows环境下处理。语音信号是利用PC机录制,音频文件采用8000kHz采样频率、16bit量化、单声道的PCM录 音,用MATLAB本身wavread函数来读取语音文件,直接将语音数据转化为数字信号。
3.2.3预加重、分帧及加窗
预处理是指对语音信号的特殊处理:预加重,分帧处理。预加重的目的是提升高频部分,使信号的频谱变得平坦,以便于进行频谱分析或声道参数分析。用具有 6dB/倍频程的提升高频特性的预加重数字滤波器实现。虽然语音信号是非平稳时变的,但是可以认为是局部短时平稳。故语音信号分析常分段或分帧来处理。
在语音参数计算之前,一般要将其通过一个预加重滤波器,预加重目的是为了对语音的高频部分进行加重增加其高频分辨率,其函数为:
x=filter([1 -0.9375],1,x);
“帧”,将语音信号截断的过程称之为“分帧”。为了保持帧之间的平滑过渡,常相邻的两帧之间有少部分的重叠,这些重叠的部分叫做帧移。在以后的语音信号识别过程中,都是依赖于每一帧多对应的数据序列所描述的语音信号特征来处理。
分帧操作主要是提取语音短时特性便于建模,一般取帧长30ms,帧移10ms;在对语音信号进行截断处理形成帧后,通常会产生泄露( Gibbs)现象,为了防止此种现象的发生,我们通常运用一个长度有限的窗函数w(n)对语音短段进行变换或运算。对于语音信号的每一帧来说,窗函数的宽度会影响语音信号的平滑性。越宽的窗函数,对信号的平滑作用就会越显著,效果越好,窗函数过窄,则基本
对信号不起作用。语音信号经过加窗处理后,两端的坡度会减小,窗口边缘两端也不会引起急剧变化,截取出的语音波形两端就会缓慢的过渡为零,这就有
效的减小语音帧的截断效应。
因此对于语音信号时域分析来说,窗函数的选择很重要,虽说矩形窗平滑比较好,但是容易丢失波形细节,并有可能造成泄漏现象。而Hamming窗可以有效的克服泄漏现象。所以在加窗方面常以Hamming窗为主,即:
3.3特征参数的提取
对于特征参数的选取,我们使用mfcc的方法来提取。
MFCC(Mel-sealed Cepstrum Coefficients),即Mel频率倒谱参数,也叫做Mel尺度倒谱参数。MFCC参数是基于人的听觉特性利用人听觉的屏蔽效应,在Mel标度频率域提取出来的倒谱特征参数。 这个参数的提取是将语音从时域变换至倒谱域,通过构造人的听觉模型,用滤波器组模仿人耳的滤波,语音通过滤波器组的输出为语音基本特征参数,