说话人识别代码 matlab 端点检测 预加重 mfcc.docVIP

说话人识别代码 matlab 端点检测 预加重 mfcc.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
说话人识别代码 matlab 端点检测 预加重 mfcc

说话人识别 SMALL_MFCC是子程序,调用生成MEL系数,供神经网络训练使用 clear; close all; Time1=cputime; CM=[]; %----------提取系数-------------------- %-----------读语音数据------------- for sound_dgital=1:2 sound=[11.wav;21.wav;31.wav]; str=double(sound); wav_name=char(str(sound_dgital,:)); [signal,fs]=wavread(wav_name); data1=signal(:,1); %???????????? data2=signal(:,2); Data=cat(1,data1,data2); %-----------端点检测------------- i=1; while data1(i+1)-data1(i)0.014 i=i+1; end j=length(data1); while data1(j-1)-data1(j)0.014 j=j-1; end %--------------------------- %-----------预加重------------- figure(sound_dgital) subplot(2,1,1) plot(data1) title(加重前信号) %加重系数 a=0.98; for n=2:length(data1) data1(n-1)=data1(n)-a*data1(n-1); end figure(sound_dgital) subplot(2,1,2) plot(data1) title(加重后信号) %------------------------------ %-----------fourier变换定义------------- N=256;shift=80;nfft=256; numoverlap=N-shift; t1=i/8000;t2=j/8000; lent=length(data1); %------------------------------ %-----------取成一维语音数据------------- dd=1; for d=i:1:j data(dd)=data1(d); dd=dd+1; end %------------------------------ %-------------MFCC------------- C=small_MFCC(data,nfft,N,numoverlap,shift,fs) CM=cat(2,CM,C) %------------------------------ end %-----------神经网络部分------------- [N,m1]=size(CM); %神经网络初始化 n1=1; %定义输入神经元个数 M=256; %定义输出神经元个数 X=CM;%预定义输入矢量矩阵 W=rand(16,256)*255; %权值的初始化 W=round(W);%权值取整 T1=n1*m1;%学习次数 T2=200; %训练 s=round(rand(1,n1*m1)*(n1*m1-1));%产生一个随机矩阵,以便随机选取样本图像矢量,范围(0,4095) s=s+1;%s范围变为(1,4096) %权值调整 for(t=1:T2) %开始训练,从1到T2 t; for(T=1:T1) %开始取输入图像矢量 NE=-132+362*exp(-T/T1); %定义邻域大小函数 NE=round(NE); %计算邻域半径 if(rem(NE,2)==0) R=NE/2; else R=(NE-1)/2; end %找出最小欧氏距离 for(j=1:256) P(:,j)=(X(:,s(1,T))-W(:,j)).^2;%计算欧氏距离 Q(1,j)=sum(P(:,j)); %欧氏距离和赋予新的矩阵 [minQ,I]=min(Q);%找出最小数的下标,等同于输出矢量的下标 end r0=I; %最小距离下标赋予r0 %在邻域内调整权值 stu=0.5*exp(-t/T2); %定义学习函数 if(I=R) %邻域节点下标是负数时,即超出矩阵维数,邻域从1开始 for(j=1:I+R) r=j; stu_f=exp(-(r-r0).^2/(230*exp(-t/T2)));%定义学习加权邻域函数 W(:,j)=W(:,j)+stu*stu_f*(X(:,s(1,T))-W(:,j)); end elseif(I=256-R) %邻域节点下标大于

文档评论(0)

almm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档