最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

数字信号处理课程设计基于 matlab 的音乐信号处理和分析

来源:动视网 责编:小OO 时间:2025-09-28 12:36:35
文档

数字信号处理课程设计基于 matlab 的音乐信号处理和分析

《数字信号处理》课程设计设计题目:基于MATLAB的音乐信号处理和分析一、课程设计的目的本课程设计通过对音乐信号的采样、抽取、调制、解调等多种处理过程的理论分析和MATLAB实现,使学生进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;使学生掌握的基本理论和分析方法知识得到进一步扩展;使学生能有效地将理论和实际紧密结合;增强学生软件编程实现能力和解决实际问题的能力。二、课程设计基本要求1学会MATLAB的使用,掌握MATLAB的基本编程语句。2掌握在Windows环境下音乐信号采集的
推荐度:
导读《数字信号处理》课程设计设计题目:基于MATLAB的音乐信号处理和分析一、课程设计的目的本课程设计通过对音乐信号的采样、抽取、调制、解调等多种处理过程的理论分析和MATLAB实现,使学生进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;使学生掌握的基本理论和分析方法知识得到进一步扩展;使学生能有效地将理论和实际紧密结合;增强学生软件编程实现能力和解决实际问题的能力。二、课程设计基本要求1学会MATLAB的使用,掌握MATLAB的基本编程语句。2掌握在Windows环境下音乐信号采集的
《数字信号处理》课程设计

设计题目:基于 MATLAB 的音乐信号处理和分析

一、课程设计的目的

    本课程设计通过对音乐信号的采样、抽取、调制、解调等多种处理过程的理论分析和MATLAB实现,使学生进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;使学生掌握的基本理论和分析方法知识得到进一步扩展;使学生能有效地将理论和实际紧密结合;增强学生软件编程实现能力和解决实际问题的能力。

二、课程设计基本要求

1 学会 MATLAB 的使用, 掌握MATLAB的基本编程语句。

2 掌握在 Windows 环境下音乐信号采集的方法。

3 掌握数字信号处理的基本概念、基本理论和基本方法。

4 掌握 MATLAB 设计 FIR 和 IIR 数字滤波器的方法。 

5 掌握使用MATLAB处理数字信号、进行频谱分析、设计数字滤波器的编程方法。

三、课程设计内容

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

使用windows下的录音机录制一段音乐信号或采用其它软件截取一段音乐信号(要求:时间不超过5s、文件格式为wav文件)

① 使用wavread语句读取音乐信号,获取抽样率;(注意:读取的信号是双声道信号,即为双列向量,需要分列处理);

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

③ 使用sound语句播放音乐信号,注意不同抽样率下的音调变化,解释现象。

Wavread格式说明:

[w,fs,b]=wavread(‘语音信号’),采样值放在向量w中,fs表示采样频率(hz),b表示采样位数。

上机程序:

[y,fs,bit]=wavread('I do片段')%读取音乐片段,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('幅度');

grid on;

sound(y,fs); 

实验结果:

1、通过观察频谱知,选取音乐信号的频谱集中在0~0.7*pi之间,抽样点数fs=44100;

2、当采样频率问原来0.5(0.5*fs)倍时:音乐片段音调变得非常低沉,无法辨认原声,播放时间变长;抽样频率减小,抽样点数不变时,其分辨力增大,记录长度变长,声音失真。

3、当采样频率问原来2(2*fs)倍时:音乐片段音调变得尖而细,语速变快,播放时间变短;抽样频率增加,抽样点数不变时,其分辨力下降,记录长度变短,声音失真。

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

① 观察音乐信号频率上限,选择适当的抽取间隔对信号进行减抽样(给出两种抽取间隔,代表混叠与非混叠);

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

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

上机程序:

[y,fs,bit]=wavread('I do片段')

y1=y( : ,1);

n1=length(y1);

tn1=(0:n1-1)/fs;

figure 

subplot(2,1,1);

plot(tn1,y1);    

ylabel('幅度');

xlabel('时间(s)');

title('原信号波形');

wn1=2/n1*[0:n1-1];

Y1=fft(y1); 

subplot(2,1,2);

plot(wn1,abs(Y1));

title('原信号频谱');

xlabel('数字角频率w');

ylabel('幅度');

grid on;

D=2;%设置抽样间隔 

