数字信号处理课程设计-基于声音的说话人身份识别技术研究.doc_第1页
数字信号处理课程设计-基于声音的说话人身份识别技术研究.doc_第2页
数字信号处理课程设计-基于声音的说话人身份识别技术研究.doc_第3页
数字信号处理课程设计-基于声音的说话人身份识别技术研究.doc_第4页
数字信号处理课程设计-基于声音的说话人身份识别技术研究.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息工程学院数字信号处理课程设计数 字 信 号 处 理课程设计报告题目: 基于声音的说话人身份识别技术研究 学院: 信 息 工 程 学 院 专业: 通 信 工 程 指导教师: 指导时间: 2014.12 姓 名(学号)承 担 任 务GUI界面制作程序测试与修改实验报告编写PPT制作语音库采集、构建实验程序编写指导教师评价意见成绩目录1、背景- 4 -2、设计目的- 4 -3、设计原理- 5 -3.1 语音识别技术的分类- 5 -3.2 Mel频率倒谱系数- 6 -3.2.1 Mel频率倒谱系数基本原理- 6 -3.2.2 MFCC的提取流程- 7 -3.3 矢量量化- 9 -3.3.1 矢量量化的简单介绍- 9 -3.3.2 矢量量化的定义- 9 -3.3.3 矢量量化的基本原理- 10 -3.4 矢量量化的失真测度- 11 -3.4.1 欧氏距离-均方误差- 11 -3.5 识别失真度- 12 -4、设计过程- 13 -4.1、实验技术路线图- 13 -4.2、实验结果测试图- 14 -5、实验代码与结果分析- 15 -5.1、MATLAB源程序- 15 -GUI界面:- 15 -测试程序- 17 -Mel倒频谱系数函数- 18 -库函数- 19 -滤波程序- 20 -录音程序- 20 -5.2、实验结果分析- 21 -6、实验体会和总结- 22 -7、文献- 23 -1、背景 随着信息化的迅速发展,人们对身份识别技术的需求越来越多,并对其安全性和可靠性的要求也越来越高。基于传统密码认证的身份识别技术在实际信息网络应用中已经暴露出许多不足之处,而基于生物特征辨别的身份识别技术近年来也日益成熟并在实际应用中展现出极大的优越性。作为生物特征认证的一个重要分支,语音识别同指纹识别、人脸识别、虹膜识别一样,一直以来都是研究者们关注和探索的热点之一。 语音识别技术也成为了近年的研究热点,有不少实用化的技术成果被商家成功推向了市场,让人们看到了它在PDA、智能家电、工业控制等领域的广阔发展前景。例如现在国内在语音方面做的最好的就是科大讯飞股份有限公司,科大讯飞作为中国最大的智能语音技术提供商,在智能语音技术领域有着长期的研究积累,并在语音合成、语音识别、口语评测、自然语言处理等多项技术上拥有国际领先的成果。语音识别技术有很大可能产生新的服务,给人们的工作和生活带来非常可观的方便。 我国语音识别研究工作起步于五十年代。近年来国内研究水平也从实验室逐步走向实用。我国语音识别技术的研究水平已经基本上与国外同步,在汉语语音识别技术上还有自己的特点与优势,并达到国际先进水平。2、设计目的 每个人都有自己特有的发音器官和特有的说话习惯,这些差异都式反映在说话人语音信号的波形中,且比较复杂,使得每个人的发音都伴有浓重的个人色彩,这是说话人识别得以实现的客观保证。说话入识别涉及到人的发音器官、说话习惯、语言构造和发声原理等多方面的内容,它综合了生理学、语音学、数字信号处理、模式识别、人工智能等学科知识,有着广阔的市场应用前景。通过说话人识别技术,可以实现用语音信息进行说话人的身份鉴别。利用说话人识别技术还可以通过语音实现对一些服务的控制,例如语音拨号、电话银行、数据库访问服务、信息服务和计算机的远程访问等等。而且,说话人识别技术有很大可能产生新的服务,给人们的工作和生活带来非常可观的方便,本次试验主要目的为提出和设计开发能够快速准确识别不同个体的可行方案。3、设计原理3.1 语音识别技术的分类语音识别系统可以根据对输入语音的限制加以分类。从说话者与识别系统的相关性考虑可以将识别系统分为3类:特定人语音识别系统:仅考虑对于特定人的语音进行识别;非特定人语音系统:识别的语音与人无关,通常要用大量不同人的语音数据库对识别系统进行学习;多人的识别系统:通常能识别一组人的语音,或者成为特定组语音识别系统,该系统仅要求对需要识别的那组人的语音进行训练。从说话的方式考虑也可以将识别系统分为3类:孤立词语音识别系统:孤立词识别系统要求输入每个词后要停顿;连接词语音识别系统:连接词输入系统要求对每个词都清楚发音,一些连音现象开始出现;连续语音识别系统:连续语音输入是自然流利的连续语音输入,大量连音和变音会出现。3.2 Mel频率倒谱系数3.2.1 Mel频率倒谱系数基本原理Mel频率倒谱系数(MFCC),Mel频率是基于人耳听觉特性提出来的,它与Hz频率成非线性对应关系。Mel频率倒谱系数(MFCC)就是是利用它们之间的非线性对应关系,计算得到的Hz频谱特征。LPC模型是基于发音模型建立的,LPCC系数是一种基于合成的参数,这种参数没有充分利用人耳的听觉性。心理学研究表明,无论是纯音还是语音,人们对于声音音调的感受都不是线性的,新的频率单位的划分方法,都应该考虑到人耳听觉的特性,这就应该不同于物理学对频率的描述。物理上的频率是以Hz为单位的,而符合人听觉特性的频率是以Mel或Bark为单位的。临界带宽概念的引入是为了描述噪音对纯音的遮蔽效应(masking effect): 一个纯音可以被以该纯音为中心频率并且具有一定频带宽度的噪音所遮蔽,条件是临界带宽内噪声的功率大于纯音。在一个相同的临界带宽内,如果噪音的声压保持恒定,无论噪音的带宽是否延伸到了整个临界带宽,其响度都是相同的,可一旦超过了这个临界带宽,就可以察觉到响度的变化。从而得出结论:如果总功率相同,在一个相同临界带宽内,若干个不同频率的声音组成的混音,跟位于此临界频带中央的单频声音具有相同的响度。如果混音声音所处的频带范围超过了相应的临界带宽,混音会比纯音听起来更加响亮。通过实验,我们已经知道:当中心频率在1000Hz以下时,临界带宽一般保持恒定,约为100Hz。且当中心频率超过1000Hz时,随着中心频率的增长,临界频带的带宽呈线性增长。符合人的听觉系统的频率刻度划分方法,应该满足在低频上具有较高的分辨率、在高频上具有较低的分辨率,符合临界带宽的特性,以Mel为单位的频率刻度正是符合这种特性的一种频率刻度。由于基于Mel频率的倒谱系数(Mel Frequency Cepstrum coefficient .简称MFCC)是将人耳的听觉感知特性和语音的产生机制组合在一起,因此在语音识别和说话人识别系统中得到广泛的应用。Mel频率尺度(mel-frequency scale),它的值大体上对应于实际频率的对数分布关系。Mel频率与实际频率的具体关系: (1)下图描述了Mel频率与实际频率之间的对应关系:如图3.1 图3.1 Mel频率与实际频率的对应关系3.2.2 MFCC的提取流程MFCC参数的提取包括以下几个步骤:n 预滤波:CODEC前端带宽为300-3400Hz的抗混叠滤波器。n A/D变换:8kHz的采样频率,12bit的线性量化精度。n 预加重:通过一个一阶有限激励响应高通滤波器,使信号的频谱变得平坦,不易受到有限字长效应的影响。n 分帧:根据语音的短时平稳特性,语音可以以帧为单位进行处理,实验中选取的语音帧长为32ms,帧叠为16ms。 加窗:采用哈明窗对一帧语音加窗,以减小吉布斯效应的影响。n 快速傅立叶变换(Fast Fourier Transformation, FFT):将时域信号变换成为信号的功率谱。三角窗滤波:用一组Mel频标上线性分布的三角窗滤波器(共24个三角窗滤波器),对信号的功率谱滤波,每一个三角窗滤波器覆盖的范围都近似于人耳的一个临界带宽,以此来模拟人耳的掩蔽效应。n 求对数:三角窗滤波器组的输出求取对数,可以得到近似于同态变换的结果。n 离散余弦变换(Discrete Cosine Transformation, DCT):去除各维信号之间的相关性,将信号映射到低维空间。n 谱加权:由于倒谱的低阶参数易受说话人特性、信道特性等的影响,而高阶参数的分辨能力比较低,所以需要进行谱加权,抑制其低阶和高阶参数。n 倒谱均值减(Cepstrum Mean Subtraction, CMS):CMS可以有效地减小语音输入信道对特征参数的影响。n 差分参数:大量实验表明,在语音特征中加入表征语音动态特性的差分参数,能够提高系统的识别性能。在本系统中,我们也用到了MFCC参数的一阶差分参数和二阶差分参数。n 短时能量:语音的短时能量也是重要的特征参数,本系统中我们采用了语音的短时归一化对数能量及其一阶差分、二阶差分参数。 如下图3.2 MFCC提取流程图3.2 MFCC提取流程3.3 矢量量化3.3.1 矢量量化的简单介绍矢量量化(VQ Vector Quantization)是70年代后期发展起来的一种数据压缩技术基本思想:将若干个标量数据组构成一个矢量,然后在矢量空间给以整体量化,从而压缩了数据而不损失多少信息。矢量量化编码也是在图像、语音信号编码技术中研究得较多的新型量化编码方法,它的出现并不仅仅是作为量化器设计而提出的,更多的是将它作为压缩编码方法来研究的。在传统的预测和变换编码中,首先将信号经某种映射变换变成一个数的序列,然后对其一个一个地进行标量量化编码。而在矢量量化编码中,则是把输入数据几个一组地分成许多组,成组地量化编码,即将这些数看成一个k维矢量,然后以矢量为单位逐个矢量进行量化。矢量量化是一种限失真编码,其原理仍可用信息论中的率失真函数理论来分析。而率失真理论指出,即使对无记忆信源,矢量量化编码也总是优于标量量化。3.3.2 矢量量化的定义矢量量化是先把信号序列的每个连续样点分成一组,形成维欧氏空间的一个矢量,然后对此矢量进行量化,具体定义如下:定义 3.3.2:维数为,尺寸为的矢量量化器定义为从维欧几里德空间到一个包含个输出(重构)点的有限集合的映射, 即 , 其中 集合做码书(codebook)或码本,其尺寸(大小)为,码书的个元素称为码字(codeword)或码矢量(code vector)。输入矢量空间通过尺寸为的量化器后,被分割成个互不重叠的区域或胞腔,这个过程被称为输入矢量空间的划分。对,胞腔定义为(2)3.3.3 矢量量化的基本原理对于任一信源或图样样值,若有个,我们可以把连续的一段样值当作为一个整体,如我们称之为矢量。各个矢量的维数一样,设为。因此信源将构成矢量集:(维欧几里德空间),为正整数。再把无遗漏的划分成个互不相交的子空间,即满足完备正交条件: (3)并求出每个子空间的质心,所得到的恢复矢量集就是量化器的输出空间。在量化过程中,对于阶维的矢量量化,实质上是判断输入矢量属于哪个子空间,然后输出该子空间的代表矢量,也就是如下的映射关系: (4)从而我们用代替进行编码,这就是矢量量化的本质。在矢量量化时,将维空间划分为个区域边界,然后将输出矢量与这些边界进行比较,并被量化为“距离”最小的区域边界的中心矢量值。若要对一个矢量进行量化,首先要抽取一个合适的失真测度,而后用最小失真原理,分别计算量化矢量所带来的失真。其中最小失真值所对应的那个量化矢量,就是矢量的重构矢量(恢复矢量)。现在主要有两个问题:(1) 如何划分个区域边界。这需要用相当数量的输入信号矢量,经过统计实验才能确定。此过程称为“训练”或建立码书。(2) 如何确定两个矢量在进行比较时的测度。这个测度就是两矢量之间的距离,或以其中的某一矢量为基准时的失真度。它描述了当输入矢量用码书所对应的矢量来表征时所应付出的代价。3.4 矢量量化的失真测度在矢量量化器的设计中,失真测度的选择是很重要的,它是矢量量化和模式识别中一个相当重要的问题。失真测度选用的合适与否,直接影响系统的性能。要使所选择的失真测度有实际意义,必须具备下面几个特征:(1) 必须在主观评价上有意义,即小的失真应该对应于好的主观语音质量;(2) 必须是方便处理的,就是在数学上比较容易实现,这样可以用于实际的矢量量化器的设计;(3) 平均失真存在并且是能够计算的;(4) 方便硬件实现。失真测度主要有均方差失真测度(即欧氏距离),加权的均方失真测度等。另外,还有人提出所谓的“主观的”失真测度。3.4.1 欧氏距离-均方误差设输入信号的某个维矢量,与码书中某个维矢量进行比较,必分别表示和中的各元素(),则定义均方误差为欧氏距离,即有: (5)这里的下标2表示平方误差。常用的欧氏距离有:方平均误差。其定义为: (6)平均误差。其定义为: (7)绝对值平均误差。这相当于时的平均误差,其定义式为: (8)此失真测度的主要好处是计算简单、硬件易于实现。最大平均误差。相当于是时的平均误差,其定义式为: (9)欧氏距离测度是人们熟知的一种失真测度,它应用的范围很宽泛。3.5 识别失真度将矢量量化技术用于语音识别时,对失真测度还应该有别的一些考虑。在此举例说明,在使用LPC参数的似然比失真测度对两矢量的功率谱进行比较时,还应该考虑到能量。研究表明,频谱与能量都携带有语音信号的信息,如果仅仅靠功率谱作为失真比较的参数,则识别的性能将不够理想。为此,可以采用如下的定义失真测度: (10)式中,及分别为输入信号矢量和码书重构矢量的归一化能量,可取为: (11)的作用是:当两矢量的能量接近时,能量差引起的影响可以忽略不计,当两矢量的能量差别比较大时,就是进行线性加权,而当能量差超过门限时,则为某一固定值。式(10)中,为加权因子,这里、和要经过测试来进行确定。4、设计过程4.1、实验技术路线图4.2、实验结果测试图5、实验代码与结果分析5.1、MATLAB源程序GUI界面:function varargout = testGUI(varargin)% TESTGUI MATLAB code for testGUI.fig% TESTGUI, by itself, creates a new TESTGUI or raises the existing% singleton*.% H = TESTGUI returns the handle to a new TESTGUI or the handle to% the existing singleton*.% TESTGUI(CALLBACK,hObject,eventData,handles,.) calls the local% function named CALLBACK in TESTGUI.M with the given input arguments.% TESTGUI(Property,Value,.) creates a new TESTGUI or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before testGUI_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to testGUI_OpeningFcn via varargin.% *See GUI Options on GUIDEs Tools menu. Choose GUI allows only one% instance to run (singleton).% See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help testGUI % Last Modified by GUIDE v2.5 27-Dec-2014 14:18:04 % Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, testGUI_OpeningFcn, . gui_OutputFcn, testGUI_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before testGUI is made visible.function testGUI_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to testGUI (see VARARGIN)% Choose default command line output for testGUIhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes testGUI wait for user response (see UIRESUME)% uiwait(handles.figure1);% - Outputs from this function are returned to the command line.function varargout = testGUI_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout1 = handles.output;ha=axes(units,normalized,position,0 0 1 1); uistack(ha,bottom) II=imread(1.jpg);image(II) colormap gray set(ha,handlevisibility,off,visible,off); % - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global s;global a;测试程序s, fs = wavread(165.wav); v2 = mfcc(s, fs); % 对找到的文件取mfcc变换 for j=2:80 v( :,j)=v2(:,(j-1)*3); end a=v; b= load(matlab.mat) ; b0=b.yuyinku0; %姜昱涵 code1=b0; b1=b.yuyinku1; %李治龙 code2=b1; b2=b.yuyinku2; %杨帆 code3=b2; b3=b.yuyinku3; %刘洋洋 code4=b3; b4=b.yuyinku4; %刘怡 code5=b4; b5=b.yuyinku5; %张震 code6=b5; b6=b.yuyinku6; %陆瑶; code7=b6; b7=b.yuyinku7; %夏梁站 code8=b7; b8=b.yuyinku8; %朱清宁 code9=b8; b9=b.yuyinku9; %包雨晴; code10=b9; b10=b.yuyinku10; %陈燕 code11=b10; b11=b.yuyinku11; %龚媛媛 code12=b11; b12=b.yuyinku12; %沈亚萍 code13=b12; b13=b.yuyinku13; %肖月霞 code14=b13; b14=b.yuyinku14; %张婷婷 code15=b14; b15=b.yuyinku15; %赵礼慧; code16=b15; b16=b.yuyinku16; %黄玉乾 code17=b16; b17=b.yuyinku17; %张帝 code18=b17; b18=b.yuyinku18; %雷超群 code19=b18; dist = zeros(19,1);for i=1:19 dist(i,1) = dtwdist = zeros(19,1);for i=1:19 dist(i,1) = dtw2(a,codei) ; enddisp(结果为:)i,j= min(dist); if i3.0e+04 fprintf(测试人语音 %d 是库内人员编号为%d!n,165,j); else fprintf(测试人语音 %d 未被识别!n, 165); endguidata(hObject, handles); % - Executes on mouse press over axes background.function axes1_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to axes1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)Mel倒频谱系数函数function r = mfcc(s, fs)for i = 1:19 % 对数据库中的代码形成码本 file = sprintf(%d.wav,i); disp(file); s,fs = wavread(file);m = 100;n = 256;l = length(s);p=20;nbFrame = floor(l - n) / m) + 1; %沿-方向取整 nbFrame=4;%for i = 1:n for j = 1:nbFrameM(i,j)=s(j-1)*m)+i);%对矩阵M赋值 endendh = hamming(n); %加 hamming 窗,以增加音框左端和右端的连续性M2 = diag(h)* M;for i = 1:nbFrameframe(:,i) = fft(M2(:, i); %对信号进行快速傅里叶变换FFT endt = n / 2;tmax = l / fs;m = melfb(20, n, fs); %将上述线性频谱通过Mel 频率滤波器组得到Mel 频谱,下面在将其转化成对数频谱矩形滤波器组f0 = 700 / fs;fn2 = floor(n/2);lr = log(1 + 0.5/f0) / (p+1);bl = n * (f0 * (exp(0 1 p p+1 * lr) - 1);%直接转换为FFT的数字模型b1 = floor(bl(1) + 1;b2 = ceil(bl(2);b3 = floor(bl(3);b4 = min(fn2, ceil(bl(4) - 1;pf = log(1 + (b1:b4)/n/f0) / lr;fp = floor(pf); pm = pf - fp;r = fp(b2:b4) 1+fp(1:b3);c = b2:b4 1:b3 + 1;v = 2 * 1-pm(b2:b4) pm(1:b3);m = sparse(r, c, v, p, 1+fn2);n2 = 1 + floor(n / 2);z = m * abs(frame(1:n2, :).2;r = dct(log(z); %将上述对数频谱,经过离散余弦变换(DCT)变换 到倒谱域,即可得到Mel 倒谱系数(MFCC参数)end库函数for i = 102:110 % 对数据库中的代码形成码本 file = sprintf(%d.wav,i); disp(file); s,fs = wavread(file); v1= mfcc(s, fs); % 计算 MFCCs 提取特征特征,返回值是Mel倒谱系数, 是一个log的dct得到的 for j=2:80 v(:,j)=v1(:,(j-1)*3); end ku(:,:,i)= v; end yuyinku10(:,:,1)=(ku(:,:,102)+ku(:,:,103)+ ku(:,:,104)+ku(:,:,105)+ ku(:,:,106)+ku(:,:,107)+ ku(:,:,108)+ku(:,:,109)+ ku(:,:,110)./9; figure(1); plot(yuyinku10);滤波程序function m = melfb(p, n, fs)f0 = 700 / fs;fn2 = floor(n/2);lr = log(1 + 0.5/f0) / (p+1);% convert to fft bin numbers with 0 for DC termbl = n * (f0 * (exp(0 1 p p+1 * lr) - 1);%直接转换为FFT的数字模型b1 = floor(bl(1) + 1;b2 = ceil(bl(2);b3 = floor(bl(3);b4 = min(fn2, ceil(bl(4) - 1;pf = log(1 + (b1:b4)/n/f0) / lr;fp = floor(pf);pm = pf - fp; r = fp(b2:b4) 1+fp(1:b3);c = b2:b4 1:b3 + 1;v = 2 * 1-pm(b2:b4) pm(1:b3);m = sparse(r, c, v, p, 1+fn2);录音程序clear all%x = load(C:UserslenovoDesktopMATLAByuyinku.mat);fs=11025;fprintf(Press any key to start %g seconds of recording. n,5); pause; fprintf(Recording.n); y=wavrecord(5*fs, fs,uint8);fprintf(Finished recording.n); %plot(y);wavwrite(y,1.wav);%z = y(:,1);%z=fft(y);%stem(z,.);wavplay(y);5.2、实验结果分析人员编号12345678910111213141516171819测试次数10101010101010101010101010101010101010正确数9589687796879697958错误数1521423314231413152正确率%90508090608070709060807090609070905080 由上述识别率表格可以看出,实验结果的识别率的高低的波动还是有点大。因为实验环境中存在一定的噪音,从而导致了识别率跟前面的比较有所下降。本组实验中,识别率平均达到74.74%说明该小型简易说话人识别系统在处理实验中的语音段时,其结果还是比较令人满

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论