Quickstart
This guide shows you how to compute your first spectrogram.
Basic Example
Compute a linear power spectrogram from a simple sine wave:
import numpy as np
import spectrograms as sg
# Generate a 440 Hz sine wave (A4 note)
sample_rate = 16000
duration = 1.0
t = np.linspace(0, duration, int(sample_rate * duration), dtype=np.float64)
samples = np.sin(2 * np.pi * 440 * t)
# Configure STFT parameters
stft = sg.StftParams(
n_fft=512,
hop_size=256,
window="hanning",
centre=True
)
params = sg.SpectrogramParams(stft, sample_rate=sample_rate)
# Compute spectrogram
spec = sg.compute_linear_power_spectrogram(samples, params)
# Access results
print(f"Shape: {spec.shape}") # (n_bins, n_frames)
print(f"Frequency range: {spec.frequency_range()}")
print(f"Duration: {spec.duration()}")
Understanding the Result
The Spectrogram object contains:
data: 2D NumPy array with shape(n_bins, n_frames)frequencies: Frequency values for each bintimes: Time values for each frameparams: The parameters used for computation
Mel Spectrogram
For perceptually-scaled analysis (common in speech and music):
import spectrograms as sg
# Configure mel filterbank
mel_params = sg.MelParams(
n_mels=80,
f_min=0.0,
f_max=8000.0
)
# Use decibel scale for visualization
db_params = sg.LogParams(floor_db=-80.0)
# Compute mel spectrogram in dB
mel_spec = sg.compute_mel_db_spectrogram(
samples, params, mel_params, db_params
)
Next Steps
Learn about Choosing Parameters for your application
Optimize batch processing with the Batch Processing
Explore Audio Features like MFCC and chromagrams