广州大学
《数字信号处理实验》
综合设计性实验
报告册
实验项目 数字音频信号的分析与处理
学院 机械与电气工程学院年级专业班 电子信息工程
姓名 学号 成绩
实验地点 电子楼316 指导老师 黄高飞
《综合设计性实验》预习报告
实验项目: 数字音频信号的分析与处理
一 引言:
数字信号处理技术在音频信号处理中的应用日益增多,其灵活方便的优点得到体现。分频器即为其中一种音频工程中常用的设备。
人耳能听到的声音频率范围为20Hz~20000Hz,但由于技术所限,扬声器难以做到在此频率范围内都有很好的特性,因此一般采用两个以上的扬声器来组成一个系统,不同的扬声器播放不同频带的声音,将声音分成不同频带的设备就是分频器。
二 实验目的:
1.复习巩固数字信号处理的基本理论;
2.利用所学知识研究并设计工程应用方案。
三 实验原理:
数字信号处理技术在音频信号处理中的应用日益增多,其灵活方便的优点得到体现。分频器即为其中一种音频工程中常用的设备。
人耳能听到的声音频率范围为20Hz~20000Hz,但由于技术所限,扬声器难以做到在此频率范围内都有很好的特性,因此一般采用两个以上的扬声器来组成一个系统,不同的扬声器播放不同频带的声音,将声音分成不同频带的设备就是分频器。下图是一个二分频的示例。
图8.1 二分频示意图
高通滤波器和低通滤波器可以是FIR或IIR类型,其中FIR易做到线性相位,但阶数太高, 不仅需要耗费较多资源,且会带来较长的延时;IIR阶数低,但易出现相位失真及稳定性问题。
对分频器的特性,考虑最多的还是两个滤波器合成的幅度特性,希望其是平坦的,如图8.2所示:
图8.2 分频器幅度特性
由于IIR的延时短,因此目前工程中大量应用的还是Butterworth、Bessel、Linkwitz-Riley三种IIR滤波器。其幅频特性如图8.3所示:
图8.3 三种常用IIR分频器的幅度特性
巴特沃斯、切比雪夫、椭圆等类型的数字滤波器系数可通过调用MATLAB函数很方便的计算得到,但Bessel、Linkwitz-Riley数字滤波器均无现成的Matlab函数。
为了使设计的IIR滤波器方便在DSP上实现,常将滤波器转换为二阶节级联的形式。
设计好分频器后,为验证分频后的信号是否正确,可用白噪声信号作为输入信号,然后对分频后的信号进行频谱分析。
四 实验内容:
任意选择两种类型的IIR数字滤波器,设计一个二分频的数字分频器,已知系统的采样率为48000Hz。
(1)分频点为2000Hz;
(2)要求给出类似图8.3的幅频特性图,分频器的幅频响应平坦,在分频点处最多不能超过3dB的偏差;
(3)滤波器必须是二阶节形式;
(4)给出相位特性图;
(5)用频谱分析的方法验证设计好的分频器;
(6)对选用的两种类型的滤波器效果进行对比。
五 重点问题:
如何实现滤波器
六 参考文献:
《数字信号处理原理实现、应用》
广州大学
原始数据记录表
学生姓名孔志荣 学号1107400052 同组人
班别 电信2班 专业 通信 学院 机械与电气工程
实验项目数字音频信号的分析与处理 指导老师 黄高飞
实验进行时间 20## 年 6 月23日 时至 时;实验地点 室温 湿度 天气
原始数据记录:
备注:
注:此表格必须附在《实验报告》内一并交给任课老师。
《综合设计性实验》实验报告
实验名称:
摘要:
一 引言:
数字信号处理技术在音频信号处理中的应用日益增多,其灵活方便的优点得到体现。分频器即为其中一种音频工程中常用的设备。
人耳能听到的声音频率范围为20Hz~20000Hz,但由于技术所限,扬声器难以做到在此频率范围内都有很好的特性,因此一般采用两个以上的扬声器来组成一个系统,不同的扬声器播放不同频带的声音,将声音分成不同频带的设备就是分频器。
二 实验要求:
任意选择两种类型的IIR数字滤波器,设计一个二分频的数字分频器,已知系统的采样率为48000Hz。
(1)分频点为2000Hz;
(2)要求给出类似图8.3的幅频特性图,分频器的幅频响应平坦,在分频点处最多不能超过3dB的偏差;
(3)滤波器必须是二阶节形式;
(4)给出相位特性图;
(5)用频谱分析的方法验证设计好的分频器;
(6)对选用的两种类型的滤波器效果进行对比。
三 实验仪器:
Matlab 7.0
四 实验步骤:
任意选择两种类型的IIR数字滤波器,设计一个二分频的数字分频器,已知系统的采样率为48000Hz。
(1)分频点为2000Hz;
(2)要求给出类似图8.3的幅频特性图,分频器的幅频响应平坦,在分频点处最多不能超过3dB的偏差;
(3)滤波器必须是二阶节形式;
(4)给出相位特性图;
(5)用频谱分析的方法验证设计好的分频器;
(6)对选用的两种类型的滤波器效果进行对比。
五 数据处理及实验结果表示:
wc=4000/48000;
N=3;
[B1,A1]=cheby1(N,3,wc);
[Hl,wl]=freqz(B1,A1);
fl=48000*wl/(2*pi);
subplot(5,1,1); semilogx(fl,20*log10(abs(Hl)));
set(gca,'XLim',[100,20000]);
set(gca,'YLim',[-40,10]);
hold on
[B2,A2]=cheby1(N,3,wc,'high');
[Hh,wh]=freqz(B2,A2);
fh=48000*wh/(2*pi);
semilogx(fh,20*log10(abs(Hh)));
set(gca,'XLim',[100,20000]);
set(gca,'YLim',[-40,10]);
hold off
B=conv(B1,A2)+conv(B2,A1);
A=conv(A1,A2);
[H,w]=freqz(B,A);
f=48000*w/(2*pi);
subplot(5,1,2);semilogx(f,20*log10(abs(H)));
set(gca,'XLim',[100,20000]);
set(gca,'YLim',[-40,10]);
subplot(5,1,3);zplane(B1,A1);
subplot(5,1,4);zplane(B2,A2);
subplot(5,1,5);zplane(B,A);
3阶切比雪夫1型滤波器
wc=4000/48000;
N=3;
[B1,A1]=butter(N,wc);
[Hl,wl]=freqz(B1,A1);
fl=48000*wl/(2*pi);
subplot(5,1,1); semilogx(fl,20*log10(abs(Hl)));
set(gca,'XLim',[100,20000]);
set(gca,'YLim',[-40,10]);
hold on
[B2,A2]=butter(N,wc,'high');
[Hh,wh]=freqz(B2,A2);
fh=48000*wh/(2*pi);
semilogx(fh,20*log10(abs(Hh)));
set(gca,'XLim',[100,20000]);
set(gca,'YLim',[-40,10]);
hold off
B=conv(B1,A2)+conv(B2,A1);
A=conv(A1,A2);
[H,w]=freqz(B,A);
f=48000*w/(2*pi);
subplot(5,1,2);semilogx(f,20*log10(abs(H)));
set(gca,'XLim',[100,20000]);
set(gca,'YLim',[-40,10]);
subplot(5,1,3);zplane(B1,A1);
subplot(5,1,4);zplane(B2,A2);
subplot(5,1,5);zplane(B,A);
3阶巴特沃斯滤波器
wc=4000/48000;
N1=1;N2=2;
[B1,A1]=butter(N1,wc);
[B2,A2]=butter(N2,wc);
B3=conv(B1,B2);
A3=conv(A1,A2);
[Hl,wl]=freqz(B3,A3);
fl=48000*wl/(2*pi);
subplot(5,1,1); semilogx(fl,20*log10(abs(Hl)));
set(gca,'XLim',[100,20000]);
set(gca,'YLim',[-40,10]);
hold on
[B4,A4]=butter(N1,wc,'high');
[B5,A5]=butter(N2,wc,'high');
B6=conv(B4,B5);
A6=conv(A4,A5);
[Hh,wh]=freqz(B6,A6);
fh=48000*wh/(2*pi);
semilogx(fh,20*log10(abs(Hh)));
set(gca,'XLim',[100,20000]);
set(gca,'YLim',[-40,10]);
hold off
B=conv(B3,A6)+conv(B6,A3);
A=conv(A3,A6);
[H,w]=freqz(B,A);
f=48000*w/(2*pi);
subplot(5,1,2);semilogx(f,20*log10(abs(H)));
set(gca,'XLim',[100,20000]);
set(gca,'YLim',[-40,10]);
subplot(5,1,3);zplane(B1,A1);
subplot(5,1,4);zplane(B2,A2);
subplot(5,1,5);zplane(B,A);
2级巴特沃斯滤波器
六 实验结果分析:
滤波前:
滤波后:
可以看出滤波后幅度明显增大,回放时声音与原声音没太大出入。
七 实验心得:
学会使用多种滤波器构造方法,如巴特沃斯二阶滤波器,切比雪夫,把幅频曲线用更好的方式来观察器衰减情况。
八 参考文献:
数字信号处理——原理、实现与应用
第二篇:基于matlab数字信号处理探究性实验报告...
《数字信号处理》课程研究性学习报告
姓 名 学号
同组成员 学号
学号
学号
时 间
Matlab对任意确定信号的频谱分析
一、背景前言
随着大规模集成电路和微处理器技术的迅猛发展,信号处理逐渐发展成为一门独立的学科,成为信息科学的重要组成部分,在语音处理、图像处理、多媒体技术、通信、生物医学工程等众多领域中得到广泛应用,且其研究范围和应用领域还在不断地发展和扩大。
MATLAB是一种强大的分析、计算及可视化工具。MATLAB功能强大、简单易学、编程效率高,被广泛运用于信息处理领域,同时也很方便地进行语音信号地分析、处理和设计。
本课题的设计主要是用MATLAB作为工具平台,设计中涉及到语音信号的抽样、频谱分析,滤波器的设计及语音信号的滤波,通过数字信号处理课程的理论知识的综合运用。从实践上初步实现了对数字信号的处理。
二、设计内容
(1)对给定的CEG和弦音音频文件取合适长度的采样记录点,然后进行频谱分析(信号的时域及幅频特性曲线要画出)。
(2)分析CEG和弦音频谱特点,对该信号频谱能量相对较为集中的频带(分低、中、高频)实现滤波(分别使用低通,带通及高通),显示滤波后信号的时域和频域曲线,并对滤波后的信号与原信号的音频进行声音回放比较。
(3)在低、中、高三个频带中,各滤出三个能量最集中的频簇,显示滤波后信号的时域和频域曲线。
讨论:根据上述结果,分析什么是和弦音。
三、设计原理
采用双线性变换法设计滤波器,其原理如下:
S平面与z平面之间满足以下映射关系:
s平面的虚轴单值地映射于z平面的单位圆上,s平面的左半平面完全映射到z平面的单位圆内。双线性变换不存在混叠问题。
双线性变换时一种非线性变换 ,这种非线性引起的幅频特性畸变可通过预畸而得到校正。
IIR低通、高通、带通数字滤波器设计采用双线性原型变换可以利用上面提到的原理分别用双线性变化法设计以上3种滤波器,可以利用函数fir1设计FIR滤波器,可以利用函数butte,cheby1和ellip设计IIR滤波器;利用MATLAB中的函数freqz画出各滤波器的频率响应。
四、设计内容及结果分析
1、对给定的CEG和弦音音频文件取合适长度的采样记录点,然后进行频谱分析,并画出信号的时域及幅频特性曲线。
和弦音信号的时域及幅频特性曲线如下:
2、对该信号频谱能量相对较为集中的频带(分低、中、高频)实现滤波(分别使用低通,带通及高通),同时显示滤波后信号的时域和频域曲线,并对滤波后的信号与原信号的音频进行声音回放比较。
(1)低通滤波器 滤波结果如下:
(2)高通滤波器滤波结果如下:
(3)带通滤波器滤波结果如下:
结果分析:
将三个(或三个以上)不同的音阶,按照一定的关系结合在一起,即为和弦,这就是和弦音的定义。通过MATLAB对音频文件经过简单的低通,带通和高通滤波器滤波,即对三个不同的频带分别进行频谱分析及声音比较,再将三个不同的频带信号合成并比较声音。可以知道,和弦音可分解为不同频带的单音信号,在不同频带其频率分布及其振幅大小的不同都会造成音律不同,同理,不同频带的单音信号重建也会组合成音律不同的和弦音。
五、学习体会收获
采用MATLAB进行数字信号处理课程设计,使我加深了对课堂抽象概念的理解,巩固了课堂上所学的理论知识,并能较好地理解数字信号处理中的基本概念、基本原理、基本分析方法。特别是关于IIR滤波器处理音频文件有了更深的理解。
由于课本知识掌握不好,知识面不够,在整个设计过程中有很多地方出错,但通过网上查阅资料和到图书馆查资料并请教同学,最后得到很好的解决。
在与同学的相互讨论和自己的努力下,我终于把课程设计完成了。通过这次设计,我对MATLAB和滤波器有了更深入的理解。
六、参考文献
1、数字信号处理(第三版)高西全 丁美玉 编著 西安电子科技大学出版社
2、百度搜索调用信号产生函数xtg产生具有加性噪声的信号xt,并自动显示xt及其频谱
3、MATLAB 7简明教程 李南南 吴清 曹辉林 编著 清华大学出版社
4、张贤达 编《现代信号处理(第二版)》清华大学出版社2002
七、附录程序
弦音信号的时域及幅频特性:
程序如下:
Fs=8000; %语音信号采样频率为8000
x=wavread('CEG.wav',[1000 8000]'); %读取和弦音从1000到8000点的值
sound(x); %播放原语音
t=(0: [8000-1000])/Fs; %计算从1000到8000点的时间
y=fft(x,5000); %对语音信号进行FFT运算
f=Fs*(0:2499)/5000;
figure(1);
subplot(2,1,1) %按两行一列画出图形
plot(x); %画出时域图形
title('和弦音信号的时域图'); %标题为原始信号的时域图
xlabel('时间'); %X轴标题为时间
ylabel('幅值'); %y轴标题为幅值
subplot(2,1,2);
plot(f,abs(y (1:2500))); %画出幅值图
title('和弦音信号的频谱图');
xlabel('频率');
ylabel('幅值');
设计低通滤波器:
Fs=8000;
x=wavread('CEG.wav',[1000 8000]'); %读出和弦音信号
t=(0: [8000-1000])/Fs; %计算从1000到8000点的时间
y=fft(x,5000); %对和弦音信号进行FFT运算
f=Fs*(0:2499)/5000;
Ws=2*1200*1/8000; %滤波器的阻带截止频率
Wp=2*1000*1/8000; %滤波器的通带截止频率
Rs=100;Rp=1; %数字低通滤波器参数
[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs); %估计切贝雪夫I型滤波器阶数
[num,den]=cheby1(N,Rp,Wn,'low'); %切贝雪夫I型低通滤波器系统函数;
[h,w]=freqz(num,den); %计算幅频响应
subplot(3,1,1); %画出图象位置
plot(w/pi,abs(h));grid; %画网格
xlabel('\omega/\pi'); %x轴坐标
ylabel('振幅'); %y轴坐标为振幅
title('契比雪夫Ⅰ型低通滤波器的幅频响应'); %标题
f1=filter(num,den,x); %滤波
y=fft(f1,8000); % 进行fft变换
subplot(3,1,2); %画出图象位置
plot(f1); %画出原语音信号经低通后图像
title('低通滤波后的信号'); %标题
xlabel('时间'); %x轴坐标
ylabel('幅值'); %y轴坐标
subplot(3,1,3); %输出图象位置
plot(abs(y(1:4000))); % 画出频谱图像
title('低通后滤波信号频谱')%标题
xlabel('频率'); %x轴坐标
ylabel('幅值'); %y轴坐标
wavwrite(f1,'低通.wav'); %写出低通后信号
x1=wavread('低通.wav'); %读取低通后信号
sound(x1);
设计高通滤波器:
Fs=8000;
x=wavread('CEG.wav',[1000 8000]'); %读出和弦音信号
t=(0: [8000-1000])/Fs; %计算从1000到8000点的时间
y=fft(x,5000); %对和弦音信号进行FFT运算
f=Fs*(0:2499)/5000;
Ws1=2*3000*1/8000;
Wp1=2*3200*1/8000;
Rs1=100;Rp1=1;
[N1,Wn1]=cheb1ord(Wp1,Ws1,Rp1,Rs1); %估计切贝雪夫Ⅰ型滤波器阶数
[num1,den1]=cheby1(N1,Rp1,Wn1,'high');%切贝雪夫I型高通滤波器系统函数;
[h1,w1]=freqz(num1,den1); %计算幅频响应
subplot(3,1,1); %显示图象位置
plot(w1/pi,abs(h1)); %画出幅值图
xlabel('\omega/\pi'); %x轴坐标
ylabel('振幅'); %y轴坐标
title('契比雪夫Ⅰ型高通滤波器的幅频响应'); %标题
f2=filter(num1,den1,x); %滤波
y1=fft(f2,8000); %进行fft变换
subplot(3,1,2); %输出图像位置
plot(f2); %做原始语音信号的时域图形
title('高通滤波后的信号'); %标题
xlabel('时间'); %x轴坐标
ylabel('幅值'); %y轴坐标
subplot(3,1,3); %输出图像位置
plot(abs(y1(1:4000))); %画出频谱图像
title('高通滤波后的信号频谱'); %标题
xlabel('频率'); %x轴坐标
ylabel('幅值'); %y轴坐标
wavwrite(f2,'高通.wav'); %写出高通后信号
x2=wavread('高通.wav'); %读出高通后信号
sound(x2); %播放高通后信号
设计带通滤波器:
Fs=8000;
x=wavread('CEG.wav',[1000 8000]'); %读出和弦音信号
t=(0: [8000-1000])/Fs; %计算从1000到8000点的时间
y=fft(x,5000); %对和弦音信号进行FFT运算
f=Fs*(0:2499)/5000;
Wp2=[2*1200/Fs 2*3000/Fs]; %在1的dB衰减处的边带频率
Ws2=[2*1000/Fs 2*3200/Fs]; %在衰减为100dB处的边带频率
Rp2=1; %通带损耗不大于1dB
Rs2=100; %阻带衰减不小于100dB
[N2,Wn2]=cheb1ord(Wp2,Ws2,Rp2,Rs2); %估计切贝雪夫滤波器阶数
[num2,den2]=cheby1(N2,Rp2,Wn2); %切贝雪夫滤波器系统函数
[h2,w2]=freqz(num2,den2); %计算频谱响应
figure(4); %第四个图形
subplot(3,1,1); %输出图像位置
plot(abs(h2));grid; %画出幅值图
xlabel('\omega/\pi'); %x轴坐标名称
ylabel('振幅'); %y轴坐标名称
title('契比雪夫Ⅰ型带通滤波器的幅频响应'); %图形名称
f3=filter(num2,den2,x); %滤波
y3=fft(f3,8000); %作fft变换
subplot(3,1,2); %输出图像位置
plot(f3); %做原始语音信号的时域图形
title('带通滤波后的信号'); %图像名称
xlabel('时间'); %x轴名称
ylabel('幅值'); %y轴名称
subplot(3,1,3); %输出图像位置
plot(abs(y3(1:4000))); %画出频谱图像
title('带通滤波后的信号频谱') %图像名称
xlabel('频率'); %x轴坐标名称
ylabel('幅值'); %y轴名称
wavwrite(f3,'带通.wav'); %写出过滤后带通信号
x3=wavread('带通.wav'); %读出过滤后带通信号
sound(x3);