spectrs
Fast spectrogram creation library.
Table of Contents
- What It Does
- Installation
- Quick Start
- Features
- Examples
- Librosa Compatibility
- Performance
- API Reference
What It Does
spectrs is a Rust library for creating spectrograms from audio files. It provides:
- STFT (Short-Time Fourier Transform) spectrograms with power or magnitude scaling
- Mel-scaled spectrograms using HTK or Slaney scales
- Audio I/O for reading WAV files (mono/stereo, 8/16/32-bit)
- Resampling to arbitrary sample rates
- Image export of spectrograms
- Compatibility with librosa
Installation
Add spectrs to your project with
cargo add spectrs
or with image export support
cargo add spectrs --features image
Examples
Basic STFT Spectrogram
use read_audio_file_mono;
use ;
let = read_audio_file_mono?;
// Compute magnitude spectrogram
let spec = par_compute_spectrogram;
Mel Spectrogram
use ;
// First compute STFT, then convert to mel
let mel_spec = convert_to_mel;
Save Spectrogram as Image
use save_spectrogram_image;
// Requires "image" feature
save_spectrogram_image?;
Single-Threaded Mode
For small files or embedded systems:
use compute_spectrogram;
// Non-parallelized version (lower overhead)
let spec = compute_spectrogram;
Complete Pipeline
use ;
use ;
use ;
// Read and process audio file
let = read_audio_file_mono?;
// Resample to standard rate
let audio = resample?;
// Compute spectrogram
let spec = par_compute_spectrogram;
// Convert to mel
let mel = convert_to_mel;
// Save as image (requires "image" feature)
save_spectrogram_image?;
Librosa Compatibility
spectrs is designed to replicate librosa's behaviour in the Rust ecosystem. Compatibility tests are part of the test suite, ensuring correlation between librosa's and spectrs' above 99% and relative error on relevant bands < 2%.
Run compatibility tests: