数字信号处理课程设计对音乐信号的各种处理.docx
《数字信号处理课程设计对音乐信号的各种处理.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计对音乐信号的各种处理.docx(40页珍藏版)》请在冰豆网上搜索。
数字信号处理课程设计对音乐信号的各种处理
数字信号处理课程设计(对音乐信号的各种处理)
实验1
1、音乐信号的音谱和频谱观察
使用wavread语句读取音乐信号,获取抽样率;
输出音乐信号的波形和频谱,观察现象;
使用sound语句播放音乐信号,注意不同抽样率下的音调变化,解释现象。
clearall;closeall;clc
[a,fs,bit]=wavread('c:
\MATLAB6p5\work\陪你一起看草原.wav');
size(a);
y1=a(:
1);
a1=y1(10000:
60000)
figure;
subplot(2,1,1),plot(a);
subplot(2,1,2),plot(a1);
x1=resample(a1,2,1);%y=resample(x,p,q)返回量的长度是向量x的p/q倍
sound(x1,fs);
%sound(a,fs);
N1=length(a1);
F1=fft(a1,N1);
w=2/N1*[0:
N1-1];%频谱图横坐标设置
figure;
plot(w,abs(F1));
N2=length(a1);
t=0:
1/N2:
1/N2*(N2-1);
title('傅利叶变换');%傅利叶变换;
figure;
plot(a1);
title('时域波形');%时域波形;
1,
2,以二分之一的抽样率听声音信号时,音乐播放的特别慢,像被拉长了,播放的时间比原信号长。
3,原信号频谱截止频率为0.5*pi
实验2
2、音乐信号的抽取(减抽样)
观察音乐信号频率上限,选择适当的抽取间隔对信号进行减抽样(给出两种抽取间隔,代表混叠和非混叠);
输出减抽样音乐信号的波形和频谱,观察现象,给出理论解释;
播放减抽样音乐信号,注意抽样率的改变,比较不同抽取间隔下的声音,解释现象。
clearall;closeall;clc
[a,fs,bit]=wavread('c:
\MATLAB6p5\work\陪你一起看草原.wav');
size(a);
y1=a(:
1);
a1=y1(10000:
60000)
D=2;%减抽样;
l=length(a1);
yd=a1(1:
D:
l);
sound(yd,fs/D);
N3=length(yd);
t=0:
1/N3:
1/N3*(N3-1);%横坐标设置
figure;
plot(yd);
title('减抽样时域波形');%时域波形;
xlabel('t');
ylabel('幅度');
N4=length(yd);
F2=fft(yd,N4);
w=2/N4*[0:
N4-1];
figure;
plot(w,abs(F2));
title('减抽样频谱');%减抽样频谱
xlabel('f');
ylabel('幅度');
D=2,减抽样
D=4,减抽样
1,原信号频谱截止频率为0.5*pi,当D=2时,频谱刚好不混叠,当D>2时,频谱就会混叠。
2,减抽样后的音乐信号听起来变得尖锐,有失真。
3,抽样率随着抽样间隔的增大而逐渐变小,声音越来越失真,音调变得急促,而尖锐,信号产生混叠
实验3
3、音乐信号的AM调制
观察音乐信号的频率上限,选择适当调制频率对信号进行调制(给出高、低两种调制频率);
输出调制信号的波形和频谱,观察现象,给出理论解释;
播放调制音乐信号,注意不同调制频率下的声音,解释现象。
clearall;closeall;clc
[a,fs,bit]=wavread('c:
\MATLAB6p5\work\陪你一起看草原.wav');
size(a);
y1=a(:
1);
a1=y1(10000:
100000);
%sound(a1,fs);
N=length(a1);
n1=0:
[N-1];
y=cos(0.5*pi*n1);%产生余弦信号
N1=length(a1);
F1=fft(y,N1);
w=2/N1*[0:
N1-1];
figure;
plot(w,abs(F1));
title('cos(wt)频谱');%余弦频谱
xlabel('f');
ylabel('幅度');
N2=length(a1);
F2=fft(a1,N2);
w=2/N2*[0:
N2-1];
figure;
plot(w,abs(F2));
title('yinyue频谱');%原信号频谱
xlabel('f');
ylabel('幅度');
x1=a1.*y';%音乐信号与余弦信号点乘进行调制
figure
plot(x1);
N3=length(a1);
F3=fft(x1,N3);%调制信号傅立叶变换
w=2/N3*[0:
N3-1];
figure;
plot(w,abs(F3));
title('调制频谱');%调制信号频谱
xlabel('f');
ylabel('幅度');
sound(x1,fs);
w=0.5*pi时.
w=0.3*pi时.
w=0.7*pi时.
1,由原信号频谱知,信号截止频率约为0.4pi,则产生混叠的阈值为0.6pi。
2,原信号的调制相当于频谱搬移,左移一个右移一个,当调制频率(余弦频率)小于0.4pi或大于0.6pi时就会产生混叠或丢失一部分信息。
3,当余弦点数取得少时,余弦频谱会产生泄漏。
4,当调制频率较高时(发生混叠),声音响度低,几乎只能听见兹兹的声音,信号几乎完全失真,当调制频率较低时(未发生混叠),声音很尖锐,响度较大,稍微能听出一点调子,但也有兹兹的声音。
实验4
4、AM调制音乐信号的同步解调
设计巴特沃斯IIR滤波器完成同步解调;观察滤波器频率响应曲线;
用窗函数设计FIR滤波器完成同步解调,观察滤波器频率响应曲线;(要求:
分别使用矩形窗和布莱克曼窗,进行比较);
输出解调音乐信号,比较不同滤波器下的声音,解释现象。
clearall;closeall;clc
functionhd=ideal(N,wc)
forn=0:
N-1
ifn==(N-1)/2
hd(n+1)=wc/pi;
elsehd(n+1)=sin(wc*(n-(N-1)/2))/(pi*(n-(N-1)/2));
end
end
[a,fs,bit]=wavread('c:
\MATLAB6p5\work\陪你一起看草原.wav');
size(a);
y1=a(:
1);
a1=y1(10000:
100000);
%sound(a1,fs);%播放yuan的信号
N=length(a1);
n1=0:
[N-1];
y=cos(0.5*pi*n1);
x1=a1.*y';%点乘
figure
plot(x1);
N1=length(a1);
F1=fft(x1,N1);%调制信号傅立叶变换
w=2/N1*[0:
N1-1];
figure
plot(w,abs(F1));
title('调制频谱');%调制信号频谱
xlabel('f');
ylabel('幅度');
%sound(x1,fs);%播放调制后的信号
x2=x1.*y';
figure
plot(x2);%解调后信号
F2=fft(x2,N1);%解调信号傅立叶变换
w=2/N1*[0:
N1-1];
figure
plot(w,abs(F2));
title('解调频谱');%解调频谱
xlabel('f');
ylabel('幅度');
%sound(x2,fs);%播放解调后的信号
[N,Wc]=buttord(0.4,0.5,1,15);
[B,A]=butter(N,Wc);
[H,W]=freqz(B,A);
figure
plot(W/pi,abs(H));
title('数字巴特沃斯滤波器');%数字巴特沃斯滤波器
x3=filter(B,A,x2);%滤波后信号
w=2/N1*[0:
N1-1];
fx=fft(x3,N1);
fa=fft(a1,N1);
figure
subplot(2,1,1),plot(w,abs(fa));
title('yuanxinhaopinpu');
subplot(2,1,2),plot(w,abs(fx));
title('数字巴特沃斯滤波器滤波频谱');%滤波后频谱
sound(x3,fs);%播放巴特沃斯滤波器滤波后信号shengyin
N=33;wc=0.4*pi;
hd=ideal(N,wc);
w1=boxcar(N);%矩形窗
w2=blackman(N);%布莱克曼窗
h1=hd.*w1';
h2=hd.*w2';
y3=conv(x2,h1);%解调后信号与矩形窗函数卷积
y4=conv(x2,h2);%解调后信号与布莱克曼窗函数卷积
%sound(y3,fs);%播放矩形窗滤波后信号shengyin
%sound(y4,fs);%播放布莱克曼窗滤波后信号shengyin
figure;
subplot(2,1,1),plot(y3);
title('矩形窗滤波后信号');
subplot(2,1,2);plot(y3);
title('布莱克曼窗滤波后信号');
fh1=fft(h1,N1);
db1=-20*log10(abs(fh1
(1)./(abs(fh1)+eps)));%理想低通滤波器加窗后幅度响应
fh2=fft(h2,N1);
db2=-20*log10(abs(fh2
(1)./(abs(fh2)+eps)));
w=2/N1*[0:
N1-1];
figure;
subplot(3,1,1),stem(h1);%矩形窗函数
gridon;
title('矩形窗');
xlabel('n');
ylabel('h(n)');
subplot(3,1,2),plot(w,abs(fh1));
gridon;
title('矩形窗');
xlabel('w');
ylabel('H(k)');
subplot(3,1,3);plot(w,db1);%矩形窗函数分贝图
gridon;
figure;
subplot(3,1,1);stem(h2);
gridon;
title('布莱克曼窗');
xlabel('n');
ylabel('h(n)');
subplot(3,1,2);plot(w,abs(fh2));
gridon;
title('布莱克曼窗');
xlabel('w');
ylabel('H(k)');
subplot(3,1,3);plot(w,db2);%布莱克曼窗窗函数分贝图
gridon;
w=2/N1*[0:
N1-1];
Fy1=fft(y3,N1);
Fy2=fft(y4,N1);
figure;
subplot(2,1,1);plot(w,abs(Fy1));
title('矩形窗滤波后频谱');
subplot(2,1,2);plot(w,abs(Fy2));
title('布莱克曼窗滤波后频谱');
1,解调后信号频谱在高频和低频处均有一部分,且成对称分布,需要滤掉高频才可大致还原原信号。
2,原信号的截止频率为0.4pi,使用数字巴特沃斯滤波器滤波器滤波参数通带截止频率0.4pi,阻带开始频率0.5pi,阻带衰减15db。
滤波效果很好,基本还原了原信号。
3,使用窗函数滤波要根据过渡带宽算阶数N,选截止频率为0.4pi。
4,使用矩形窗滤波,矩形窗过渡带窄,但是阻带有波纹,高频部分有小部分未滤掉。
5,使用布莱克曼窗滤波,布莱克曼窗过渡带宽,但是阻带较好。
6,使用矩形窗和布莱克曼窗滤波,效果都行,基本都能还原原信号
实验5
5、音乐信号的滤波去噪
给原始音乐信号叠加幅度为0.05,频率为3kHz、5kHz、8kHz的三余弦混合噪声,观察噪声频谱以及加噪后音乐信号的音谱和频谱,并播放音乐,感受噪声对音乐信号的影响;
给原始音乐信号叠加幅度为0.5的随机白噪声(可用rand语句产生),观察噪声频谱以及加噪后音乐信号的音谱和频谱,并播放音乐,感受噪声对音乐信号的影响;
根据步骤
、
观察到的频谱,选择合适指标设计滤波器进行滤波去噪,观察去噪后信号音谱和频谱,并播放音乐,解释现象。
clearall;closeall;clc
[a,fs,bit]=wavread('c:
\MATLAB6p5\work\陪你一起看草原.wav');
size(a);
y1=a(:
1);
a1=y1(10000:
100000);
%sound(a1,fs);%播放yuan的信号
N1=length(a1);
n1=0:
[N1-1];
x1=0.05*cos(2*pi*3000*n1/fs);
x2=0.05*cos(2*pi*5000*n1/fs);
x3=0.05*cos(2*pi*8000*n1/fs);
x4=x1+x2+x3;
figure;
plot(x4);%叠加余弦信号
F1=fft(x4,N1);%叠加余弦信号傅立叶变换
w=2/N1*[0:
N1-1];
figure
plot(w,abs(F1));
title('叠加余弦信号频谱');%叠加余弦信号频谱
xlabel('f');
ylabel('幅度');
y2=a1+x4';
%sound(y2,fs);%播放叠加余弦音乐信号
figure;
plot(y2);%叠加余弦音乐信号
F2=fft(y2,N1);%叠加余弦音乐信号傅立叶变换
figure
plot(w,abs(F2));
title('叠加余弦噪声音乐信号频谱');%叠加余弦音乐信号频谱
xlabel('f');
ylabel('幅度');
[N,Wc]=buttord(0.06,0.3,1,50);
[B,A]=butter(N,Wc);
[H,W]=freqz(B,A);
figure
plot(W/pi,abs(H));
title('数字巴特沃斯滤波器');%数字巴特沃斯滤波器
y3=filter(B,A,y2);%滤波后信号
fa=fft(a1,N1);
fy=fft(y3,N1);
figure
subplot(3,1,1),plot(w,abs(fa));
title('yuanxinhaopinpu');
subplot(3,1,2),plot(w,abs(F2));
title('叠加余弦噪声音乐信号频谱');%叠加音乐信号频谱
subplot(3,1,3),plot(w,abs(fy));
title('数字巴特沃斯滤波器滤波频谱');%滤波后频谱
%sound(y3,fs);%播放滤波后音乐信号
r=rand(N1,1)-0.5;
yr=a1+r;
figure;
plot(yr);
%sound(yr,fs);%播放叠加随机噪声音乐信号
[N,Wc]=buttord(0.05,0.4,1,50);
[B,A]=butter(N,Wc);
[H,W]=freqz(B,A);
figure;
plot(W/pi,abs(H));
title('数字巴特沃斯滤波器2');%数字巴特沃斯滤波器
yf=filter(B,A,yr);%滤波后信号
Fz=fft(r,N1);
Fr=fft(yr,N1);
Ff=fft(yf,N1);
figure;
subplot(2,1,1),plot(w,abs(fa));
title('yuanxinhaopinpu');
subplot(2,1,2),plot(w,abs(Fz));
title('随机噪声频谱');
figure;
subplot(2,1,1),plot(w,abs(Fr));
title('叠加随机噪声音乐信号频谱');%叠加音乐信号频谱
subplot(2,1,2),plot(w,abs(Ff));
title('数字巴特沃斯滤波器滤波频谱');%滤波后频谱
sound(yf,fs);%播放滤波后音乐信号
1,三余弦信号的频谱为不同频率处得三根线,加噪声后的音乐信号频谱是在原信号频谱上加了三条不同频率的线。
加噪声后音乐信号能听到原有的音调,但里面有非常大的杂音,兹兹的噪声。
2,对加余弦噪声的信号进行滤波,用巴特沃斯滤波器滤波,参数为:
通带截止频率0.06pi,阻带开始频率0.3pi,阻带衰减50db,滤波后滤掉了一部分高频信息,三根余弦基本滤除。
滤波后信号听起来还稍微有点杂音,有稍微的失真。
3,对原信号加随机白噪声,白噪声均匀分布,对其用巴特沃斯滤波器滤波,参数为:
通带截止频率0.05pi,阻带开始频率0.4pi,阻带衰减50db,滤波后滤掉了一部分高频信息,
阻带衰减快,到0.4pi就衰减到0,但还保留了低频处得噪声,滤波后音乐信号听起来能听出原调,但有失真,且伴随有较大声的随机白噪声。
实验6
6、音乐信号的幅频滤波及相频分析
设计低通滤波器(可自行选取不同的截止频率),滤除原始音乐信号的高频信息,观察滤波前后的幅度频谱,并比较滤波前后的音乐效果,感受高频信息对音乐信号的影响;
设计高通滤波器(可自行选取不同的截止频率),滤除原始音乐信号的低频信息,观察滤波前后的幅度频谱,并比较滤波前后的音乐效果,感受高频信息对音乐信号的影响;
选取两端不同的音乐信号,分别将其幅度谱和相位谱交叉组合构成新的音乐信号,播放并比较组合后的音乐与原始音乐,感受相频信息对音乐信号的影响。
clearall;closeall;clc
[a,fs,bit]=wavread('c:
\MATLAB6p5\work\陪你一起看草原.wav');
size(a);
y1=a(:
1);
a1=y1(10000:
100000);
%sound(a1,fs);%播放原的信号1
N1=length(a1);
F1=fft(a1,N1);%原信号1傅立叶变换
w=2/N1*[0:
N1-1];
[N,Wc]=buttord(0.1,0.2,1,30);
[B,A]=butter(N,Wc);
[H,W]=freqz(B,A);
figure
plot(W/pi,abs(H));
title('数字巴特沃斯滤波器');%数字巴特沃斯滤波器
a2=filter(B,A,a1);%滤波后信号
fd=fft(a2,N1);
figure;
subplot(211),plot(w,abs(F1));
title('原信号1频谱');%原信号1频谱
xlabel('f');
ylabel('幅度');
subplot(212),plot(w,abs(fd));
title('数字巴特沃斯滤波器滤波频谱');%滤波后频谱
%sound(a2,fs);%播放滤波后音乐信号
[N,Wc]=buttord(0.1,0.2,1,30);
[B,A]=butter(N,Wc,'high');
[H,W]=freqz(B,A);
figure
plot(W/pi,abs(H));
title('数字巴特沃斯滤波器');%数字高通巴特沃斯滤波器
a3=filter(B,A,a1);%滤波后信号
fg=fft(a3,N1);
figure
plot(w,abs(fg));
title('数字巴特沃斯滤波器滤波频谱');%滤波后频谱
%sound(a3,fs);%播放滤波后音乐信号
[x,fs,bit]=wavread('C:
\MATLAB6p5\work\刘欢-在路上.wav');
size(x);
x1=x(:
1);
x2=x1(10000:
100000);
%sound(x2,fs);%播放原的信号2
figure
subplot(211),plot(x2)
F2=fft(x2,N1);%原信号2傅立叶变换
w=2/N1*[0:
N1-1];
subplot(212),plot(w,abs(F2));
title('原信号2频谱');%原信号2频谱
xlabel('f');
ylabel('幅度');
Fa1=abs(F1);
Fa2=abs(F2);
Fx1=angle(F1);
Fx2=angle(F2);
f1=Fa1.*exp(j*Fx2);%相位谱和幅度谱交叉组合
f2=Fa2.*exp(j*Fx1);
figure
subplot(211),plot(w,abs(f1));
title('原信号1幅度谱,原信号2相位谱');
subplot(212),plot(w,abs(f2));
title('原信号2幅度谱,原信号1相位谱');
b1=ifft(f1);
b2=ifft(f2);
%sound(real(b1),fs);
%sound(real(b2),fs);
1,通滤波器滤掉高频信息,声音听起来比较低沉、沉闷,高频分量解释信号的突变部分。
2,高通滤波器滤掉低频信息,声音听起来比较尖锐、不浑厚,低频影响信号整体部分。
3,通过幅度谱、相位谱交叉组合,组合后音乐信号听起来与提供相位谱的音乐信号相似,相位谱影响音乐信号的音色。