您的当前位置:首页数字信号处理课程设计(对音乐信号的各种处理)

数字信号处理课程设计(对音乐信号的各种处理)

2021-04-21 来源:爱问旅游网


实验1

1、音乐信号的音谱和频谱观察

1使用wavread语句读取音乐信号,获取抽样率; ○

2输出音乐信号的波形和频谱,观察现象; ○

3使用sound语句播放音乐信号,注意不同抽样率下的音调变化,解释现象。 clear all;close all;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

1, 以二倍的抽样率听声音信号时,音乐播放的特别快,像被压缩了,播放的时间比原信号短。

2, 以二分之一的抽样率听声音信号时,音乐播放的特别慢,像被拉长了,播放的时间比原信号长。

3, 原信号频谱截止频率为0.5*pi

2、音乐信号的抽取(减抽样)

1观察音乐信号频率上限,选择适当的抽取间隔对信号进行减抽样(给出两种抽取间隔,○

代表混叠和非混叠);

2输出减抽样音乐信号的波形和频谱,观察现象,给出理论解释; ○

3播放减抽样音乐信号,注意抽样率的改变,比较不同抽取间隔下的声音,解释现象。 ○

clear all;close all;clc

[a,fs,bit]=wavread('c:\\MATLAB6p5\\work\\陪你一起看草原.wav'); size(a); y1=a(:,1);

a1=y1(10000:60000)

3

实验2

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,减抽样

4

D=4,减抽样

5

1, 原信号频谱截止频率为0.5*pi,当D=2时,频谱刚好不混叠,当D>2时,频谱就会混叠。

2, 减抽样后的音乐信号听起来变得尖锐,有失真。

3, 抽样率随着抽样间隔的增大而逐渐变小,声音越来越失真,音调变得急促,而尖锐,信号产生混叠

实验3

3、音乐信号的AM调制

1观察音乐信号的频率上限,选择适当调制频率对信号进行调制(给出高、低两种调制频○率);

2输出调制信号的波形和频谱,观察现象,给出理论解释; ○

3播放调制音乐信号,注意不同调制频率下的声音,解释现象。 ○

clear all;close all;clc

[a,fs,bit]=wavread('c:\\MATLAB6p5\\work\\陪你一起看草原.wav'); size(a); y1=a(:,1);

a1=y1(10000:100000);

6

%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);

7

w=0.5*pi 时.

8

9

w=0.3*pi 时.

10

w=0.7*pi 时.

11

1, 由原信号频谱知,信号截止频率约为0.4pi,则产生混叠的阈值为0.6pi。 2, 原信号的调制相当于频谱搬移,左移一个右移一个,当调制频率(余弦频率)小于0.4pi或大于0.6pi时就会产生混叠或丢失一部分信息。 3, 当余弦点数取得少时,余弦频谱会产生泄漏。 4, 当调制频率较高时(发生混叠),声音响度低,几乎只能听见兹兹的声音,信号几乎完全失真,当调制频率较低时(未发生混叠),声音很尖锐,响度较大,稍微能听出一点调子,但也有兹兹的声音。

实验4

4、AM调制音乐信号的同步解调

1设计巴特沃斯IIR滤波器完成同步解调;观察滤波器频率响应曲线; ○

2用窗函数设计FIR滤波器完成同步解调,观察滤波器频率响应曲线;(要求:分别使用矩○

形窗和布莱克曼窗,进行比较);

3输出解调音乐信号,比较不同滤波器下的声音,解释现象。 ○

clear all;close all;clc

function hd=ideal(N,wc) for n=0:N-1

if n==(N-1)/2

hd(n+1)=wc/pi;

else hd(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); %调制信号傅立叶变换

12

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('yuan xin hao pin pu'); subplot(2,1,2),plot(w,abs(fx));

title('数字巴特沃斯滤波器滤波频谱'); %滤波后频谱

sound(x3,fs); %播放巴特沃斯滤波器滤波后信号sheng yin

N=33;wc=0.4*pi; hd=ideal(N,wc);

w1=boxcar(N); %矩形窗

w2=blackman(N); %布莱克曼窗

13

h1=hd.*w1'; h2=hd.*w2';

y3=conv(x2,h1); %解调后信号与矩形窗函数卷积 y4=conv(x2,h2); %解调后信号与布莱克曼窗函数卷积

%sound(y3,fs); %播放矩形窗滤波后信号sheng yin

%sound(y4,fs); %播放布莱克曼窗滤波后信号sheng yin 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); %矩形窗函数 grid on;

title('矩形窗'); xlabel('n'); ylabel('h(n)');

subplot(3,1,2),plot(w,abs(fh1)); grid on;

title('矩形窗'); xlabel('w'); ylabel('H(k)');

subplot(3,1,3);plot(w,db1); %矩形窗函数分贝图grid on;

figure;

subplot(3,1,1);stem(h2); grid on;