y2=y1(1:D:n1);%减抽样

n2=length(y2);%减抽样后信号长度

t2=(0:n2-1)/fs;%设置横坐标

figure 

subplot(2,1,1);

plot(t2,y2);     %绘制减抽样信号波形图

ylabel('幅度');

xlabel('时间(s)');

title('2:1减抽样信号波形');

Y2=fft(y2); %对y2进行n2点fft谱分析

w2=2/n2*[0:n2-1];

subplot(2,1,2);

plot(w2,abs(Y2));%绘制减抽样信号频谱图

title('2:1减抽样信号频谱');

xlabel('数字角频率w');

ylabel('幅度');

grid on;

sound(y2,fs/D);

实验结果与分析:

1、程序中指标D表示抽样间隔,其值越大,相邻两抽样点之间的距离越远,抽样后漏掉的信息越多,相应的时域信号长度越短;

2、 抽样间隔D=1.1时的信号波形及频谱图,抽样频率大于信号最高频率的两倍,

满足抽样定理,不会发生混叠。抽样间隔D越大,抽样率fs越小,抽样后时域信号长度越短

3 、抽样间隔D=2时的信号波形及频谱图  

抽样间隔D=2的信号波形及频谱图,抽样频率小于信号最高频率的两倍,即<2,不满足抽样定理,其频谱图发生混叠,且D越大,混叠越严重,高频成分增加越多,音乐片段音调听起来很沙哑, 音调变得很高。

4、抽样间隔D=5的信号波形及频谱图,抽样频率小于信号最高频率的两倍,即<2,不满足抽样定理,其频谱图发生混叠,音乐片段音调听起来很尖锐。

 

3、音乐信号的AM调制

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

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

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

上机程序:

[y,fs,bit]=wavread('I do片段')

y1=y( : ,1);

n1=length(y1);

n3=0:(n1-1);

b1=cos(0.75*pi*n3);%设置调制信号  

c1=b1'.*y1;%对原信号进行调制

lc1=length(c1);

t=(0:lc1-1)/fs;

figure                   %用载波对信号进行调制,并对其做fft变换

subplot(2,1,1)          %获取频谱,从图中可以观察到,调制后的

plot(t,c1);                %信号频谱发生搬移

xlabel('时间(s)');

ylabel('幅度');

title('调制后信号');

w1=2/lc1*[0:lc1-1];%设置角频率W

C1=fft(c1);

subplot(2,1,2)

plot(w1,abs(C1));

xlabel('数字角频率w');

ylabel('幅度');

title('调制后信号的频谱(高频率调制)');

grid on;

%sound(c1,fs); 

实验结果与分析:

信号的调制过程就是将信号频谱搬移到任何所需的较高频率范围。调制的实质是把各种信号的频谱搬移,使它们互不重叠的占据不同的频率范围,也即信号分别托付于不同频率的载波上。具体的调制原理推导在此不再叙述,仅将结论列出:f(t)=g(t)*cos(w0*t)。由此将信号g(t)的频谱搬移到(2*n+1)w附近,同时音乐信号的频谱幅度变为原来的1/2。

如果信号的最高频谱wh超过了ws/2,则各周期延括分量产生频谱的交叠,称为是频谱的混叠现象。根据奈奎斯特定律可知,若希望频谱不会发生混叠,则fs>=fh。

 调制后信号波形及频谱(低频率调制)b1=cos(0.25*pi*n3);

 调制后信号波形及频谱(高频率调制)b1=cos(0.75*pi*n3);

1、由频谱图知信号频率上限约在0.7*pi处,取高调制频率为0.75*pi,取高调制频率为0.25*pi;观察调制后的频谱知,高频率调制后频谱混叠,而低频率调制后频谱未发生混叠;

2、用载波对信号进行调制,其实质过程为在时域用载波函数b1=cos(0.25*pi*n3)乘上原信号函数,在频域既表现为信号频谱的搬移,且载波函数角频率越大,调制后信号频谱搬移越大;

3、调制后信号高频成分增加,且调制频率越高,高频成分越大,声音变得越低沉,失真程度越大。

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

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

② 用窗函数法设计FIR滤波器完成同步解调,观察滤波器频率响应曲线;(要求:分别使用矩形窗和布莱克曼窗,进行比较); 

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

