STFT 固定频率时的两种解释
第一种解释
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综合方法)
STFT的两种综合方法
filter bank summation (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,则等式成立。
overlap-add (OLA) method
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]