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

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

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.3.tar.gz (16.2 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.3-py3-none-any.whl (16.1 kB view details)

Uploaded Python 3

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

Hashes for wavetable-0.1.3.tar.gz
Algorithm Hash digest
SHA256 1986b9ecef6677781248710144ef5e88880585756e815c5144536cc0cd059bba
MD5 e9825b004a7b58ffcd3c770b9fbd5418
BLAKE2b-256 3d0aee19567c73554f0a9a65d8d8bf364debbf4e2ff8b7469515f7eb2d5ceb9a

See more details on using hashes here.

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

Hashes for wavetable-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ecf7a030e6d2f2eed7b6ed72e58d278a2bdf7d802fda0a1f884f7b11fe2fa4bf
MD5 bcc73af1c5a5a66641b92f32eb18d1bd
BLAKE2b-256 f84aafe7b301686354de80416e5325ba288c3e869133a63f20720c3d41364848

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