- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
How to save a Librosa spectrogram plot as a specific sized image?
Librosa is a Python package that helps to analyse audio and music files. This package also helps to create music retrieval information systems. In this article, we will see how to save a Librosa spectrogram plot as an image of specific size.
Steps
Set the figure size and adjust the padding between and around the subplots..
Create a figure and a set of subplots.
Initialize three different variables, hl, hi, wi, to store samples per time in the spectrogram, height and width of the images.
Load a demo track.
Create a window, i.e., a list for audio time series..
Compute a mel-scaled spectrogram, using melspectrogram() with window and step 3 data.
Convert the power spectrogram (amplitude squared) to decibel (dB) units, using power_to_db() method..
Display the spectrogram as img (we can save it here).
Save the img using savefig().
Display the image using plt.show() method.
Example
import numpy as np import matplotlib.pyplot as plt import librosa.display plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True fig, ax = plt.subplots() hl = 512 # number of samples per time-step in spectrogram hi = 128 # Height of image wi = 384 # Width of image # Loading demo track y, sr = librosa.load(librosa.ex('trumpet')) window = y[0:wi*hl] S = librosa.feature.melspectrogram(y=window, sr=sr, n_mels=hi, fmax=8000, hop_length=hl) S_dB = librosa.power_to_db(S, ref=np.max) img = librosa.display.specshow(S_dB, x_axis='time', y_axis='mel', sr=sr, fmax=8000, ax=ax) plt.savefig("out.png") plt.show()