语音信号分帧加窗matlab实现.docVIP

  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实现

语音信号的分帧加窗的matlab实现function Seg=segment(signal,W,SP,Window) if nargin3 SP=.4; end if nargin2 W=256; end if nargin4 Window=hamming(W); end Window=Window(:); %make it a column vector L=length(signal); SP=fix(W.*SP); N=fix((L-W)/SP +1); %number of segments Index=(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.m function ccc=gbfcosmfcc(x) %归一化mel滤波器组系数 bank=melbankm(24,256,16000,0,0.5,m); bank=full(bank); bank=bank/max(bank(:)); %DCT系数,12*24 for 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; end xx=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,:); end dtm=dtm/3; %合并mfcc参数和一阶差分mfcc参数 ccc=[m dtm]; %去除首尾两帧,因为这两帧的一阶差分参数为0 ccc=ccc(3:size(m,1)-2,:); re

文档评论(0)

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

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

1亿VIP精品文档

相关文档