title('布莱克曼窗'); xlabel('n'); ylabel('h(n)');

subplot(3,1,2);plot(w,abs(fh2)); grid on;

title('布莱克曼窗'); xlabel('w'); ylabel('H(k)');

%理想低通滤波器加窗后幅度响应 14

subplot(3,1,3);plot(w,db2); %布莱克曼窗窗函数分贝图 grid on;

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('布莱克曼窗滤波后频谱');

15

16

17

18

19

1, 解调后信号频谱在高频和低频处均有一部分,且成对称分布,需要滤掉高频才可大致还原原信号。

2, 原信号的截止频率为0.4pi,使用数字巴特沃斯滤波器滤波器滤波参数通带截止频率0.4pi,阻带开始频率0.5pi,阻带衰减15db。滤波效果很好,基本还原了原信号。

3, 使用窗函数滤波要根据过渡带宽算阶数N,选截止频率为0.4pi。

4, 使用矩形窗滤波,矩形窗过渡带窄,但是阻带有波纹,高频部分有小部分未滤掉。

5, 使用布莱克曼窗滤波,布莱克曼窗过渡带宽,但是阻带较好。 6, 使用矩形窗和布莱克曼窗滤波,效果都行,基本都能还原原信号

实验5

5、音乐信号的滤波去噪

1给原始音乐信号叠加幅度为0.05,频率为3kHz、5kHz、8kHz的三余弦混合噪声,观察○

噪声频谱以及加噪后音乐信号的音谱和频谱,并播放音乐,感受噪声对音乐信号的影响; 2给原始音乐信号叠加幅度为0.5的随机白噪声(可用rand语句产生),观察噪声频谱以及○

加噪后音乐信号的音谱和频谱,并播放音乐,感受噪声对音乐信号的影响;

3根据步骤○1、○2观察到的频谱,选择合适指标设计滤波器进行滤波去噪,观察去噪后○

20

信号音谱和频谱,并播放音乐,解释现象。

clear all;close all;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));

21

title('数字巴特沃斯滤波器'); %数字巴特沃斯滤波器

y3=filter(B,A,y2); %滤波后信号 fa=fft(a1,N1); fy=fft(y3,N1); figure

subplot(3,1,1),plot(w,abs(fa)); title('yuan xin hao pin pu'); 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('yuan xin hao pin pu'); 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); %播放滤波后音乐信号

22

23

24

25

26

27

1, 三余弦信号的频谱为不同频率处得三根线,加噪声后的音乐信号频谱是在原信号频谱上加了三条不同频率的线。加噪声后音乐信号能听到原有的音调,但里面有非常大的杂音,兹兹的噪声。

2, 对加余弦噪声的信号进行滤波,用巴特沃斯滤波器滤波,参数为:通带截止频率0.06pi,阻带开始频率0.3pi,阻带衰减50db,滤波后滤掉了一部分高频信息,三根余弦基本滤除。滤波后信号听起来还稍微有点杂音,有稍微的失真。

3, 对原信号加随机白噪声,白噪声均匀分布,对其用巴特沃斯滤波器滤波,参数为:通带截止频率0.05pi,阻带开始频率0.4pi,阻带衰减50db,滤波后滤掉了一部分高频信息,

阻带衰减快,到0.4pi就衰减到0,但还保留了低频处得噪声,滤波后音乐信号听起来能听出原调,但有失真,且伴随有较大声的随机白噪声。

实验6

6、音乐信号的幅频滤波及相频分析

1设计低通滤波器(可自行选取不同的截止频率),滤除原始音乐信号的高频信息,观察滤○

波前后的幅度频谱,并比较滤波前后的音乐效果,感受高频信息对音乐信号的影响; 2设计高通滤波器(可自行选取不同的截止频率),滤除原始音乐信号的低频信息,观察滤○

波前后的幅度频谱,并比较滤波前后的音乐效果,感受高频信息对音乐信号的影响; 3选取两端不同的音乐信号,分别将其幅度谱和相位谱交叉组合构成新的音乐信号,播放○

并比较组合后的音乐与原始音乐,感受相频信息对音乐信号的影响。

clear all;close all;clc

[a,fs,bit]=wavread('c:\\MATLAB6p5\\work\\陪你一起看草原.wav'); size(a); y1=a(:,1);

a1=y1(10000:100000);

%sound(a1,fs); %播放原的信号1

28

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

29

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);

30

31

32

33

1, 通滤波器滤掉高频信息,声音听起来比较低沉、沉闷,高频分量解释信号的突变部分。

2, 高通滤波器滤掉低频信息,声音听起来比较尖锐、不浑厚,低频影响信号整体部分。

3, 通过幅度谱、相位谱交叉组合,组合后音乐信号听起来与提供相位谱的音乐信号相似,相位谱影响音乐信号的音色。

34

因篇幅问题不能全部显示,请点此查看更多更全内容