Undertone
Operate undertone, a local on-device audio transcript producer. Use when ingesting audio from local files, YouTube, podcasts, RSS feeds, direct media URLs, article/web media pages, Quill, or Google Meet; running transcription, diarization, or FluidAudio/pyannote engine selection; producing, re-enriching, browsing, searching, or exporting transcripts; labeling, relabeling, merging, discarding, restoring, destroying, exporting, or adopting speaker voice fingerprints; running doctor, stats, models, or webhook checks; installing, packaging, or upgrading undertone. Routes to detailed references under references/.From its SKILL.md
npx -y skills add zm2231/undertone --skill undertoneAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.0 KB, as published. Nobody here has run it
Undertone
Undertone is a self-contained, on-device producer of audio transcripts: it downloads or reads audio, runs local ASR, diarization, speaker embeddings, fingerprinting, and enrichment, and persists transcripts you can browse, search, and export. This skill is the router. Read the one reference that matches the task before acting.
Which reference
| Task | Read |
|---|---|
| Local WAV/MP4/M4A or raw transcript JSON; ASR/diarization; engine and model flags; confidence fields | references/ingest.md |
| YouTube, podcasts, RSS feeds, direct media URLs, arbitrary article/web media pages; connector plugins and download paths | references/connectors.md |
| Quill or Google Meet meeting recordings; source precedence; multi-account auth; text fallback | references/meetings.md |
| Load, search, export formats (json/raw-json/text/md/jsonl/csv) and detail levels | references/exports.md |
| Speaker fingerprints: label, relabel, discard/restore/destroy, merge, export/import, embedding-model adoption, over-segmentation | references/fingerprints.md |
| Install, doctor, models, stats, health, packaging, self-contained boundary checks | references/ops.md |
| Version upgrades, automatic schema migration, fingerprint model namespace, cross-DB library portability | references/upgrades.md |
Non-Negotiables
undertonemust stay self-contained; do not import a host application's internal packages.- When audio exists, rerun Undertone local ASR, diarization, embeddings, fingerprinting, and enrichment. Source-provided transcript text, speaker IDs, and diarization are fallback or provenance only.
- Identity-changing fingerprint operations (import, merge, adopt-model, discard, restore, destroy) require
--dry-runfirst, then--yeswith a timestamped.bakwhen a write occurs.
Common Commands
undertone --db ./undertone.db run-wav ./meeting.wav --engine fluidaudio-hybrid --voice-metrics optional
undertone --db ./undertone.db quill-ingest <quill-meeting-id> --engine fluidaudio-hybrid
undertone --db ./undertone.db meet-ingest conferenceRecords/... --audio ./recording.mp4
undertone --db ./undertone.db youtube-ingest 'https://www.youtube.com/watch?v=...' --engine fluidaudio-hybrid
undertone connector-resolve 'https://example.com/article-with-audio'
undertone --db ./undertone.db web-ingest 'https://example.com/article-with-audio' --select <candidate-id>
undertone --db ./undertone.db podcast-ingest 'https://example.com/feed.xml' --episode 0
undertone --db ./undertone.db load meeting-1 --output-format md --output-detail standard
undertone --db ./undertone.db reenrich meeting-1 --turn-gap-ms 600
undertone --db ./undertone.db relabel --all
undertone --db ./undertone.db fingerprints --unnamed --excerpts
undertone --db ./undertone.db stats
undertone --db ./undertone.db doctor --all
Browse and status commands are human-readable by default; add --json for agents and scripts. Transcript exports use --output-format md|text|json|jsonl|csv|raw-json and --output-detail minimal|standard|full. Ingest commands fail on a duplicate transcript id rather than overwriting; pass --force to overwrite or --skip-existing to no-op. Matching audio across different source ids is skipped before fingerprint assignment when Chromaprint fpcalc is installed; text simhash is advisory metadata, not a silent skip gate.
Verification
PYTHONPATH=src pytest -q tests
python -m compileall -q src tests