librosa.feature.melspectrogram¶
-
librosa.feature.
melspectrogram
(y=None, sr=22050, S=None, n_fft=2048, hop_length=512, **kwargs)[source]¶ Compute a Mel-scaled power spectrogram.
Parameters: y : np.ndarray [shape=(n,)] or None
audio time-series
sr : number > 0 [scalar]
sampling rate of y
S : np.ndarray [shape=(d, t)]
power spectrogram
n_fft : int > 0 [scalar]
length of the FFT window
hop_length : int > 0 [scalar]
number of samples between successive frames. See
librosa.core.stft
kwargs : additional keyword arguments
Mel filter bank parameters. See
librosa.filters.mel
for details.Returns: S : np.ndarray [shape=(n_mels, t)]
Mel power spectrogram
See also
librosa.filters.mel
- Mel filter bank construction
librosa.core.stft
- Short-time Fourier Transform
Examples
>>> y, sr = librosa.load(librosa.util.example_audio_file()) >>> librosa.feature.melspectrogram(y=y, sr=sr) array([[ 2.891e-07, 2.548e-03, ..., 8.116e-09, 5.633e-09], [ 1.986e-07, 1.162e-02, ..., 9.332e-08, 6.716e-09], ..., [ 3.668e-09, 2.029e-08, ..., 3.208e-09, 2.864e-09], [ 2.561e-10, 2.096e-09, ..., 7.543e-10, 6.101e-10]])
Using a pre-computed power spectrogram
>>> D = np.abs(librosa.stft(y))**2 >>> S = librosa.feature.melspectrogram(S=D)
>>> # Passing through arguments to the Mel filters >>> S = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=128, ... fmax=8000)
>>> import matplotlib.pyplot as plt >>> librosa.display.specshow(librosa.logamplitude(S, ... ref_power=np.max), ... y_axis='mel', fmax=8000, ... x_axis='time') >>> plt.colorbar(format='%+2.0f dB') >>> plt.title('Mel spectrogram') >>> plt.tight_layout()