Skip to main content

Base utilities for working with the Umik-1 microphone in Python applications.

Project description

๐ŸŽค audio-tools โ€” Audio Measurement CLI

A modular Python CLI for real-time audio measurement with USB microphones.

Supports UMIK-1, UMIK-2, Dayton UMM-6, Earthworks M23/M30, and other USB measurement mics. Auto-detects known devices, validates sample rate support, and applies per-unit calibration files.

๐Ÿ“ฆ Installation

APT โ€” Linux (Recommended for Raspberry Pi and Ubuntu)

curl -fsSL "https://br-se1.magaluobjects.com/audio-tools/audio-tools/pubkey.gpg" \
  | sudo gpg --dearmor -o /usr/share/keyrings/audio-tools.gpg
echo "deb [signed-by=/usr/share/keyrings/audio-tools.gpg] https://br-se1.magaluobjects.com/audio-tools/audio-tools $(lsb_release -cs) main" \
  | sudo tee /etc/apt/sources.list.d/audio-tools.list
sudo apt-get update && sudo apt-get install audio-tools

System dependencies (libportaudio2, libsndfile1, ffmpeg, libzmq3-dev) are installed automatically.

๐Ÿ“ Raspberry Pi 4B verified. Perfect headless acoustic monitoring box.

pip

pip install umik-base-app

Requires system libraries:

# Linux (Debian/Ubuntu)
sudo apt install libportaudio2 libsndfile1 ffmpeg libzmq3-dev -y

# macOS
brew install portaudio libsndfile zeromq ffmpeg

๐Ÿ•น๏ธ CLI Reference

audio-tools --<command> [options]
Command Description
audio-tools --devices ๐Ÿ” List available audio input devices
audio-tools --meter ๐Ÿ“Š Real-time SPL / LUFS / dBFS meter
audio-tools --record ๐ŸŽ™๏ธ Calibrated audio recorder (WAV)
audio-tools --calibrate ๐Ÿ”ง Generate FIR filter from a calibration file
audio-tools --analyze ๐Ÿ”ฌ Analyze a WAV file and export metrics to CSV
audio-tools --plot ๐Ÿ“ˆ Plot a metrics CSV as a chart
audio-tools --batch ๐Ÿ“ Batch-analyze a directory of WAV files
audio-tools --enhance โœจ Filter and enhance voice audio
audio-tools --convert ๐Ÿ”„ Convert WAV recordings to OGG / MP3 / AAC
audio-tools-spectrum ๐ŸŒ Browser-based real-time spectrum analyzer

Pass --help after any command for full options:

audio-tools --meter --help
audio-tools --convert --help

โšก Quick Start

# 1. Find your microphone's device ID
audio-tools --devices

# 2. Run the SPL meter (system default mic)
audio-tools --meter

# 3. Run with UMIK-1 calibration file
audio-tools --meter --calibration-file "umik-1/7175488.txt"

# 4. Record calibrated audio
audio-tools --record --calibration-file "umik-1/7175488.txt" --output-dir recordings/

๐Ÿƒ Run Modes

Monolithic (Default)

Single process โ€” simplest for desktop and testing.

audio-tools --meter --calibration-file "umik-1/7175488.txt"

๐Ÿ‘น Daemon Mode โ€” Unstoppable Ear

Run capture at high priority. Processing crashes never interrupt the audio stream.

# Terminal 1: high-priority capture process
sudo nice -n -20 audio-tools --meter --producer \
  --calibration-file "umik-1/7175488.txt" --zmq-port 5555

# Terminal 2: connect consumer (safe to open/close/crash)
audio-tools --meter --consumer --zmq-host localhost --zmq-port 5555

๐ŸŒ Distributed Mode โ€” Remote Sentry

Capture on a Raspberry Pi, visualize on your laptop.

# On the Raspberry Pi
audio-tools --meter --producer \
  --calibration-file "umik-1/7175488.txt" --zmq-port 5555

# On your laptop
audio-tools --meter --consumer --zmq-host 192.168.1.50 --zmq-port 5555

๐ŸŽ›๏ธ Calibration Files

Download the per-unit calibration file for your UMIK from miniDSP.

Auto-discovery

Place the file in one of these locations and it will be picked up automatically on the next run โ€” no --calibration-file flag needed:

Location Scope
~/.config/audio-tools/ Per-user
/etc/audio-tools/ System-wide

If multiple files are found, the app prompts you to select one interactively. If a calibrated microphone is detected but no file is found, the app warns you and asks for confirmation before running uncalibrated.

Sample files (installed with the package)

The .deb package ships sample calibration files to:

/usr/share/audio-tools/calibration/

These are not auto-discovered โ€” they are reference copies only. To activate one, copy it to an auto-discovery location:

# Per-user (recommended)
mkdir -p ~/.config/audio-tools
cp /usr/share/audio-tools/calibration/7175488_90deg.txt ~/.config/audio-tools/

# Or system-wide
sudo cp /usr/share/audio-tools/calibration/7175488_90deg.txt /etc/audio-tools/

File layout

umik-1/
โ”œโ”€โ”€ 7175488.txt           โ† 0ยฐ on-axis. Use when pointing at a speaker.
โ”œโ”€โ”€ 7175488_90deg.txt     โ† 90ยฐ ambient. Use when pointing at the ceiling.
โ””โ”€โ”€ 7175488_fir_*.npy     โ† [Generated] FIR filter cache (created on first run).

