Griffin-Lim reconstructs a plausible phase from a magnitude spectrogram, so its output sounds robotic
A neural network that outputs a magnitude spectrogram discards phase — the information the inverse STFT needs to build a time-domain waveform. The Griffin-Lim algorithm iteratively estimates a phase that is consistent between the STFT and iSTFT. It does not recover the original phase; it converges on the nearest consistent one. The audio is usable but carries a characteristic metallic/robotic texture precisely because the estimated phase is wrong. Griffin-Lim is the simplest phase-reconstruction option and is available directly in librosa, so no manual phase modelling is needed. Higher-quality alternatives (neural vocoders such as WaveNet/HiFi-GAN) exist but require training additional models.
Examples
Reconstructing a spoken-digit magnitude spectrogram with Griffin-Lim yields an audible but clearly robotic digit — the imperfect phase is the artifact. In librosa: signal = librosa.griffinlim(S).
Assessment
Why does a network that outputs a magnitude spectrogram still need Griffin-Lim? What does Griffin-Lim guarantee (phase consistency) and what does it NOT guarantee (correct phase)?