DSP 实验六 音频信号处理实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档