對語音信號進行分幀處理,觀測每一幀信號所包含的頻率分量,或者在時頻域對語音信號進行增強處理,需要用到短時傅里葉變換(Short Time Fourier Transform,STFT)技術。在得到STFT結果並處理之後,如何從短時傅里葉變換結果中重構出原始信號呢?針對語音信號重構,傳統的方法有Filter-Bank-Summation(FBS)和Overlap-and-Add(OLA)。從濾波的角度理解STFT,可以得到基於FBS的語音信號重構方法。從傅里葉變換角度理解STFT(對每一幀語音信號進行加窗處理,然後再對其進行傅里葉變換得到輸出結果),可以得到基於OLA的語音信號重構方法。

A. Filter-Bank-Summation方法

離散傅里葉變換表示為

egin{equation}label{eq1}   X(k)=sum_{m=0}^{N-1}x(m)e^{-jfrac{2pi km}{N}}. end{equation} (1)

離散短時傅里葉變換表示為

 egin{equation}label{eq2} egin{aligned}   X(n,w_{k})&=X(n,k)=sum_{m=-infty}^{infty}x(m)	exttt{w}_{k}(n-m)e^{-jw_{k}m} \   &=left(x(n)e^{-jw_{k}n}
ight)ast	exttt{w}_{k}(n) \   &=e^{-jw_{k}n}sum_{m=-infty}^{infty}x(n-m)	exttt{w}_{k}(m)e^{jw_{k}m}\   &=e^{-jw_{k}n}left(x(n)astleft(	exttt{w}_{k}(n)e^{jw_{k}n}
ight)
ight) end{aligned} end{equation} (2)

其中, w_{k}=frac{2pi k}{N} 表示第 k 個頻點, 	exttt{w}_{k} 表示第 k 個頻點上面的窗函數。根據上式內容,可以將 X(n,w_{k}) 看作是 x(n) 經過一組濾波器並進行指數加權得到的結果。

根據 (2) 可得

egin{equation}   X(n,w_{k})e^{jw_{k}n}=x(n)astleft(	exttt{w}_{k}(n)e^{jw_{k}n}
ight). end{equation} (3)

y_{k}(n)=X(n,w_{k})e^{jw_{k}n}=x(n)astleft(	exttt{w}_{k}(n)e^{jw_{k}n}
ight) ,那麼 y(n) 可以表示為

egin{equation}label{eq3} egin{aligned}   y(n)&=sum_{k=0}^{N-1}y_{k}(n)\       &=sum_{k=0}^{N-1}X(n,w_{k})e^{jw_{k}n} \       &=sum_{k=0}^{N-1}x(n)astleft(	exttt{w}_{k}(n)e^{jw_{k}n}
ight)=       x(n)astsum_{k=0}^{N-1}	exttt{w}_{k}(n)e^{jw_{k}n}. end{aligned} end{equation} (4)

(4) 兩邊進行傅里葉變換可得

egin{equation}label{eqadd}   Y(w)=X(w)sum_{k=0}^{N-1}	exttt{W}_{k}(w-w_{k}), end{equation} (5)

其中, 	exttt{W}_{k}(w) 是 	exttt{w}_{k}(n) 的頻域響應。

假設在所有頻點上的窗函數都是一樣的,也即 	exttt{W}_{k}=	exttt{W} ,那麼 sum_{k=0}^{N-1}	exttt{W}_{k}(w-w_{k})=sum_{k=0}^{N-1}	exttt{W}(w-w_{k}) 。當 	exttt{W}(w_{k}) 在頻域均勻採樣時,有

egin{equation}label{eq4}   	exttt{w}(n)=frac{1}{N}sum_{k=0}^{N-1}	exttt{W}(w_{k})e^{jw_{k}n}, end{equation} (6)

w_{k}=w-w_{k} ,那麼上式可以表示為

egin{equation}label{eq5}   	exttt{w}(n)e^{-jwn}=frac{1}{N}sum_{k=0}^{N-1}	exttt{W}(w-w_{k})e^{-jw_{k}n}, end{equation} (7)

n=0 ,可得

egin{equation}label{eq6}   	exttt{w}(0)=frac{1}{N}sum_{k=0}^{N-1}	exttt{W}(w-w_{k}). end{equation} (8)

因此,由 (5)(8) 可得

egin{equation}label{eq7}   x(n)=frac{y(n)}{N	exttt{w}(0)}. end{equation} (9)

如果要保證 (9) 的解具有唯一性,需要短時傅里葉變換在時頻域滿足採樣定理。上述的信號短時傅里葉變換和信號重構可以用如下圖1所示內容描述。

圖1 語音信號短時傅里葉變換和信號重構流程


B. Overlap-and-Add方法

另外一種重構語音信號的方法是 emph{Overlap-and-Add} 。OLA最基本的思想就是將重疊區域內的語音信號進行加權平均,該操作可以抵消窗函數的影響,從而恢復出原始語音信號。

egin{equation}label{eq8}   y(n)=frac{1}{N}sum_{k=0}^{N-1}X(n,w_{k})e^{jw_{k}n}, end{equation} (10)

採樣函數為

egin{equation}label{eq9}   P(n)=sum_{r=-infty}^{infty}delta(n-rR). end{equation} (11)

假設,在時域,我們對信號 X(n,w_{k}) 每隔 R 個點進行採樣,採樣之後的信號可以表示為

egin{equation}label{eq10}   X(n,w_{k})=sum_{r=-infty}^{infty}X(n,w_{k})delta(n-rR). end{equation} (12)

(12) 帶入到 (10) 中, (10) 可重新表示為

egin{equation}label{eq11}   y(n)=sum_{r=-infty}^{infty}left[frac{1}{N}sum_{k=0}^{N-1}X(rR,w_{k})e^{jw_{k}n}
ight]. end{equation} (13)

(13) 中方括弧的內容正是第 r 個信號序列的傅里葉逆變換,也即

egin{equation}label{eq12}   y_{r}(n)=frac{1}{N}sum_{k=0}^{N-1}X(rR,w_{k})e^{jw_{k}n}=x(n)w(rR-n), end{equation} (14)

因此,有

egin{equation}label{eq13}   y(n)=sum_{r=-infty}^{infty}y_{r}(n)=x(n)sum_{r=-infty}^{infty}w(rR-n). end{equation} (15)

(15) 可以看出,信號 y(n) 是由所有在 n 時刻重疊的序列 y_{r}(n) 疊加得到。如果 X(n,w_{k}) 在滿足時域採樣定理,那麼

egin{equation}label{eq14}   sum_{r=-infty}^{infty}w(rR-n)=frac{	exttt{W}(0)}{R}. end{equation} (16)

結合 (15)(16) 可得重構的語音信號可以表示為

egin{equation}label{eq15}   x(n)=frac{y(n)R}{	exttt{W}(0)}. end{equation} (17)

上述的信號短時傅里葉變換和信號重構可以分別用圖2和圖3所示內容描述。

圖2 語音信號短時傅里葉變換
圖3 基於OLA演算法的語音信號重構流程

推薦閱讀:
相关文章