合成重叠相加与信号重建

在语音信号处理中,如何进行信号重建无疑是一个需要重点考虑的问题,我们假设一个语音信号为 x[n] ,那么,正常的情况下如果我们要对 x[n] 进行频域方面的操作处理,我们首先会对 x[n] 进行分帧加窗,同时取得一系列的分帧信号 x_{k}[n] ,其中,k是一个整数,表示这是第k个分帧信号.

为了减少在频域分析中的泄漏,对 x_{k}[n] 进行STFT变换(短时离散傅里叶变换)前,我们都会对其进行加窗,设一个窗函数为 w[n] 那么,我们就有对于第k帧的加窗结果

y_{k}[n]=x_{k}[n]*w[n]

同时,我们定义其STFT的结果

Y_{k}[n]=STFT(y_{k}[n])

在理想的情况下,如果我们不对 Y_{k}[n] 进行任何的处理,我们要取得原始信号 x_{k}[n] 只需要对 Y_{k}[n] 进行ISTFT(短时离散傅里叶逆变换)然后再除以 w[n] 就可以了

x_{k}[n]=ISTFT(Y_{k}[n])/w[n]

但遗憾的是,如果我们需要在频域对信号进行处理,上面的方法并不适用,频域的任何微小变化都会因为逆变换再除以窗函数而放大,这也就是为什么我们需要另寻出路的原因.

对信号进行重建,一种较为普遍的是OLA(Overlap-and-Add)方法,简单来说,在对原始信号进行分帧时,相邻的两帧是有一部分的重叠区域的,对于语音信号处理,一般情况下,这个重叠区域为50%或75%,那么在信号重建时,每个帧经过逆变换后,也需要进行对应的叠加

因此重叠部分的加强部分与选择的窗函数有所关联

C=\sum_{r=-\infty}^{\infty}{w[rR-n]}

其中R为时域采样周期.为了精准地重建 x[n] ,计算出C是一个关键,但幸运的是,比较常用的三角窗和汉宁窗,在50%叠加时,其 C=1

因此这也就是为什么我们在信号处理时,会有一个overlap的原因

发布于 2020-02-04 10:01