Skip to main content

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 overlaying Ground Truth waveforms and 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

# 1. Initialize
logger = AudioLogger(name="my_experiment",
                     sr=44100,
                     root_dir="audio_logs",
                     save_mode="embed" # or "link"
                    )

# 2. Create 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

# 3. 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
)

# 4. Save to disk (creates audio_logs/my_experiment.html)
save_path = logger.save()

# Optional: Display in Jupyter Notebook
logger.display()

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wavetable-0.1.2.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wavetable-0.1.2-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file wavetable-0.1.2.tar.gz.

File metadata

  • Download URL: wavetable-0.1.2.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for wavetable-0.1.2.tar.gz
Algorithm Hash digest
SHA256 050a758b9e8f3cf5e5ed13f70970cd8c36729f07c07bdcf9518ab4b1bddf8778
MD5 acb9ce1338c79adfd888bdb205a982ad
BLAKE2b-256 a682aed722cf148c49e2682169851fc5cee844ae74465a082914763fc138d560

See more details on using hashes here.

File details

Details for the file wavetable-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: wavetable-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for wavetable-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1f51210a1a4a509f61aa7fc7aadca01a3fb1f473ce760d8294fe1e5b099e1a91
MD5 d6e6f97fd5223bec69e9e1ce88aacc17
BLAKE2b-256 88214d24566a2e3788eb6fcdef26deaaff391bcb8fc21187c45eb48100e09548

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page