(matlab)声音信号的分析与处理【转载】

标签:
matlabit |
分类: 软件 |
声音信号的分析与处理
信号专区 2009-12-11
19:42:00 阅读240 评论0
处理要求:
1、
2、
3、
4、
5、
6、
班级:勘查07--1班
1、对此信号的频谱进行分析,写出其频谱特征
clc;clear;close;
[y,fs]=wavread('xinhao.wav');
sound(y,fs);
figure(1)
plot(y);
title('声音的原始信号');
m=fft(y);
figure(2)
am=abs(m);
plot(am);
title('傅里叶变换');
1、原始声音信号图像如下
http://img.bimg.126.net/photo/S_trRvQ7qJiBD2zMSU0Wgw==/2829104990920464361.jpg
2、原始信号的傅里叶变换如下
http://img.bimg.126.net/photo/94NtjuofO_T3K5-2fWCRTA==/2829104990920464366.jpg
人声音的频率范围:国际通信标准制定为300Hz-3400Hz! (来自百度知道)
2、对此信号分别设计低通、高通和带通滤波器对此信号进行处理
?低通滤波器的设计:程序如下
%低通滤波
clc;clear;close;
[y,fs]=wavread('xinhao.wav');
%sound(y,fs)
N=length(y);
%sound(y,fs/4)
Ts=1/fs;
t=[0:N-1]*Ts;
Y=fft(y,N);
f1=fs/N;
f=[0:N-1]*f1;
f0=500;
K0=f0/f1;
Y(1:K0)=Y(1:K0)*30;
Y(K0+1:N-K0)=Y(K0+1:N-K0)*0;
Y(N-K0+1:N)=Y(N-K0+1:N)*30;
plot(f,abs(Y));
title('低通滤波频谱图');
y0=ifft(Y);
sound(real(y0)*0.1,fs);
wavwrite(y0,fs,'ditong.wav');
低通处理过后的频谱图
http://img.bimg.126.net/photo/4jE2fmGmmcYbskQsYJwIcQ==/2829104990920464370.jpg
?高通滤波器的设计:程序如下
%高通滤波
clc;clear;close;
[y,fs]=wavread('xinhao.wav');
%sound(y,fs)
N=length(y);
%sound(y,fs/4)
Ts=1/fs;
t=[0:N-1]*Ts;
Y=fft(y,N);
f1=fs/N;
f=[0:N-1]*f1;
f0=4000;
K0=f0/f1;
Y(1:K0)=Y(1:K0)*0;
Y(K0:N-K0+1)=Y(K0:N-K0+1)*30;
Y(N-K0+1:N)=Y(N-K0+1:N)*0
plot(f,abs(Y));
title('高通滤波频谱图');
y0=ifft(Y);
sound(real(y0)*0.1,fs);
wavwrite(y0,fs,'gaotong.wav');
高通处理过后的频谱图
http://img.bimg.126.net/photo/FVwPN1n2ipHhoVFypnPBpw==/2829104990920464375.jpg
?带通滤波器的设计:程序如下
%带通滤波
clc;clear;close;
[y,fs]=wavread('xinhao.wav');
%sound(y,fs)
N=length(y);
%sound(y,fs/4)
Ts=1/fs;
t=[0:N-1]*Ts;
Y=fft(y,N);
f1=fs/N;
f=[0:N-1]*f1;
f0=2000;K0=f0/f1;
f2=3000;K1=f2/f1;
Y(1:K0)=Y(1:K0)*0;
Y(K0:K1)=Y(K0:K1)*30;
Y(K1+1:N-K1)=Y(K1+1:N-K1)*0;
Y(N-K1+1:N-K0+1)=Y(N-K1+1:N-K0+1)*30;
Y(N-K0+1:N)=Y(N-K0+1:N)*0;
plot(f,abs(Y));
title('带通滤波频谱图');
y0=ifft(Y);
sound(real(y0)*0.1,fs);
wavwrite(y0,fs,'daitong.wav');
带通滤波处理过后的频谱图
http://img.bimg.126.net/photo/0xXjG9egOlqZuTq9qPk7cA==/2829104990920464402.jpg
2、信号加噪处理:程序及图像如下
clc;clear;close;
[y,fs]=wavread('xinhao.wav');
%sound(y,fs);
randn('state',0);
m=randn(size(y));%产生一与y长度一致的随机信号
y1=0.1*m+y;
sound(y1,fs);
subplot(2,1,1);
plot(y1);
y2=fft(y1);
subplot(2,1,2)
plot(abs(y2));
wavwrite(y2,fs,'jiazao.wav');