数字音频均衡器设计毕业论文Word文档下载推荐.docx
《数字音频均衡器设计毕业论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字音频均衡器设计毕业论文Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
数字滤波器;
ABSTRACT
MATLABisverywiderangeofapplications,includingsignalandimageprocessing,communications,controlsystemdesign,testandmeasurement,financialmodelingandanalysis,andcomputationalbiologyandmanyotherapplications.Toolboxadditional(separateMATLABfunctionprovidedbyadedicatedset)extendstheMATLABenvironmenttosolvetheseapplicationswithinaspecifictypeofproblem.Throughastrongsignalsimulationcapabilities,akindofreasonabledigitalequalizerhasbeendesignedbyanalysisingthedesignrequirementsofdigitalequalizersandmakigfilteringdealtoavarietyofdigitalequalizers.Atlast,thestandardhasbeenreachedaftertheintegratedtestandimprovementforthisdigitalequalizer.
Keywords:
Equalizer;
MATLAB;
Digitalfilter;
1刖言
随着数字化技术的快速、深入发展,人们对数字化电子产品所产生的图像、图形以及声音等质量的要求越来越高。
在声音的拾取过程及通过音响设备的传送过程中,由于设备或器件的原因,其幅度对频率的响应往往不一致,这样就达不到原来的听觉效果,音频均衡器是音响设备中常用的一种音效处理技术,目的是对某一频段内的信号进行增强或衰减,以改善音响设备输出的频响特性,提高听觉效果。
一个好的均衡器能起到以下几个方面的作用:
(1)能校正音频设备所产生的频率失真;
(2)校正由于建筑学共振性的不均匀所带来的传输增益的频率失真;
(3)调整某些易反馈的频率成分,抑制声反馈,提高会场增益;
(4)在艺术创作中,利用它来刻画演员和乐器的音色修改,提高艺术效果。
现有的许多播放器都具有均衡器的功能,如千千静听(如图1所示)等。
通过调节均衡器
可以得到最佳音乐状态。
图1千千静听的均衡器
Figure1theequalizerofTTplayer
MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的滤波器设计工具箱为实现声音信号的数字滤波提供了十分方便的函数和命令,本文将给出基于MATLAB的数字均衡器(图示均衡器)的设计方法,功能包括:
(1).WAV声音信号获取,即从文件(*wav)读取音频信息;
(2)•八段数字均衡器设定,具体按照表1中的频段,其中前两个频段合并在一起;
(3).滤波,包括生成低通、高通、带通滤波器并显示滤波器的频率特征曲线;
(4).播放,播放滤后音频信号并实时显示波形及频谱特性。
30~60Hz
沉闷
如没有相当大的响度,人耳很难感觉。
60~100H
沉重
80Hz附近能产生极强的“重感”效果,响度很高也不会给人
z
舒服的感觉,可给人以强烈的刺激作用。
100~200
丰满
Hz
200~500
力度
易引起嗡嗡声的烦闷心理。
500~1KH
明朗
800Hz附近如提升10dB,会明显产生一种嘈杂感,狭窄感。
1K~2KH
透亮
2800KZ附近明亮感关系最大。
2K~4Kz
尖锐
3400Hz易引起听觉疲劳。
4K~8Kz
清脆
6800Hz形成尖啸,锐利的感觉。
8K~16Kz
纤细
>
7.5KHZ音感清彻纤细。
表1频率的音感特征
Table1Frequencycharacteristicsofsoundsense
由此可见150Hz以下(低音)应是丰满、柔和而富有弹性;
150Hz-500Hz(中
低音)应是浑厚有力百不混浊;
500Hz-5KHz(中高音)应是明亮透彻而不生硬;
5KHz以上(高音)应是纤细,圆顺而不尖锐刺耳。
整个频响特性平直时:
声音自然丰满而有弹性,层次清晰圆顺悦耳。
频响多峰
谷时:
声音粗糙混浊,高音刺耳发毛,无层次感扩声易发生反馈啸叫。
2设计原理
2.1均衡器分类
2.1.1均衡器分类
均衡器分为三类:
图示均衡器,参量均衡器和房间均衡器。
1.图示均衡器:
亦称图表均衡器,通过面板上推拉键的分布,可直观地反映出所调出的均衡补偿曲线,各个频率的提升和衰减情况一目了然,它采用恒定Q值技术,每
个频点设有一个滑动条,无论提升或衰减某频率,滤波器的频带宽始终不变。
常用的专业图示均衡器则是将20Hz~20kHz的信号分成8段、10段、15段、27段、31段来进行调节。
这样人们根据不同的要求分别选择不同段数的频率均衡器。
一般来说10段均衡器
的频率点以倍频程间隔分布,15段均衡器是2/3倍频程均衡器,31段均衡器是1/3倍频程均衡器,在比较重要的需要精细补偿的场合下,图示均衡器结构简单,直观明了,故在专业音响中应用非常广泛。
2.参量均衡器:
亦称参数均衡器,对均衡调节的各种参数都可细致调节的均衡器,多附设在调音台上,但也有独立的参量均衡器,调节的参数内容包括频段、频点、增益和品质因数Q值等,可以美化(包括丑化)和修饰声音,使声音(或音乐)风格更加鲜明突出,丰富多彩达到所需要的艺术效果。
3.房间均衡器,用于调整房间内的频率响应特性曲线的均衡器,由于装饰材料对不同频率的吸收(或反射)量不同以及简正共振的影响造成声染色,所以必须用房间均衡器对由于建声方面的频率缺陷加以客观地补偿调节。
频段分得越细,调节的峰越尖锐,即Q值(品质因数)越高,调节时补偿得越细致,频段分的越粗则调节的峰就比较宽,当声场传输频率特性曲线比较复杂时较难补偿。
2.1.2图示均衡器的实现关键此设计的实现关键是设计出满足一定性能指标的各个数字滤波器,构成一个覆盖整个音频频段的滤波器组。
2.2数字滤波器
2.2.1数字滤波器的原理简介
数字滤波器的功能是把输入序列通过一定的运算,变换成输出序列。
数字滤波器
般可用两种方法实现:
一种是根据描述数字滤波器的数学模型或信号流程图,用数字硬
件构成专用的数字信号处理机,即硬件方式;
另一种是编写滤波器运算程序,在计算机上运行,即软件方式。
考虑到软件的灵活性及易于实现,本文采用软件方式实现数字滤
波器
数字滤波器有无限冲激响应(IIR)和有限冲激响应(FIR)两种。
下面分别介绍:
(1)IIR滤波器
IIR滤波器的特点是:
单位冲激响应h(n)是无限长的;
系统函数H(z)在有限长Z
平面(0<
|Z|vx)有极点存在;
结构上存在输出到输入的反馈,也即结构上是递归型的;
稳定的IIR滤波器其全部极点一定在单位圆内。
其系统函数为
(1)
计算机上实现时则需要用到差分方程的形式,如下
M押
=Z砂口-上)滋3-疋)
JU1JUO
IIR滤波器有四种基本的网络结构,直接I型、直接II型、级联型与并联型。
(2)FIR滤波器
FIR滤波器的特点是:
系统的单位冲激响应h(n)是个有限长序列;
系统函数|H(z)|在
|z>
0处收敛,极点全部在z=0处(即FIR—定为稳定系统);
结构上主要是非递归结构,没有输出到输入反馈。
但有些结构中也包含有反馈的递归部分。
其系统函数的一般形式
^-1
卫⑵二优)尹
对应的差分方程为
丿(对二工比)畫3-Q
FIR系统的基本结构有直接型、级联型、快速卷积型、频率取样型等。
2.2.2FIR与IIR滤波器的比较与选择
IIR滤波器可以用比FIR滤波器少的阶数来满足相同的技术指标,这样,IIR滤波器所用的存储单元和所用的运算次数都比FIR滤波器少。
FIR滤波器可得到严格的相位,
而IIR滤波器不能得到。
事实上,IIR滤波器的选频特性越好,它的相位的非线性就越严重。
因此在需要严格线性相位的情况下应该选择FIR滤波器。
IIR滤波器可利用模拟滤波
器现成的设计公式、数据和表格,因而计算工作量较小,对计算工具要求不高。
FIR滤波器没有现在的设计公式,对计算工具要求较高,需要借助计算机来设计。
另外,IIR滤波器主要是设计规格化的、频率特性为分段常数的标准低通、高通、带通、带阻和全通滤波器,而FIR滤波器可设计出理想正交变换器、理想微分器、线性调频器等各种网络,适应性较广。
总之,IIR和FIR这两种滤波器各有特点,在实际应用中空间选择中哪种滤波器,就从多方面的因素来考虑。
对于数字均衡器,一方面是用于处理语音信号,另一方面需要用到频率特性分段的带通滤波器,因此选用IIR滤波器。
下面介绍IIR滤波器的设计方法。
2.2.3IIR数字滤波器的设计方法
设计步骤大致分以下三步:
(1)设计模拟滤波器。
根据实际需要确定滤波器的参数,利用的滤波器的设计公式设计出模拟滤波器并得到其传递函数H(s),常用的滤波器有巴特沃斯滤波器、椭圆滤波器和切比雪夫滤波器;
(2)将模拟滤波器转换成数字滤波器。
利用冲激响应不变法或双线性变法将H(s)转
换成H(z),不同的设计方法对应于不同的s平面到z平面的映射公式;
(3)频率变换。
上述方法得到的是低通滤波器,利用变换公式作频率变换得到高通、带通滤波器。
2.3均衡器的原理
均衡器的基本功能是调节各频段的信号强弱,为了满足该功能,本文采用如下的方
法:
Stepl:
设计出对应八个频段的八个带通滤波器;
Step2:
对原始信号分八路用八个带通滤波器进行滤波;
Step3:
将八个滤波器的滤波结果加权求和,权值的设计与均衡器的调节要求一致。
这样最终得到的结果便是所需要的均衡结果。
设原始输入信号为x(n),第i路的输
出信号为1门,第i路的权值为1,均衡器的输出信号为y(n),则有
畑
”仇)二4
(1)咖+切⑵破-1)+…+勺何+1)祿-
-曲⑵曲-1)-“-吗(M+1)旳(用-⑵
⑸
⑹
式中,;
为滤波器的参数,N为滤波器的阶数。
2.4软件设计2.4.1数据流图
数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
在数据流图中没有任何具体的物理元素,它只是描绘信息在软件中流动和被处理的情况。
设计数据流图时只需考虑系统必须完成的基本逻辑功能,而不用考虑具体实现,因而它是进行软件设计很好的出发点。
面向数据流的设计方法的目标是给出设计软件结构的一个系统化的途径。
结合上一
节的内容,可以得出软件的数据流图如图2所示
图2均衡器的数据流图
Figure2TheDFDofequalizer
242模块划分
模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,
把这些模块集成起来构成一个整体,可以完成指定的功能满足用户需求。
根据人类解决一般问题的经验,如果一个问题由两个问题组合而成,那么它的复杂程度大于分别考虑每个问题时的复杂程度之和,也就是说把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。
这就是模块化的根据。
在模块划分时应遵循如下规则:
改进软件结构提高模块独立性;
模块规模应该适中;
深度、宽度、扇出和扇入都应适当;
模块的作用域应该在控制域之内;
力争降低模块接口的复杂程度;
设计单入口单出口的模块;
模块功能应该可以预测。
本着上述的启发式规则,对软件进行如图3所示的模块划分。
图3数字均衡器的模块划分
Figure3Moduledivision
如上图所以,将数字均衡器划分为三个模块:
输入模块、滤波模块和图形显示模块。
其中输入模块完成的功能是打开WAV格式文件,通过wavread这个函数读取音频文件,通过wavplay这个函数播放音频文件。
滤波模块实现的功能是滤波器的生成和实时图形显示模块则实现波形的实时显示和频谱的实时显示。
通过matlab提供的GUIDE工具为可视化编程工具,将三个模块有机的结合,实现均衡器的预期功能。
3软件实现
3.1界面设计
MATLAB是Mathworks公司推出的数学软件,它将数值分析、矩阵计算、信号处理和图形显示结合在一起,为众多学科领域提供了一种简洁、高效的编程工具。
它提供的GUIDE工具为可视化编程工具,使得软件的界面设计像VB—样方便。
故本文采用
MATLAB作为主要编程语言实现数字均衡器。
为了实现预期的功能,设计如图4所示的界面。
播放
a.6
QL1111
D02040,60.B1
图4频谱分析仪的界面设计
Figure4Interfacedesign
左边最上面的部分为标题区,用于显示软件标题等信息,不具人机交互功能。
再往下是文件输入,只支持WAV格式的音频文件。
“原声播放”用于播放输入的原信频信号,区别于滤波后的信号,用于对比滤波前后的信号。
再往下是均衡器区。
八个滚动条对应八个带通滤波器的权值,在中间时为1,最下为
0,最上为10。
“滤波”后才能“播放”,这是考虑到MATLAB对多线程机制支持得不好,不宜使用一边滤波一边播放的方法。
左下角是条形图,它是许多音频软件使用的频谱输
出方式。
右边的上面是滤波器,可以指定各种类型与参数。
“类型”单选框用于选择低通、带通、高通滤波器。
“生成滤波器”可以产生一个符合条件的滤波器,并在下面的图中显示滤波器的频率特征曲线。
“滤波”用于对输入的音频信号用生成的滤波器滤波。
再往下则分别是时域波形与频谱分析的图形显示,均为实时显示。
在界面设计时为避免错误的操作,在某些按钮不能使用时必须将其设置为不可用,而它们能够使用时立即设置为可用。
例如,没有打开音频文件时“滤波”按钮不可用,打开后“滤波”按钮可用;
点击“滤波”前,“播放”不可用,点击“滤波”并完成滤波后,“播放”则变为可用。
3.2均衡器模块的实现
均衡器模块功能是生成带通滤波器并对原信号滤波。
为了便于程序的扩充与修改,将表1中的频段数据独立出来,如下
handles.fband=20100200500100020004000800016000];
%频段划分
均衡器的功能主要在“滤波”按钮的回调函数中实现,下面具体介绍开始需要得到滤波器的参数:
频带与阶数,如下
order=str2double(get(handles.order,'
String'
))%获得设定的阶数值
num=8;
%共计8段滤波
fband=handles.fband;
接着就是产生滤波器并滤波了,每次滤波后产生的yi(n)如果都存到一个变量中,则
需要8个这样的变量,对于输入信号量很大时将需要大量的内存空间,为此,本文采用累加的方式,这样只用一个变量去存储滤波结果。
nn=length(handles.y);
handles.yy=zeros(size(handles.y));
fori=1:
num
%巴特沃斯滤波器
%切比雪夫1滤波器
%切比雪夫2滤波器
%椭圆滤波器
ifget(handles.butterworth,'
Value'
)==1
[ba]=butter(order,2*fband(i:
i+1)/handles.Fs);
elseifget(handles.cheby1,'
[ba]=cheby1(order,0.5,2*fband(i:
elseifget(handles.cheby2,'
[ba]=cheby2(order,20,2*fband(i:
elseifget(handles.ellip,'
[ba]=ellip(order,0.5,20,2*fband(i:
else
errordlg('
Nofiltertypechosenorfiltertypeerror!
'
);
end
eval(sprintf('
k=get(handles.band%d,'
i));
%滤波加权
%求和
咖存数据
y=(9Ak-1)/8*qfilter(b,a,handles.y);
handles.yy=handles.yy+y;
guidata(hObject,handles);
end
在程序中有一句y=(9Ak-1)/8*qfilter(b,a,handles.y),作用是加权以便下一句的求和,其中k是从滚动条中得到的参数,从0到2,但需要的权值是从0到10,令w为需要的权,即WE[Q10],由于实际需要w为指数变化,故设
1.-.;
/⑺
代入w=0,k=0;
w=1,k=1;
w=10,k=2解得a=1/8,b=9,c=-1,从而有上述代码。
3.3Filter函数
MATLAB控制系统工具箱提供了一个filter函数,可以计算差分方程描述的系统的响应,其调用形式为:
y=filter(b,a,f)(8)
其中,归血巫血]、亦国,如如血]分别是系统差分方程左、右端的系数向量,f表示输入向量,y表示输出向量。
输出序列的长度与输入序列的长度相同。
但是其运行速度较慢,由于filter函数的执行速度是整个软件速度的瓶颈,故需要提高其速度。
可以结合C++实现,以提高其速度,这里不再进一步研究。
3.4实时显示的实现
软件的功能要求实时显示波形与频谱分析结果,这里采用分批处理的方法。
即先取一批信号,将其播放出来,同时进行FFT,并绘出时域波形与频谱分析结果,然后取下一批信号,,由于各批信号间的时间间隔很小,从而感觉像连续播放,而时域波形与频谱则是实时地变化。
该功能主要在“播放”按钮的回调函数中实现
N=length(handles.yy);
n=4096;
step=n/handles.Fs;
from=1;
to=n;
ymax=max(handles.y);
ymin=min(handles.y);
f=linspace(0,handles.Fs/2,n/2);
num=length(fband)-1;
tic
whileto<
=N;
y=handles.yy(from:
to,:
pause(step-toc*0.99);
wavplay(y,handles.Fs,'
async'
P=fft(y,n);
Pyy=2*abs(P)/n;
loglog(handles.axes1,f,Pyy(1:
n/2));
axis(handles.axes1,[fband
(1)fband(num+1)1e-3ymax]);
plot(handles.axes2,y);
ylim(handles.axes2,[yminymax]);
from=from+n;
to=to+n;
采用异步播放方式可以使得播放不占用主线程,从而使得播放效果不会很卡。
为了使得播放流畅,需要与pause的使用结合,具体方法为用tic和toc计算出其它代码运行时间,然后用播放时间减去其它代码运行时间,从而得到需要暂停运行的时间。
4运行实例与实验分析
4.1运行实例
图5是程序的运行的一个实例,可以看到,基本上可以实现各个频段的均衡与调结。
但是并不能完全滤掉某个频段的信号。
MATLAB的filter的运行时间为0.313秒,如图6所示
图5运行结果实例
Figure5Examplesoftheresults
图6MATLAB的filter的运行时间
Figure6MATLABrun-timeofthefilter
下面分别分析程序运行实例中选择不同滤波器类型,所给出的频谱反映的意思。
如图7所示,滤波器类型为低通滤波器,其条形图和频谱图反映只允许低频通过,其高频基本都被滤去,故实现了低通滤波器的功能。
图7低通
Figure7lowpass
图8为选择带通滤波器时的运行界面,它的起始频率为200HZ,截止频率为400HZ,
理想带通滤波器低于200HZ和高于400HZ的频率段都应被滤去,实际运行过程中有一部分频段的频率未被滤去,但已基本实现带通滤波器的功能。
图9为选择高通滤波器时的
运行界面,它和低通刚好相反,只允许高频的通过。
图8带通
Figure8Band-pass
图9高通
Figure9highpass
4.2实验分析
理想的滤波器是不存在的,实际中只能尽量地接近理想滤波器,所以只能尽量地去接近理想的滤波器。
对于IIR数字滤波器,阶数越高,则滤波器的精度越高,即越接近于理想的情况,但计算机运行速度就越慢了,所以实际中应该权衡运行速度与滤波器的精度。
另外,计算机本身也有误差(如截断误差),但相对于滤波器的设计误差,计算机的计算误差可以怱略不计。
故提高精度关键在于提高滤波器的设计精度。
另外,每个带