1、数字均衡器(matlab) 作者: 日期:2 个人收集整理 勿做商业用途摘要本文的数字均衡器以MATLAB为设计平台,有。wav文件的获取、滤波、保存和播放功能。在对声音文件进行基本波形分析和频率分析的基础上,增加了高通、低通、带通和带阻滤波的功能,并有8段均衡器可对声音信号进行调节后保存播放。关键词:滤波器、数字均衡器、傅立叶反变换16第一章 概述1。1 均衡器简介均衡器是一种用来对频响曲线进行调节的音频设备,换名话说,均衡器能对不同频率的声音信号中过多的频率成分。因此,它能补偿由于各种原因造成的信号欠缺的频率成分,也能抑制信号中过多的频率成分。例如,均衡器可以抑制频率为60250Hz的低频
2、交流声,也可以抑制频率为612kHz的高频噪声;利用均衡器还可以进行音调调节和音色加工。均衡器的原意是将传输系统中不平衡的频率特性用相反的特性曲线进行频率均衡,在此基础上增加了音色加工和美化的功能.均衡器的作用主要如下. 校正各种音频设备产生的频率失真,以获得平坦响应。 改善室内声场,改善由于房间共振特性或吸声特性不均匀而造成的传输增益(频率)失真,确保其频率特性平直。 抑制声反馈,提高系统传声增益,改善扩声音质。 提高语言清晰度和自然度。 在音响艺术创作中,用于刻画乐器和演员的音色个性,提高音响艺术的表现效果. 均衡器的种类很多,但基本上工作原理都是相同的。它们都是将音频信号的全频带(20H
3、z20kHz)或全频带的主要部分,按一定的规律分成几个甚至几十个频点(也称频段),再利用LC串联谐振的选频特性,分别进行提升或衰减,从而获得所希望的频率校正曲线。本文为互联网收集,请勿用作商业用途文档为个人收集整理,来源于网络运用数字滤波器组成的均衡器称为数字均衡器,数字均衡器即可作成图示EQ,有可做成参量EQ,还可以做成两者兼有的EQ,它不仅各项性能指标优异,操作方便,而且还可同时储存多种用途的频响均衡特性,供不同节目要求选用,可多至储存99种频响特性曲线。SONY的SRPE300是一款多功能2通道的数字均衡器具有10段参量均衡和29段图示均衡,可同时或独立工作,带有限制器和噪声门功能,高精
4、度的48kHz取样,20比特线性模数/数模转换;带有模拟和数字输入/输出;RS-232C C接口,可用于外部遥控,它的出现会逐步淘汰普通的模拟均衡器,是一款专业音频扩声领域具有极高性价比的产品。另在网上搜得多款数字均衡器,比较典型的有一款型号为xb66012的数字均衡器,如图11所示。它的性能特点如下:微电脑控制,轻触式操作;14段数控图示均衡;5种均衡模式记忆;内置噪声门及压限器;电平指示,一目了然。图1-1 xb-66012数字均衡器另外,我们经常用的还有wimap播放器,以及千千静听等常用音乐播放软件都有均衡器的功能,界面如图1-2所示。图1-2 千千静听播放器中的均衡器1.2 数字均衡
5、器的设计要求本设计是以MATLAB为开发平台,要实现的目的是:1、 WAV声音信号获取;2、 八段数字均衡器的设定;3、 对声音信号进行滤波;4、 对声音信号进行保存;5、 播放声音信号。八段滤波器能够对以下几个频率段进行滤波,的音感特征如下所示:30100Hz(沉重);100200Hz(丰满);200500Hz(力度);5001KHz(明朗);1K2KHz(透亮);2K4Kz(尖锐);4K8Kz(清脆);8K16Kz(纤细)。可以调出不同的音效,有很广泛的应用。第二章 技术路线2。1 相关原理2.1.1 数字滤波器的基本概念数字滤波器(Digital Filter,简称DF)是数字信号处理的
6、重要基础,在对信号的过滤、检测与参数估计等处理过程中,它是使用最为广泛的一种线性系统。数字滤波器是指完成信号滤波处理功能的、用有限精度算法实现的离散时间线性非时变系统.其输入是一组(由模拟信号取样和量化的)数字量,其输出是经过数字变换的另一组数字量。数字滤波具有稳定性高、精度高、灵活性大等突出优点。数字滤波器的数学运算通常有两种实现方式。一种是频域法,即利用FFT快速运算办法对输入信号进行离散傅立叶变换,分析其频谱,然后根据所希望的频率特性进行滤波,再利用傅立叶反变换恢复出时域信号。这种方法具有较好的频域选择性和灵活性,并且由于信号频率与所希望的频谱特性是简单的相乘关系,所以它比计算等价的时域
7、卷积要快得多。另一种方法是时域法,这种方法是通过对离散抽样数据做差分数学运算来达到滤波目的的。本文用的是前一种方法。2.1。2 滤波器的原理滤波器就是对系统的输入信号进行滤波。输入x(n)和输出y(n)之间的关系是脉冲响应h(n),即 公式21如果滤波器的输入输出都为离散信号,那么该滤波器的脉冲响应也应该是离散信号,这样滤波器就成为了数字滤波器.上面的系统为时域离散系统时,其频域特性为 公式22其中、分别是数字滤波器的输出序列和输入序列的频域特性,是数字滤波器的频域响应。可以看出,输入序列的频谱经过滤波后变成了;因此按照输入信号频谱的特点和处理信号的目的适当选择,使得滤波后的满足设计性能要求。
8、在MATLAB中主要有Filter函数、Filtfilt函数等滤波函数.重点介绍一下Filter函数,在本设计中有较多的应用。Filter函数该滤波器的标准差分方程为 公式23如果不为1,那么滤波器的系数将用进行归一化处理,即各系数同除以。2.2 数字均衡器功能简介本设计是建立在MATLAB基础上的数字均衡器,有三个图形窗口,可以分别显示波形、频谱和滤波后的频谱.有三个模块可分别对WAV文件进行基础分析、均衡滤波和一般性滤波(高通、低通、带通和带阻滤波)。其界面如图21所示。图21 数字均衡滤波器界面主要分为4个模块:模块一:图形显示模块:有三个图形显示窗,可对声音信号波形、频谱和滤波后的频谱
9、进行显示。模块二:基本分析模块:有打开文件、播放文件并进行频谱分析的基本分析功能.模块三:均衡器模块:通过8个滚动条对8个频率段进行控制,并可以保存调整好的文件显示波形并播放。模块四:滤波器模块:有低通、高通、带通和带阻4种滤波功能,并在图形模块里显示和原频谱图对比。下面将详细介绍各个模块的功能和技术线路关键。2。3 技术线路关键2。3.1 基本分析模块模块功能:可实现打开WAV文件播放,并对文件进行时域和频域分析.该模块界面如图2-2所示图22 基本分析模块调用函数name,file = uigetfile(.wav,select);打开WAV文件,读取波形数据以后把数据保存在一个全局变量c
10、ash 里,可在后面反复调用。图2-3 文件选择2。3。2 均衡器模块模块功能:可对8个频率段的频率进行调节,以改变音频效果。打开文件后处理前波形和频率如图2-4(a)所示,然后从滚动条上获得一个系数值对声音进行变换,效果如图2-4(b)所示。 (a) (b)(c)图24 声音信号的处理对比8个滚动条分别对8个频率段进行处理,每个滚动条的值都是从0到1,初始值为0.5.这一部分的原理是将采样点N分成0()和N两部分,两部分之间对应相等。然后对滚动条上的值进行对应处理,实现程序如下:global cash; y=cash; %获得全局变量值Fs=22000;t=str2double(get(ha
11、ndles.time,String));N=2ceil(log2(Fs*t)); 获得采样点的值P=fft(y,N);Pyy=2*sqrt(P。conj(P))/N;f=Fs(0:N/2-1)/N;f(N/2+1:N)=f(N/2:1:1); %采样点分段n=8;fmax=max(f); 在频率值中寻找最大值if fmax30s=get(handles。s1,Value); 从滚动条1获得一个01之间的值,但只能缩小该频段声音信号 a=find(f=30 & f=100 & f200 对200-500Hz信号的处理 s=get(handles。s4,Value); a=find(f=200 f
12、=500); b=(s2)n; Pyy(a)=Pyy(a)b;P(a)=(P(a)。*b)。b;end(下略)信号处理完后,可点击“均衡调节按钮,将调整好的信号反变换到波形中去。然后点击“保存”按钮,调用uiputfile将文件保存到指定路径里。global save; %save是变换后的波形wavwrite(save,save。wav);file,path = uiputfile(save。wav,Save file name);点击“播放”按钮即可将调整后的WAV文件进行播放。2。3.3 滤波器模块模块功能:可实现信号的低通、高通、带通和带阻滤波。通过调用函数butter和filter来
13、实现不同的滤波功能。以低通为例,程序如下:global cash;x=cash;Fs=22000;t=str2double(get(handles.time,String);N=2ceil(log2(Fs*t);Fc=str2double(get(handles。edit1,String);n=8;Wn=Fc/(Fs/2);b,a=butter(n,Wn,low);y=filter(b,a,x);P=fft(y,N);Pyy=2*sqrt(P.conj(P))/N;f=linspace(0,Fs/2,N/2);plot(f,Pyy(1:N/2));高通滤波将b,a=butter(n,Wn,lo
14、w);里的low改成high即可,带通和带阻中的Wn为一个二元数组Wn=Fc1/(Fs/2),Fc2/(Fs/2);Fc1和Fc2分别从两个文本框中获得,然后再将butter里设为bandpass和stop。各滤波后的频率如图25所示。 (a)低通滤波 (b)高通滤波 (c)带通滤波 (d)带阻滤波图25 滤波频率显示第三章 结论和致谢在这项设计中实现了对WAV文件的读取、分析、滤波、保存和播放,实现了前述要求内容。但滤波后,尤其是均衡器调节后,声音信号变化比较大,声音失真比较严重,可能和算法有一定的联系。在设计中,对于均衡器滚动条获得的值,有不同的处理方法.有种方法直接将其作为系数乘到原有信
15、号上,但是只能使信号衰减,本设计里没有使用。最后要感谢王南杰同学在均衡器算法上给我的帮助和讲解,感谢王利平、邹君同学在对滚动条数值处理上给我的帮助。K1=get(handles.slider1,value);K2=get(handles。slider2,value);K3=get(handles.slider3,value);K4=get(handles.slider4,value);K5=get(handles.slider5,value);K6=get(handles.slider6,value);K7=get(handles.slider7,value);K8=get(handles。s
16、lider8,value);b1 a1=butter(3,100 200/20000);b2 a2=butter(3,200 500/20000);b3 a3=butter(3,500 1000/20000);b4 a4=butter(3,1000 2000/20000);b5 a5=butter(3,2000 4000/20000);b6 a6=butter(3,4000 8000/20000);b7 a7=butter(3,8000 16000/20000);b8 a8=butter(3,16000 20000/20000);K1=get(handles.slider1,value);K2
17、=get(handles.slider2,value);K3=get(handles。slider3,value);K4=get(handles.slider4,value);K5=get(handles。slider5,value);K6=get(handles。slider6,value);K7=get(handles。slider7,value);K8=get(handles.slider8,value);y=y+K1*filter(b1,a1,ft)+K2*filter(b2,a2,ft)+K3*filter(b3,a3,ft)+K4*filter(b4,a4,ft)+K5*filte
18、r(b5,a5,ft)+K6filter(b6,a6,ft)+K7filter(b7,a7,ft)+K8*filter(b8,a8,ft); axes(handles。axes3);plot(t,y);end参考文献1 丛玉良 王宏志编著,数字信号处理原理及其MATLAB实现,电子工业出版社,北京,2005.72 E.O。布赖姆著 柳群译,快速富里叶变换,上海科学技术出版社,上海,1979.33 苏金明 张莲花 刘波等编,MATLAB工具箱应用,电子工业出版社,北京,2004.14 罗军辉 罗勇江等编著,MATLAB 7。0在数字信号处理中的应用,机械工业出版社,北京,2005。55 薛年喜主编,MATLAB在数字信号处理中的应用,清华大学出版社,北京,2003。11