编辑: 学冬欧巴么么哒 2014-12-30

);

xlabel('

t(s)'

);

ylabel('

y'

);

Y=fft(y);

Ts=t(2)-t(1);

ws=1/Ts;

wn=ws/2;

w=linspace(0,wn,length(t)/2);

if mod(length(t),2)==0 tnum=length(t)/2;

else tnum=(length(t)-1)/2;

end Y=abs(Y(1:1:tnum));

subplot(2,2,2);

plot(w,Y);

axis([0

2000 0 500]);

grid;

title('

语音信号y的频谱'

);

xlabel('

f(Hz)'

);

ylabel('

Y'

);

3.3对语音信号进行变声处理 3.3.1对语音信号进行低通、高通滤波 低通取通带截止频谱为600,阻带截止频谱为700,(高通通带截止频谱为600,阻带截止频谱为700)采样频谱为8000,对原始语音信号加窗(汉明窗)实现低通滤波. 程序如下: fp=600;

%取通带截止频谱为600 fs=700;

阻带截止频谱为700 Fs=8000;

wp=2*pi*fp/Fs;

ws=2*pi*fs/Fs;

wdelta=ws-wp;

N=ceil(6.6*pi/wdelta);

Wn=(wp+ws)/2;

b=fir1(N,Wn/pi,hamming(N+1));

%加窗滤波 [H,W]=freqz(b,1,512);

t=0:1/Fs:0.2;

x=wavread('

v017'

);

figure plot(x) y=3*filter(b,1,x);

%乘以系数3来增大幅值音量 figure plot(y);

sound(y) wavwrite(y,Fs,'

v017_low_pass'

);

产生WAV语音文件,然后保存 grid on 3.3.2频域右移 原始语音信号的频域分析,对频谱进行整体右移,实现高音播放 程序如下: y=wavread('

v017'

);

% save Y1 %luyin Fs=8192;

%wavplay(Y1,Fs);

pinyi=fft(y);

size(pinyi);

f=8192*[0:22000]/22001;

figure(1) plot(f,2*abs(pinyi));

axis([1,10000,0,250]);

f=8192*[0:24000]/24001;

hang=pinyi'

;

N=1000;

pujialing=[zeros(1,N),hang(1:22001),zeros(1,N)];

pu=pujialing'

;

figure(2) plot(f,abs(pu));

axis([1,10000,0,250]);

Y1=3*real(ifft(pu));

wavwrite(Y1,Fs,'

v017_pinyi_right'

);

wavplay(Y1,Fs);

3.3.3频谱左移 y=wavread('

v017'

);

% save Y1 %luyin Fs=8192;

%wavplay(Y1,Fs);

pinyi=fft(y);

size(pinyi);

f=8192*[0:22000]/22001;

figure(1) plot(f,abs(pinyi));

grid on axis([1,10000,0,250]);

%f=8192*[0:22000]/22001;

hang=pinyi'

;

N=1000;

pujialing=[hang(N:22001),zeros(1,(N-1))];

pu=pujialing'

;

figure(2) plot(f,2*abs(pu));

grid on axis([1,10000,0,250]);

Y1=3*real(ifft(pu));

wavwrite(Y1,Fs,'

v017_pinyi_left'

);

wavplay(Y1,Fs);

3.3.4 快放、慢放播放 实现快放、慢放根本原理就是改变其播放频率. 程序如下: Fs=16384;

[Y,w,t]=voice_spectrum(y,Fs);

sound(y,Fs);

axes(handles.axes1);

cla;

plot(t,y);

grid;

title('

语音信号y,采样频率=16384'

);

xlabel('

t(s)'

);

ylabel('

y'

);

axes(handles.axes2);

cla;

plot(w,Y);

axis([0

2800 0 500]);

grid;

title('

语音信号y的频谱,采样频率=16384'

);

xlabel('

f (Hz)'

);

ylabel('

Y'

);

3.3.5 回音播放 回音播放就是在原始信号的基础上加上一点延迟时间. 程序如下: y=wavread('

v017'

);

%load handel;

delay=900;

tend=length(y)/8192;

t=linspace(0,tend,length(y));

yd=[zeros(1,delay) y(1:(length(y)-delay))'

];

yecho=y+0.4*yd'

;

sound(yecho);

figure(2);

subplot(3,1,1);

plot(t,y);

grid;

title('

原始语音信号y'

);

subplot(3,1,2);

plot(t,yd);

grid;

title('

延迟时间yd'

);

subplot(3,1,3);

plot(t,yecho);

grid;

title('

有回音效果的语音信号yecho'

) 3.4 图形用户界面设计 在MATLAB主窗口中,选择File菜单中的New菜单项,再选择其中的GUI命令,就会显示图形用户界面的设计模板.MATLAB为GUI设计一共准备了4种模板,分别是Blank GUI(默认) 、GUI with Uicontrols(带控件对象的GUI模板) 、GUI with Axes and Menu(带坐标轴与菜单的GUI模板)与Modal Question Dialog(带模式问话对话框的GUI模板). 设计语音信号处理系统的用户图形操作界面(GUI)SoundProcess,其中菜单主要包括File、Process和Output三大主要部分,其中File菜单包括输入(Input)、保存(Save)和退出(Quit)等功能;

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