STFT的公式可以表示为:
X ( n , w ) = ∑ n = − ∞ n = ∞ x ( m ) w ( n − m ) e − j w m X(n,w)=\sum_{n=-\infty}^{n=\infty}x(m)w(n-m)e^{-jwm} X(n,w)=n=−∞∑n=∞x(m)w(n−m)e−jwm
上一篇博客介绍了STFT的可以解释为滤波操作,将 w w w 固定于某个值 w 0 w_0 w0,
X ( n , w 0 ) = ∑ m = − ∞ m = ∞ [ x ( m ) e − j w 0 m ] w ( n − m ) = [ x ( n ) e − j w n ] ∗ w ( n ) = X ( w + w 0 ) W ( w ) X(n,w_{0})=\sum_{m=-\infty}^{m=\infty}[x(m)e^{-jw_{0}m}]w(n-m) \\=[x(n)e^{-jwn}]*w(n) \\=X(w+w_{0}) W(w) X(n,w0)=m=−∞∑m=∞[x(m)e−jw0m]w(n−m)=[x(n)e−jwn]∗w(n)=X(w+w0)W(w)
将 m ′ = n − m m'=n-m m′=n−m,代入上式中,
X ( n , w 0 ) = ∑ m = − ∞ m = ∞ [ x ( m ) e − j w 0 m ] w ( n − m ) = ∑ m ′ = − ∞ m ′ = ∞ [ x ( n − m ′ ) e − j w 0 ( n − m ′ ) ] w ( m ′ ) = ∑ m ′ = − ∞ m ′ = ∞ [ x ( n − m ′ ) e j w 0 m ′ w ( m ′ ) ] e − j w 0 n = [ [ e j w 0 m w ( m ) ] ∗ x ( m ) ] e − j w 0 n X(n,w_{0})=\sum_{m=-\infty}^{m=\infty}[x(m)e^{-jw_{0}m}]w(n-m) \\=\sum_{m'=-\infty}^{m'=\infty}[x(n-m')e^{-jw_{0}(n-m')}]w(m') \\=\sum_{m'=-\infty}^{m'=\infty}[x(n-m')e^{jw_{0}m'}w(m')] e^{-jw_{0}n} \\=[[e^{jw_{0}m}w(m)]*x(m)]e^{-jw_{0}n} X(n,w0)=m=−∞∑m=∞[x(m)e−jw0m]w(n−m)=m′=−∞∑m′=∞[x(n−m′)e−jw0(n−m′)]w(m′)=m′=−∞∑m′=∞[x(n−m′)ejw0m′w(m′)]e−jw0n=[[ejw0mw(m)]∗x(m)]e−jw0n
可以用下面的图片解释(对应STFT的FBS综合方法)
当固定频率设为 w k w_{k} wk ,根据上面的推导, X ( n , w k ) = ∑ m = − ∞ m = ∞ e − j w k n [ x ( n − m ) e j w k m w ( m ) ] X(n,w_{k})=\sum_{m=-\infty}^{m=\infty}e^{-jw_{k}n}[x(n-m)e^{jw_{k}m}w(m)] X(n,wk)=m=−∞∑m=∞e−jwkn[x(n−m)ejwkmw(m)]
令 h k ( n ) = w k ( n ) e j w k n h_k(n)=w_k(n)e^{jw_kn} hk(n)=wk(n)ejwkn,则
X ( n , w k ) = e − j w k n ∑ m = − ∞ m = ∞ x ( n − m ) h k ( m ) = e − j w k n y k ( m ) X(n,w_{k})=e^{-jw_{k}n}\sum_{m=-\infty}^{m=\infty}x(n-m)h_k(m) \\=e^{-jw_kn}y_k(m) X(n,wk)=e−jwknm=−∞∑m=∞x(n−m)hk(m)=e−jwknyk(m)
其中 y k ( n ) = ∑ m = − ∞ m = ∞ x ( n − m ) h k ( n ) y_k(n)=\sum_{m=-\infty}^{m=\infty}x(n-m)h_k(n) yk(n)=∑m=−∞m=∞x(n−m)hk(n) ,表示在频率 w k w_k wk 处具有冲击响应为 h k ( n ) h_k(n) hk(n)的系统输出,变换上式,
y k ( n ) = X ( n , w k ) e j w k n y_k(n)=X(n,w_{k})e^{jw_{k}n} yk(n)=X(n,wk)ejwkn
令 y ( n ) = ∑ k = 0 k = N − 1 y k ( n ) = ∑ k = 0 k = N − 1 X ( n , w k ) e j w k n y(n)=\sum_{k=0}^{k=N-1}y_k(n) \\=\sum_{k=0}^{k=N-1}X(n,w_{k})e^{jw_{k}n} y(n)=k=0∑k=N−1yk(n)=k=0∑k=N−1X(n,wk)ejwkn
上式给出了从STFT的输出 X ( n , w k ) X(n,w_k) X(n,wk)恢复到时域的方法,但需要证明y(n)在什么情况下才和x(n)相等???
证明:
由于, y k ( n ) = ∑ m = − ∞ m = ∞ x ( n − m ) h k ( n ) y_k(n)=\sum_{m=-\infty}^{m=\infty}x(n-m)h_k(n) yk(n)=m=−∞∑m=∞x(n−m)hk(n)
y ( n ) = ∑ k = 0 k = N − 1 y k ( n ) y(n)=\sum_{k=0}^{k=N-1}y_k(n) y(n)=k=0∑k=N−1yk(n)
同时做傅里叶变换得,
Y ( W ) = X ( W ) H ( W ) = X ( W ) ∑ k = 0 k = N − 1 H k ( w k ) Y(W)=X(W)H(W) \\=X(W)\sum_{k=0}^{k=N-1}H_k(w_k) Y(W)=X(W)H(W)=X(W)k=0∑k=N−1Hk(wk)
要想使得等式成立,则窗函数需要满足 ∑ k = 0 k = N − 1 H k ( w k ) = C \sum_{k=0}^{k=N-1}H_k(w_k)=C ∑k=0k=N−1Hk(wk)=C
而 H k H_k Hk是 h k h_k hk的傅里叶变换, h k h_k hk和窗函数w(m)有关,因此只要每一帧STFT用的窗函数一样,且窗长 L < = N L<=N L<=N,则等式成立。
OLA方法在语言信号处理中经常使用,在每一个时间段对 X ( n , w ) X(n,w) X(n,w) 做ifft变换,并对重叠段进行相加,可以表示为:
y ( n ) = ∑ r = − ∞ r = ∞ [ 1 / N ∑ k = 0 k = N − 1 X ( r R , w k ) e j w k n ] y(n)= \sum_{r=-\infty}^{r=\infty}[1/N\sum_{k=0}^{k=N-1}X(rR,w_{k})e^{jw_{k}n}] y(n)=r=−∞∑r=∞[1/Nk=0∑k=N−1X(rR,wk)ejwkn]
对不同的 r r r值进行ifft,可以得到:
y r ( n ) = x ( n ) w ( r R − n ) y_{r}(n) = x(n)w(rR-n) yr(n)=x(n)w(rR−n)
对不同的 r r r相加,
y ( n ) = ∑ r = − ∞ ∞ y r ( n ) = x ( n ) ∑ r = − ∞ r = ∞ w ( r R − n ) y(n)=\sum_{r=-\infty}^{\infty}y_{r}(n)=x(n)\sum_{r=-\infty}^{r=\infty}w(rR-n) y(n)=r=−∞∑∞yr(n)=x(n)r=−∞∑r=∞w(rR−n)
所以只有 ∑ r = − ∞ r = ∞ w ( r R − n ) = C \sum_{r=-\infty}^{r=\infty}w(rR-n)=C ∑r=−∞r=∞w(rR−n)=C时,就可以恢复原始信号。
[1] Loizou P C. Speech Enhancement: Theory and Practice[M]. 2007.
[2] This lecture is based on chapter 7 of [Quatieri, 2002]