DSP实验六音频信号处理实验.docx
- 文档编号:16317314
- 上传时间:2023-07-12
- 格式:DOCX
- 页数:15
- 大小:313.43KB
DSP实验六音频信号处理实验.docx
《DSP实验六音频信号处理实验.docx》由会员分享,可在线阅读,更多相关《DSP实验六音频信号处理实验.docx(15页珍藏版)》请在冰点文库上搜索。
DSP实验六音频信号处理实验
实验题目:
音频信号处理实验
班级:
姓名:
学号:
日期:
2016年6月10日
一、实验目的:
1.了解音频codec芯片的程序控制原理。
2.掌握常用滤波器的设计方法。
3. 掌握滤波器在DSP中的实现方法和验证方法。
4.掌握音频信号的时频分析方法。
二、实验原理:
1.音频codec芯片性能指标及控制方法
-初始化配置:
DSP将配置命令发送到音频codec芯片,配置完成后音频codec芯片
开始工作。
-声音信号的输入:
采集的声音数据可以是点数据或块数据。
-声音信号的输出:
DSP将处理好的声音数据发送给音频codec芯片,输出模拟信号。
2.音频滤波处理
音频处理设备是指对音频信号进行修饰和加工处理的部件、装置和设备。
音频处理设备
通常是围绕调音台连接的,因此又称为周边设备。
通过改变相应的声音物理参量的方法来达
到改变响度、音调、音色等。
常用的有滤波器、均衡器、延时混响等等。
本实验要求选择一
种音频处理功能,设计相应的数字信号处理算法,并在DSP实验箱中实现。
3.算法推导
长度为M的因果有限冲击响应滤波器由传输函数H(z)描述:
它是次数为M-1的
的一个多项式。
在时域中,上述有限冲激响应滤波器的输入输出关系为:
其中y(n)和x(n)分别是输出和输入序列。
根据系数h是偶对称为了简化运算产生如下计算方法
根据这个公式,即可设计出理想的fir滤波器。
4.程序流程图
MATLAB仿真:
dsp仿真实验:
三、仪器设备:
1.硬件:
计算机一台。
2.软件:
MATLABR2012a
3.Ccs2.2
4.DM642实验箱,耳机,麦克风。
四、实验步骤:
(一)、MATLAB仿真实验:
1、原始信号获取与处理
(1)选取一段事先录制好的wav音频文件(“原始信号.wav”),作为实验的原始语音信号。
部分程序如下:
[y,fs,nbits]=wavread('\原始信号.wav');
(2)对该信号进行加噪处理。
分别在6000Hz、6100Hz、6200Hz、6300Hz、6400Hz五个频率点加一段正弦波或余弦波信号,以此作为噪声。
部分程序如下:
n=length(y);%求出语音信号的长度
m=0:
n-1;
w=2*m/n;
s=[0.03*cos(2*pi*4800*m/fs)]'+[0.04*sin(2*pi*4900*m/fs)]'+[0.02*cos(2*pi*5000*m/fs)]'+[0.03*sin(2*pi*5100*m/fs)]'+[0.04*sin(2*pi*5200*m/fs)]';
x=y+s;
(3)分别对原始信号和加噪后的信号进行时域和频域分析。
%原始信号波形
figure
(1)
Y=fft(y,n);%傅里叶变换
subplot(2,1,1);
plot(y);title('原始信号波形');
subplot(2,1,2);
plot(w,abs(Y));
title('原始信号频谱')
%加噪后信号波形
figure
(2)
X=fft(x,n);
subplot(2,1,1);
plot(x);title('加噪声后信号波形');
subplot(2,1,2);
plot(w,abs(X));
title('加噪声后信号频谱');
2、实现fir带阻滤波器的设计
(1)根据希望达到的效果确定通带边界频率、通带截止频率、阻带边界频率和阻带截止频率。
(2)根据上一步结果确定fir带阻滤波器的过渡带宽。
(3)根据第二步结果确定滤波器的阶数。
(4)确定截止频率
(5)利用fir1函数实现fir带阻滤波器的设计
(6)利用设计好的滤波器对加噪后的信号进行滤波
(7)根据前面设计好的fir带阻滤波器获取滤波器的系数
Fir滤波器程序如下:
fs1=2500;fp1=5400;fp2=5600;fs2=9000;
Bt=(fp1*2/fs-fs1*2/fs)*pi;
N1=ceil(6.6*pi/Bt);
N=N1+mod(N1+1,2);
wn1=[(fs1+fp1)/2,(fs2+fp2)/2];
wn=wn1*2/fs;
hn=fir1(N-1,wn,'stop');
fir_x=filter(hn,1,x);
生成滤波器系数h:
fid=fopen('C:
\Users\ZXC\Desktop\xishu.txt','wt');
[m,n]=size(hn);
fori=1:
1:
m
forj=1:
1:
n
ifj==n
fprintf(fid,'%0.4f\n',hn(i,j));
else
fprintf(fid,'%0.4f,',hn(i,j));
end
end
end
fclose(fid);
3、将加噪后的原始信号生成dat文件
(1)根据前面的结果生成加噪信号的dat文件(“xishu.dat”),以便dsp仿真使用。
fid=fopen('C:
\Users\ZXC\Desktop\xishu.dat','w');
fprintf(fid,'16511000\n');
fork=1:
length(y1)
y1(k)=round(y1(k));
ify1(k)<16
fprintf(fid,'0x000%x\n',y1(k));
elseify1(k)<256
fprintf(fid,'0x00%x\n',y1(k));
elseify1(k)<4096
fprintf(fid,'0x0%x\n',y1(k));
else
fprintf(fid,'0x%x\n',y1(k));
end
end
fclose(fid);
(二)、dsp仿真实验:
1、设置CodeComposerStudio2.2在软件仿真方式下运行
2、启动CodeComposerStudio2.2。
双击桌面上“CCS2(‘C6000)”,启动CodeComposerStudio2.2;
3、打开工程
单击菜单“Project”->“Open”,打开先前fir实验用的fir.pjt工程
4、修改参数
用之前MATLAB实验获得的fir带阻滤波器系数h代替刚打开的fir工程的fir.c文件系数h,修改volume.h文件的FIRSIZE的大小为27。
5、编译并下载程序
单击菜单“Project”->“RebuildAll”;执行File->LoadProgram,在随后打开的对话框中选择刚刚建立debug\fir.out文件。
6、输入数据
(1)移动光标到主函数的dataIO()这一行,右击鼠标选择ToggleProbePoint项。
再右击鼠标选择ToggleBreakPoint项。
如图:
(2)打开File选单,选择FileI/O选项,打开FileI/O对话框,在这个对话框中,可以选择输入/输出文件。
(3)在FileInput属性页下,点击AddFile按钮。
选择本工程文件夹下的xishu.dat文件。
如图:
(4)单击打开按钮,把文件添加到FileInput属性页下的列表框中,使“WrapAround”前的对勾被选中,输入Address为:
inp_tempbuf,长度为:
8。
(5)选择“Addprobepoint”进入Break/Probe/ProfilePoints对话框,在ProbePoints属性栏中选中断点,在Connent的属性框中选择输入波形的位置,单击Replace并单击确定,完成设置。
如图:
(6)打开View选单,选择Graph下的Time/Frequency选项。
(7)在GraphProperty对话框中,修改以下选项为当前值。
点击OK按钮,显示输入信号的时域波形
(8)重复上两步,修改以下选项为当前值。
点击OK按钮,显示输出信号的时域波形
(9)重复前面步骤步,修改以下选项为当前值。
点击OK按钮,显示输入信号的频域波形
(10)重复前面步骤步,修改以下选项为当前值。
点击OK按钮,显示输出信号的频域波形
(11)打开“Debug”选单,选择“Run”选项或按F5运行程序,观察结果。
(12)打开“Debug”选单,选择“Halt”选项或按Shift-F5终止实验结果。
五、数据记录:
(一)、MATLAB仿真实验:
1、获取的原始音频文件长度:
n=12218
原始信号的时域和频域波形:
加噪信号的时域和频域波形:
滤波后的时域和频域波形
2、设计的fir带阻滤波器阶数:
N=27
滤波器系数h:
hn=
-0.00010.00240.0023-0.0118-0.00510.01820.0019
0.01700.0098-0.1192-0.01780.24540.00920.6957
0.00920.2454-0.0178-0.11920.00980.01700.0019
0.0182-0.0051-0.01180.00230.0024-0.0001
3、fir带阻滤波器
(二)、dsp仿真实验:
1000点时域:
输入:
输出:
1000点频域:
输入频域:
输出频域:
六、实验结果讨论:
在本实验中,首先通过MATLAB读取一段音频,然后对音频信号(在5000Hz处)用余弦和正弦混合信号进行加噪,对比加噪前后的声音频谱,可以看到,在5000Hz附近频段上有明显加进去的噪声信号。
之后用MATLAB设计一个fir带阻滤波器,阻带在5000Hz附近频段,阶数为27,用设计好的fir带阻滤波器对加噪后的声音信号进行滤波处理,对比滤波前后的噪声信号的频谱图,可以看到,噪声信号已经明显被滤除掉。
通过fir滤波器来获得相应的滤波系数h,将h带入到dsp中的fir滤波器中,然后通过dsp中的fir算法对加噪后的原始信号进行滤波处理,输出滤波前后的信号频谱,对比前后信号频谱可以看到,中频段处的噪声信号已经被明显滤除掉,实验结果较理想。
对比MATLAB和dsp两者的滤波效果,可以看到两者的滤波效果较为相近,中频段处的噪声信号被明显滤除。
但是,由于噪声信号是人为加进去的,噪声点在5000Hz附近,而实际的原始声音信号在5000Hz出也有信号,用本实验方式设计的fir带阻滤波器虽然能够滤除掉加进去的噪声信号,但是5000Hz频段处的原始声音信号也相应的被滤除,这样造成原始信号有损失。
因此本实验设计的滤波器对噪声信号滤除效果较好,但是实际应用效果并非很理想,这个需要进一步的改进,从而达到更理想的滤波效果。
七、结论:
通过本实验,我对fir滤波器有了更深层次的理解,学会了如何用MATLAB和dsp来设计fir带阻滤波器,从而对噪声信号进行滤波处理。
Fir滤波有几个比较重要的参数,比如:
通带截止频率、通带边界频率、阻带截止频率、阻带边界频率、滤波器阶数等。
通过这些参数,就可以设计出相应的fir滤波器,最后得到滤波器的系统函数,从而实现fir滤波,要想达到较好的滤波效果,那就要根据实际情况调整这些滤波器的参数。
虽然本次实验设计的滤波器对噪声信号滤除效果较好,但是对原始信号也会造成一定的损失,因此这个滤波器还需要进一步改进。
八、参考文献:
[1]高西全、丁玉美、阔永红《数字信号处理——原理、实现与应用(第2版)》电子工业出版社2012年5月
[2]董长虹、高成、金涛《Matlab信号处理与应用》国防工业出版社2005
[3]张志涌、杨祖樱《MATLAB教程》北京航空航天大学出版社2011年7月
[4]张承云《DSP系统设计与应用实验指导书》广州大学机械与电气工程学院2016年4月
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 实验 音频 信号 处理