Generate or verify the FIR filter cache:

audio-tools --calibrate "umik-1/7175488.txt"

๐Ÿ–ฅ๏ธ Real-Time Dashboard (TUI)

Add --tui to get a live terminal dashboard instead of scrolling log output:

audio-tools --meter --tui
audio-tools --meter --tui --calibration-file "umik-1/7175488.txt"

Built with Textual:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  audio-tools --meter          Calibration: FULL (FIR) โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  dBFS  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘  โ”‚  dBSPL   72.4 dB               โ”‚
โ”‚ -24.3  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘  โ”‚  LUFS   -28.1 LUFS             โ”‚
โ”‚        โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘  โ”‚  RMS     0.0241                โ”‚
โ”‚                      โ”‚  Flux    38.6                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Mode: MONOLITHIC    SR: 48000 Hz   โ— REC   [R] Stop  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
Key Action
R ๐Ÿ”ด Toggle recording on/off
Q โŒ Quit

Press R to start recording โ€” audio is saved to recordings/ as a timestamped WAV. Press R again to stop; a notification pops with the filename.

๐ŸŒ Real-Time Spectrum Analyzer

Spectrum Analyzer UI

A browser-based live spectrum analyzer for UMIK-1 and compatible USB measurement microphones. Opens a local web server and launches your browser automatically.

Quick Start

# 1. Find your microphone's device ID
audio-tools --devices

# 2. Launch (opens browser at http://localhost:8767)
audio-tools-spectrum --device <id>

# 3. With calibration file
audio-tools-spectrum --device <id> --calibration-file "umik-1/7175488.txt"

# 4. Custom port, suppress auto-open
audio-tools-spectrum --device <id> --port 9000 --no-open

Features

Feature Description
FFT plot 256 log-spaced bins (20 Hz โ€“ Nyquist), Hann window, configurable peak labels
Waterfall Scrolling spectrogram with time-zoom and time-range CSV export
Time-series graph Rolling 30 s dBSPL/dBFS and SNR; y-axis auto-scales on calibration load/clear
Noise floor 5-second quiet room baseline; per-bin SNR with OK / LOW / NOISE status
Calibration Load a UMIK-1 .txt calibration file directly from the browser toolbar
Device selector Switch microphone input from the toolbar without restarting
Recording WAV recording via the REC button; calibration is applied to the saved file

Calibration note: When a file is loaded the status bar switches to dBSPL and the time graph rescales to 20โ€“120 dB. Switching devices automatically clears the loaded calibration.

๐Ÿ”ฌ Analysis & Visualization

# Analyze one file โ†’ CSV
audio-tools --analyze "recording.wav" --calibration-file "umik-1/7175488.txt"

# Batch analyze a directory โ†’ CSV per file
audio-tools --batch recordings/ --calibration-file "umik-1/7175488.txt"

# View chart (popup window)
audio-tools --plot "recording_metrics.csv"

# Save chart to PNG
audio-tools --plot "recording_metrics.csv" --save

๐Ÿ”„ Convert Audio

Convert WAV recordings to share-friendly formats. Requires ffmpeg.

# OGG/Opus โ€” smallest, WhatsApp-compatible
audio-tools --convert recordings/ --format ogg

# Multiple formats in one pass
audio-tools --convert recordings/session.wav --format ogg mp3

# Output to a different directory
audio-tools --convert recordings/ --format ogg --out converted/

# Overwrite existing files
audio-tools --convert recordings/ --format ogg --overwrite
Format Use Case
ogg ๐Ÿ“ฑ WhatsApp voice notes (smallest)
mp3 ๐ŸŽต Universal
aac ๐ŸŽ Apple-friendly (.m4a)

๐Ÿ”— Related Projects

AI Acoustic Monitor โ€” adds ML sound classification (chainsaws, glass breaking, birds) on embedded devices, built on this framework: py-edge-ai-acoustic-monitoring-app

๐Ÿ› ๏ธ For Developers

Building a custom app on this framework? See CONTRIBUTING.md.

Full technical documentation: docs/

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

umik_base_app-0.9.0.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

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

umik_base_app-0.9.0-py3-none-any.whl (102.7 kB view details)

Uploaded Python 3

File details

Details for the file umik_base_app-0.9.0.tar.gz.

File metadata

  • Download URL: umik_base_app-0.9.0.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for umik_base_app-0.9.0.tar.gz
Algorithm Hash digest
SHA256 87f7e51715c44275e9d950ce44e1c2a054c47da44d0c1fd789855ecf44b77262
MD5 2822d2f9c9d0dd85a58fb2a8f01f3de3
BLAKE2b-256 ed03efa806f03c839c8fbbccc92f0d8ffbc86cbc78bd99cb32fe2cdc18c1510f

See more details on using hashes here.

File details

Details for the file umik_base_app-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: umik_base_app-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 102.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for umik_base_app-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5265ffdee4d5a81f7e899e24b4309f8abfca465ab0f9723cfce91e1ce7b0ce27
MD5 930e818f144c7d39ed990bd360f2139d
BLAKE2b-256 463b862d2a7b0b51b203dfa30dcbb8a01f184ee9fc12d2e8bb5e961a93201010

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