語音識別MFCC系列(二)——離散信號、離散傅里葉變換

看了很多傅里葉變換(連續信號和離散信號)的博客,都寫的不是很清楚,有些地方可能有誤,我在查閱了書籍和大量資料以後,爭取能用前後標註一致的公式把相關內容(帕斯瓦爾公式,能量信號,功率信號,能量譜,功率譜等)講清楚,說正確。最好先看連續信號再看離散信號哦

連續信號的請看語音識別MFCC系列(一)——連續信號、傅里葉變換

離散信號的請看語音識別MFCC系列(二)——離散信號、離散傅里葉變換

耐不住的話直接看第五部分也行。下面將講述:

  • 不連續     週期   信號的傅里葉  級數
  • 不連續  非週期  信號的傅里葉  變換
  • 離散傅里葉變換

一、不連續週期信號的傅里葉級數(DFS)

對一個連續週期信號x\left ( t \right )的一個週期T_0進行N點採樣,得到離散序列x\left ( n\right ),則T _ { 0 } = N T_s\omega _ { 0 } = 2 \pi / T _ { 0 } = 2 \pi / (NT_s )T_s爲採樣週期,f_s爲採樣頻率。

重現連續週期信號的傅里葉級數:

                                                                   x ( t ) = \sum _ { k = - \infty } ^ { \infty } X \left( k \omega _ { 0 } \right) e ^ { j k w _ { 0 } t }

                                                     X \left( k \omega _ { 0 } \right) = \frac { 1 } { T _ { 0 } } \int _ { 0 } ^ { T _ { 0 } } x ( t ) e ^ { - j k w _ { 0 } t } d t \quad k = 0,1,2 , \cdots

\Omega _ { 0 } = \omega _ { 0 } T_s = 2 \pi / N爲離散域的基本頻率,就是頻率分辨率啦,就是最小的頻率單元啦,各個頻率分量的頻率都是他的整數倍,\Omega =k \Omega _ { 0 }k次諧波的數字頻率(下面會有例子解釋哦)。因t = n T_s , d t = T_s,則:

                                    X \left( k \frac { \Omega _ { 0 } } { T_s } \right) = \frac { 1 } { N T_s } \sum _ { n = 0 } ^ { N - 1 } x ( n T_s ) \mathrm { e } ^ { - j k \frac { Q _ { 0 } } { T }n T_s } = \frac { 1 } { N } \sum _ { n = 0 } ^ { N - 1 } x ( n T_s ) \mathrm { e } ^ { - j k \Omega _ { 0 } n }

在序列表示中,可僅用n表示nT_s,用k \Omega _ { 0 }表示k \frac { \Omega _ { 0 } } { T_s },則上式爲:

                                           X \left( k \Omega _ { 0 } \right) = \frac { 1 } { N } \sum _ { n = 0 } ^ { N - 1 } x ( n ) e ^ { - j k \Omega _ { 0 } n } \quad k = 0,1,2 , \cdots , N - 1

                                               x ( n ) = \sum _ { k = 0 } ^ { N - 1 } X \left( k \Omega _ { 0 } \right) e ^ { j k \frac { Q_ { 0 } } { T_s } nT_s}= \sum _ { k = 0 } ^ { N - 1 } X \left( k \Omega _ { 0 } \right) e ^ { j k \Omega _ { 0 } n }

當週期信號從連續域變換到離散域以後,它的頻率\omega- \infty \sim + \infty映射到數字頻率\Omega0 \sim 2 \pi。離散信號被分爲N個頻率分量,頻率分辨率爲2 \pi / N,根據連續信號的傅里葉級數同理,離散信號的傅里葉級數也有複共軛的性質,即X \left( k \Omega _ { 0 } \right) =X^* \left( -k \Omega _ { 0 } \right)

二、離散信號的帕斯瓦爾公式

                                                             \sum _ { k = 0 } ^ { N - 1 }\left |x ( n ) \right |^2=\frac{1}{N} \sum _ { k = 0 } ^ { N - 1 } \left |X \left( k \Omega _ { 0 } \right) \right |^2

推導就不寫了,就是用上面那些式子推出來的(猜測對於週期信號,上式代表的是功率,對於長度有限的離散信號,上式代表的是能量)。

三、不連續非週期信號的傅里葉變換(DTFT)