④ 播放解调音乐信号,比较不同滤波器下的声音,解释现象。

上机程序:

clear all;cla;close all

[a,fs,bit]=wavread('I do片段');

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,2,1);plot(tn,y1);%绘制音乐信号时域波形图

grid on;

title('原信号音频');

xlabel('时间');

ylabel('幅度');

subplot(2,2,2);plot(w,abs(f1));%绘制音乐信号频谱图

grid on;

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,2,3);plot(ty3,y3);%绘制调制后信号波形图

grid on;

title('AM调制音频信号');

xlabel('时间');

ylabel('幅度');

f3=fft(y3);

n2=length(f3);

w2=2/n2*[0:n2-1];

subplot(2,2,4);plot(w2,abs(f3));%绘制调制后信号频谱图

grid on;

title('AM调制频谱');

xlabel('频率/pi');

ylabel('幅度');

%解调后信号

y4=y3.*y2'%信号解调

ly4=length(y4);

ty4=(0:(ly4-1))/fs;

wy4=2/ly4*[0:ly4-1];

Y4=fft(y4);

figure(2)

subplot(3,1,1);plot(ty4,y4);

grid on;

title('解调后的波形');

xlabel('t');

ylabel('幅度');

subplot(3,1,2);plot(wy4,abs(Y4));

title('解调后波形频谱');

xlabel('w/pi');

ylabel('幅度');

grid on;

%设计巴特沃斯滤波器进行滤波去噪

[N1,wc1]=buttord(0.05,0.50,1,15);%确定低通滤波器的阶数和截止频率;

[b,a]=butter(N1,wc1);           %确定低通滤波器分子分母系数

[H,W]=freqz(b,a);

subplot(3,1,3);

plot(W,abs(H));

title('IIR滤波器频谱');

xlabel('w/pi');

ylabel('幅度');

grid on;

m=filter(b,a,y4);

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

grid on;

title('IIR滤波器滤波后波形');

xlabel('t');

ylabel('幅度');

subplot(2,1,2);plot(wm,abs(M));

title('IIR滤波器滤波后频谱');

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('布莱克曼窗频域')

%滤波处理

y6=conv(h1,y4);%用矩形窗对调制后信号进行滤波

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,y4);%用布莱克曼窗对调制后的信号进行滤波

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

 实验结果与分析:

由调制信号f(t)恢复原始信号g(t)的过程称为解调。这里,cos(w0*t)信号是接收端的本地载波信号,它与发送端的载波同频同相。f(t)与cos(w0*t)相乘的结果使频谱F(W)向左、右分别移动+w0、-w0(并乘以系数1/2),得到 

g0(t)=1/2*g(t)+1/2*g(t)*cos(w0*t)

G0(w)=1/2*G(w)+1/4*[G(w-2*w0)+G(w+2*w0)]

再利用一个低通滤波器,滤除在频率为2*w0附近的分量,即可取出g(t),完成解调。

窗函数法的设计步骤:

a、给定所要求的频率响应函数Hd(w);

b、求出hd(n);

c、有过渡带宽及阻带最小衰减的要求,选定窗w(n)的形状以及N的大小,一般N要通过几次试探才能确定;

d、求得所设计的FIR滤波器的单位抽样响应:h(n)=hd(n)*w(n);

e、求H(w),检验是否符合设计要求,如不满足,则需重新设计。

函数格式说明:

[n,wn]=buttord(wp,ws,rp,rs):n为滤波器的阶数,wn为其截止频率,wp为通带截止频率,ws为阻带截止频率,rp为通带最大衰减,,rs为阻带最小衰减。

[a,b]=butter(n,rp):a,b为所设计的滤波器传输函数分子和分母的系数。

[h,w]=freqz(a,b):求滤波器的频率响应h,w为频域坐标。

1、由调制后的信号频谱知调制过程实质为信号频域的搬移,而解调则为调制的逆过程;

 根据解调后信号的频谱,设置巴特沃斯IIR低通滤波器的通带截止频率为0.5,阻带截止 率为0.50,阻带和通带衰减分别为1db和15db;

2、由滤波器滤波后波形频谱知,与原信号频谱相比原信号频谱中的一些高频成分也被滤除,但总体来说滤波器所选指标还是能够较好地还原信号信息,通过播放滤波后音频也可以说明这一点;

