编辑: liubingb 2018-04-25
信息系统课设程序说明 global x;

%全局变量,用于存放语音数据和浊音帧 global y;

% 全局变量,用于存放清音帧 "录音"按钮的回调函数 global x;

%全局变量声明 Fs=8000;

%采样率 8KHz x=wavrecord(5*Fs,Fs,'uint8');

%录音

5 秒x=x/max(x);

%归一化 plot(handles.

axes1,x,'k');

%绘制语音波形 "短时能量分析"按钮的回调函数 global x;

global y;

 nx=length(x);

%x   nwin=200;

% 窗口长度 ninc=100;

%帧间重叠

100 点,以下是分帧 nf = fix((nx-nwin+ninc)/ninc);

frame=zeros(nf,nwin);

indf= ninc*(0:(nf-1)).';

inds = (1:nwin);

frame(:) = x(indf(:,ones(1,nwin))+inds(ones(nf,1),:));

w =ones(nwin)';

handles.frame= frame.* w(ones(nf,1),:);

%分帧结果 handles.energy=sum(handles.frame.*handles.frame,2);

%短时能量 plot(handles.axes2,handles.energy,'k');

%绘制短时能量波形 x=handles.frame(3200,:);

%浊音帧 y=handles.frame(1000,:);

%清音帧 "浊音帧"按钮回调函数 global x;

plot(handles.axes3,x,'k');

"清音帧"按钮回调函数 global y;

plot(handles.axes3,y,'k');

"浊音自相关"按钮回调函数 global x;

autocorr=xcorr(x);

%自相关 plot(handles.axes3,-199:199,autocorr,'k');

%自相关波形绘制,0 在中间 "清音自相关"按钮回调函数 global y;

autocorr=xcorr(y);

%自相关 plot(handles.axes3,-199:199,autocorr,'k');

%自相关波形绘制,0 在中间 "浊音频谱"按钮回调函数 global x;

fre=fft(x,2000);

%200 点FFT fre=fftshift(fre);

%将0平移到中间 plot(handles.axes3,(-1000:999)*8000/2000,fre,'k');

%绘制频谱,横坐标为 Hz "清音频谱"按钮回调函数 global y;

fre=fft(y,2000);

%200 点FFT fre=fftshift(fre);

%将0平移到中间 plot(handles.axes3,(-1000:999)*8000/2000,fre,'k');

%绘制频谱,横坐标为 Hz "低通滤波"按钮回调函数 global x;

[wc,n]=buttord(2*pi*900/8000,2*pi*1200/8000,3,40);

%巴特沃斯低通滤波器的设计 [b,a]=butter(wc,n);

filtering=filter(b,a,x);

%低通滤波 plot(handles.axes3,filtering,'k');

%绘制低通滤波后的波形 "复倒谱"按钮的回调函数 global x;

xn=cceps(x);

xn=fftshift(xn);

%计算复倒谱,并将

0 移到中心位置 plot(handles.axes3,-100:99,xn,'k');

%显示语音的复倒谱 "倒谱"按钮回调函数 global x;

xn=rceps(x);

xn=fftshift(xn);

%计算倒谱,并将

0 移到中心位置 plot(handles.axes3,-100:99,xn,'k');

%显示语音的倒谱 "同态滤波"按钮回调函数 global x;

xn=cceps(x);

%对语音进行复倒谱分析 hn1=[xn(1:40) zeros(1,120) xn(161:200)];

%以N为40 对复倒谱进行频率不变线性低通滤波 xn1=[zeros(1,40) xn(41:160) zeros(1,40)];

%以N为40 对复倒谱进行频率不变线性高通滤波 Hk1=fft(hn1);

Xk1=fft(xn1);

%进行傅里叶变换 Hk2=exp(Hk1);

Xk2=exp(Xk1);

%取指数运算,即计算复倒谱时取对数的逆 Hk2=fftshift(Hk2);

Xk2=fftshift(Xk2);

plot(handles.axes3,-100:99,abs(Xk2),'k');

plot(handles.axes2,-100:99,abs(Hk2),'k');

以上是课程设计的基本程序,可在此基础上完善、美化界面,最好能让计算机自己算出 基音频率和共振峰频率.

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题