哎呀這裏和連續信號處理類似啦,所以連續信號一定要理解好哦!將長度有限的非週期信號x\left ( n\right ),以N爲週期,將x\left ( n\right )延拓爲週期信號x _ { N } ( n ),這裏N要大於信號長度哦,那當N \rightarrow \infty時,\Omega _ { 0 } = 2 \pi / N \rightarrow \mathrm { d } \Omega , k \Omega _ { 0 } \rightarrow \Omega = \omega T_s爲連續量,\sum _ { k = 0 } ^ { N - 1 } \rightarrow \int _ { 0 } ^ { 2 \pi }\frac { 1 } { N } = \frac { \Omega _ { 0 } } { 2 \pi } \rightarrow \frac { d \Omega } { 2 \pi } , x _ { N } ( n ) \rightarrow x ( n ),且這時X(k \Omega _ { 0 })趨於0,則乘個N,採用頻譜密度表示頻譜。

                                                  X ( \Omega ) = \lim _ { N \rightarrow \infty } N X \left( k \Omega _ { 0 } \right) = \sum _ { n = - \infty } ^ { n = \infty } x ( n ) e ^ { - j \Omega n }

                     x ( n ) = \lim _ { N \rightarrow \infty } x _ { N } ( n ) = \lim _ { N \rightarrow \infty } \sum _ { k = 0 } ^ { N - 1 } X \left( k \Omega _ { 0 } \right) e ^ { j k \Omega_ { 0 } n }= \lim _ { N \rightarrow \infty } \sum _ { k = 0 } ^ { N - 1 } \frac { 1 } { N } X ( \Omega ) \mathrm { e } ^ { \mathrm {j} \Omega n }=\frac{1}{2 \pi} \int _ { 0 } ^ { 2 \pi }X ( \Omega ) \mathrm { e } ^ { \mathrm {j} \Omega n }d \Omega

四、離散傅里葉變換(DFT)

因DTFT在頻域是連續的,我們需要在時域和頻域都是離散的離散傅里葉變換,將長度有限的非週期信號x\left ( n\right )x\left ( n\right )長度爲N,以N爲週期,將x\left ( n\right )延拓爲週期信號x _ { p } ( n ),則DFS爲:

                                           X_p \left( k \Omega _ { 0 } \right) = \frac { 1 } { N } \sum _ { n = 0 } ^ { N - 1 } x_p ( n ) e ^ { - j k \Omega_ { 0 } n } \quad k = 0,1,2 , \cdots , N - 1

                                                              x_p ( n ) = \sum _ { k = 0 } ^ { N - 1 } X_p \left( k \Omega _ { 0 } \right) e ^ { j k \Omega _ { 0 } n }

X_p \left( k \Omega _ { 0 } \right)x _ { p } ( n )都取主值區間0 \leq k \leq N - 1,則:

                                           X \left( k \Omega _ { 0 } \right) = \frac { 1 } { N } \sum _ { n = 0 } ^ { N - 1 } x ( n ) e ^ { - j k \Omega_ { 0 } n } \quad k = 0,1,2 , \cdots , N - 1

                                                              x ( n ) = \sum _ { k = 0 } ^ { N - 1 } X \left( k \Omega _ { 0 } \right) e ^ { j k \Omega _ { 0 } n }

將上式乘以N,用頻譜密度來表示,簡稱頻譜:

                                           X \left( k \right) =\sum _ { n = 0 } ^ { N - 1 } x ( n ) e ^ { - j k \Omega_ { 0 } n } \quad k = 0,1,2 , \cdots , N - 1

                                                              x ( n ) =\frac{1}{N} \sum _ { k = 0 } ^ { N - 1 } X \left( k \right) e ^ { j k \Omega _ { 0 } n }

因爲X \left( k \right)是頻譜密度,所以,當k=0時,X \left( k \right)對應的頻率分量的波形峯值是\left |X \left( k \right) \right |\cdot N,當k\neq 0時,X \left( k \right)對應的頻率分量的波形峯值是\frac{\left |X \left( k \right) \right |\cdot N}{2}。因爲負頻率的X ( k )和正頻率共軛,所以當k爲偶數時,只給N/2+1個點的頻譜,最後一個點的頻率爲二分之一的採樣頻率,當k爲奇數時,只給\frac{N+1}{2}個點的頻譜,最後一個點的頻率稍小於二分之一的採樣頻率。

五、奈奎斯特頻率,頻譜混疊和泄露

採樣信號爲

                              x _ { s } ( t ) = x ( t ) \delta _ { \mathrm { T } } ( t ) = x ( t ) \sum _ { n = - \infty } ^ { \infty } \delta \left( t - n T _ { s } \right) = \sum _ { n = - \infty } ^ { \infty } x \left( n T _ { s } \right) \delta \left( t - n T _ { s } \right)

對其做傅里葉變換得:

                                                          X_ { s } \left( \omega \right) = \frac { 1 } { T_ { s } } \sum _ { n = - \infty } ^ { \infty } X \left( \omega - n \omega _ { s } \right)

