数字均衡器matlab.docx
- 文档编号:10797299
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:12
- 大小:163.54KB
数字均衡器matlab.docx
《数字均衡器matlab.docx》由会员分享,可在线阅读,更多相关《数字均衡器matlab.docx(12页珍藏版)》请在冰豆网上搜索。
数字均衡器matlab
摘要
本文的数字均衡器以MATLAB为设计平台,有.wav文件的获取、滤波、保存和播放功能。
在对声音文件进行基本波形分析和频率分析的基础上,增加了高通、低通、带通和带阻滤波的功能,并有8段均衡器可对声音信号进行调节后保存播放。
关键词:
滤波器、数字均衡器、傅立叶反变换
第一章概述
1.1均衡器简介
均衡器是一种用来对频响曲线进行调节的音频设备,换名话说,均衡器能对不同频率的声音信号中过多的频率成分。
因此,它能补偿由于各种原因造成的信号欠缺的频率成分,也能抑制信号中过多的频率成分。
例如,均衡器可以抑制频率为60~250Hz的低频交流声,也可以抑制频率为6~12kHz的高频噪声;利用均衡器还可以进行音调调节和音色加工。
均衡器的原意是将传输系统中不平衡的频率特性用相反的特性曲线进行频率均衡,在此基础上增加了音色加工和美化的功能。
均衡器的作用主要如下。
①校正各种音频设备产生的频率失真,以获得平坦响应。
②改善室内声场,改善由于房间共振特性或吸声特性不均匀而造成的传输增益(频率)失真,确保其频率特性平直。
③抑制声反馈,提高系统传声增益,改善扩声音质。
④提高语言清晰度和自然度。
⑤在音响艺术创作中,用于刻画乐器和演员的音色个性,提高音响艺术的表现效果。
均衡器的种类很多,但基本上工作原理都是相同的。
它们都是将音频信号的全频带(20Hz~20kHz)或全频带的主要部分,按一定的规律分成几个甚至几十个频点(也称频段),再利用LC串联谐振的选频特性,分别进行提升或衰减,从而获得所希望的频率校正曲线。
运用数字滤波器组成的均衡器称为数字均衡器,数字均衡器即可作成图示EQ,有可做成参量EQ,还可以做成两者兼有的EQ,它不仅各项性能指标优异,操作方便,而且还可同时储存多种用途的频响均衡特性,供不同节目要求选用,可多至储存99种频响特性曲线。
SONY的SRP-E300是一款多功能2通道的数字均衡器具有10段参量均衡和29段图示均衡,可同时或独立工作,带有限制器和噪声门功能,高精度的48kHz取样,20比特线性模数/数模转换;带有模拟和数字输入/输出;RS-232CC接口,可用于外部遥控,它的出现会逐步淘汰普通的模拟均衡器,是一款专业音频扩声领域具有极高性价比的产品。
另在网上搜得多款数字均衡器,比较典型的有一款型号为xb-66012的数字均衡器,如图1-1所示。
它的性能特点如下:
微电脑控制,轻触式操作;14段数控图示均衡;5种均衡模式记忆;内置噪声门及压限器;电平指示,一目了然。
图1-1xb-66012数字均衡器
另外,我们经常用的还有wimap播放器,以及千千静听等常用音乐播放软件都有均衡器的功能,界面如图1-2所示。
图1-2千千静听播放器中的均衡器
1.2数字均衡器的设计要求
本设计是以MATLAB为开发平台,要实现的目的是:
1、WAV声音信号获取;
2、八段数字均衡器的设定;
3、对声音信号进行滤波;
4、对声音信号进行保存;
5、播放声音信号。
八段滤波器能够对以下几个频率段进行滤波,的音感特征如下所示:
30~100Hz(沉重);100~200Hz(丰满);200~500Hz(力度);500~1KHz(明朗);1K~2KHz(透亮);2K~4Kz(尖锐);4K~8Kz(清脆);8K~16Kz(纤细)。
可以调出不同的音效,有很广泛的应用。
第二章技术路线
2.1相关原理
2.1.1数字滤波器的基本概念
数字滤波器(DigitalFilter,简称DF)是数字信号处理的重要基础,在对信号的过滤、检测与参数估计等处理过程中,它是使用最为广泛的一种线性系统。
数字滤波器是指完成信号滤波处理功能的、用有限精度算法实现的离散时间线性非时变系统。
其输入是一组(由模拟信号取样和量化的)数字量,其输出是经过数字变换的另一组数字量。
数字滤波具有稳定性高、精度高、灵活性大等突出优点。
数字滤波器的数学运算通常有两种实现方式。
一种是频域法,即利用FFT快速运算办法对输入信号进行离散傅立叶变换,分析其频谱,然后根据所希望的频率特性进行滤波,再利用傅立叶反变换恢复出时域信号。
这种方法具有较好的频域选择性和灵活性,并且由于信号频率与所希望的频谱特性是简单的相乘关系,所以它比计算等价的时域卷积要快得多。
另一种方法是时域法,这种方法是通过对离散抽样数据做差分数学运算来达到滤波目的的。
本文用的是前一种方法。
2.1.2滤波器的原理
滤波器就是对系统的输入信号进行滤波。
输入x(n)和输出y(n)之间的关系是脉冲响应h(n),即
公式2-1
如果滤波器的输入输出都为离散信号,那么该滤波器的脉冲响应也应该是离散信号,这样滤波器就成为了数字滤波器。
上面的系统为时域离散系统时,其频域特性为
公式2-2
其中
、
分别是数字滤波器的输出序列和输入序列的频域特性,
是数字滤波器的频域响应。
可以看出,输入序列的频谱
经过滤波后变成了
;因此按照输入信号频谱的特点和处理信号的目的适当选择
,使得滤波后的
满足设计性能要求。
在MATLAB中主要有Filter函数、Filtfilt函数等滤波函数。
重点介绍一下Filter函数,在本设计中有较多的应用。
Filter函数
该滤波器的标准差分方程为
公式2-3
如果
不为1,那么滤波器的系数将用
进行归一化处理,即各系数同除以
。
2.2数字均衡器功能简介
本设计是建立在MATLAB基础上的数字均衡器,有三个图形窗口,可以分别显示波形、频谱和滤波后的频谱。
有三个模块可分别对WAV文件进行基础分析、均衡滤波和一般性滤波(高通、低通、带通和带阻滤波)。
其界面如图2-1所示。
图2-1数字均衡滤波器界面
主要分为4个模块:
模块一:
图形显示模块:
有三个图形显示窗,可对声音信号波形、频谱和滤波后的频谱进行显示。
模块二:
基本分析模块:
有打开文件、播放文件并进行频谱分析的基本分析功能。
模块三:
均衡器模块:
通过8个滚动条对8个频率段进行控制,并可以保存调整好的文件显示波形并播放。
模块四:
滤波器模块:
有低通、高通、带通和带阻4种滤波功能,并在图形模块里显示和原频谱图对比。
下面将详细介绍各个模块的功能和技术线路关键。
2.3技术线路关键
2.3.1基本分析模块
模块功能:
可实现打开WAV文件播放,并对文件进行时域和频域分析。
该模块界面如图2-2所示
图2-2基本分析模块
调用函数[name,file]=uigetfile('*.wav','select');打开WAV文件,读取波形数据以后把数据保存在一个全局变量cash里,可在后面反复调用。
图2-3文件选择
2.3.2均衡器模块
模块功能:
可对8个频率段的频率进行调节,以改变音频效果。
打开文件后处理前波形和频率如图2-4(a)所示,然后从滚动条上获得一个系数值对声音进行变换,效果如图2-4(b)所示。
(a)(b)
(c)
图2-4声音信号的处理对比
8个滚动条分别对8个频率段进行处理,每个滚动条的值都是从0到1,初始值为0.5。
这一部分的原理是将采样点N分成0~(
)和
~N两部分,两部分之间对应相等。
然后对滚动条上的值进行对应处理,实现程序如下:
globalcash;
y=cash;%获得全局变量值
Fs=22000;
t=str2double(get(handles.time,'String'));
N=2^ceil(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);%在频率值中寻找最大值
iffmax>30
s=get(handles.s1,'Value');%从滚动条1获得一个0-1之间的值,
%但只能缩小该频段声音信号
a=find(f>=30&f<=100);%在30-100Hz的频率段进行处理
b=(s*2)^n;%s*2可以实现对声音信号的放大和缩小
Pyy(a)=Pyy(a)*b;P(a)=(P(a).*b).*b;%将系数叠加在原信号上
end
iffmax>100%对100-200Hz信号的处理
s=get(handles.s3,'Value');
a=find(f>=100&f<=200);
b=(s*2)^n;
Pyy(a)=Pyy(a)*b;P(a)=(P(a).*b).*b;
end
iffmax>200%对200-500Hz信号的处理
s=get(handles.s4,'Value');
a=find(f>=200&f<=500);
b=(s*2)^n;
Pyy(a)=Pyy(a)*b;P(a)=(P(a).*b).*b;
end
(下略)
信号处理完后,可点击“均衡调节”按钮,将调整好的信号反变换到波形中去。
然后点击“保存”按钮,调用uiputfile将文件保存到指定路径里。
globalsave;%save是变换后的波形
wavwrite(save,'save.wav');
[file,path]=uiputfile('save.wav','Savefilename');
点击“播放”按钮即可将调整后的WAV文件进行播放。
2.3.3滤波器模块
模块功能:
可实现信号的低通、高通、带通和带阻滤波。
通过调用函数butter和filter来实现不同的滤波功能。
以低通为例,程序如下:
globalcash;
x=cash;
Fs=22000;
t=str2double(get(handles.time,'String'));
N=2^ceil(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,'low');里的'low'改成'high'即可,带通和带阻中的Wn为一个二元数组Wn=[Fc1/(Fs/2),Fc2/(Fs/2)];Fc1和Fc2分别从两个文本框中获得,然后再将butter里设为'bandpass'和'stop'。
各滤波后的频率如图2-5所示。
(a)低通滤波(b)高通滤波
(c)带通滤波(d)带阻滤波
图2-5滤波频率显示
第三章结论和致谢
在这项设计中实现了对WAV文件的读取、分析、滤波、保存和播放,实现了前述要求内容。
但滤波后,尤其是均衡器调节后,声音信号变化比较大,声音失真比较严重,可能和算法有一定的联系。
在设计中,对于均衡器滚动条获得的值,有不同的处理方法。
有种方法直接将其作为系数乘到原有信号上,但是只能使信号衰减,本设计里没有使用。
最后要感谢王南杰同学在均衡器算法上给我的帮助和讲解,感谢王利平、邹君同学在对滚动条数值处理上给我的帮助。
参考文献
[1]丛玉良王宏志编著,《数字信号处理原理及其MATLAB实现》,电子工业出版社,北京,2005.7
[2]E.O.布赖姆著柳群译,《快速富里叶变换》,上海科学技术出版社,上海,1979.3
[3]苏金明张莲花刘波等编,《MATLAB工具箱应用》,电子工业出版社,北京,2004.1
[4]罗军辉罗勇江等编著,《MATLAB7.0在数字信号处理中的应用》,机械工业出版社,北京,2005.5
[5]薛年喜主编,《MATLAB在数字信号处理中的应用》,清华大学出版社,北京,2003.11
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 均衡器 matlab