数字信号处理课设报告.docx
- 文档编号:7286641
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:13
- 大小:72.27KB
数字信号处理课设报告.docx
《数字信号处理课设报告.docx》由会员分享,可在线阅读,更多相关《数字信号处理课设报告.docx(13页珍藏版)》请在冰豆网上搜索。
数字信号处理课设报告
洛阳理工学院
课程设计报告
课程名称数字信号处理
设计题目使用经典滤波器进行语音信号去噪
专业通信工程
班级
学号
姓名
完成日期
课程设计任务书
设计题目:
使用经典滤波器进行语音信号去噪。
_________________________________________________________
设计内容与要求:
录制一段自己的语音信号(可以录制含有噪音的信号,或者录制语音后再加进噪音信号),要求:
(1)对语音信号进行采样;
(2)画出采样后语音信号的时域波形和频谱图;
(3)设计一个合适的滤波器,并画出滤波器的频率响应曲线;
(4)用设计的滤波器对语音信号进行滤波,画出滤波后信号的时域波形和频谱图;
(5)对滤波前后的信号进行对比,分析信号的变化;
(6)回放语音信号。
课程设计评语
成绩:
指导教师:
年月日
目录
摘要1
ABSTRACT2
绪论3
1语音信号处理的基本知识5
1.1语音的录入和打开5
1.2采样位数和采样频率5
1.3时域信号FFT分析5
1.4数字滤波器设计原理6
2Matlab相关函数7
2.1wavread函数7
2.2其他相关函数7
3去噪和仿真的研究9
3.1语音文件在Matlab平台上的录入与打开9
3.2原始语音信号频谱分析及仿真9
4设计思路11
5设计程序12
6实验结果14
7实验心得17
摘要
在数字信号处理中,滤波器的设计占有极其重要的地位。
而其中,FIR数字滤波器和IIR数字滤波器是重要组成部分。
Matlab具有功能强大、简单易学、编程效率高等特点,深受广大科技工作者的喜爱。
特别是Matlab中还具有信号分析工具箱,所以对于使用者,不需要具备很强的编程能力,就可以方便地进行信号分析、处理和设计。
利用Matlab中的信号处理工具箱,可以快速有效的设计各种数字滤波器。
本论文基于Matlab语音信号处理的设计与实现,综合运用数字信号处理的相关理论知识,对加噪声语音信号进行时域、频域分析并滤波。
而后通过理论推导得出相应结论,再利用Matlab作为编程工具进行计算机实现工作。
在设计实现的过程之中,使用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,使用窗函数法来设计FIR数字滤波器,并利用Matlab作为辅助工具,完成设计中的计算与图形的绘制。
通过对所设计滤波器的仿真和频率特性的分析可知,利用Matlab信号处理工具箱,可以快捷有效地设计FIR和IIR数字滤波器,过程简单、方便,结果的各项性能指标也均达到指定要求。
关键字:
Matlab;滤波器;IIR;FIR
ABSTRACT
Indigitalsignalprocessing,filterdesignoccupiesanextremelyimportantposition.Andamongthem,theFIRdigitalfilterandIIRdigitalfilterisanimportantpart.Matlabhaspowerfulfunction,easytolearn,programmingefficiencyhighercharacteristic,andwasdeeplylovedbythemassesofscientificandtechnicalworkers.EspeciallyalsohassignalanalysistoolboxinMatlab,soforusers,don'tneedtohavestrongprogrammingability,canbeeasilysignalanalysis,processinganddesign.SignalprocessingtoolboxofMatlab,canbeusedtoquicklyandefficientlydesignallkindsofdigitalfilter.InthispaperthedesignandimplementationofspeechsignalprocessingbasedonMatlab,theintegrateduseoftherelevanttheoreticalknowledgeofdigitalsignalprocessing,toaddnoisespeechsignalintimedomain,frequencydomainanalysisandfiltering.Andthencorrespondingconclusionthroughtheoreticalderivation,usingMatlabasaprogrammingtoolforcomputerimplementationwork.Implementationinthedesignprocess,usingbutterworth,chebyshevandbilinearreformIIRdigitalfilterdesign,windowfunctionmethodusedtodesignFIRdigitalfilter,andbyusingtheMatlabasanauxiliarytool,tocompletethedesignofcomputingandgraphicsdrawing.ThroughasimulationofthedesignedfilterandfrequencycharacteristicanalysisshowsthatusingtheMatlabsignalprocessingtoolbox,canquicklyandeffectivelytodesignFIRandIIRdigitalfilter,theprocessissimple,convenient,andtheresultsofvariousperformanceindicatorsmeetthespecifiedrequirements.
Keywords:
Matlab;Filter;IIR;FIR
绪论
语音信号的采集与分析技术的应用和发展与语音学、声音测量学、电子测量技术以及数字信号处理等学科紧密联系,同时也是一门涉及面很广的交叉学科。
语音是人类获取信息的重要来源,是利用信息的重要手段。
由于实验条件或各种其他主、客观条件的限制,在信号的传输过程中,语音处理系统都不可避免地要会受到各种噪声的干扰。
噪声不仅降低了语音的可懂度,破坏了语音质量,而且还将会导致系统性能的急剧恶化,严重时会使整个系统无法正常工作。
Matlab是由美国Mathworks公司发布的一款软件,该软件主要面对的是科学计算、可视化以及交互式程序设计的高科技计算环境。
它具有数值分析、矩阵计算、非线性动态系统的建模和仿真以及科学数据可视化等功能。
它被集成在一个易于使用的视窗环境下,为工程设计、科学研究以及其它一些必须进行有效数值计算的众多科学领域提供了一种全面有效的解决方案。
它在很大程度上摆脱了传统的其它编程语言的限制,如C语言、Fortran语言的编辑模式,代表了当今国际科学计算软件的先进水平。
其强大的数据处理能力可以极大程度上削弱噪声影响,其还原出的真实的语音信号相符度一般都在90%以上。
数字滤波器和快速傅立叶变换(FFT)等是语音信号数字处理的理论和技术基础,是20世纪60年代形成的一系列数字信号处理的理论和算法。
随着信息科学技术的快速发展,语音信号处理技术也相应取得了重大的进展:
进入70年代之后,出现了很多新兴技术,其中语音信号的信息压缩和特征提取的线性预测技术(LPC)作用日益突出,逐渐在数字信号处理领域占据统治地位,并广泛应用于语音信号的分析、合成及其他各个应用领域。
进入80年代后,一种新的技术:
基于聚类分析的高效数据压缩技术—矢量量化(VQ),被应用到语音信号处理领域之中;而随着隐马尔可夫模型(HMM)描述语音信号过程的产生,80年代语音信号处理技术也随之发生了重大的发展。
目前,HMM已构成了现代语音识别研究的重要基石。
进入21世纪之后,人工神经网络,也即是人们所称的ANN的研究,取得了快速发展,语音信号处理的各项研究的发展是促进其进步的重要源泉之一,他的各项成果也体现在语音信号处理的各项技术之中。
本论文主要介绍的是语音信号的简单处理。
由于语音信号的处理有很多种类,本论文仅针对滤波处理去噪这一范围,运用数字信号处理所学基本原理,以实现语音信号的处理,在Matlab7.0环境下综合运用信号提取,幅频变换以及傅里叶变换、滤波等技术来进行语音信号滤波去噪。
我所做的工作就是运用Matlab软件,在其上编写几个处理语音信号的程序,能对语音信号进行采集,并对其进行各种处理,达到简单的语音信号处理的目的。
硬件环境:
(1)处理器:
InterPentiumB950
(2)内存:
2G(3)硬盘空间:
460G
(4)显卡:
NVIDIAGeForceGT520
开发环境:
(1)操作系统:
Windows7(64位旗舰版)
(2)开发环境:
Matlab7.0
1语音信号处理的基本知识
1.1语音的录入和打开
在Matlab中,[y,fs,bits]=wavread('Blip',[N1N2]),用于读取语音信号,采样值放在向量y中。
fs表示采样频率(Hz),bits表示采样位数。
[N1N2]表示读取从N1点到N2点的值。
若只有一个N的点,则表示读取前N点的采样值。
sound(x,fs,bits)该函数的作用是用于对声音进行回放。
向量x是一个复杂的“函数表达式”,代表了一个信号,可以像处理一个信号表达式一样处理这个声音信号。
1.2采样位数和采样频率
所谓采样位数,也即是采样值或取样值,一般是用来衡量声音波动变化的参数。
指的是声卡在采集和播放声音文件时,所使用的数字声音信号的二进制位数。
采样频率,则是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高,则声音的还原就越真实,越自然。
对于音频接口来说,采样位数和采样率是最为重要的两个指标,也是选择音频接口的两个重要标准。
单从理论上来说,无论采样频率如何,采样的位数决定了音频数据最大的力度范围。
每增加一个采样位数,则相当于力度范围增加了6dB。
采样位数越多,则捕捉到的信号就会越精确。
对于采样率来说,你可以想象它类似于一个照相机,40kHz则意味着当音频流进入计算机时,计算机每秒会对其拍照达40000次。
显然采样率越高,计算机摄取的图片会越多,对于原始音频的还原也将会更加精确。
1.3时域信号FFT分析
FFT,即快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换DFT的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进而后获得的。
在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进行处理。
1.4数字滤波器设计原理
数字滤波器的作用是利用离散时间系统的特性,对输入信号波形(或频谱)进行加工与处理,或者说利用数字方法,按预定的要求对信号进行变换。
可以将数字滤波器理解为一个算法或者程序,将代表输入信号的数字时间序列,转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
数字滤波器有多种,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,一种是无限长冲激响应(IIR)滤波器,另外一种则是有限长冲激响应(FIR)滤波器。
从性能上说,IIR滤波器传输函数的极点可位于单位圆内的任何地方,因此可用于较低的阶数,以获得高的选择性,所用的存贮单元少,所以经济且效率较高。
但是这个高效率是以牺牲相位的非线性为代价的。
若选择性越好,则相位非线性失真会越严重。
相反,FIR滤波器却可以得到严格的线性相位输出,但由于FIR滤波器传输函数的极点固定在原点,因而只能用较高的阶数以达到高的选择性;对于同样的滤波器设计指标,FIR滤波器所要求的阶数可以比IIR滤波器高5~10倍,但是成本较高,信号延时也较大;所以如若按相同的选择性和相同的线性要求来说的话,则IIR滤波器就必须加全通网络以进行相位较正,同时要增加滤波器的节数和复杂性。
整体来看,IIR与FIR各有优缺点。
IIR滤波器能达到同样效果,且阶数少,延迟也较低,但是会有稳定性和非线性相位问题;FIR滤波器虽然没有稳定性问题,且线性相位,但阶数多,延迟大。
2Matlab相关函数
2.1wavread函数
选取一段声音信号,而后利用该函数,在Matlab软件平台下对语音信号进行采样处理,同时记住采样频率与采样点数。
通过使用wavread函数,加深理解采样频率、采样位数等概念。
wavread函数调用格式一般有以下几种:
y=wavread(file),该式读取file所规定的wav文件,返回的采样值放在向量y中。
[y,fs,nbits]=wavread(file),所得采样值放在向量y中,fs表示采样频率(Hz),nbits表示采样位数。
y=wavread(file,N),读取前N点的采样值并放在向量y中。
y=wavread(file,[1N,2N]),读入从1N到2N点的采样值并放在向量y中。
2.2其他相关函数
(1)函数fftfilt
函数fftfilt的调用格式为:
y=fftfilt(b,x)。
该格式是利用基于FFT的重叠相加法对数据进行滤波处理,但这种频域滤波技术只对FIR滤波器有效。
该函数是通过向量b描述的滤波器对x数据进行滤波。
(2)函数sound
函数sound可以对声音进行回放。
其调用格式为:
sound(x,fs,bits)。
(3)函数filter
函数filter的调用格式为:
y=filter(b,a,x)。
该格式采用的是用数字滤波器对数据进行滤波,既可以用于IIR滤波器,同样,也可以用于FIR滤波器。
其中,向量b和a分别表示的是系统函数的分子、分母多项式的系数。
若a=1,则表示的是FIR滤波器,否则就是IIR滤波器。
该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。
(4)函数randn
Randn函数产生的是[0,1]上的均匀分布的随机序列,randn产生均值为0,方差为1的高斯随机序列,也就是白噪声序列。
也就是说,可以直接使用下面两个函数对原始信号添加噪声。
调用格式为:
y=x+rand(length(x),1),或者y=x+randn(length(x),1)。
(5)函数FFT
在Matlab的信号处理工具箱功能中,函数FFT用于序列快速傅立叶变换。
FFT函数的一种调用格式为:
y=fft(x)
其中,x是序列,y是序列的FFT,x可以为一向量或矩阵。
若x为一向量,y是x的FFT。
且和x相同长度。
FFT函数的另一种调用格式为:
y=fft(x,N)
式中,x,y意义同前,N为正整数。
3去噪和仿真的研究
3.1语音文件在Matlab平台上的录入与打开
单击自己的电脑开始菜单,选择所有程序,接着选择附件,再选择娱乐,最后选择录音。
自己录入“毕业设计声音文件”语音信号,然后保存在MATLAB的work文件夹里面,命名为“chushi.wav”。
利用Matlab中的wavread命令,读入(采集)本段语音信号,将它赋值给某一向量。
3.2原始语音信号频谱分析及仿真
在Matlab中使用wavread函数,可得出一个采样频率为22500HZ,并且声音是单声道的信号。
利用Sound函数,我们可以清晰的听到“毕业设计声音文件”的语音。
采集数据并画出波形图。
在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为正整数。
函数执行序列x的N点快速傅里叶变换(fft)。
若x为向量,且长度小于N,则函数会将x补零至长度N。
若向量x的长度大于N,则函数将截短x,使之长度为N。
若x为矩阵,则按相同方法对x进行相应处理。
由于经函数fft所求得的序列y一般是复序列,所以通常要求其幅值和相位。
Matlab提供求复数的幅值和相位函数:
abs,angle,这些函数一般和fft同时使用。
函数abs(x)用于计算复向量x的幅值,而函数angle(x)则用于计算复向量的相角,用弧度表示。
用Matlab工具箱函数fft进行频谱分析时,需注意:
(1)函数fft返回值y的数据结构对称性
一般的,对于N点的x(n)序列的fft是N点的复数序列,其点n=N/2+1所对应的是奈奎斯特频率,作频谱分析时仅取序列X(k)的前一半,即前N/2点即可。
由于X(k)的后一半序列和前一半序列是对称的,所以不必再求。
(2)频率计算
若N点序列x(n)(n=0,1,…,N-1)是在采样频率下获得的,则它的FFT也是N点序列,即X(k)(k=0,1,2,…,N-1),其第k点所对应实际频率值为f=k*f/N.
4设计思路
5设计程序
clearall
closeall
clc
[y,fs]=wavread('C:
\ProgramFiles\MATLAB\R2009a\DSPing_EX\ex008\test003.wav');%读取音频信号
[B,A]=butter(3,[1450/(fs/2),1550/(fs/2)],'stop');%设计带阻滤波器
res=filter(B,A,y);%滤去原信号噪声波
figure
freqz(B,A,512);%1号滤波器的频率响应曲线
T=length(y)/fs;
tt=1/fs:
1/fs:
T;
figure
subplot(211);plot(tt(1:
2000),res(1:
2000));%原信号时域图
fSig=abs(fftshift(fft(res)));
ww=linspace(-fs/2,fs/2,length(fSig));
subplot(212);plot(ww,fSig);%原信号频域图
noise=sin(2*pi*2400*tt);%设计噪声信号
res=res+noise';%加入噪声到原信号中
figure
subplot(211);plot(tt(1:
2000),y(1:
2000));%有噪声信号时域图
gSig=abs(fftshift(fft(res)));
vv=linspace(-fs/2,fs/2,length(gSig));
subplot(212);plot(vv,gSig);%有噪声信号频域图
[B,A]=butter(3,[2350/(fs/2),2450/(fs/2)],'stop');%设计新的带阻滤波器
figure
freqz(B,A,512);%2号滤波器的频率响应曲线
figure
res=filter(B,A,res);%滤去噪声波
hSig=abs(fftshift(fft(res)));
uu=linspace(-fs/2,fs/2,length(hSig));
subplot(211);plot(uu,hSig);%滤波后恢复原信号的频域图
6实验结果
原信号时域图和频域图如图1所示:
图1
有噪声信号时域图和频域图如图2所示:
图2
滤除噪声后的信号频域图如图3所示:
图3
1号滤波器的频率响应曲线如图4所示:
图4
2号滤波器的频率响应曲线如图5所示:
图5
7实验心得
通过这次实验我学会了如何用matlab实现音频信号的去噪和加噪,同时也锻炼了和同学合作的能力,以及独立解决思考问题的能力。
此外,也让我了解到自己所学的知识还不是很扎实,有一些关于编程方面的问题还需要以后努力改进。
总之,从这次实验中,也算是有所收获。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 报告