3、对于窗函数的设计,其指标则是基于频谱图和过往经验的综合,为了便于比较两种窗函数滤波的效果,两种窗函数选用相同的指标;实验中设置窗函数的阶数N=33,其截止频率Wc=0.3*pi(比巴特沃斯IIR低通滤波器截止频率略大);通过比较两窗函数的频谱和滤波后的频谱知,矩形窗通带与阻带的过渡部分比较陡,对于高频信息滤除的比较彻底;而布莱克曼窗的过渡部分则相对比较平缓,相应的其对于高频信息的滤除就没有矩形窗那么彻底(相对而言);比较采用矩形窗和布莱克曼窗的频率特性图可以看出:最小阻带衰减只由窗形状决定,而不受阶数N的影响;而过渡带的宽度窗的形状有关;同时,布莱克曼窗的过滤带宽、旁瓣峰值和主瓣宽度均大于矩形窗的过滤带宽、旁瓣峰值和主瓣宽度;分别播放两种窗函数滤波后的声音,通过布莱克曼窗的声音比通过矩形窗的声音稍微响亮一些(不是很明显),这也印证了上面对于两种窗函数的分析。

5、音乐信号的滤波去噪

①给原始音乐信号叠加幅度为0.05,频率为3kHz、 5kHz、8kHz的三余弦混合噪声,观察噪声频谱以及加噪后音乐信号的音谱和频谱,并播放音乐,感受噪声对音乐信号的影响;

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

③根据步骤①、②观察到的频谱,选择合适指标设计滤波器进行滤波去噪,观察去噪后信号音谱和频谱,并播放音乐,解释现象。 

源程序:

clc;clear;close;

[y,fs,bit]=wavread('I do片段');

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,2,3);

plot(noise(1:150)); 

xlabel('时间(s)')

ylabel('幅值')

title('三余弦信号音谱')

subplot(2,2,1);%绘制三余弦噪声频谱图

plot(wa,abs(Noise));

grid on; 

xlabel('W')

title('噪声频谱')

w0=2/l*[0:l-1];%绘制加噪信号音频

Y1=fft(y1);

subplot(2,2,4)

plot(w0,abs(Y1));

grid on; 

xlabel('W')

title('加噪信号频谱')

ly1=length(y1);

ty1=(0:ly1-1)/fs;

subplot(2,2,2);plot(ty1,y1);

xlabel('时间(s)')

ylabel('幅值')

title('加噪信号音谱')

m=rand(l,1)-0.5; %产生幅度为0.5的随机信号

lm=length(m);

y2=m+y0;%将噪声信号与原声音信号叠加

%sound(y2,fs);

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

grid on; 

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

grid on; 

xlabel('W')

title('加噪信号频谱')

subplot(2,2,2);plot(ty2,y2);

xlabel('时间(s)')

ylabel('加噪信号幅值')

title('加噪信号音谱'); 

%设计滤波器进行滤波去噪

[N1,wc1]=buttord(0.04,0.13,1,24);%确定低通滤波器的阶数和截止频率;

%[N1,wc1]=buttord(0.04,0.20,1,18);(针对随机白噪声的指标)

[b,a]=butter(N1,wc1);           %确定低通滤波器分子分母系数

[H,W]=freqz(b,a);

figure(3);

subplot(3,1,1);

plot(W,abs(H));%滤波器频谱

xlabel('w/pi')

ylabel('幅度k')

title('IIR滤波器滤波波形'); 

grid on;

m=filter(b,a,y1);%用滤波器滤除三余弦噪声

%sound(m,fs);

lm=length(m);%滤波后信号长度

tm=(0:lm-1)/fs;%设置横坐标

subplot(3,1,2);

plot(tm,m);%绘制滤波后的波形

xlabel('t(s)')

ylabel('信号幅值')

title('去噪后信号波形');      

k=fft(m);  %滤波后的波形做离散傅里叶变换

w=2*[0:length(k)-1]/length(k);

subplot(3,1,3)

plot(w,abs(k));

xlabel('w/pi')

ylabel('幅度k')

title('IIR滤波器滤波后信号频谱');    

 

实验结果与分析:

信号的去噪即根据信号噪声频谱的分布范围,从而采用不同的滤波器对其进行

滤波。常用的滤波器有IIR巴特沃斯低通滤波器,FIR窗函数滤波器。

