基于声卡的数字滤波技术的研究.docx

上传人:b****5 文档编号:29106625 上传时间:2023-07-20 格式:DOCX 页数:20 大小:1.83MB
下载 相关 举报
基于声卡的数字滤波技术的研究.docx_第1页
第1页 / 共20页
基于声卡的数字滤波技术的研究.docx_第2页
第2页 / 共20页
基于声卡的数字滤波技术的研究.docx_第3页
第3页 / 共20页
基于声卡的数字滤波技术的研究.docx_第4页
第4页 / 共20页
基于声卡的数字滤波技术的研究.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于声卡的数字滤波技术的研究.docx

《基于声卡的数字滤波技术的研究.docx》由会员分享,可在线阅读,更多相关《基于声卡的数字滤波技术的研究.docx(20页珍藏版)》请在冰豆网上搜索。

基于声卡的数字滤波技术的研究.docx

基于声卡的数字滤波技术的研究

基于声卡的数字滤波技术的研究

 

 

专业:

电子信息工程

班级:

姓名:

学号:

指导教师:

一、实验类型

综合研究性实验

二、实验目的

1.掌握采样定理及FFT谱分析的基本原理及其利用Matlab的实现方法;

2.掌握数字滤波器的设计原理和方法;

3.学习并掌握用MATLAB编程系统。

三、实验要求

1.采集语音信号;

2.对语音信号进行采样并混进加性噪声,作频谱分析;

3.通过频谱分析选择合适的滤波器性能指标,设计合适的数字滤波器,并对含噪音的语音信号进行数字滤波;

四、数字滤波器的设计原理

数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。

数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。

IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配,所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。

其设计方法主要有经典设计法、直接设计法和最大平滑滤波器设计法。

FIR数字滤波器的单位脉冲响应是有限长序列。

它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。

在对滤波器实际设计时,整个过程的运算量是很大的。

设计阶数较高的IIR滤波器时,计算量更大,设计过程中改变参数或滤波器类型时都要重新计算。

设计完成后对已设计的滤波器的频率响应要进行校核。

要得到幅频、相频响应特性,运算量也是很大的。

平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候要根据设计要求和滤波效果不断地调整,以达到设计的最优化。

在这种情况下,滤波器设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成。

利用MATLAB强大的计算功能进行计算机辅助设计,可以快速有效地设计数字滤波器,大大地简化了计算量。

五、信号处理原理、分析和实现

1.采样定理

在进行模拟/数字信号的转换过程中,当采样频率最大值大于信号中最高频率fmax的2.56倍时,即:

fs.max>=2.56fmax,则采样之后的数字信号完整地保留了原始信号中的信息。

2.采样频率

采样频率是指计算机每秒钟采集多少个声音样本,采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。

只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。

程序中采用44.1kHz采样频率。

3.语音的录入与打开

在MATLAB中,[y,fs,bits]=wavread('Blip',[N1N2]);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。

[N1N2]表示读取从N1点到N2点的值。

X=wavrecord(t,fs,ch);用来采集声音;t表示录音时间,fs采样频率,ch声道。

4.时域信号的FFT分析

FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。

函数FFT用于序列快速傅立叶变换,其调用格式为y=fft(x),其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT且和x相同长度;若x为一矩阵,则y是对矩阵的每一列向量进行FFT。

如果x长度是2的幂次方,函数fft执行高速基-2FFT算法,否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。

函数FFT的另一种调用格式为y=fft(x,N),式中,x,y意义同前,N为正整数。

函数执行N点的FFT,若x为向量且长度小于N,则函数将x补零至长度N;若向量x的长度大于N,则函数截短x使之长度为N;若x为矩阵,按相同方法对x进行处理。

5.数字滤波器设计原理

数字滤波是数字信号分析中最重要的组成部分之一,与模拟滤波相比,它具有精度和稳定性高、系统函数容易改变、灵活性强、便于大规模集成和可实现多

维滤波等优点。

在信号的过滤、检测和参数的估计等方面,经典数字滤波器是使用最广泛的一种线性系统。

数字滤波器的作用是利用离散时间系统的特性对输入信号波形(或频谱)进行加工处理,或者说利用数字方法按预定的要求对信号进行变换。

6.数字滤波器的设计步骤

不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤:

(1)按照实际任务的要求,确定滤波器的性能指标。