可知採樣信號的傅里葉變換爲原連續信號傅里葉變換週期延拓到以\pm \omega _ { s } , \pm 2 \omega _ { s },\cdots爲中心的頻譜,\omega _ { s }爲採樣角頻率,奈奎斯特頻率(Nyquist頻率)是採樣頻率的一半,原信號傅里葉變換頻譜的邊緣是它本身的最高頻率\omega _ { m },容易看出來當\omega _ { s }\geqslant 2\omega _ { m }纔不會發生頻譜混疊,也就是說奈奎斯特頻率大於\omega _ { m }即可。

頻譜泄露,就是比如本來只有頻率爲\frac{1}{2}Hz的分量,但是頻譜中出現了和\frac{1}{2}Hz相近的分量。舉個例子說明吧。

比如說有一段連續的週期信號,週期爲2s,那麼這段連續週期信號的傅里葉變換的基頻f_0=\frac{1}{2}(就是上一篇博客的基本角頻率\omega _0,其他頻率分量的角頻率都爲\omega _0的倍數,f_0=\frac{\omega _0}{2\pi}),也就是說其他頻率分量的頻率都是f_0=\frac{1}{2}的整數倍,如果我們就截斷2s的信號,那截斷以後就是連續非週期信號了,那就要先週期延拓再做傅里葉變換,週期延拓後和截斷前的信號一致,傅里葉變換也一致,頻譜爲一條線(在基頻處有個分量)。如果截斷4s的信號,週期延拓後和截斷前的信號一致,傅里葉變換的基頻爲\frac{1}{4},那麼頻譜爲一條線(在二倍頻處有個分量),幅值與原來相同。但是如果截斷3s的信號,週期延拓後在3s處有跳躍,容易產生高頻分量,而且重要的是,傅里葉變換的基頻爲\frac{1}{3},按道理說頻譜應該在1.5倍頻處有個幅值,但是頻譜中沒有1.5倍頻,只有1倍頻,2倍頻,那麼頻譜就會以1.5爲中心的其他整數倍頻處有分量,越靠近1.5幅值越大,和原來的不一致了!這就是頻譜泄露!如下圖所示:

根本解決方法是x(n)必須取自一個基本週期或基本週期的整數倍爲宜。但有的時候我們截斷的時候不知道基本週期,這時可以加長截取時間段,信號多一點能多代表一下整段信號吧,也可以加漢明窗等等窗函數,窗函數主要是減少旁瓣。可以參考下面幾個網址看細緻的分析和圖,內容都類似,總有一個能打開:

                http://www.ni.com/white-paper/4844/zhs/

                https://zhuanlan.zhihu.com/p/24318554

                http://zhangzhenyuan163.blog.163.com/blog/static/85819389201410112942281/

                http://www.ilovematlab.cn/thread-30099-1-1.html

                http://www.chinaaet.com/article/15991

六、舉個DFT的例子吧,通俗解釋一下

1. 採樣得到一段離散的信號,用包含100個數字的數字序列表示,其中前12個數字如下所示:

1.00, 0.62, -0.07, -0.87, -1.51, -1.81, -1.70, -1.24, -0.64, -0.15, 0.05, -0.10

我們將上述數字序列用x\left ( n \right )表示,n爲某個數字在序列中的下標,如x ( 0 ) = 1.00x ( 1 ) = 0.62等。這裏我們期待使用的信號是零均值信號,即數字序列的平均值爲0,相當於每個數字減去了數字序列的平均值(下文會解釋爲什麼這樣做)。

我們希望求得一系列頻率分量,將信號從時域轉化到頻域,使得上述數字序列爲一系列頻率分量之和。

2. 其次,什麼是信號相關性?

下面這個公式不是嚴格意義上的相關性計算公式,只能說是在信號是零均值的情況下,一定程度上能反應相關性。

                                                                                 \sum _ { i = 0 } ^ { N } x ( i ) y ( i )

有兩個信號xy,在信號是零均值的情況下,一定程度上他們越相關(比如同正同負),所求的和越大,但不絕對。例如下面的圖a相關性大,和大,圖b相關性小,和小。

3. 下面來解釋離散傅里葉變換的公式!

                                                    X ( k ) = \sum _ { n = 0 } ^ { N - 1 } x ( n ) e ^ { -j 2 \pi k n / N },k=0,1,\cdots ,N-1

X ( k )代表的是某個頻率分量的係數,這個式子很想上面求相關性的式子呀,求得是x(n)e ^ { - j2 \pi k n / N }的相關性,那到底是什麼意思呢?先引入歐拉公式:

                                                                      e ^ { - j \theta } = \cos \theta - j \sin \theta