Rand函数介绍:rand函数产生由在(0,1)之间均匀分布的随机数组组成的数组。Y = rand(n) 返回一个n x n的随机矩阵。如果n不是数量,则返回错误信息。

Y = rand(m,n) 或 Y = rand([m n]) 返回一个m x n的随机矩阵。

Y = rand(m,n,p,...) 或 Y = rand([m n p...]) 产生随机数组。

Y = rand(size(A)) 返回一个和A有相同尺寸的随机矩阵。1、rand(3)*-2 :rand(3)是一个3*3的随机矩阵(数值范围在0~1之间)然后就是每个数乘上-2; 2、 用matlab随机产生60个1到365之间的正数  :1+fix(365*rand(1,60));3、用rand函数随机取100个从-1到1的数x1,x2,...:x = rand(1,100) * 2 - 1

1、通过观察三余弦噪声和随机白噪声的频谱知,三余弦噪声的频谱为三条平行于y轴的线段;而随机白噪声则为连续的不规则的波形;加三余弦噪声后的音乐片段听着带有连续的蜂鸣声,而加随机白噪声的音乐片段听起来则是那种典型的噪声,并且也是不间断的;

2、由于对巴特沃斯滤波器有更深入的了解,且掌握的比较熟练,故在此处均采用巴特沃斯滤波器进行滤波去噪。参数选择如下:

三余弦去噪:由分析其频谱可知,三余弦混合噪声信号的三条频谱线分别加在频率为w1=0.136π,w2=0.227π和w3=0.363π处,所以选取wp=0.04*pi为通带截止频率,ws=0.13pi为其阻带截止频率,rp=1db为其通带最大衰减,,rs=24db为阻带最小衰减。.

随机白噪声去噪:由于随即白噪声信号是加在了整个时域和频域内,为了滤波的更彻底,所以选取较小的通带截止频率和阻带截止频率,并选取较大的组带最小衰减。wp=0.04pi为通带截止频率,ws=0.20pi为其阻带截止频率,rp=1db为其通带最大衰减,,rs=18db为阻带最小衰减。

用对应滤波器对加三余弦噪声的音频过滤后,原音乐片段的高频信息也被滤除了一部分,播放滤波后的音乐,音乐信号中仍然夹杂着少许蜂鸣声(当然比滤波前弱了许多);

用另一对应滤波器对加了随机白噪声音频过滤后,原音乐片段的频谱中也有相当一部分高频信息被滤除,并且播放滤波后的音乐片段时也夹杂着少许噪声;之所以无法完全滤除加在音乐片段上的噪声,一部分是因为仍有少量低频噪声叠加在音乐信号的低频部分,这是低通滤波器所无法滤出的,另一部分是因为所设计滤波器指标没有达到理想值;

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

① 设计低通滤波器,滤除原始音乐信号的高频信息,观察滤波前后的幅度频谱, 并比较滤波前后音乐效果,感受高频信息对音乐信号的影响;

②设计高通滤波器,滤除原始音乐信号的低频信息,观察滤波前后的幅度频谱, 并比较滤波前后音乐效果,感受低频信息对音乐信号的影响;

③选取两段不同的音乐信号,分别将其幅度谱和相位谱交叉组合构成新的音乐信号,播放并比较组合后音乐与原始音乐,感受相频信息对音乐信号的影响。

源程序:6-1、2

clear all;clc

[y,fs,bit]=wavread('I do片段');

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(3,1,1);

plot(W,abs(H));%低通滤波器波形

xlabel('w/pi')

ylabel('幅度k')

title('滤波器(低通)频谱'); 

grid on;

m2=filter(B2,A2,y1);%滤波

lm2=length(m2);

tm2=(0:lm2-1)/fs;

subplot(3,1,2)

plot(tm2,m2);

xlabel('n')

ylabel('信号幅值')

title('低通滤波器滤波后信号波形');   

%sound(m2,fs);

k2=fft(m2);                        %滤波后的波形做离散傅里叶变换

l2=length(k2);                        

w2=2*[0:l2-1]/l2;

subplot(3,1,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);

figure(3)

subplot(3,1,1);

plot(W1,abs(H1));%高通滤波器频谱

xlabel('w/pi')

ylabel('幅度k')

title('滤波器(高通)频谱'); 

grid on;