(2)用一个因果、稳定的离散线性时不变系统的系统函数去逼近这一性能指标。

根据不同的要求可以用IIR系统函数,也可以用FIR系统函数去逼近。

(3)利用有限精度算法实现系统函数,包括结构选择、字长选择等。

7.IIR滤波器与FIR滤波器的性能比较

FIR:

FiniteImpulseresponse,有限冲击响应IIR:

InfiniteImpulseresponse,无限冲击响应从性能上来说,IIR滤波器传输函数的极点可位于单位圆内的任何地方,因此可用较低的阶数获得较高的选择性,所用的存贮单元少,所以经济而效率高。

但是这个高效率是以相位的非线性为代价的。

选择性越好,则相位非线性越严重。

相反,FIR滤波器却可以得到严格的线性相位,然而由于FIR滤波器传输函数的极点固定在原点,所以只能用较高的阶数达到较高的选择性;对于同样的滤波器设计指标,FIR滤波器所要求的阶数可以比IIR滤波器高5~10倍,结果,成本较高,信号延时也较大;如果按相同的选择性和相同的线性要求来说,则IIR滤波器就必须加全通网络进行相位较正,同样要大增加滤波器的节数和复杂性。

整体来看,IIR滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位;FIR滤波器没有稳定性问题,线性相位,但阶数多,延迟大。

6、图形用户界面设计

1、语音信号的采集:

利用自己下载的语音软件,录一段格式为wav的音乐,然后用剪辑软件从此段录音的中间截取1秒的录音,保存为“hange4

(1).wav”。

然后在MATLAB软件平台下,利用函数wavread对信号进行采样,记录采样频率和采样位数。

具体情况如下:

在MATLAB输入界面输入以下代码:

