2007年第12期
J I S UANJ I Y U X I A NDA I HUA
总第148期
文章编号:100622475(2007)1220098203
收稿日期:2006211214
作者简介:张康(19802),男,江西南昌人,江西中医学院计算机系助教,研究方向:信号处理;刘雅(19812),女,湖南长沙人,助教,研究方向:计算机技术。
基于Matlab 的音频文件数字滤波处理
张 康,刘 雅
(江西中医学院计算机系,江西南昌330004)
摘要:声音信号是一维连续信号,而计算机只能处理离散信号。为了从离散信号还原连续信号,根据采样定理,可以确定采样频率的最小值。wav 文件是一种数字声音文件格式,本文基于Matlab 分析了wav 声音文件频谱与声音的关系。通过一个数字滤波实例,处理一个带有盲音的wav 文件,去除其中的噪声,并给出了不同采样频率对输出声音信号的影响。关键词:数字信号处理;数字滤波;M atlab;wav 中图分类号:TP391.42 文献标识码:A
D ea li n g w ith Aud i o Frequency F ile by F i gure F ilter Ba sed on M a tl ab
Z HANG Kang,L IU Ya
(Depart m ent of Computer Science,J iangxi University of Traditi onal Chinese M edicine,Nanchang 330004,China )
Abstract:Sound se maphore is one di m ensi on concatenati on signal,however computer only can p r ocess data by discrete signal .By way of revert concatenati on signal fr om discrete signal,according t o the sa mp ling theore m,it can confir m sa mp ling frequency ’s least value .W av file is a kind of figure s ound file for mat .This paper analyses the relati onshi p of wav s ound file frequency chart bet w een s ounds based on Matlab .By giving an exa mp le of figure filter,dealing with a wav file with blinding s ound,wi p ing off the noise and giving different sa mp ling frequency rep ly export s ound signal ’s effect .Key words:digital signal p r ocessing;digital filtering;M atlab;wav
0 引 言
自然声是以声波为载体传递信息的。是多媒体
信息的一个重要组成部分,也是表达思想和情感的一种必不可少的媒体。
随着计算机技术的发展,声音信号实现了数字化。本文使用数字信号处理技术,基于Matlab 对wav 文件进行分析处理。
1 音频信号基础
声音是由空气中分子的振动而产生的。自然界的声音是一个随时间而变化的连续信号。声波的振幅表示声音信号的强弱程度。声波的频率反映出声音的音调,高频信号声音尖锐,低频信号声音低沉。
在日常生活中,我们听到的声音一般都属于复音,其声音信号由不同的振幅与频率的波合成而得到。
频率小于20Hz 的信号称为亚音,频率范围为20Hz ~20kHz 的信号称为音频,频率高于20kHz 的信号称为超音频。人们只能听到频率范围为20Hz ~20kHz 的音频信号。
2 数字音频信号频域滤波原理
要在数字信号处理中应用傅立叶变换,需要解决两个问题:一是在数学中进行傅立叶变换的f (t )为连续信号,而计算机处理的是数字信号;二是数学上采用无穷大概念,而计算机只能进行有限次计算。通常,将受这种的傅立叶变换称为离散傅立叶变换。
假定以间隔Δt 对一个连续声音信号f (t )均匀采样,离散化为{f (t 0),f (t 0+Δt ),…,f [t 0+(N -1)Δt]},将序列表示成f[n ]=f (t 0+n Δt )。式中n 为离散值0,1,2,…,N -1。被抽样的离散傅立叶变换为:
F (k )=
1N ∑N -1n =0
f (n )e -j 2π
kn/N
2007年第12期
张康等:基于Matlab 的音频文件数字滤波处理
99
f (n )=∑N -1
k =0F (k )e
j 2
πkn/N (1)
表达式(1)为离散傅立叶变换对,表达式(1)说
明计算机在处理有限序列时,把该信号作为周期信号来处理,且f (n )和F (k )周期相同,周期T =N 。所以,对一个具有N 个采样点的音频文件,其傅立叶变换结果大小仍然为N 。
声音文件持续的时间t =N 3Δt,其中Δt 为采样
周期,采样频率f =1/
Δt 。表达式(1)给出的傅立叶变换中,k =0,1,2,…,N -1分别对应于0,Δf,2
Δf,…,(N -1)Δf 处傅立叶变换的抽样值。可以证明Δf 和Δt 的关系为Δf =1/(N 3Δt ),其中Δf 的单位为Hz (赫兹)。
3 基于M a tl ab 的数字滤波实例
现有一带盲音的wav 音频文件,其杂音主要集中
在低频,而有用信号集中在高频部分。所以,对该音频信号做傅立叶变换,把变换结果通过一个高通滤波器,再经傅立叶反变换得到处理后的音频信号。
原始wav
音频文件在时域上的图形如图1所示。
图1 时域上的原始信号
现要去除其中的杂音,Matlab 代码如下:
[f,FS,bits]=wavread (′origin .wav ′);%读取源文件,其中f 为数据,FS 为%采样频率,bits 为量化位数
[m,n ]=size (f );%m 为采样点个数
F =fft (f,23m -1);%对f 零填充后进行傅立叶变换,结
果为F 。
F1=abs (F );%F1为F 的频率振幅谱p l ot (F1)%绘制F 的频谱图axis ([023m -20500])H =l pfilter2(′bt w ′,23m -1,7000,20);%设计butter worth 低通滤波器H =(1-H )′;
H =0.001+H;%H 为高通滤波器figure,p l ot (H )%绘制滤波器图形
F =F .3H;%频域滤波,F 为滤波结果F2=abs (F );%F2为F 的频率振幅谱figure,p l ot (F2)%绘制F 的频谱图f2=real (ifft (F ));
%对F 进行傅立叶变换,结果为f2f2=f2(1:size (f,1),1:size (f,2));
wav write (f2,FS,bits,′result .wav ′
);%将处理后的数据写入result .wav 音频文件
其中,l pfilter2()为自定义函数,Matlab 如下:
functi on H =l pfilter2(type,M ,D0,n )[U ]=dftu (M );D =U;s witch type
case ′ideal ′
H =double (D <=D0);%D <=D0返回一个逻辑值,true 为1,false 为0
case ′bt w ′if nargin ==3
%只有三个输入参数时n =1;end
H =1./(1+(D./D0).^(23n ));case ′gaussian ′H =exp (-(D.^2)./(23(D0^2)));other wise
err or (′Unknown filter tyep ′)end
其中,dftu ()为自定义函数,Matlab 代码如下:
functi on [U ]=dftu (M )u =0:(M -1);
idx =find (u >M /2);u (idx )=M -u (idx )-1;U =u;
该文件采样频率FS =11025,共有79161个采样点。所以,该声音文件持续时间为:t =N 3Δt =791613(1/11025)=7.18(s ),频率抽样间隔为:Δf =1/(N 3Δt )=1/7.18(Hz )。
对原始信号进行离散傅里叶变换,
绘制出其频率振幅图如图2所示。
图2 原始信号频率振幅谱
图2表明0至835赫兹的频率分量具有较高的
能量,而该低频成分正是噪音部分。
高通滤波函数H 的图形如图3所示。
图2信号乘以图3的滤波器,得到滤波结果,如图4所示。
100 计 算 机 与 现 代 化2007年第12
期
图3
高通滤波器
图4 滤波结果频率振幅谱
从图中4我们可以看到,滤波器把小于835赫兹
的频率分量的能量降低,而对高频成分没有影响。
处理后的wav 文件时域图如图5所示
。
图5 时域滤波结果
4 结束语
wav write (f2,FS,bits,′result .wav ′
)语句中的FS 为采样频率,如果改变FS 的结果,则可以改变音频文件的播放速度。例如改为23FS,则新的wav 音频文件的持续时间为:t =N 3Δt =791613(1/2311025)=4.09(s )比原音频文件的语速快一倍。
参考文献:[1] 张小虹.信号与系统[M ].西安:西安电子科技大学出
版社,2004.
[2] Ed ward W Ka men,Bonnie S Heck .信号与系统基础———
应用W eb 和Matlab[M ].北京:科学出版社,2002.[3] 阮沈勇,王永利,桑群芳.Matlab 程序设计[M ].北京:电
子工业出版社,2004.
[4] Rafael C Gonzalez,R ichard E Woods,Steven L Eddins .数
字图像处理(M atlab 版)[M ].阮秋琦,等译.北京:电子工业出版社,2005.
(上接第97页)
S =r H T
=(1001001)1 0 0 1 0 1 1
0 1 0 1 1 1 0
0 0 1 0 1 1 1
T
=(111)
由s =(111),可知e =(0000010),这时可将接收的矢量r =(1001001)译为:c =r +e =(1001001)+(0000010)=(1001011),即正确译码。
理论分析与实验结论一致,电路设计正确。设计译码电路时要注意的问题有:
(1)数字信号传输的码字为串行输入串行输出,输入时需要通过移位寄存器进行串并转换,输出时需要将并行数据转换为串行输出;
(2)为了同步和电路简单,脉冲信号和运算过程中的控制脉冲可以利用数字信号发生器产生;
(3)采用移位寄存器存在时序问题,输入与输出有8个延时,所以在7个移位寄存器后面要再加上一个移位寄存器进行延时,保持同步。
4 结束语
从仿真过程可以看出来,采用E WB 软件能较好地对编码电路进行系统仿真。基于E WB 创设的学习环境,丰富了实验课堂教学方法,拓展了教学内容的广度和深度,为学生创造了更多的动手设计的机会,使学生能够将理论与实践相结合,提高了学习的主动性。
参考文献:[1] 姜丹,钱玉美.信息论与编码[M ].合肥:中国科学技术
大学出版社,1992.[2] 钟文耀,段玉生,何丽静.E WB 电路设计入门与应用
[M ].北京:清华大学出版社,1999.[3] 顾藏知,陈战平.数字电路与逻辑设计[M ].成都::电子
科技大学出版社,1999.[4] 陈运,周亮.信息论与编码[M ].北京:电子工业出版社,
2002.[5] 阎石.数字电子技术基础[M ].北京:高等教育出版社,
1998.