matlab的语音信号频谱分析.docx
《matlab的语音信号频谱分析.docx》由会员分享,可在线阅读,更多相关《matlab的语音信号频谱分析.docx(16页珍藏版)》请在冰豆网上搜索。
matlab的语音信号频谱分析
实验一
[y,fs,bit]=wavread('Ido')%读取音乐片段,fs是采样率
size(y)%求矩阵的行数和列数
y1=y(:
1);%对信号进展分列处理
n1=length(y1);%取y的长度
t1=(0:
n1-1)/fs;%设置波形图横坐标
figure
subplot(2,1,1);
plot(t1,y1);%画出时域波形图
ylabel('幅值');
xlabel('时间〔s〕');
title('信号波形');
subplot(2,1,2);
Y1=fft(y1);
w1=2/n1*(0:
n1-1);%设置角频率
plot(w1,abs(Y1));%画频谱图
title('信号频谱');
xlabel('数字角频率');
ylabel('幅度');
gridon;
sound(y,fs);
实验二
[y,fs,bit]=wavread('Ido')
y1=y(:
1);
n1=length(y1);
D=2;%设置抽样间隔
y2=y1(1:
D:
n1);%减抽样
n2=length(y2);%减抽样后信号长度
t2=(0:
n2-1)/fs;%设置横坐标
figure
subplot(2,2,1);
plot(t2,y2);%绘制减抽样信号波形图
ylabel('幅度');
xlabel('时间〔s〕');
title('2:
1减抽样信号波形');
Y2=fft(y2);%对y2进展n2点fft谱分析
w2=2/n2*[0:
n2-1];
subplot(2,2,3);
plot(w2,abs(Y2));%绘制减抽样信号频谱图
title('2:
1减抽样信号频谱');
xlabel('数字角频率w');
ylabel('幅度');
gridon;
sound(y2,fs/D);
D=5;%设置抽样间隔
y3=y1(1:
D:
n1);%减抽样
n3=length(y3);%减抽样后信号长度
t3=(0:
n3-1)/fs;%设置横坐标
subplot(2,2,2);
plot(t3,y3);%绘制减抽样信号波形图
ylabel('幅度');
xlabel('时间〔s〕');
title('5:
1减抽样信号波形');
Y3=fft(y3);%对y2进展n2点fft谱分析
w3=2/n3*[0:
n3-1];
subplot(2,2,4);
plot(w3,abs(Y3));%绘制减抽样信号频谱图
title('5:
1减抽样信号频谱');
xlabel('数字角频率w');
ylabel('幅度');
gridon;
sound(y3,fs/D)
实验三
[y,fs,bit]=wavread('Ido')
y1=y(:
1);
n1=length(y1);
n3=0:
n1-1;
b1=cos(0.75*pi*n3);%设置调制信号
b2=cos(0.5*pi*n3);
c1=b1'.*y1;%对原信号进展调制
c2=b2'.*y1;
lc1=length(c1);
t=(0:
lc1-1)/fs;
figure%用载波对信号进展调制,并对其做fft变换
subplot(2,2,1)%获取频谱,从图中可以观察到,调制后的
plot(t,c1);%信号频谱发生搬移
xlabel('时间(s)');
ylabel('幅度');
title('调制后信号');
subplot(2,2,2)%获取频谱,从图中可以观察到,调制后的
plot(t,c2);%信号频谱发生搬移
xlabel('时间(s)');
ylabel('幅度');
title('调制后信号');
w1=2/lc1*[0:
lc1-1];%设置角频率W
C1=fft(c1);
C2=fft(c2);
subplot(2,2,3)
plot(w1,abs(C1));
xlabel('数字角频率w');
ylabel('幅度');
title('调制后信号的频谱(高频率调制)');
gridon;
subplot(2,2,4)
plot(w1,abs(C2));
xlabel('数字角频率w');
ylabel('幅度');
title('调制后信号的频谱(低频率调制)');
gridon;
sound(c1,fs);
实验四
clearall;cla;closeall
[a,fs,bit]=wavread('Ido');
y1=a(:
1);%去单列数据进展分析
f1=fft(y1);
n=length(f1);
tn=(0:
n-1)/fs;
w=2/n*[0:
n-1];
%sound(y1,fs);
figure
(1)
subplot(2,3,1);plot(tn,y1);
gridon;
title('音频');
xlabel('时间');
ylabel('幅度');
subplot(2,3,4);plot(w,abs(f1));
gridon;
title('频谱');
xlabel('频率/pi');
ylabel('幅度');
t=[0:
n-1];
y2=cos(pi*1/2*t);%载波函数
y3=y1.*y2';%信号调制
ty3=(0:
length(y3)-1)/fs;
subplot(2,3,2);plot(ty3,y3);%绘制调制后信号波形图
gridon;
title('AM调制音频信号');
xlabel('时间');
ylabel('幅度');
f3=fft(y3);
n2=length(f3);
w2=2/n2*[0:
n2-1];
subplot(2,3,5);plot(w2,abs(f3));%绘制调制后信号频谱图
gridon;
title('AM调制频谱');
xlabel('频率/pi');
ylabel('幅度');
%解调后信号
n3=length(y3)
t2=0:
n3-1;
y4=cos(pi*1/2*t2)
y5=y3.*y4';%解调后的信号函数
subplot(2,3,3);plot(t2,y5);
gridon;
xlabel('时间');
ylabel('幅度');
title('AM解调音频信号');
f5=fft(y5);
w3=2/n3*[0:
n3-1];
subplot(2,3,6);plot(w3,abs(f5));%绘制解调后信号频谱图
gridon;
title('AM解调频谱');
xlabel('频率/pi');
ylabel('幅度');
%设计巴特沃斯滤波器进展滤波去噪
[N1,wc1]=buttord(0.05,0.17,1,15);%确定低通滤波器的阶数和截止频率;
[b,a]=butter(N1,wc1);%确定低通滤波器分子分母系数
[H,W]=freqz(b,a);
figure
(2)
plot(W,abs(H));%低通滤波器波形
xlabel('w');
ylabel('H');
title('低通滤波器波形');
m=filter(b,a,y5);
wavplay(m,fs);
lm=length(m);%滤波后信号长度
tm=(0:
lm-1)/fs;%设置横坐标
wm=2/lm*[0:
lm-1];
M=fft(m);
figure(3)
subplot(2,1,1);plot(tm,m);
gridon;
title('滤波后波形');
xlabel('t');
ylabel('幅度');
subplot(2,1,2);plot(wm,abs(M));
title('滤波后波形频谱图');
xlabel('w/pi');
ylabel('幅度');
%矩形窗和布莱克曼窗
N=33;wc=0.3*pi;%基于经历的指标,其中N为理想低通滤波器阶数,wc为截止频率
hd=ideal(N,wc);%调用理想低通滤波器函数
w1=boxcar(N);%产生各种窗函数
w2=blackman(N);
h1=hd.*w1';%加窗设计各种FIR滤波器
h2=hd.*w2';
th1=(0:
32)/fs;
th2=(0:
32)/fs;
M=21184;
fh1=fft(h1,M);%矩形窗频谱函数
w=2/M*[0:
M-1];
fh2=fft(h2,M);%布莱克曼窗频谱函数
figure(4)
subplot(2,2,1);plot(th1,h1)
title('矩形窗时域');
subplot(2,2,2);plot(w,abs(fh1));
title('矩形窗频域');
subplot(2,2,3);plot(th2,h2);
title('布莱克曼窗时域');
subplot(2,2,4);plot(w,abs(fh2));
title('布莱克曼窗频域')
%解调后信号
n3=length(y3)
t2=0:
n3-1;
y4=cos(pi*1/2*t2)
y5=y3.*y4';%调制后的信号函数
figure
%滤波处理
y6=conv(h1,y5);%用矩形窗对调制后信号进展滤波
f6=fft(y6);
n4=length(f6);
ty6=(0:
n4-1)/fs;
w3=2/n4*[0:
n4-1];
%sound(y6,fs);
figure(5)
subplot(2,2,1);plot(ty6,y6);
title('矩形窗滤波后音频')
subplot(2,2,2);plot(w3,abs(f6));
title('矩形窗滤波后频谱')
y7=conv(h2,y5);%用布莱克曼窗进展滤波
f7=fft(y7);
n5=length(f7);
ty7=(0:
n5-1)/fs;
w4=2/n5*[0:
n5-1];
%sound(y7,fs);
subplot(2,2,3);plot(ty7,y7);
title('布莱克曼窗滤波后音频')
subplot(2,2,4);plot(w4,abs(f7));
title('布莱克曼窗滤波后频谱')
实验五
clc;clear;close;
[y,fs,bit]=wavread('Ido');
y0=y(:
1);
l=length(y0);
%加三余弦混合噪声
t0=(0:
l-1)/fs;
d0=[0.05*cos(2*pi*3000*t0)]';
t1=(0:
l-1)/fs;
d1=[0.05*cos(2*pi*5000*t1)]';
t2=(0:
l-1)/fs;
d2=[0.05*cos(2*pi*8000*t2)]';
noise=d2+d1+d0;
y1=y0+noise;
%sound(y1,fs);
a=length(noise);%绘制三余弦噪声音频图
wa=2/a*[0:
a-1];
Noise=fft(noise);
figure
(1)
subplot(2,3,4);
plot(noise(1:
150));
xlabel('时间〔s〕')
ylabel('幅值')
title('三余弦信号音谱')
subplot(2,3,1);%绘制三余弦噪声频谱图
plot(wa,abs(Noise));
gridon;
xlabel('W')
title('噪声频谱')
w0=2/l*[0:
l-1];%绘制加噪信号音频
Y1=fft(y1);
subplot(2,3,5)
plot(w0,abs(Y1));
gridon;
xlabel('W')
title('加噪信号频谱')
ly1=length(y1);
ty1=(0:
ly1-1)/fs;
subplot(2,3,2);plot(ty1,y1);
xlabel('时间〔s〕')
ylabel('幅值')
title('加噪信号音谱')
m=rand(l,1)-0.5;
lm=length(m);
y2=m+y0;%将噪声信号与原声音信号叠加
wm=2/lm*[0:
lm-1];
M=fft(m);
figure
(2)
subplot(2,2,3);
plot(m(1:
150))
xlabel('时间〔s〕')
ylabel('幅值')
title('白噪信号音谱')
subplot(2,2,1);
plot(wm,abs(M));
gridon;
xlabel('W')
title('噪声频谱')
l=length(y2);
ty2=(0:
l-1)/fs;
w=2/l*[0:
l-1];
Y2=fft(y2);
subplot(2,2,4)
plot(w,abs(Y2));
gridon;
xlabel('W')
title('加噪信号频谱')
subplot(2,2,2);plot(ty2,y2);
xlabel('时间〔s〕')
ylabel('加噪信号幅值')
title('加噪信号音谱');
%设计滤波器进展滤波去噪
[N1,wc1]=buttord(0.04,0.17,1,30);%确定低通滤波器的阶数和截止频率;
[b,a]=butter(N1,wc1);%确定低通滤波器分子分母系数
m=filter(b,a,y1);%用滤波器滤除三余弦噪声
sound(m,fs);
lm=length(m);%滤波后信号长度
tm=(0:
lm-1)/fs;%设置横坐标
figure
(1);
subplot(2,3,3);
plot(tm,m);%绘制滤波后的波形
xlabel('t(s)')
ylabel('信号幅值')
title('去噪后信号波形');
k=fft(m);%滤波后的波形做离散傅里叶变换
w=2*[0:
length(k)-1]/length(k);
subplot(2,3,6)
plot(w,abs(k));
xlabel('w/pi')
ylabel('幅度k')
title('IIR滤波器滤波后信号频谱');
实验六.一
clearall;clc
[y,fs,bit]=wavread('Ido');
size(y)%查看读取信号的声道类型
y1=y(:
1);%对信号进展分列处理
n=length(y1);%求信号y1的的长度
t1=(0:
n-1)/fs;
f1=fft(y1);%对y1进展fft谱分析
w=2/n*[0:
n-1];%w为连续频谱的数字角频率横坐标
%sound(y,fs);%播放音乐信号
figure
(1)
subplot(2,1,1);plot(t1,y1);
title('音乐信号的波形');
xlabel('t');
ylabel('y1');
subplot(2,1,2);plot(w,abs(f1));
title('音乐信号的频谱');
xlabel('w');
ylabel('f1');
%用IIR滤波器滤波〔低〕
[n2,wc2]=buttord(0.15,0.20,1,15);%确定低通滤波器的阶数和截止频率;
[B2,A2]=butter(n2,wc2);%确定低通滤波器分子分母系数
[H,W]=freqz(B2,A2);
figure
(2)
subplot(2,3,1);
plot(W,abs(H));%低通滤波器波形
xlabel('w')
ylabel('H')
title('低通滤波器波形');
m2=filter(B2,A2,y1);%滤波
lm2=length(m2);
tm2=(0:
lm2-1)/fs;
subplot(2,3,2)
plot(tm2,m2);
xlabel('n')
ylabel('信号幅值')
title('低通滤波后波形');
k2=fft(m2);%滤波后的波形做离散傅里叶变换
l2=length(k2);
w2=2*[0:
l2-1]/l2;
subplot(2,3,3);
plot(w2,abs(k2));
xlabel('数字角频率w')
ylabel('幅度')
title('低通滤波后频谱');%解调滤波后的频谱
%用IIR滤波器滤波〔高〕
[N,WC]=buttord(0.15,0.20,1,15);%确定高通滤波器的阶数和截止频率;
[B,A]=butter(N,WC,'high');%确定高通滤波器分子分母系数
[H1,W1]=freqz(B,A);
subplot(2,3,4);
plot(W1,abs(H1));%高通滤波器波形
xlabel('w1')
ylabel('H1')
title('高通滤波器波形');
m=filter(B,A,y1);%滤波
lm=length(m);
tm=(0:
lm-1)/fs;
subplot(2,3,5);
plot(tm,m);
xlabel('n')
ylabel('信号幅值m')
title('高通滤波后波形');
k=fft(m);
l2=length(k);
w2=2*[0:
l2-1]/l2;
subplot(2,3,6);
plot(w2,abs(k));
xlabel('数字角频率w')
ylabel('幅度k')
title('IIR高通滤波后频谱');
实验六.二
clearall;clc
[a,fs1,bit1]=wavread('Ido');
[b,fs2,bit2]=wavread('风声');
size(b)%查看读取信号的声道类型
y2=b(:
1);%对信号进展分列处理
n2=length(y2);%求信号y2的的长度
t2=(0:
n2-1)/fs2;
f2=fft(y2);
w2=2/n2*[0:
n2-1];
%wavplay(y2,fs2);
size(a)%查看读取信号的声道类型
y1=a(:
1);%对信号进展分列处理
n1=length(y1);
t1=(0:
n1-1)/fs1;
f1=fft(y1);
w1=2/n1*[0:
n1-1];%w为连续频谱的数字角频率横坐标
%wavplay(y1,fs1);
Fy1=abs(f1);%音乐1的幅度
Ay1=angle(f1);%音乐1的相位
Fy2=abs(f2);%音乐2的幅度
Ay2=angle(f2);%音乐2相位
F1=Fy1.*exp(j*Ay2);%音乐1的幅度与音乐2的相位穿插组合
X1=ifft(F1);
n3=length(X1);
tx1=(0:
(n3-1))/fs1;
w3=2/n3*[0:
n3-1];
%wavplay(real(X1),fs1);
F2=Fy2.*exp(j*Ay1);%幅度相位穿插组合
X2=ifft(F2);
n4=length(X2);
tx2=(0:
(n4-1))/fs2;
w4=2/n4*[0:
n4-1]
%wavplay(real(X2),fs2);
figure
(1)
subplot(2,1,1);plot(t1,y1);%绘制信号1波形
title('音乐信号1的波形');
xlabel('t');
ylabel('y1');
subplot(2,1,2);
plot(w1,abs(f1));%绘制音乐信号1的频谱
title('%音乐信号1的频谱');
xlabel('w');
ylabel('f1');
figure
(2)
subplot(2,1,1);plot(t2,y2);
title('音乐信号2的波形');
xlabel('t');
ylabel('y2');
subplot(2,1,2);plot(w2,abs(f2));
title('音乐信号2的频谱');
xlabel('w');
ylabel('f2');
figure(3)
subplot(2,1,1);plot(tx1,X1);
title('音乐1的幅度与音乐2的相位穿插组合后的波形');
xlabel('t');
ylabel('X1');
subplot(2,1,2);plot(w3,abs(F1));
title('音乐1的幅度与音乐2的相位穿插组合后的频谱');
xlabel('w');
ylabel('F1');
figure(4)
subplot(2,1,1);plot(tx2,X2);
title('音乐2的幅度与音乐1的相位穿插组合后的波形');
xlabel('t');
ylabel('X2');
subplot(2,1,2);plot(w4,abs(F2));
title('音乐2的幅度与音乐1的相位穿插组合后的频谱');
xlabel('w');
ylabel('F2');