m=filter(B,A,y1); %滤波

lm=length(m);

tm=(0:lm-1)/fs;

subplot(3,1,2);

plot(tm,m);

xlabel('n')

ylabel('信号幅值m')

title('高通滤波器滤波后信号波形');      

%sound(m,fs);

k=fft(m); %滤波后的波形做离散傅里叶变换

l2=length(k);                        

w2=2*[0:l2-1]/l2;

subplot(3,1,3);

plot(w2,abs(k));

xlabel('数字角频率w')

ylabel('幅度k')

title('IIR高通滤波器滤波后信号频谱');  

实验结果与分析:

1、用低通滤波器滤波后,声音变小了,但听起来很刺耳,失真很严重,无法辨别歌声;

2、用高通滤波器滤波后,声音听起来很低沉,听起来就好像有杂音一样,但基本还能辨别原歌曲音调;

6-3选取两段音乐信号,分别将其幅度谱和相位谱交叉组合构成新的音乐信号

clear all;clc

[a,fs1,bit1]=wavread('I do片段');

[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);%音乐2的幅度与音乐1的相位交叉组合

X2=ifft(F2);%音乐2的幅度与音乐1的相位交叉组合后的信号函数

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);%绘制音乐信号2的波形

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

实验结果与分析:

1、音乐1的幅度和音乐2的相频交叉组合,播放产生的新的音乐信号,还能听得出音乐2的音调,并且与原音乐2的音调相比夹杂了一些噪音;

2、音乐2的幅度和音乐1的相频交叉组合,播放产生的新的音乐信号,还能听得出音乐1的音调,并且与原音乐1的音调相比夹杂了一些噪音;

3、音乐信号的相频决定了不同频率成分震动的初相位,而幅频决定了不同频率成分震动的幅度大小,综合1,2知相频在音乐信号起主要作用(就音乐信号的旋律而言)。

四、学习matlab的心得体会:

通过近两个月的学习,我觉以下几点对于学好matlab很重要:兴趣、悟性和坚持。

 1.多动手写程序、调试,先有量变后有质变

下面是一些常见错误提示信息

1.Subscript indices must either be real positive integers orlogicals

中文解释:下标索引必须是正整数类型或者逻辑类型

出错原因:在访问矩阵(包括向量、二维矩阵、数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。

解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。

2.Undefined function or variable "a"

中文解释:函数或变量 a 没有定义

3.Input argument "x" is undefined

中文解释:输入变量 x 没有定义

4.Matrix dimensions must agree

Inner matrix dimensions must agree

中文解释:矩阵的维数必须一致

出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。matlab通过“.”来区分矩阵运算和元素运算

5.Function definitions are not permitted at the prompt or inscripts

中文解释:不能在命令窗口或者脚本文件中定义函数

出错原因:一旦在命令窗口写 function c = myPlus(a,b),此错误就会出现,因为函数只能定义在 m 文件中

6. 1) X must have one or two columns

   2)Vectors must be the samelengths

中文解释:

1. X 必须是 1 或者 2 列

2. 向量长度必须一致

7.One or more output arguments not assigned during call to'...'

中文解释:在调用...函数过程中,一个或多个输出变量没有被赋值

8. Error using ==> mpower

Matrix must be square

中文解释:错误使用mpwoer函数,要求矩阵必须是方阵

9.Explicit integral could not be found.

中文解释:显式解没有找到

10.Index exceeds matrix dimensions.

Attempted to access b(3,2); index out of bounds becausesize(b)=.

中文解释:索引超出矩阵的范围

11.In an assignment   A(I) =B, the number of elements in B and I must be the same

中文解释:在赋值语句 A(I) = B 中,B 和 I 的元素个数必须相同

12.To RESHAPE the number of elements must not change

中文解释:矩阵变换时,变换前和变换后的总元素不能改变

正确的理解了错误提示信息的含义,程序的修改就会变得事半功倍。

2.善于利用MATLAB的帮助

一遇到什么问题,通常我的第一反应是:help,就先说说自己对help的一些常用方法吧。

1)命令窗口直接敲“help”,你就可以得到本地机器上matlab的基本的帮助信息。

2)对于某些不是很明确的命令,只知道大体所属范围,譬如说某个工具箱,直接在命令窗口中敲入

Help toolboxname,就可以得到本工具箱有关的信息:版本号,函数名等。

