A Python library to log audio files and their spectrograms into a single HTML file for easy inspection.
Project description
wavetable
A Python library for generating organized HTML tables of audio samples, waveforms, and spectrograms. wavetable allows you to compare "Generated" vs "Ground Truth" audio directly in your browser or Jupyter Notebook with zero-dependency static HTML output.
Features
- Static HTML Output: Generates self-contained (embedded) or lightweight (linked assets) HTML files.
- Visualizations: Automatic Waveform and Spectrogram (STFT or Mel) display.
- Comparisons: Native support for displaying reference audio.
- Customizable: Control colormaps, frequency scales (Log/Mel/Linear), and magnitude scaling (dB/Linear).
Installation
pip install wavetable # if using pip
poetry add wavetable # if using poetry
...
Quick Start
import numpy as np
from wavetable import AudioLogger
logger = AudioLogger(name="my_experiment",
sr=44100,
root_dir="audio_logs",
save_mode="embed" # or "link"
)
# Dummy Audio
audio_gen = np.sin(2 * np.pi * 440 * np.linspace(0, 2, 44100*2))
audio_gt = np.sin(2 * np.pi * 440 * np.linspace(0, 2, 44100*2)) + 0.1
# Log a cell
logger.log(
row="Epoch_1",
col="Sample_A",
audio=audio_gen,
ground_truth=audio_gt,
meta="Loss: 0.02" # Text metadata displayed above the cell
)
# Save to disk (creates audio_logs/my_experiment.html)
save_path = logger.save()
# Optional: Display in Jupyter Notebook
logger.display()
Check out test_notebook.ipynb for a the visual output or download the example HTML file (demo.html).
Configuration
You can customize the logger by passing a plot_config dictionary during initialization. The full configuration options available in the file wavetable/config.py.
1. General Settings
| Parameter | Type | Default | Description |
|---|---|---|---|
sr |
int | 44100 | Global sampling rate. |
save_mode |
str | 'embed' |
'embed' (single huge HTML file) or 'link' (HTML + assets folder). |
hover_effect |
bool | True |
Highlights the active row on mouse hover. |
root_dir |
str | 'audio_logs' |
Directory where logs are saved. |
2. Spectrogram Configuration
Passed via plot_config={'spectrogram': {...}}:
| Parameter | Options | Default | Description |
|---|---|---|---|
spectrogram_type |
'stft', 'mel' |
'stft' |
The type of spectrogram to compute. |
plot_freq_scale |
'log', 'linear' |
'log' |
Y-axis scaling (only used if type is 'stft'). |
magnitude_scale |
'db', 'linear' |
'db' |
Compression of magnitude/power. |
n_mels |
int | 80 |
Number of Mel bands (only used if type is 'mel'). |
cmap |
str | 'inferno' |
Matplotlib colormap name (e.g., 'viridis', 'magma'). |
n_fft |
int | 2048 |
FFT window size. |
hop_length |
int | 512 |
STFT hop length. |
3. Waveform Configuration
Passed via plot_config={'waveform': {...}}:
| Parameter | Type | Default | Description |
|---|---|---|---|
overlay_gt |
bool | False |
If True, plots Ground Truth signal behind Generated signal. |
color_gen |
str | '#007bff' |
Hex color for Generated audio (Blue). |
color_gt |
str | '#fd7e14' |
Hex color for Ground Truth audio (Orange). |
ylim |
tuple | (-1, 1) |
Y-axis limits for the waveform plot. |
Advanced Example
logger = AudioLogger(
name="Mel_Spectrogram_Test",
sr=22050,
hover_effect=False, # Disable row highlighting
plot_config={
'spectrogram': {
'spectrogram_type': 'mel',
'n_mels': 128,
'magnitude_scale': 'db',
'cmap': 'magma',
'dimensions': (300, 80) # W, H in pixels
},
'waveform': {
'overlay_gt': True, # See Gen and GT on top of each other
'dimensions': (300, 40)
}
}
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wavetable-0.1.3.tar.gz.
File metadata
- Download URL: wavetable-0.1.3.tar.gz
- Upload date:
- Size: 16.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1986b9ecef6677781248710144ef5e88880585756e815c5144536cc0cd059bba
|
|
| MD5 |
e9825b004a7b58ffcd3c770b9fbd5418
|
|
| BLAKE2b-256 |
3d0aee19567c73554f0a9a65d8d8bf364debbf4e2ff8b7469515f7eb2d5ceb9a
|
File details
Details for the file wavetable-0.1.3-py3-none-any.whl.
File metadata
- Download URL: wavetable-0.1.3-py3-none-any.whl
- Upload date:
- Size: 16.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ecf7a030e6d2f2eed7b6ed72e58d278a2bdf7d802fda0a1f884f7b11fe2fa4bf
|
|
| MD5 |
bcc73af1c5a5a66641b92f32eb18d1bd
|
|
| BLAKE2b-256 |
f84aafe7b301686354de80416e5325ba288c3e869133a63f20720c3d41364848
|