Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Display a mel-scaled power spectrogram using librosa
# Mostly taken from: http://nbviewer.ipython.org/github/bmcfee/librosa/blob/master/examples/LibROSA%20demo.ipynb
import librosa
import matplotlib.pyplot as plt
# Load sound file
y, sr = librosa.load("filename.mp3")
# Let's make and display a mel-scaled power (energy-squared) spectrogram
S = librosa.feature.melspectrogram(y, sr=sr, n_mels=128)
# Convert to log scale (dB). We'll use the peak power as reference.
log_S = librosa.logamplitude(S, ref_power=np.max)
# Make a new figure
plt.figure(figsize=(12,4))
# Display the spectrogram on a mel scale
# sample rate and hop length parameters are used to render the time axis
librosa.display.specshow(log_S, sr=sr, x_axis='time', y_axis='mel')
# Put a descriptive title on the plot
plt.title('mel power spectrogram')
# draw a color bar
plt.colorbar(format='%+02.0f dB')
# Make the figure layout compact
plt.tight_layout()
@aosmith
Copy link

aosmith commented Apr 24, 2015

Great tutorial. You're forgetting plot.show().

@Pzoom522
Copy link

Pzoom522 commented Feb 21, 2018

Nice work. In v6.0, librosa.logamplitude(S, ref_power=np.max) is replaced by librosa.amplitude_to_db(S, ref=np.max)

@sijinkim
Copy link

sijinkim commented Sep 19, 2019

Nice work. In v6.0, librosa.logamplitude(S, ref_power=np.max) is replaced by librosa.amplitude_to_db(S, ref=np.max)

Thanks!!

@pratyushmp
Copy link

pratyushmp commented Aug 30, 2020

Nice work. In v6.0, librosa.logamplitude(S, ref_power=np.max) is replaced by librosa.amplitude_to_db(S, ref=np.max)

you can also use librosa.amplitude.power_to_db(S, ref = np.max)

@drobotnik
Copy link

drobotnik commented Dec 22, 2021

you also need import librosa.display instead of import librosa

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment