# STFT of ISTFT in the Griffin Lim Algorithm

The Griffin-Lim algorithm for phase recovery (based on the magnitude of an STFT) involves a step that is: STFT(Inverse STFT(...)). This seems to be the key iteration in the algorithm.

This Quora article and this line in the librosa implementation can be referred to for a description of this step.

I don't understand what makes this algorithm convergent - isn't the STFT supposed to be invertible? Why does STFT(ISTFT(...)) do anything interesting? If the usage of different window functions make it non-invertible, why does this step recover any phase information about the original signal?

• My hunch is that it has to do with the redundancy of the STFT. Yes, the fourier transform is invertible, but considering an extreme case where the hop length is one and the window length big - most of the points in successive windows are the same, so the phases will be (highly) correlated. Not every combination of spectrum and phase corresponds to a reasonable signal, so this is where the Griffin-Lim comes in. With a good/correct estimation of phase, STFT(ISTFT(X)) = X, but with an incorrect/(inconsistent?) estimation of phase, this isn't true. (Just a guess at the answer) – adityar Jan 8 at 19:27