Skip to main content

wavetable

PyPI Version

wavetable_banner


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)
        }
    }
)

Release files for wavetable 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wavetable 0.1.5
File Size Uploaded
wavetable-0.1.5.tar.gz 16.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wavetable 0.1.5
File Interpreter ABI Platform
wavetable-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 32.5 kB

Release files / wavetable-0.1.5.tar.gz

Download URL wavetable-0.1.5.tar.gz
Size 16.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7d9901f1360260bf3ff68afe1391a82d1113d81b7baea444ca62a86240eff15d
BLAKE2b-256 checksum
How to use checksums
7aade820b64ed74284fe7b73ff15d00d655da5fae3f15f7736ab24c5c2a3fe4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.18

Release files / wavetable-0.1.5-py3-none-any.whl

Download URL wavetable-0.1.5-py3-none-any.whl
Size 16.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
856e04fec8d8783ecec32b816f6a1fa1ff53d409f1243bf7a5ae80440c567560
BLAKE2b-256 checksum
How to use checksums
ca704d4245c40b6201259b18b0884831b2ece684540e00ff921a821b9a056255
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.18

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page