当前位置:首页 > 基于matlab的语音信号滤波处理毕设毕业论文
第二章 介绍了语音信号的采集和频谱分析的方法和原理。 第三章 介绍了数字滤波器的设计方法。
第四章 介绍了用不同的数字滤波器对语音信号进行滤波处理。
第五章 介绍了本人对这次毕业设计的总结和展望未来数字滤波器的发展。
4
第二章 语音信号的频谱分析
2.1 快速傅里叶算法的原理
DFT是信号分析与处理中的一种重要变换。因为DFT直接计算的计算量与变换区间长度(N的平方)成正比,当N较大时,造成计算量太大,因而在快速傅里叶变换(简称FFT)出现以前,直接用DFT算法对信号进行频谱分析和它的实时处理是不切实际的。直到1965年发现了DFT这种快速算法,这种情况才发生了逆转。自1965年图基(J.W.Tuky)和库力(T.W.Coody)在书名为《计算机数学》(Math.Computation,Vol,19.1965)杂志上发表了著名的一篇《机器计算傅里叶级数的一种算法》论文后,桑德(G..Sand)-图基等快速傅里叶算法的相继出现,在人们的不断进行改进和不断完善,便很快形成了一套高效运算方法,从而才有了我们现在的快速傅里叶变换,简称为FFT(Fast Fourier Transform)。DFT的运算效率在这种算法的基础上可以提高1~2个数量级,这为数字信号处理技术应用于各种信号的实时处理创造了良好的条件,极大的推动了数字信号处理技术在当今社会的发展。
FFT算法的概念:
(1)“级”概念:将N 点DFT先分成两个N/2点DFT,再是四个N/4点DFT…直至N/2个两点DFT每分一次称为“一”级运算。因为N=2M所以N点DFT可分成M级。
(2)“组”概念:每一级都有N/2个蝶形单元,例如:N=16,则每级都有8个蝶形单元。每一级的N/2个蝶形单元可以分成若干组,每一组具有相同的结构,相同的 因子分布,第m级的组数为: N/2M+1 N=16=24,分4级。
(3)因子的分布: 每由后向前(m由M-1-->0级)推进一级,则此系数为后级系数中偶数序号的那一半。
(4)按时间抽取法:由于每一步分解都是基于在每级按输入时间序列的次序是属于偶数还是奇数来分解为两个更短的序列,所以称为“按时间抽取法”。如图2.1所示
FFT算法基本上分为两大类:时域抽取法FFT(Decimation-In-Time FFT,简称DIT-FFT)和频域抽取法FFT(Decimation-In-Frequency FFT,简称DIF-FFT)。
下面就介绍DIF-FFT算法。设序列x(n)长度为N,且满足N?2M (M为正整数)按n的奇偶性把x(n)分解成为两个N/2点的子序列:
5
2点 2点 2点 2点 2点 2点 2点 2点 两个2点DFT 两个4点DFT 两个2点DFT 两个2点DFT 两个4点DTF 两个N/2点的DFT 两个2点DFT
2.1按时间抽取法
?x(2r)?x1(r) r?0,??x(2r?1)?x2(r)则可将DFT化为
N?1n?0N?1N,? 1 (2.1) 2X(k)?DFT[x(n)]??x(n)WN?12r?0nkN? n?0n为偶数N?12r?0?x(n)WnkN? n?0n为奇数?x(n)WN?1nkN
2rkk2rk??x((WN)?WN)WN) (2.2) ?x2(r(1r)由于
W?e故式2.2可表示成
2N?j2?2N?eN?j2?/()2?WN2
rkkk X(k) (2.3) ??x(WN?WNX(?x2(r)WNrk/2?X(1r)WN/2?1k)2k)r?0r?0N?12N?12X1(k)与X2(k)分别是x1(k)及x2(k)的N/2点DFT:
6
rkrk X1(k)??x1(r)WN/2??x(2r)WN/2 (2.4)
r?0r?0N?12r?0N?12r?0N?12N?12rkrkX2(k)??x2(r)WN/2??x(2r?1)WN/2 (2.5)
由此,我们可以看到,一个N点DFT已分解成两个N/2的DFT。这两个N/2点的DFT再按照2.4和2.5式组合成一个N点DFT。
rkkk (2.6) X(k)??x(WN?WNX(?x2(r)WNrk/2?X(1r)WN/2?1k)2k)r?0r?0N?12N?12这里应该看到X1(k),X2(k)只有N/2个点,即k?0,1,却有N个点,即k?0,1,,N/2?1。而X(k)
,N?1,故用上式计算得到的只是X(k)的前一半结果,
N)2要用X1(k),X2(k)来表达全部的X(k)值,还必须应用系数的周期性,即
WN/2这样可得到 X(1同理可得
X(2N?12r(k?rk?WN/2
N?k)??x(1r)W2r?0Nr(?k)2N/2rk (2.7) ??x1(r)WN(/2?X1k)r?0N?12N?k)?X2(k) (2.8) 2前两式说明了后半部分k值(N/2?k?N?1)所对应的X1(k),X2(k)分再考虑WNk的以下性质: WN(?k)2Nkk ?WNN/2WN??WN别等于前半部分k值(0?k?N/2?1)所对应的X1(k),X2(k)。
这样,把上述各式带入,就可以将X(k)表达为前后两部分:
Nk?1 X(k)?X1(k)?WNX2(k) k=0,1,…, 2(k?)NNNNkX(k?)?X1(k?)?WN2X2(k?)?X1(k)?WNX2(k),k?0,1,?,?12222N(2.9)
因此,只要求出0到(N/2?1)区间的所有X1(k),X2(k)值,即可求出0到
(N?1)区间内的所有X(k)值,显然节省了运算量。可以用蝶形信号流图表示。
一个N点DFT可以分解为两个N/2点DFT,每一个N/2点DFT只需
(N/2)2?N2/4次复数乘法以及N/2(N/2?1)次复数加法。两个N/2点DFT共
需2?(N/2)2?N2/2次复数乘法和N(N/2?1)次复数加法。把两个N/2点DFT
7
共分享92篇相关文档