3)知道函数名,直接用help funname就可以得到相应的帮助信息。

3.善于向别人学习,多看别人写的代码并消化

三人行,必有我师,一个人很难什么都精通,取长补短是最快的进步方法。

五、探究与创新:

1、IIR数字滤波器和FIR数字滤波器的比较

答:IIR滤波器:相位一般是非线性的,不一定稳定,不能使用fft做快速卷积,一定是递归结构,对频率分量的选择性好(零极点可同时起作用),相同性能下阶次较低,有噪声反馈,噪声大,运算误差大,有可能出现极限环振荡,设计时有大量图表可查,方便简单,主要用于设计分段常数的标准低通,带通,高通,带阻和全通滤波器。

     FIR滤波器:相位可以做到严格线性,一定是稳定的,信号通过系统可采用快速卷积,主要是非递归结构,也可含递归结构,选择性差,相同性能下阶次高,噪声小,运算误差小,不会出现极限环振荡,可设计正交变换器、微分器、线性预测器、线性调频器等各种网络,适用范围广。

     其中,FIR滤波器的最大好处是稳定、线性相位和广泛的适用范围,而它的最大

缺点是阶数高,从而带来时延大、存储单元多等问题。例如用频率抽样法设计阻带衰耗为-20dB的FIR DF需33阶,用双线性法设计同样指标的切比雪夫IIR DF仅需4~5阶。因此,在一些对时延有严格的场合就不得不考虑用IIR滤波器。语音信号对相位的非线性不很敏感。数据和图象信号则往往对滤波器提出线性相位的要求,这就是为什么FIR用得越来越广的原因。总之,IIR和FIR各有特点,在应用时要根据各方面的指标,综合考虑加以选择。

2、音乐信号的音调与信号的什么特征有关?

答:音调主要由声音的频率决定。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随响度增加而下降,高频纯音的音调却随响度增加而上升。音调的高低还与发声体的结构有关,因为发声体的结构影响了声音的频率。所以音乐信号的音调与信号的频率有关。音调还与声音持续的时间长短有关。非常短促(毫秒量级或更短)的纯音,只能听到像打击或弹指那样的“喀嚓”一响,感觉不出音调。持续时间从10 毫秒增加到50 毫秒,听起来觉得音调是由低到高连续变化的。超过50 毫秒,音调就稳定不变了。

3、音乐信号的音色与信号的什么特征有关?

答:音乐信号的音色是指对声音音质的感觉特性,也是一种声音区别于另一种声音的特征品质。音色的不同取决于不同的泛音,每一种乐器、不同的人以及所有能发 

声的物体发出的声音,除了一个基音还有许多不同频率的泛音伴随,正是这些泛音决定了其不同的音色,使人能辨别出是不同的乐器甚至不同的人发出的声音。而泛音的不同指的是频谱的不同,所以音乐信号的音色与信号的频谱或频率特性有关。

4、两种不同音色的音乐信号叠加混叠后,为何人耳还可以分辨?

答:人耳听觉系统实际上就是一个音频信号处理器,可以完成对声音信号的传输、转换以及综合处理的能力。而音乐信号的音色与音乐信号的频谱分布有关,不同音色的音乐信号的频谱当然不会相同,当混叠后的音乐信号进入人耳的听觉系统后,人耳通过对混叠信号的频谱处理,可以将具有不同频谱的声音信号分离开,也就达到了分辨不同音色的音乐信号的目的。

5、音乐信号的幅度与相位特征对信号有哪些影响?

答:音乐信号的相位发生改变会引起信号时域特性发生改变;音乐信号的幅度发生变化会影响信号的频谱幅度。

文档

数字信号处理课程设计基于 matlab 的音乐信号处理和分析

《数字信号处理》课程设计设计题目:基于MATLAB的音乐信号处理和分析一、课程设计的目的本课程设计通过对音乐信号的采样、抽取、调制、解调等多种处理过程的理论分析和MATLAB实现,使学生进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;使学生掌握的基本理论和分析方法知识得到进一步扩展;使学生能有效地将理论和实际紧密结合;增强学生软件编程实现能力和解决实际问题的能力。二、课程设计基本要求1学会MATLAB的使用,掌握MATLAB的基本编程语句。2掌握在Windows环境下音乐信号采集的
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top