语音信号的分帧加窗的matlab实现.doc_第1页
语音信号的分帧加窗的matlab实现.doc_第2页
语音信号的分帧加窗的matlab实现.doc_第3页
语音信号的分帧加窗的matlab实现.doc_第4页
全文预览已结束

下载本文档

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

文档简介

精品文档语音信号的分帧加窗的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,:);return利用MATLAB录制并保存声音文件R = audiorecorder( 44100, 16 ,2 ) ;%创建一个保存音频信息的对象,它包含采样率,时间和录制的音频信息等等record(R); %开始录制,此时对着麦克风说话即可。pause(R); %暂停录制。play(R)%播放录制的声音。myspeech = getaudiodata(R);%得到以n*2列数字矩阵存储的刚录制的音频信号。save sp myspeechplot(myspeech)%画出波形声音信号时域分析程序wavwrite(myspeech,44100,16,myspeech);%myspeech表示要存入的波形矩阵,44100表采样率,16 为以16bits存储,myspeech为存储的文件名。waveFile=myspeech;y, fs, nbits=wavread(myspeechfile);a=0.95;y2 = filter(1, -a, 1, y);time=(1:length(y)/fs;wavwrite(y2, fs, nbits, whatFood_preEmphasis.wav); subplot(2,1,1);plot(time, y);title(Original wave: s(n);subplot(2,1,2);plot(time, y2);title(sprintf(After pre-emphasis: s_2(n)=s(n)-a*s(n-1), a=%f, a);subplot(2,1,1);set(gca, unit, pixel);axisPos=get(gca, position);uicontrol(string, Play, position, axisPos(1:2), 60, 20, callback, sound(y, fs);subplot(2,1,2)

温馨提示

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

评论

0/150

提交评论