- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
语音信号分帧加窗matlab实现
语音信号的分帧加窗的matlab实现function Seg=segment(signal,W,SP,Window)if nargin3 SP=.4;endif nargin2 W=256;endif nargin4 Window=hamming(W);endWindow=Window(:); %make it a column vectorL=length(signal);SP=fix(W.*SP);N=fix((L-W)/SP +1); %number of segmentsIndex=(repmat(1:W,N,1)+repmat((0:(N-1))*SP,1,W));hw=repmat(Window,1,N);Seg=signal(Index).*hw;语音信号处理预加重、加窗分帧matlab程序%获取语音信号[filename,pathname]=uigetfile(*.wav,choose a audio file:);[wavin,fs,nbits]=wavread([pathname filename]);wav_l=length(wavin); %采样点数,length()返回值是标量frame_l=0.04*fs; %根据fs选择帧长, step_l=floor(0.5*frame_l); %设置帧移 num_frame=floor((wav_l-frame_l)/step_l)+1; %确定帧数 win_ham=hamming(frame_l); %在做fft之前,为移除直流分量和加重高频分量,采用汉明窗,对信号进行加权 %加窗处理用来消除分帧时带来的截断效应 %加窗,分帧(矩阵每一行为一帧)for i=1:num_frame n1=(i-1)*step_l+1; n2=(i-1)*step_l+frame_l; zy(i,:)=(win_ham).*(yt(n1:n2)); %存储每一帧噪音(行向量) %win_ham、yt是列向量,需转置 yy(i,:)=(win_ham).*(wavin(n1:n2)); %存储每一帧纯净语音end关于matlab中的语音识别在用DFT求得倒普之后。为什么需要加上倒普提升窗口呢?? 谢谢!窗函数是这样的:w = 1+6*sin(pi*[1:12]./12); 为什么要这样计算呢?? 以下是具体的程序~~%%%%%文件mfcc.mfunction ccc=gbfcosmfcc(x)%归一化mel滤波器组系数bank=melbankm(24,256,16000,0,0.5,m);bank=full(bank);bank=bank/max(bank(:));%DCT系数,12*24for k=1:12 n=0:23; dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));end%归一化倒谱提升窗口w=1+6*sin(pi*[1:12]./12);w=w/max(w);%预加重滤波器xx=double(x);xx=filter([1 -1],1,xx);xx=x; %zhang add%语音信号分帧%xx=enframe(xx,256,80);xppl=length(xx);j=1;for i=65:80:xppl-256, xx1(j,:)=xx(i:i+256-1); j=j+1;endxx=xx1;%计算每帧的MFCC参数for i=1:size(xx,1) y=xx(i,:); s=y.*hamming(256); t=abs(fft(s)); t=t.^2; t=t+2*realmin; log(bank*t(1:129)) c1=dctcoef*log(bank*t(1:129)) c11=Disfrcthe(1,24)*log(bank*t(1:129)) c2=c1.*w; m(i,:)=c2;end%差分参数dtm=zeros(size(m));for i=3:size(m,1)-2 dtm(i,:)=-2*m(i-2,:)-m(i-1,:)+m(i+1,:)+2*m(i+2,:);enddtm=dtm/3;%合并mfcc参数和一阶差分mfcc参数ccc=[m dtm];%去除首尾两帧,因为这两帧的一阶差分参数为0ccc=ccc(3:size(m,1)-2,:);re
文档评论(0)