《2023年基于说话人声音识别的技术研究语音识别技术.docx》由会员分享,可在线阅读,更多相关《2023年基于说话人声音识别的技术研究语音识别技术.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2023年基于说话人声音识别的技术研究语音识别技术 基于声音的说话人身份信息识别技术探讨 通信1203班 成员:艾洲、刘安邦、汪中日 余文正、王玉贵、宁文雅 2023-12-28 项目背景 伴随着全球化、网络化、信息化、数字化时代的到来,我们对高牢靠性的身份验证技术与身份识别技术的需求也日益增长。 在生物学和信息科学高度发展的今日,依据人体自身的生 理特征(指纹、虹膜)和行为特征(声音)来识别身份的生物技术认证作为一种便捷、先进的信息平安技术已经在现实生活中得到广泛的应用,它是集光学、传感技术、红外扫描和计算机技术于一身的第三代身份验证技术,能满意现代社会对于身份鉴别的精确性、平安性与好用性的
2、更高要求。 而语音是人的自然属性之一,由于说话人发声器官的生理 差异以及后天形成的行为差异,每个人的语音都带有剧烈的个人色调,这使得通过分析语音信号来识别说话人成为可能。 设计总体框架 1.语音库的建立 2.声音样本采集 2.1 特征参数提取 2.2 识别模型建立 3.语音识别测试 梅尔倒谱系数(MFCC)简述 在话者识别方面,最常用到的语音特征就是梅尔倒谱系数(MFCC)。因为,依据人耳听觉机理的探讨发觉,人耳对不同频率的声波有不同的听觉敏感度,得出从200Hz到5000Hz的语音信号对语音的清楚度影响最大。 所以,人们从低频到高频这一段频带内按临界带宽的大小由密到疏支配一组带通滤波器,对输
3、入信号进行滤波。将每个带通滤波器输出的信号能量作为信号的基本特征,对此特征经过进一步处理后就可以作为语音的输入特征。由于这种特征不依靠于信号的性质,对输入信号不做任何的假设和限制,又利用了听觉模型的探讨成果。因此,这种参数比基于声道模型的“线性预料系数LPC”相比更好,更符合人耳的听觉特性,而且当信噪比降低时仍旧具有较好的识别性能。 MFCC倒谱特征提取流图 1. 预加重 预加重处理其实是将语音信号通过一个高通滤波器:式中的值介于0.9-1.0之间,我们通常取0.97。预加重的目的是提上升频部分,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求频谱。同时,也是为了消退发生
4、过程中声带和嘴唇的效应,来补偿语音信号受到发音系统所抑制的高频部分,也为了突出高频的共振峰 2.分帧 先将N个采样点集合成一个观测单位,称为帧。通常状况下N 的值为256或512,涵盖的时间约为2030ms左右。为了避开相邻两帧的改变过大,因此会让两相邻帧之间有一段重叠区域,此重叠区域包含了M个取样点,通常M的值约为N的1/2或1/3。 通常语音识别所采纳语音信号的采样频率为8KHz或16KHz,以8KHz来说,若帧长度为256个采样点,则对应的时间长度是256/80001000=32ms 3. 加窗 将每一帧乘以汉明窗,以增加帧左端和右端的连续性。假设分帧后的信号为S(n), n=0,1,N
5、-1, N为帧的大小,那么乘上汉明窗后 W(n)形式如下: 不同的a值会产生不同的汉明窗,一般状况下a取0.46。 4.快速傅里叶变换 由于信号在时域上的变换通常很难看出信号的特性,所以通常将它转换为频域上的能量分布来视察,不同的能量分布,就能代表不同语音的特性。所以在乘上汉明窗后,每帧还必需再经过快速傅里叶变换以得到在频谱上的能量分布。对分帧加窗后的各帧信号进行快速傅里叶变换得到各帧的频谱。并对语音信号的频谱取模平方得到语音信号的功率谱。设语音信号的DFT为: 式中x(n)为输入的语音信号,N 表示傅里叶变换的点数。式中x(n)为输入的语音信号,N表示傅里叶变换的点数。 5. Mel滤波器组
6、 将能量谱通过一组Mel尺度的三角形滤波器组,定义一个有M个滤波器的滤波器组(滤波器的个数和临界带的个数相近),采纳的滤波器为三角滤波器,中心频率为f(m),m=1,2,.,M。M通常取22-26。各f(m)之间的间隔随着m值的减小而缩小,随着m值的增大而增宽,如图所示: 三角带通滤波器有两个主要目的: 对频谱进行平滑化,并消退谐波的作用,突显原先语音的共振峰(因此一段语音的音调或音高,是不会呈现在MFCC 参数内,换句话说,以MFCC 为特征的语音辨识系统,并不会受到输入语音的音调不同而有所影响)此外,还可以降低运算量。 预加重代码: len=length(x1); heigt=0.98;
7、for i=2:len x1(i)=x1(i)-heigt*x1(i-1); end for i=2:len x2(i)=x2(i)-heigt*x2(i-1);end 三角滤波器 if (f(m) fh=20000;endF(m,k)=(x-f(m)/(f(m+1)-f(m); melf=2595*log(1+fh/700);m=N/2;else if (f(m+1) M=24;for k=1:12F(m,k)=(f(m+2)-x)/(f(m+2)- f(m+1);i=0:25;n=0:23; elsef=700*(exp(melf/2595*i/(M+1)-1); dctcoef(k,:)
8、=cos(2*n+1)*k*pi/(2*24)F(m,k)=0;N=256;endfor m=1:24endendfor k=1:256count=floor(length(x1)/m);x=fh*k/N; 特征值欧氏距离 function d = disteu(x, y)copies = zeros(1,P);d(:,p) = sum(x -y(:, p+copies) .2, 1);M, N = size(x); %音频x赋值给【M,Nfor n = 1:N 】end%成对欧氏距离的两个矩阵的列之间d(n,:) = sum(x(:, n+copies) -的距离M2, P = size(y
9、); %音频y赋值给【M2,Py) .2, 1); 】endendif (M = M2)d = d.0.5;else error(不匹配!) %两个音频时间长copies = zeros(1,N);度不相等for p = 1:Pend d = zeros(N, P); if (N 提下 语音匹配 function finalmsg = test(testdir, n, msg = sprintf(finalmsg = 第此位说话%d位说 话者与模板语音信号匹配code)者符合要求!; %界面显示语句,可随意设定,符合要求!n, k); for k = 1:n % read disp(msg);
10、 test sound file of each speakerd = disteu(v, code1); %计end %此算得到模板和要推断的声音之间的“距离”人不匹配file = sprintf(%ss%d.wav, testdir, k);dist = sum(min(d,2) / if dist > distmin size(d,1); %变换得到一个距离的量s, fs = wavread(file); msg = sprintf(第%d位说话者与msgc = sprintf(与模板语音信号的模板语音信号不匹配v = mfcc(s, fs); % ,不符合要求!n, k); 得到差值为:%10f , dist); 测试人语音的mel倒谱系数finalmsg = 此位说话者不符合disp(msgc); %此人匹配distmin = 4; %要求!; %界面显示语句,可随意设定阈值设置处 if dist 1.语音库的建立: 2.声音样本采样: 3. 语音识别(识别胜利) 4.语音识别(识别不胜利) THANKS The End