欢迎来到天天文库
浏览记录
ID:6232967
大小:128.00 KB
页数:8页
时间:2018-01-07
《频信号的频谱分析及butterworth滤波》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、编号武汉工业学院课程设计课题名称:音频信号的频谱分析及Butterworth滤波学生姓名:学号:061203123专业:电子信息科学与技术班级:(1)指导老师:李强2009年6月17日8一、问题的提出:音频是多媒体中的一种重要媒体。我们能够听见的音频信号的频率范围大约是20Hz-2OkHz,其中语音大约分布在300Hz-4kHz之内,而音乐和其他自然声响是全范围分布的。语音信号是基于时间轴上的一维数字信号,在这里主要是对语音信号进行频域上的分析。在信号分析中,频域往往包含了更多的信息。对于频域来说,大
2、概有8种波形可以让我们分析:矩形方波,锯齿波,梯形波,临界阻尼指数脉冲波形,三角波,余旋波,余旋平方波,高斯波。对于各种波形,我们都可以用一种方法来分析,就是傅立叶变换:将时域的波形转化到频域来分析。傅立叶变换和信号的采样是进行音频分析时用到的最基本的技术。傅立叶变换是进行频谱分析的基础,信号的频谱分析是指按信号的频率结构,求取其分量的幅值、相位等按频率分布规律,建立以频率为横轴的各种“谱”,如幅度谱、相位谱。于是,本次课程设计就从频域的角度对信号进行分析,通过MATLAB画出其滤波前后波形图和频谱图
3、,并通过分析频谱来设计出合适的滤波器。在本此设计中,采用的则是巴特沃思滤波器。二、设计方案:利用MATLAB中的wavread命令来读入(采集)语音信号,将它赋值给某一向量。再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析,再依据实际情况对它进行滤波。对于波形图与频谱图(包括滤波前后的对比图)都可以用MATLAB画出。我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化。选择设计此方案,是对数字信号处理的一次实践。在数字信号处理的课程学习过程中,我们过多的是理论学
4、习,几乎没有进行实践方面的运用。这个课题正好是对数字语音处理的一次有利实践,而且语音处理也可以说是信号处理在实际应用中很大众化的一方面。这个方案用到的软件也是在数字信号处理中非常通用的一个软件——MATLAB软件。所以这个课题的设计过程也是一次数字信号处理在MATLAB中应用的学习过程。课题用到了较多的MATLAB语句,而由于课题研究范围所限,真正与数字信号有关的命令函数却并不多。三、主体部分:(一)、语音的录入与打开:[k,fs,bits]=wavread(namefile,[N1N2]);用于读取
5、语音,采样值放在向量k中,fs表示采样频率(Hz),bits表示采样位数。[N1N2]表示读取从N1点到N2点的值(若只有一个N的点则表示读取前N点的采样值)。8wavplay(y,Fs)是一个wav文件播放函数用mp3录音,生成文件cricket.wav,把该文件放到matlab文件夹里面(就是你打开matlab后中间顶部的地址)。(二)、频谱分析:使用如下程序,做波形显示以及fft变换。[y,Fs,bits]=wavread('zhj.wav');%读出信号,采样率和采样位数。y=y(:,1);%
6、我这里假设你的声音是双声道,我只取单声道作分析,如果你想分析另外一个声道,请改成y=y(:,2)sigLength=length(y);Y=fft(y,sigLength);Pyy=Y.*conj(Y)/sigLength;halflength=floor(sigLength/2);f=Fs*(0:halflength)/sigLength;figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');t=(0:sigLength-1)/Fs;f
7、igure;plot(t,y);xlabel('Time(s)');频率看频谱就有了,声音间隔看声音波形,周期看声音波形。(三)、滤波器设计:关于去噪声。a)如果噪声是特定频率的周期噪声(periodicnoise),比如说50hz,那么你可以用matlab的filter,作一个低通、高通、带通或者带阻滤波。b)如果声音是高斯白噪声。那就用自适应滤波(adaptivefilter,wienerfilter)。这里涉及到对噪声的采样、计算特征值以及决定阶数的问题。c)打开wav文件,用鼠标把一段噪声圈起
8、来,采样,然后直接选择去噪就可以了。为了便于观察我用matlab去除低于500hz和高于1000hz的噪声。采用一个10阶butterworth高通滤波器,边带是1000hz和一个10阶butterworth低通滤波器,边带是500hz,把音先采样,然后再滤波,然后再插值。程序如下[k,Fs,bits]=wavread('zhoumin.wav')figureplot(k)k=k(:,1)8y_temp=k(1:9000)dfactor=3y=decim
此文档下载收益归作者所有