width=ws-wc;
wn=(ws+wc)/2; n=ceil(12.8*pi/width);
h=fir1(n,wn/pi, 'high',kaiser(n+2,beta)); [h1,w]=freqz(h);
ys=fftfilt(h,x);%将信号送入高通滤波器滤波 subplot(4,2,5);%在四行两列的第五个窗口显示图形 plot(ys);%信号的时域波形 xlabel('频率w/pi');
ylabel('幅值/A');%显示标表示的意义 title('高通滤波后信号的时域波形');%标题 ylabel('幅值/A');%显示纵坐标的表示意义 grid;%网格
fftwave=fft(ys); %将滤波后的语音信号进行快速傅立叶变换 subplot(4,2,7);%在四行两列的第七个窗口显示图形 plot(f,abs(fftwave(n1)));%绘制模值 axis([0 1 0 50]); xlabel('频率w/pi');
ylabel('幅值/A');%显示标表示的意义
title('高通滤波器滤波后信号的频谱图');%标题 grid;%加网格
wavplay(ys,8000); %播放滤波后信号
16
3.3带通滤波器 fs=8000; beta=10.056;
wc1=2*pi*1000/fs;wc2=2*pi*3200/fs; ws1=2*pi*1200/fs;ws2=2*pi*3000/fs; width=ws1-wc1;
wn1=(ws1+wc1)/2; wn2=(ws2+wc2)/2; wn=[wn1 wn2];
n=ceil(12.8/width*pi);
h=fir1(n,wn/pi,'band',kaiser(n+1,beta)); [h1,w]=freqz(h);
ys1= fftfilt(h,x); %将信号送入高通滤波器滤波 figure(4);
subplot(4,2,6);%在四行两列的第六个窗口显示图形 plot(ys1);%绘制后信号的时域的图形 title('带通滤波后信号的时域波形');%加标题 xlabel('频率w/pi');
ylabel('幅值/A');%显示纵坐标表示的意义 grid;%网格
fftwave=fft(ys1);%对滤波后的信号进行快速傅立叶变换 subplot(4,2,8);%在四行两列的第八个窗口显示图形
17
plot(f, abs(fftwave(n1)));%绘制模值 axis([0 1 0 50]);
xlabel('频率w/pi');ylabel('幅值/A');%显示标表示的意义 title('带通滤波器滤波后信号的频谱图');%加标题 grid;%网格
wavplay(ys1,8000); %播放滤波后信号 图形如下:
原始信号的时域波形幅值/A0-1012x 10原始信号的频谱图34幅值/A1低通滤波后信号的时域波形0.50-0.5012频率w/pi3400.51频率w/pi高通滤波后信号的时域波形幅值/A0幅值/A0幅值/Ax 10高通滤波器滤波后信号的频谱图5012频率w/pi34幅值/A0.20-0.2幅值/A2001000x 10低通滤波器滤波后信号的频谱图200100000.51频率w/pi带通滤波后信号的时域波形0.50-0.501234频率w/pix 10带通滤波器滤波后信号的频谱图50幅值 00.5频率w/pi1000.5频率w/pi1
分析:三个滤波器滤波后的声音与原来的声音都发生了变化。其中低
18
通的滤波后与原来声音没有很大的变化,其它两个都又明显的变化
4.语音信号的回放
sound(xlow,Fs,bits); %在Matlab中,函数sound可以对声音进行回放,其调用格式:
sound(xhigh, Fs,bits); %sound (x, Fs, bits); sound(xdaitong, Fs,bits);
5.男女语音信号的频谱分析
5.1 录制一段异性的声音进行频谱分析
Fs=8000; %抽样频率 time=3; %录音时间 fprintf('按Enter键录音%ds',time); %文字提示 pause; %暂停命令 fprintf('录音中......');
x=wavrecord(time*Fs,Fs,'double'); %录制语音信号 fprintf('录音结束'); %文字提示 fprintf('按Enter键回放录音'); pause; %暂停命令 wavplay(x,Fs); %按任意键播放语音信号
wavwrite(x,Fs,'C:\\Users\\acer\\Desktop\\数字信号\\sound2.wav'); %存储语音信号
19
5.2 分析男女声音的频谱
x=wavread(' C:\\Users\\acer\\Desktop\\数字信号\\sound2.wav ');%播放原始信号,解决落后半拍
wavplay(x,fs); %播放原始信号 N=length(x);%返回采样点数 df=fs/N;%采样间隔 n1=1:N/2;
f=[(n1-1)*(2*pi/N)]/pi;%频带宽度 figure(1); subplot(2,2,1);
plot(x);%录制信号的时域波形
title('原始女生信号的时域波形');%加标题 ylabel('幅值/A');%显示纵坐标的表示意义 grid;%加网格
y0=fft(x);%快速傅立叶变换 subplot(2,2,2);
plot(f,abs(y0(n1)));%原始信号的频谱图 title('原始女生信号的频谱图');%加标题 xlabel('频率w/pi');%显示横坐标表示的意义 ylabel('幅值 ');%显示纵坐标表示的意义 grid;%加网格
20