librosa.feature.inverse.mel_to_audio(M, *, sr=22050, n_fft=2048, hop_length=None, win_length=None, window='hann', center=True, pad_mode='constant', power=2.0, n_iter=32, length=None, dtype=<class 'numpy.float32'>, **kwargs)[source]

Invert a mel power spectrogram to audio using Griffin-Lim.

This is primarily a convenience wrapper for:

>>> S = librosa.feature.inverse.mel_to_stft(M)
>>> y = librosa.griffinlim(S)
Mnp.ndarray [shape=(…, n_mels, n), non-negative]

The spectrogram as produced by feature.melspectrogram

srnumber > 0 [scalar]

sampling rate of the underlying signal

n_fftint > 0 [scalar]

number of FFT components in the resulting STFT

hop_lengthNone or int > 0

The hop length of the STFT. If not provided, it will default to n_fft // 4

win_lengthNone or int > 0

The window length of the STFT. By default, it will equal n_fft

windowstring, tuple, number, function, or np.ndarray [shape=(n_fft,)]

A window specification as supported by stft or istft


If True, the STFT is assumed to use centered frames. If False, the STFT is assumed to use left-aligned frames.


If center=True, the padding mode to use at the edges of the signal. By default, STFT uses zero padding.

powerfloat > 0 [scalar]

Exponent for the magnitude melspectrogram

n_iterint > 0

The number of iterations for Griffin-Lim

lengthNone or int > 0

If provided, the output y is zero-padded or clipped to exactly length samples.


Real numeric type for the time-domain signal. Default is 32-bit float.

**kwargsadditional keyword arguments for Mel filter bank parameters
n_melsint > 0 [scalar]

number of Mel bands to generate

fminfloat >= 0 [scalar]

lowest frequency (in Hz)

fmaxfloat >= 0 [scalar]

highest frequency (in Hz). If None, use fmax = sr / 2.0

htkbool [scalar]

use HTK formula instead of Slaney

norm{None, ‘slaney’, or number} [scalar]

If ‘slaney’, divide the triangular mel weights by the width of the mel band (area normalization). If numeric, use librosa.util.normalize to normalize each filter by to unit l_p norm. See librosa.util.normalize for a full description of supported norm values (including +-np.inf). Otherwise, leave all the triangles aiming for a peak value of 1.0

ynp.ndarray [shape(…, n,)]

time-domain signal reconstructed from M