数字信号处理综合实验.docx
《数字信号处理综合实验.docx》由会员分享,可在线阅读,更多相关《数字信号处理综合实验.docx(22页珍藏版)》请在冰豆网上搜索。
数字信号处理综合实验
音乐信号的分析与处理——基于MATLAB
一.简介
运用MATLAB对音乐信号进行分析与处理,读取音乐信号后,通过MATLAB软件平台进行读取并进行频谱分析;并对所读取的音乐信号进行不同频率抽样,对信号进行频谱分析。
此外,人为加入噪声信号,对原音乐信号进行干扰,随后再设计滤波器进行滤波,观察现象。
通过对音乐信号的分析与处理实验,加深对离散时间傅立叶变换(DTFT)和离散傅立叶变换(DFT)的理解和掌握程度。
学习数字滤波器设计,用来对信号进行过滤、检测和参数估计等处理。
同时充分掌握和运用抽样定理,了解抽样定理对数字信号处理方面的重要性。
同时了解MATLAB在数字信号处理方面的应用。
如:
数字信号变换技术、窗函数,IIR数字滤波器的设计、FIR数字滤波器的设计、功率谱估计、小波分析在信号处理中的应用以及信号处理的图形用户界面工具。
关键词:
MATLAB;音乐信号;信号抽样;加入噪声;滤波器滤波
二.具体实验
实验目的
通过对音乐信号的读取、采样、加入噪声,滤波去噪等多种处理过程的理论分析,运用malab对音乐信号进行分析处理。
加深对数字信号处理的理论知识以及频谱分析方法和数字滤波器设计方法的理解。
培养自己发现问题、分析问题和解决问题的基本能力,提高对所学知识的综合应用能力。
实验内容
(1)语音信号的采集及分析
(2)信号抽样
(3)构建干扰噪声并加入到原信号
(4)设计滤波器进行滤波
实验分析
(1)查阅资料可知,使用wavread语句可以读取音乐信号,获取抽样率;使用sound语句播放音乐信号。
MATLAB只能能识别wav音频文件,因此在实际操作时要使用wav格式音频文件。
而wav格式音频文件可以用音频格式转换软件进行转换得到,如GoldWave软件。
(2)首先采用lengh函数求出声音长度,方便后续操作。
(3)运用减抽样的方法可以对音乐信号进行抽样,且不同的减抽样间隔,实验的结果不一样,失真程度也不一样。
输出减抽样音乐信号的波形和频谱,观察现象。
播放减抽样音乐信号,注意抽样率的变化,比较不同抽取间隔下的声音。
(4)在MATLAB软件平台下,给原始的音乐信号叠加上噪声,加入干扰噪声是y1=0.05*cos(n*2*pi*5000/f1);的余弦噪声,还有随机产生的随机噪声d=randn(1,200000);,绘出加噪声后的语音信号时域和频谱图,在视觉上与原始语音信号图形对比,也要从听觉上进行对比,分析并体会含噪语音信号频谱和时域波形的改变。
值得关注的是,所加入的噪声的长度要与原音乐信号的长度一致。
(5)对加入高斯随机噪声和余弦噪声的语音信号进行滤波。
用双线性变换法设计了巴特沃斯数字低通IIR滤波器对两加噪音乐信号进行滤波,并绘制了巴特沃斯低通滤波器的幅度图和两加噪语音信号滤波前后的时域图和频谱图。
采用巴特沃斯低通滤波器,因为它有比其他滤波器更好的的平稳幅频特性,除了第一个周有微微的失真,之后都具有很好的幅频特性。
而且对于巴特沃斯低通滤波器,截止角频率参数关系为
,在知道采样频率的情况下,可以得出wc,从而进行设计滤波器。
一:
读取音乐文件并画其波形和频谱进行分析
在MATLAB中,[Y,FS,NBITS]=wavread('小幸运.wav');用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。
sound(Y,FS);用于对声音的回放。
向量y则就代表了一个信号,也即一个复杂的“函数表达式”,也可以说像处理一个信号的表达式一样处理这个声音信号。
程序如下:
抽样频率Fs=50000:
wavwrite(Y,50000,16,'小幸运');%改变其抽样频率
[Y,FS,NBITS]=wavread('小幸运.wav');%读取音乐文件
plot(Y); %显示音乐信号的波形和频谱
title('原时域波形');
sound(Y,FS);%听音乐
Y1=Y(:
1);%由双声道信号变为单声道信号
size(Y1)
figure
subplot(2,1,1);
plot(Y);
title('原时域波形');
N=length(Y1);
f1=fft(Y1);%求其傅里叶变换
w=2/N*[0:
N/2-1];
subplot(2,1,2);
plot(w,abs(f1(1:
N/2)));%显示其波形
title('信号的频谱');
波形如下:
不同的抽样频率下,音乐输出效果不同,频率过低(30000Hz)则变得低沉听不清,过高(80000)Hz则感觉变快,MATLAB的默认频率为44100Hz。
二:
信号的抽样
程序如下:
[y,fs,bit]=wavread('小幸运.wav');
size(y);
y1=y(:
1);
a1=y1(1:
200000)
D=2;%减抽样间隔;
n=length(a1);
y2=a1(1:
D:
n);
sound(y2,fs/D);
N3=length(y2);
t=0:
1/N3:
1/N3*(N3-1);%横坐标设置?
figure;
plot(y2);
title('减抽样时域波形');%时域波形;
xlabel('t');
ylabel('幅度');
N4=length(y2);
F2=fft(y2,N4);
w=2/N4*[0:
N4-1];
figure;
plot(w,abs(F2));
title('减抽样频谱');%减抽样频谱
xlabel('f');
ylabel('幅度');
波形如下:
D=2
D=8
通过实验得到, 减抽样后的音乐信号听起来变得尖锐,有失真。
抽样率随着抽样间隔的增大而逐渐变小,声音越来越失真,音调变得急促,而尖锐,信号产生混叠
三:
加入干扰信号
1.加入余弦干扰信号
程序如下;
[y,fs,bit]=wavread('小幸运.wav');
y0=y(:
1);
x=y(1:
200000,1);
N=length(x);
n=0:
N-1;
f1=38000;
y1=0.05*cos(n*2*pi*5000/f1);
y2=y1(1,1:
200000);
y3=x+y2';
fp1=fft(y1,N);
fp2=fft(y3,N);
w1=2/N*[0:
N-1];
figure
subplot(2,1,1);
plot(y2);
gridon
title('噪声的波形')
axis([0200-0.10.1]);
subplot(2,1,2);
plot(w1,abs(fp1));
gridon
title('噪声的频谱')
xlabel('频率')
ylabel('幅度')
figure
subplot(3,1,1);
plot(y3)
gridon
title('加入噪声后的音乐波形')
subplot(3,1,2);
plot(w1,abs(fp2));
gridon
title('加入噪声后音乐频谱')
xlabel('频率')
ylabel('幅度')
subplot(3,1,3);
plot(x)
gridon
title('原音乐波形')
sound(y3,fs);
波形如下:
加入噪声信号之后得到的信号和原始的语音信号从图上看出啦有明显的不同。
播放时有哨叫声音。
2.产生随机噪声,并且对噪声进行一定的衰减,然后把噪声加到信号中。
程序如下:
[y,fs,bit]=wavread('小幸运.wav');
y0=y(:
1);
x=y(1:
200000,1);
N=length(x);
d=randn(1,200000);%产生高斯白噪声
d=d/100;%对噪声进行衰减
y4=x+d';
fp1=fft(d,N);
fp2=fft(y4,N);
w1=2/N*[0:
N-1];
figure
subplot(2,1,1);
plot(d);
gridon
title('噪声的波形')
subplot(2,1,2);
plot(w1,abs(fp1));
gridon
title('噪声的频谱')
xlabel('频率')
ylabel('幅度')
figure
subplot(3,1,1);
plot(y3)
gridon
title('加入噪声后的音乐波形')
subplot(3,1,2);
plot(w1,abs(fp2));
gridon
title('加入噪声后音乐频谱')
xlabel('频率')
ylabel('幅度')
subplot(3,1,3);
plot(x)
gridon
title('原音乐波形')
sound(y4,fs);
波形如下:
由图可以看出加入噪声后有明显的不一样,运行sound(y3,fs);播放加入随机噪声后的语音,可以明显听出兹兹的噪声。
四.对加入干扰的音乐信号进行滤波
1.滤除余弦噪声信号
程序如下:
Rp=1;Rs=15;%设置滤波器参数
Ws=0.13;
Wp=0.09;
[N,wc]=buttord(Wp,Ws,Rp,Rs);%计算滤波器阶数N和3dB截止频率wc
[b,a]=butter(N,wc);%计算滤波器系统函数分子分母多项式系数
freqz(b,a,1000,fs);%绘制滤波器特性曲线
title('滤波器特性曲线');
axis([08000-303]);
z=filter(b,a,y3);%把加噪后的信号滤波
figure
subplot(2,1,1);
plot(y3)
gridon
title('滤波前的波形');
subplot(2,1,2);
plot(w1,abs(fp2));
gridon
title('滤波前的音乐频谱')
xlabel('频率')
ylabel('幅度')
figure
subplot(2,1,1);
plot(z);
title('滤波后的波形');%绘制波形?
Z=fft(z,4096);%对信号做4096点FFT变换?
magZ1=abs(Z);%把傅里叶变换后的复数值取模?
magZ=magZ1(1:
2048);%取点?
subplot(2,1,2);
plot(magZ);
title('滤波后的信号频谱');%绘制波形
xlabel('频率')
ylabel('幅度')
sound(z,fs);
波形如下:
含有余弦噪声的音乐信号通过滤波器滤波后,消除了噪声对原信号的影响,而且恢复效果较好。
2.滤除随机噪声程序如下:
Rp=1;Rs=15;%设置滤波器参数?
Ws=0.06;
Wp=0.01;
[N,wc]=buttord(Wp,Ws,Rp,Rs);%计算滤波器阶数N和3dB截止频率wc
[b,a]=butter(N,wc);%计算滤波器系统函数分子分母多项式系数?
freqz(b,a,1000,fs);%绘制滤波器特性曲线?
title('滤波器特性曲线');
axis([08000-303]);
z=filter(b,a,y4);%把加噪后的信号滤波?
figure
subplot(2,1,1);
plot(y4)
gridon
title('滤波前的波形');
subplot(2,1,2);
plot(w1,abs(fp2));
gridon
title('滤波前的音乐频谱')
xlabel('频率')
ylabel('幅度')
figure
subplot(2,1,1);
plot(z);
title('滤波后的波形');%绘制波形?
Z=fft(z,4096);%对信号做4096点FFT变换?
magZ1=abs(Z);%把傅里叶变换后的复数值取模?
magZ=magZ1(1:
2048);%取点?
subplot(2,1,2);
plot(magZ);
title('滤波后的信号频谱');%绘制波形
xlabel('频率')
ylabel('幅度')
sound(z,fs);
波形如下:
含有随机噪声的音乐信号通过滤波器滤波后,消除了噪声对原信号的影响,而且恢复效果较好。
3.实验总结
在此次实验中,我采用MATLAB实现了音乐信号的采集,音乐信号的抽样以及音乐信号加入噪声及设计滤波器滤除噪声等操作。
由实验可以看出,巴特沃斯滤波器幅频特性。
通过此次实验,使我加深了对理论知识的理解,并能掌握音乐信号处理中的基本方法。
通过这次实验,还让我对Matlab的应用以及数字滤波器的设计有了更深层次的理解。
同时可以看到滤波器在信号处理方面的重要性。
另外,通过实验,我们还巩固和运用在数字信号处理课程中所学的理论知识和实验技能,掌握最基本的数字信号处理的理论和方法,提高了自己的发现问题,分析问题和解决问题的能力。
同时也让我发现自己还有许多不足的地方,需要进一步的努力来提高自己。
再次,在做实验的过程中会遇到很多的困难,我也想过地放弃,但是还是坚持了下来。
我相信只要在在困难面前不要放弃,只要有细心和耐心,坚持下去会达到想要的设计结果。
4.参考文献
[1].阔永红.《数字信号处理——基于计算机的方法第四版》.电子工业出版社。
[2].孙洪,余翔宇等.《数字信号处理实验指导书—MATLAB版》.电子工业出版社
[3]黄文梅,熊桂林,杨勇.信号分析与处理[M].长沙:
国防科技大学出版社
[4].张志涌.《MATLAB教程R2012a》.北京航空航天大学出版社。
[5].《数字信号处理课程设计 》.选自XX文库