DSP 实验六 音频信号处理实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验题目:音频信号处理实验
班级:
姓名:
学号:
日期: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 仿真实验:
开始 读取原始信号 对原始信号加噪处理
分析原始信号和加噪信号频谱 输出滤波器系数h 和生
成dat 文件 根据fir1函数实现fir 带
阻滤波器的设计 确定fir 滤波器的各个参数 结束 定义全局变量
开始 定义变量以及指定系数的文件: 将K_FIR_BFFR 定为32
指定寄存器 进行FIR 计算 输出 结束
三、仪器设备:
1.硬件:计算机一台。
2.软件:MATLAB R2012a
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=(f p 1*2/fs-fs1*2/fs)*pi;
N1=ceil(6.6*pi/Bt);
N=N1+mod(N1+1,2);
wn1=[(f s 1+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);
for i=1:1:m
for j=1:1:n
if j==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,'1651 1 0 0 0\n');
for k=1:length(y1)
y1(k) = round(y1(k));
if y1(k)<16
fprintf(fid,'0x000%x\n',y1(k));
elseif y1(k)<256