\theta = 2 \pi k n / N,則:

                                                    X ( k ) = \sum _ { n = 0 } ^ { N - 1 } x ( n ) ( \cos ( 2 \pi k n / N ) - j\sin ( 2 \pi k n / N ) )

                                             X ( k ) = \sum _ { n = 0 } ^ { N - 1 } x ( n ) \cos \left( \frac { 2 \pi k n } { N } \right) - j \left[ \sum _ { n = 0 } ^ { N - 1 } x ( n ) \sin \left( \frac { 2 \pi k n } { N } \right) \right]

可以看到X ( k )是個複數,被分爲兩部分,實軸爲x(n)和某個頻率的餘弦函數的相關性,虛軸爲x(n)和某個頻率的正弦函數的相關性。

4. 當k變化的時候,上述相關性的意義到底是什麼呢?

k=0

                                                \begin{aligned} X ( 0 ) & = \sum _ { n = 0 } ^ { N - 1 } x ( n ) \cos \left( \frac { 2 \pi 0 n } { N } \right) + j \sum _ { n = 0 } ^ { N - 1 } x ( n ) \sin \left( \frac { 2 \pi 0 n } { N } \right) \\ & = \sum _ { n = 0 } ^ { N - 1 } x ( n ) +j \sum _ { n = 0 } ^ { N - 1 } 0 \end{aligned}

意味着當分量頻率爲0的時候(即爲一條直線),該分量的係數爲數字序列中所有數字之和。

k=1

                                                \begin{aligned} X ( 1 ) & = \sum _ { n = 0 } ^ { N - 1 } x ( n ) \cos \left( \frac { 2 \pi 1 n } { N } \right) +j \sum _ { n = 0 } ^ { N - 1 } x ( n ) \sin \left( \frac { 2 \pi 1 n } { N } \right) \\ \end{aligned}

\cos \left( \frac { 2 \pi 1 n } { N } \right)代表什麼?當n0N-1的時候,\frac { 2 \pi 1 n } { N }從0到2 \pi呀!這代表了所有的採樣點僅代表一個週期!看下圖a,正弦波是不是隻有一個週期。圖b代表上式的實數部分,圖c代表上式的虛數部分。

 

k=3

                                                \begin{aligned} X ( 1 ) & = \sum _ { n = 0 } ^ { N - 1 } x ( n ) \cos \left( \frac { 2 \pi 3 n } { N } \right) + j \sum _ { n = 0 } ^ { N - 1 } x ( n ) \sin \left( \frac { 2 \pi 3 n } { N } \right) \\ \end{aligned}

\cos \left( \frac { 2 \pi 3 n } { N } \right)代表什麼?當n0N-1的時候,\frac { 2 \pi 3 n } { N }從0到6 \pi呀!這代表了所有的採樣點僅代表三個週期(2 \pi\ast 3可不就是三個週期嗎)!看下圖a,正弦波是不是隻有三個週期。

k=N-1,所有的N個採樣點代表了N-1個週期,約等於1個採樣點代表一個週期,那麼這個分量的週期是不是等於約採樣週期了!這個分量的頻率是不是約等於採樣頻率f_s了!

這時你再回看一下k=0k=1k=3,有沒有發現,當從0到N-1時,頻率分量的頻率從0到f_s了!並且k對應的分量頻率爲f = \frac { k \times \mathrm { f_s } } { N },均勻分佈哦!這個結論很重要哦!在求MFCC特徵時會用到!

5.能量密度譜

能量密度譜爲

                                                                    E\left ( k \right )= \frac{\operatorname { Re } ( X ( k ) ) ^ { 2 } + \operatorname { Im } ( X ( k ) ) ^ { 2 }}{N}

看上面的帕斯瓦爾公式。

上面已經解釋過(具體的證明類似連續信號中的證明),當x\left ( n \right )均爲實數時,負頻率的X ( k )(對應的\pi2\pi,或者說-\pi到0)是正頻率(對應的0到\pi)的共軛,P(k)=P(N-k)即,P(k)基於k=N/2成軸對稱。比如說做一個N=512的DFT,因爲負頻率的X ( k )和正頻率共軛,所以只給N/2+1個點的頻譜,即257,因爲多給沒有意義啊,共軛的模是一樣的。

六、總結

最後總結一句,信號可以分爲多個頻率分量的和,那麼做離散傅里葉變換時,某個頻率分量的幅值就是看信號和這個頻率的正弦、餘弦波形的相關性,如果信號中包含這個頻率分量比較大,即幅值大,那肯定和這個頻率的正弦、餘弦波形的相關性更高呀,好好理解下這句話,就能大概記住傅里葉變換的求法了。

 

 

參考網址:

http://practicalcryptography.com/miscellaneous/machine-learning/intuitive-guide-discrete-fourier-transform/

https://blog.csdn.net/u011583927/article/details/45934455

http://www.ilovematlab.cn/thread-541003-1-1.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章