Sign in

username:

password:



Not a member?

Search Online Books



Search tips

Free Online Books

Chapters

Chapter Contents:

Search Spectral Audio Signal Processing

  

Book Index | Global Index


Would you like to be notified by email when Julius Orion Smith III publishes a new entry into his blog?

  

Overlap-Add (OLA) STFT Processing

This chapter discusses use of the Short-Time Fourier Transform (STFT) to implement linear filtering in the frequency domain. Due to the speed of FFT convolution, the STFT provides the most efficient implementation engine for most FIR filters encountered in audio signal processing.

Recall from §6.1 the STFT:

$\displaystyle X_m(\omega)$ $\displaystyle =$ $\displaystyle \sum_{n=-\infty}^{\infty} x(n) w(n-mR) e^{-j\omega n}$  
  $\displaystyle =$ $\displaystyle \hbox{\sc DTFT}_\omega(x\cdot\hbox{\sc Shift}_{mR}(w))
\protect$ (9.1)

where

\begin{eqnarray*}
x(n) &=& \hbox{input signal at time $n$}\\
w(n) &=& \hbox{win...
...R &=& \hbox{hop size, in samples, between successive windows}\\
\end{eqnarray*}

We noted that if the window $ w(n)$ has the constant overlap-add property at hop-size $ R$,

$\displaystyle \sum_{m=-\infty}^{\infty} w(n-mR) = 1, \;\forall n\in{\bf Z}
\quad \hbox{($w\in\hbox{\sc Cola}(R)$)},
$

then the sum of the successive DTFTs over time equals the DTFT of the whole signal $ X(\omega)$:

$\displaystyle \sum_{m=-\infty}^\infty X_m(\omega) = X(\omega) = \hbox{\sc DTFT}_\omega(x)
$

Consequently, the inverse-STFT is simply the inverse-DTFT of this sum:

\begin{eqnarray*}
x(n) &=& \frac{1}{2\pi}\int_{-\pi}^\pi \sum_{m=-\infty}^\infty...
...ga)
e^{j\omega n} d\omega\\
&=& \sum_{m=-\infty}^\infty x_m(n)
\end{eqnarray*}

We may now introduce spectral modifications by multiplying each spectral frame $ X_m(\omega)$ by some filter frequency response $ H_m(\omega)$ to get

$\displaystyle Y_m(\omega) = H_m(\omega)X_m(\omega).
$

Note that $ H_m$ can be different for each frame, giving a certain class of time-varying filters. The filtered output signal spectrum is then

$\displaystyle Y(\omega) = \sum_{m=-\infty}^\infty Y_m(\omega)
$

so that

$\displaystyle y(n) = \sum_{m=-\infty}^\infty y_m(n)
$

where

$\displaystyle y_m(n) = \hbox{\sc IDTFT}_n(Y_m) = x_m\ast h_m.
$

This chapter discusses practical implementation of the above relations using the Fast Fourier Transform (FFT). In particular, we use the FFT to compute efficiently what may be regarded as a sampled DTFT. We will look at how sampling density must be increased along the unit circle when spectral modifications are to be performed, and we will discuss further the COLA condition on the analysis window and hop-size. In the end, our practical FFT-convolution engine will look as follows:

$\displaystyle y = \sum_{m=-\infty}^\infty \hbox{\sc Shift}_{mR} \left( \hbox{\s...
...hbox{\sc FFT}_N\left[\hbox{\sc Shift}_{-mR}(x)\cdot w_M \right]\right\}\right)
$

The sum over $ m$ may be interpreted as adding separately filtered frames $ y_m=x_m\ast h_m$. Due to this filtering, the frames must overlap, even when the rectangular window is used. As a result, the overall system is often called an overlap-add FFT processor, or ``OLA processor'' for short. It is regarded as a sequence of FFTs which may be modified, inverse-transformed, and summed. This ``hopping transform'' view of the STFT is the Fourier dual of the ``filter-bank'' interpretation to be discussed in Chapter 9.



Subsections

Order a Hardcopy of Spectral Audio Signal Processing

Previous: Matlab starter code
Next: Convolution of Short Signals

written by Julius Orion Smith III
Julius Smith's background is in electrical engineering (BS Rice 1975, PhD Stanford 1983). He is presently Professor of Music and Associate Professor (by courtesy) of Electrical Engineering at Stanford's Center for Computer Research in Music and Acoustics (CCRMA), teaching courses and pursuing research related to signal processing applied to music and audio systems. See http://ccrma.stanford.edu/~jos/ for details.


Comments


No comments yet for this page


Add a Comment
You need to login before you can post a comment (best way to prevent spam). ( Not a member? )