当前位置:文档之家› 音频均衡器设计

音频均衡器设计

数字信号处理课程设计报告
题目:
专业班级:
学号:
姓名:
指导教师:
年月日
摘要
数字信号处理(Digital Signal Processing)技术,从20世纪60年代以来,随着计算机科学和信息科学发展,数字处理技术应运而生并得以快速发展。

均衡器(Equalizer),是一种可以分别调节各种频率成分电信号放大量的电子设备,通过对各种不同频率的电信号的调节来补偿扬声器和声场的缺陷,补偿和修饰各种声源及其它特殊作用,一般调音台上的均衡器仅能对高频、中频、低频三段频率电信号分别进行调节。

MATLAB语言具备高效、可及推理能力强等特点,是目前工程界流行最广泛的科学计算语言。

MATLAB强大的运算和图形显示功能,可使信号与系统上机实验效率大大提高。

特别是它的频谱分析和滤波器分析与设计功能很强,使数字信号处理工作变得十分简单,直观。

本实验就是运用MATLAB设计均衡器。

关键词 MATLAB语言原型滤波器均匀滤波器组均衡器
目录
一设计目的......................... 错误!未定义书签。

二设计要求 (1)
三设计原理及方案 (1)
3.1设计原理 (1)
3.2设计方案及函数调用 (2)
四软件流程 (2)
4.1设计的总体方案图 (3)
4.2程序流程图 (4)
五调试分析 (4)
5.1均衡器频率响应分析 (4)
5.2均衡前后的信号对比分析 (6)
六心得体会 (7)
一、设计目的
理解混音效果和均衡器的原理,综合运用数字信号处理的理论知识进行回声信号产生器设计,再利用MATLAB作为编程工具进行计算机实现。

二、设计要求
设计均衡器,使得得不同频率的混合音频信号,通过一个均衡器后,增强或削减某些频率区域,以便修正低频和高频信号之间的关系。

三、设计原理及方案
3.1 设计原理
均衡器本质上是一个滤波器组,即多个滤波器的叠加。

通过改变每个滤波器的增益,可以增强或削弱某一特定的频率成分,从而达到均衡的目的。

本次设计采用一个均匀滤波器组的结构来实现均衡器,如下图所示:
H0(z)为原型滤波器,将它在频域上移动kw0可以派生出一系列频率响应形状相同但中心频率不同的滤波器,这些滤波器组合在一起就是一个均匀的滤波器组。

所以任一滤波器的频率响应为
H k(e jw) = H0(e j(w-k*w0))
总的频率响应为
H(e jw) =∑H k(e jw) = ∑H0(e j(w-kw0))
在时域上,频域的移动相当于时域的冲激响应乘以因子,即
h k(n) = h0(n)* e jkw0n
所以,整个滤波器组的冲激响应为
h(n) =∑h k(n) = ∑h0(n)* e jkw0n
3.2 方案及函数调用
在matlab中实现均衡器的大致方案为:先设计出一个原型的低通滤波器,再根据此滤波器计算出其余派生滤波器,最后将每个滤波器的幅度增益乘以相应的系数在线性叠加起来,各个系数是均衡器程序的输入参数,有用户手动输入。

本设计用到的matlab函数有下面这些:
1、B=firpm(N,F,A,W):根据Parks-McClellan算法编写的FIR滤波器设计函数,只要输入相应的参数,包括阶数,通带频率和阻带频率等就可以产生一个最优化的FIR滤波器。

本设计就是调用firpm函数产生原型低通滤波器。

2、Y = filter(B,A,X):filter函数通常用于计算滤波器的输出,B、A是滤波器传输函数的系数,X为输入信号向量,Y为滤波后输出的信号向量。

3、Sound(y,fs,bits);用于对声音的回放。

向量y则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。

4、[H w] = freqz(b,a,N):freqz函数专门用来计算离散时间系统频率特性。

输出变元H是系统的频率特性,它是一个N元的复数向量,输出变元w是数字频率分量,它把0到pi均分为N份。

输入变元b和a分别为分子分母多项式的负幂系数向量。

本设计调用freqz函数求滤波器的频率响应和分析语音信号的频谱特性。

四、软件流程
4.1 设计的总体方案图
4.2 程序流程图
五、调试分析
5.1 均衡器频率响应分析
设计好均衡器后,用freqz函数求出每个滤波器的频率响应和总的频率响应。

equalizer([5 5 1 1])
l=50;f=[0 0.075 0.16 1];m=[1 1 0 0];w=[5 1];
N=8;wn=exp(-2*pi*j/N);
c(1:N/2)=alpha;c(N/2+1:N)=alpha(4:-1:1);[num pos]=max(alpha); h=zeros(N,l);
n=0:l-1;
h(1,:)=firpm(l-1,f,m,w);
for k=1:N-1
h(k+1,:)=h(1,:).*(wn.^(-k*n));
end
for k=1:N
[Hw(k,:),w]=freqz(h(k,:),1,256);
plot(w/pi,c(k)*abs(Hw(k,:)));
hold on;
end
grid on;
hold off;
Gw=zeros(1,256);
for k=1:N
Gw=Gw+c(k)*abs(Hw(k,:));
end
figure;plot(w/pi,Gw);
axis([0 1 0 num+1]);grid on;
各滤波器频率响应
总的频率响应
5.2 均衡前后的信号对比分析
载入语音信号,对其进行均衡滤波,用freqz分别求出原信号和均衡后的信号的频域幅度特性,再用subplot函数画出来。

load splat;
y1=zeros(1,length(y));
for k=1:N
signal(k,:)=filter((c(k)*h(k,:)),1,y);
y1=y1+signal(k,:);
end
[Y1w w]=freqz(y1,1,256);
[Yw w]=freqz(y,1,256);
figure;
subplot(2,1,1);plot(w/pi,abs(Yw));title('原信号');grid on;
subplot(2,1,2);plot(w/pi,abs(Y1w));title('均衡后的信号');grid on;
六、心得体会
本次设计的最大困难在于得到一个原型低通滤波器后如何计算出其它的派生滤波器,这个问题在理论上方法是多种多样的,但并不是所有的方法都适合写成matlab的代码让电脑去实现。

我一开始想用多相分解的方法来求其余的滤波器,但也许是我的编程能力不足,虽然心里明白这个方法,却怎么也无法用代码表示出来。

后来采用了DTFT的频移性质,这个方法原理也很简单,但用手工计算就十分繁琐,不过把它写成代码让电脑去算只要寥寥几行的一个循环就可以了。

另外,通过本次的课程设计,加深了我对均衡器工作原理的了解,用matlab 设计滤波器的能力也有所提升,对使用freqz函数分析频域特性方面有了更多的心得体会。

相关主题