您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 语音信号的采集与频谱分析(附代码)
《信号与系统》大作业语音信号的采集与频谱分析——基于Matlab的语音信号处理学生姓名:学号:专业班级:电子工程学院卓越班指导老师:2015年6月22日基于matlab的语音信号处理1摘要本设计用苹果手机自带的录音设备采集了原始语音,并导入了电脑转成wav格式,然后用MATLAB和Adobeaudition对其进行时域分析。接着利用傅里叶变换进行了频域分析,绘制频谱图,再录制一段加上歌曲的伴奏的语音与原唱进行了对比分析,得出了我与歌星在频域上的差别。本设计给信号加了两种噪声并通过观察加噪后的频谱和试听回放效果比较加噪前后的差别,最后,设计了FIR数字低通滤波器和带通滤波器,分析滤波前后的频谱。再次试听回放效果,得出结论。关键词:语音、FFT、频谱图、噪声、滤波器基于matlab的语音信号处理2AbstractThisdesignisbasedonthegeneralfunctionofMatlabandAdobeeditiontodealwithAudiosignals.TheoriginalsignalsarecollectedbyiPhone’sbuilt-inrecordingequipment.First,Icomparethefilegeneratedbymyselfwiththatofthesamesongsangbyafamoussinger.Theemphasisisgenerallylaidonanalysingthedifferenceinfrequncydomain,buttimedomainwillbeincludedtoo.Afterthat,twonoisesignalsareaddedtotheoriginalsignalrespectivelyandletthempassafiltertoanalyseit.Inthetwoprocessmentionedbefore,Imakecomparisonbetweenthebeforeandafterfrequencydomain.SamplingTheoremisthebaseofmydesign.Itisbysamplingwecangetdiscretesignalsfromtheoriginaloneanddrawtheimageintimedomain.Also,fastfouriertransformisemployed(FFT)togetthesignalsinfrequencydomain.Theayalysisoffrequencydomainisthehighlightofthisdesign.Throughthisdesign,IcandeepenmycomprehensionofprinciplesofaudiosignalsandIhavelearnthowtodealwithit.Throughmetwithmuchhindrance,Iimprovedmyskillsfinally.Keywords:audiosignal、TTT、noise、filter基于matlab的语音信号处理31绪论1.1课题的研究意义语音信号处理属于信息科学的一个重要分支,它是研究用数字信号处理技术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及面很广的交叉学科,因此我们进行语言信号处理具有时代的意义。学会运用MATLAB的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,这为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础。1.2课题的目的与要求利用Matlab和Adobeaudition对语音信号进行数字信号处理和分析,要求采集语音信号后,在软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,再进行频谱分析和再播放来感受噪声滤除的效果。2.理论依据采样频率、采样位数的概念,采样定理;时域信号的FFT分析;数字滤波器设计原理和方法,各种不同类型滤波器的性能比较。2.1.时域信号的FFT分析FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它利用“一分为二”的思想不断进行,点数越多,运算量的节约就越大,这就是FFT的优越性。基于matlab的语音信号处理4在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进行处理。2.1.2采样定理采样定理,又称香农采样定律、奈奎斯特采样定律,是信息论,特别是通讯与信号处理学科中的一个重要基本结论。采样是将一个信号(即时间或空间上的连续函数)转换成一个数值序列(即时间或空间上的离散函数),这个数值序列即是一个数字信号。采样定理是将连续的模拟信号转变为离散的数字信号的方法。对于一个时域连续的信号f(t)利用开关函数s(t)进行采样,或者冲激函数序列进行采样(()Tt)。两种取样都具有一定的取样间隔,同时要求f(t)为频带带限信号,否则取样后将发生频谱混合重叠,破坏原信号。采样定理公式如下:其中Ts为采样间隔,设f(t)的频谱区间在(,)mm之间,即信号频带带限,需满足的采样条件为:2smff,其中fs为采样频率,这样便完成了对于连续信号的采样形成离散的数字信号方便处理。2.1.2数字滤波器()()()()2sssntftfnTtnTSa2m基于matlab的语音信号处理5数字滤波器是一个输入输出都是离散时间信号的特定功能装置。应用数字滤波器处理模拟信号(对应模拟频率)时,首先须对输入模拟信号进行限带、抽样和模数转换。数字滤波器输入信号的数字频率(2π*f/fs,f为模拟信号的频率,fs为采样频率,注意区别于模拟频率),按照奈奎斯特取样定理,要使抽样信号的频谱不产生重叠,应小于折叠频率(ws/2=π),其频率响应具有以2π为间隔的周期重复特性,且以折叠频率即ω=π点对称。为得到模拟信号,数字滤波器处理的输出数字信号须经数模转换。数字滤波器具有高精度、高可靠性、可程控改变特性或复用、便于集成等优点。数字滤波器有低通、高通、带通、带阻和全通等类型。它可以是时不变的或时变的、因果的或非因果的、线性的或非线性的。应用最广的是线性、时不变数字滤波器,以及FIR滤波器。从单位脉冲响应的角度,可以把数字滤波器分为:IIR滤波器(无限长单位冲激响应滤波器)和FIR滤波器(有限长单位冲激响应滤波器)3.设计思想3.1语音信号的采集此次我选择的歌曲是赵薇的《情深深雨蒙蒙》,用苹果手机自带的录音功能(VoiceMemos)录音,和windows自带的录音机程序相比,优点是方便,而且可以忽略电脑运行本身的噪声。然后将其导入到电脑,转换格式存为wave格式,并对从网上下载原唱的语音用同样的方式转换格式,并保存到正确的目录,以便以后能在matlab中打开。同时手机自带的录音功能还能完成简单的音频剪辑操作,减掉多余的不需要的部分。3.2语音处理工具的选择①Matlab基于matlab的语音信号处理6Matlab是大家都熟悉的一种科学计算软件,在信号与系统中运用很广泛,优点是可编程性强,且具有很好的可移植性和可扩展性,而且和专业信号与系统关联更大。但缺点是数据都以矩阵形式进行处理,对我来说不够直观。②AdobeauditionAdobeaudition是一款专门处理音频的软件,可提供先进的编辑、混音、控制和效果处理功能,优点是很方便,比如采样频率可以直接选择,处理效果很直观,缺点是和信号与系统相关性较小,可编程性差。这次设计的频谱分析主要是采用了matlab进行分析,但对原始语音频谱的分析以及由采样频率不同带来的变化中我同时采用了matlab和adobeaudition来分析。3.3噪声函数的选择①rand函数产生随机噪声,具体语句将在下面的列表中列出②高斯白噪声GaussianWhiteNoise此噪声在《随机信号分析课程》中已学过,此次向原始信号中加入此噪声,加强理解。3.4滤波器的选择设计中选择的是FIR有限长单位冲激响应滤波器,相比于IIR滤波器,它有如下的优点:⑴FIR滤波器,由于冲激响应有限长,可以用快速傅里叶变换,这样运算速度可以快很多;⑵FIR滤波器可以做到严格的线性相位,而若要IIR得到严格的线性相位,则要大大增加滤波器的阶数,⑶FIR滤波器主要采用非递归结构,因而从理论上以及时性从实际的有限精度的运算中,都是稳定的。有限精度运算误差也较小,IIR滤波器必须采用递归的结构,极点必须在Z平面单位圆内,才能稳定,这种结构,运算中的四舍五入处理,有时会引起寄生振荡。基于matlab的语音信号处理7但是IIR也有相同技术指标下阶数较少,存储单元少,运算次数少的有点,此处不再加以赘述。两种滤波器:①低通巴特沃斯滤波器巴特沃斯滤波器的特点为的通频带频率响应最为平滑,阻带缓慢衰减。用窗函数法设计低通滤波器,具体指标为fp=3000Hzfc=4000HzAp=1dBAs=100dB②高通滤波器具体指标为:fp=35ooHzfc=4000HzAp=1dBAs=10dB3.5Matlab函数的选择(1)[y,fs,bits]=wavread(‘filename’)wavread函数可读入语音信号y是采样获得的离散时域信号,fs是返回的采样频率,bits是采样位数,filename是音频信号的文件名。(2)wavwrite(y,fs,bits,’filename’)wavwrite函数,改变采样频率,可以将22.05KHz或者11.025KHz的信号写回并观察这样的采样频率会产生什么样的结果。其中y是已经获得的时域离散信号,fs为写回的频率,bits是写回的位数,filename为要写回的文件名。(3)sound(y,fs,bits)sound函数,播放存在的离散音频信号其中的三个参数同wavread中的相同(4)rnt=rand(a,b)rand函数,为产生随机噪声,从而在信号中加入噪声。改随机噪声是在(0,1)内的随机数,均值为0.5其中a、b为产生随机数矩阵的行和列。(5)fy=fft(y)基于matlab的语音信号处理8y为离散时域信号,fft函数是所有程序分析的核心。fft函数提供了以快速傅立叶变换算法的离散傅里叶变换的计算,等于对一个离散信号进行DFT离散傅立叶变换。(6)y1=awgn(y,q,’measured’)awgn函数,为向一个现有的离散信号加入高斯白噪声的函数,y为被添加噪声的信号,q为信噪比,一般要大于1,measured是一种控制名称。(7)[n,fo,ao,w]=firpmord(f,a,dev,fs)firpmord函数,为设计滤波器阶数的函数,f是滤波器的参数,主要为带边沿的参数,低通滤波器则是通带与阻带截止频率。a是通带与止带的幅频响应的幅度,也是一个向量。dev是通带与止带的震荡幅度大小比例(介于0到1),也是一个向量,fs则是采样频率。左边的4个参数,n是滤波器阶数,f0是频率向量,a0是幅频特性向量,w是权重。这四个参数是用来下一步制作模拟滤波器的。(8)h=firpm(n,fo,ao,w)firpm函数,利用firpmord所产生的参数制作模拟滤波器
本文标题:语音信号的采集与频谱分析(附代码)
链接地址:https://www.777doc.com/doc-3443844 .html