y=wavread('E:

\hange4

(1).wav');plot(y);title('时域信号图')得到语音信号的时域信号图,结果如图:

程序运行可以听到声音得到的结果如图1-1所示

图1-1语音信号的读入与打开

2、设计数字滤波器和对信号进行滤波

(1)FIR滤波器的窗函数设计

代码如下:

clear;

closeall

[y,fs,bits]=wavread('E:

\hange4

(1).wav')

y1=y(1:

500);Y1=fft(y1);

fp=500;fc=1200;As=100;

Ap=1;Fs=8000;

wc=2*pi*fc/Fs;

wp=2*pi*fp/Fs;

wdel=wc-wp;

beta=0.112*(As-8.7);

N=ceil((As-8)/2.285/wdel);

wn=kaiser(N+1,beta);

ws=(wp+wc)/2/pi;b=fir1(N,ws,wn);

figure

(1);

freqz(b,1);

x=fftfilt(b,y);

X=fft(x,500);

figure

(2);

subplot(2,2,1);plot(abs(Y1));axis([0,600,0,1.0]);title('滤波前信号频谱');subplot(2,2,2);plot(abs(X));axis([0,600,0,1.0]);title('滤波后信号频谱');subplot(2,2,3);plot(y);title('滤波前信号波形');

subplot(2,2,4);plot(x);title('滤波前后号波形');

结果如下图:

②、窗函数(Hamming窗的高通滤波器)设计高通滤波器。

代码如下:

clear;

closeall

[y,fs,bits]=wavread('E:

\hange4

(1).wav')y1=y(1:

500);

Y1=fft(y1);

fp=1500;fc=2000;As=100;Ap=1;Fs=8000;

wc=2*pi*fc/Fs;

wp=2*pi*fp/Fs;wdel=wc-wp;

beta=0.112*(As-8.7);

N=ceil((As-8)/2.285/wdel);

wn=kaiser(N,beta);

ws=(wp+wc)/2/pi;

b=fir1(N-1,ws,'high',wn);figure

(1);freqz(b,1);

x=fftfilt(b,y);X=fft(x,500);figure

(2);

subplot(2,2,1);plot(abs(Y1));axis([0,600,0,1.0]);

title('滤波前信号频谱');

subplot(2,2,2);plot(abs(X));axis([0,600,0,1.0]);

title('滤波后信号频谱');

subplot(2,2,3);plot(y);title('滤波前信号波形');

subplot(2,2,4);plot(x);title('滤波后信号波形');

结果如下图:

③、窗函数(Hamming窗的带通滤波器)设计带通滤波器。

代码如下:

clear;

closeall

[y,fs,bits]=wavread('E:

\hange4

(1).wav')

y1=y(1:

500);

Y1=fft(y1);

fp1=1200fp2=3000fc1=1000

fc2=3200As=200Ap=1Fs=8000

wp1=2*pi*fp1/Fs;

wc1=2*pi*fc1/Fs;

wp2=2*pi*fp2/Fs;

wc2=2*pi*fc2/Fs;

wdel=wp1-wc1;

beta=0.112*(As-8.7);

N=ceil((As-8)/2.285/wdel);

ws=[(wp1+wc1)/2/pi,(wp2+wc2)/2/pi];

wn=kaiser(N+1,beta);

b=fir1(N,ws,wn);

figure

(1);

freqz(b,1)

x=fftfilt(b,y);X=fft(x,500);

figure

(2);

subplot(2,2,1);plot(abs(Y1));axis([0,600,0,1.0]);title('滤波前信号频谱');

subplot(2,2,2);plot(abs(X));axis([0,100,0,1.0]);title('滤波后信号频谱')

subplot(2,2,3);plot(y);title('滤波前信号波形');subplot(2,2,4);plot(x);title('滤波后号波形');

结果如图:

(2)IIR滤波器的双线性变换法设计

①、双线性变换法设计低通滤波器。

(切比雪夫1型低通滤波器)

代码如下:

clear;

closeall

[z1,fs,bits]=wavread('E:

\hange4

(1).wav')

y1=z1(1:

500);

Y1=fft(y1);

fp=1000;fc=1200;As=100;Ap=1;

Fs=8000;

wc=2*fc/Fs;wb=2*fp/Fs;

[n,wp]=cheb1ord(wc,wb,Ap,As);

[b,a]=cheby1(n,Ap,wp);figure

(1);freqz(b,a);

x=filter(b,a,z1);

X=fft(x,500);figure

(2);

subplot(2,2,1);plot(abs(Y1));axis([0,600,0,1.0]);title('滤波前信号频谱');subplot(2,2,2);plot(abs(X));axis([0,600,0,1]);title('滤波后信号频谱');subplot(2,2,3);plot(z1);title('滤波前信号波形');

subplot(2,2,4);plot(x);title('滤波后信号波形');

结果如图:

②、双线性变换法设计高通滤波器。

(切比雪夫1型高通滤波器)

代码如下:

clear;

closeall

[z1,fs,bits]=wavread('E:

\hange4

(1).wav')

y1=z1(1:

500);

Y1=fft(y1);

fc=2800fp=3000As=100;Ap=1;

Fs=8000;

wc=2*fc/Fs;

wb=2*fp/Fs;

[n,wp]=cheb1ord(wc,wb,Ap,As);

[b,a]=cheby1(n,Ap,wp,'high');

figure

(1);

freqz(b,a);

x=filter(b,a,z1);

X=fft(x,500);

figure

(2);

subplot(2,2,1);plot(abs(Y1));axis([0,500,0,1.0]);title('滤波前信号频谱');subplot(2,2,2);plot(abs(X));axis([0,600,0,1]);title('滤波后信号频谱');subplot(2,2,3);plot(z1);title('滤波前信号波形');

subplot(2,2,4);plot(x);title('滤波后信号波形');

结果如图:

③、双线性变换法设计带通滤波器。

(巴特沃斯型带通滤波器)

代码如下:

clear;

closeall

[z1,fs,bits]=wavread('E:

\hange4

(1).wav')

y1=z1(1:

500);

Y1=fft(y1);

fp1=1200fp2=3000;fc1=1000fc2=3200As=100;Ap=1;

Fs=8000;

wc=[2*fc1/Fs,2*fc2/Fs];wp=[2*fp1/Fs,2*fp2/Fs];

[N,ws]=buttord(wc,wp,Ap,As);

[b,a]=butter(N,ws,'stop');figure

(1);

freqz(b,a,512,Fs);

x=filter(b,a,z1);

X=fft(x,500);

figure

(2);

subplot(2,2,1);plot(abs(Y1));axis([0,600,0,1.0]);title('滤波前信号频谱');subplot(2,2,2);plot(abs(X));axis([0,600,0,1.0]);title('滤波后信号频谱');subplot(2,2,3);plot(z1);title('滤波前信号波形');

subplot(2,2,4);plot(x);title('滤波后信号波形');

结果如图:

本次课程设计的最终图形用户界面如图1-6所示

七、图形用户界面制作

MATLAB中图形用户界面的制作有两种方法M文件和GUIDE本设计采用GUIDE的方法制作GUI。

1.新建一个空白GUI模板进入MATLAB程序界面以后执行File→New→GUI过程即可进入

2.选择空白模板选项条单击OK一个空白GUI模板生成

3.拖拉白色框的右下角调整界面大小现在就可以开始设计GUI功能界面了。

从左边控件框选择所需要的控件放置在GUI面板中然后对各个控件进行编辑包括位置、大小、颜色、名称以及编写回调函数等。

本设计主要用到下拉菜单、坐标系、框架和按钮现分别介绍。

4.按钮设计按钮键又称命令按钮或按钮是小的长方形屏幕对象常常在对象本身标有文本。

将鼠标指针移至对象单击鼠标按钮执行由回调字符串所定义的动作。

单击空间框左侧的PushButton按钮在图形编辑框中确定其位置后单击鼠标左键即可放置

现在开始编写回调函数确定按钮功能。

在按钮上单击鼠标右键选择view

-callbacks→callback即可在M文件中找到该按钮的回调函数位置。

然后编写功能函数本设计中该按钮的功能是绘制原始波形那么只需要读取语音信号并画出波形。

5.坐标系设计坐标轴对象是许多图形对象的父对象每一个可视化显示用户数据的图形窗口都包含一个或多个坐标轴对象。

坐标轴对象确定了图形窗口的坐标系统所有绘图函数都会使用当前坐标轴对象或创建一个新的坐标轴对象用于确定其绘图数据点在图形中的位置。

单击空间框左侧的Axes按钮在图形编辑框中确定其位置后单击鼠标左键即可放置

6.框架设计框架对象仅是带色彩的矩形区域框架提供了视觉的分隔性

框架的style属性值是Frame。

在其他对象放入框架之前框架应事先定义否则框架可能覆盖控制框使他们不可见。

八、总结

由以上实验结果可知:

1、FIR滤波器与IIR滤波器的区别:

2、IIR滤波器相位特性不好,不易控制;而FIR数字滤波器具有严格的相位特性。

3、双线性变换优点:

双线性变换不会出现高频部分超过折叠频率而混淆到低频部分去的现象;双线性变换法的缺点:

会产生频率混叠现象,使数字滤波器的频响偏移模拟滤波器的倾向。

4、窗函数法分析:

窗函数法:

相位响应有严格的线性,不存在稳定性问题,设计简单。

本设计圆满的完成了对语音信号的读取与打开与课题的要求十分相符本设计也较好的完成了对语音信号的频谱分析通过fft变换得出了语音信号的频谱图

在滤波这一块课题主要是从巴特沃斯滤波器入手来设计滤波器也从一方面基本实现了滤波初略的完成了界面的设计但也存在相当的不足只是很勉强的达到了打开语音文件、显示已定滤波前后的波形等图。

语音信号处理是语音学与数字信号处理技术相结合的交叉学科课题在这里

不讨论语音学而是将语音当做一种特殊的信号即一种“复杂向量”来看待。

也就是说课题更多的还是体现了数字信号处理技术。

从课题的中心来看课题是希望将数字信号处理技术应用于某一实际领域这里就是指对语音的处理。

作为存储于计算机中的语音信号其本身就是离散化了的向量我们只需将这些离散的量提取出来就可以对其进行处理了。

在这里用到了处理数字信号的强有力工具MATLAB通过MATLAB里几个命令函数的调用很轻易的在实际化语音与数字信号的理论之间搭了一座桥。

课题的特色在于它将语音看作了一个向量于是语音数字化了则可以完全利用数字信号处理的知识来解决。

我们可以像给一般信号做频谱分析一样来给语音信号做频谱分析也可以较容易的用数字滤波器来对语音进行滤波处理。

但由于知识能力有限当中也存在相当的不足特别体现在滤波与界面设计这一块。

仅就刚学习到的一些加以运用于是设计的还是很粗燥。

当然这些问题与不足在今后的进一步学习中我会一步一步的去进行解决,还有特别多的地方要学习。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1