messy-audio-fix
Diagnose-and-treat workflow for very messy recordings where the standard preprocessor isn't enough.
Skill by danielrosehill
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/danielrosehill-messy-audio-fix
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: data, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/messy-audio-fix
What's inside
- Skill name
messy-audio-fix- Description
- Diagnose-and-treat workflow for very messy recordings where the standard preprocessor isn't enough. Generates a spectrogram, identifies problematic frequency bands (AC hum, rumble, narrow-band whines, broadband hiss, clipping), and proposes targeted ffmpeg filters. ONLY use when the user explicitly invokes it — the normal pipeline runs `preprocess-for-transcription` directly and skips diagnostic work. Trigger phrases the user might use — "this audio is messy", "transcription failed because of noise", "fix this rough recording", "the audio is bad and the transcript is garbage".
- License
- MIT
- Instructions
- 96 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Messy audio fix
Deliberate, opt-in workflow for audio that the standard pipeline can't handle. Diagnoses what's wrong, recommends targeted remediations, and only applies them once the user confirms.
## When NOT to use this skill
- Routine voice memos — modern ASR is robust to moderate noise (see your own POC at https://github.com/danielrosehill/Crying-Baby-Audio-Scrub). The normal `preprocess-for-transcription` is the right tool.
- "Just clean it up before sending" — that's `preprocess-for-transcription`.
- Ambiguous noise that hasn't actually broken transcription — try transcribing first; ASR may handle it fine.
## When to use it
- A previous transcription attempt produced garbage and you suspect the audio is the cause
- The recording is *audibly* bad — humming, whining, rumbling, clipping, or so much hiss that even humans struggle
- The user explicitly asks to "diagnose" or "fix" a recording
## Workflow
### Step 1 — diagnose (always do this first, do not auto-apply)
Render a spectrogram and run a numerical analysis:
```bash
scripts/render-spectrogram.sh INPUT.opus
uv run --quiet --with numpy --with soundfile --with scipy \
scripts/analyse-spectrum.py INPUT.opus
```
The analyser produces a JSON report covering:
- **Band energies (dB)** — rumble (20–80 Hz), voice low/mid/high, HF hiss (>8 kHz)
- **AC hum scoring** — peaks at 50 Hz and 60 Hz + harmonics, relative to voice
- **Narrow-band whines** — top 5 spectral peaks above 1.5 kHz that stick out >15 dB above local median (typical of HDD seek, fans, switching power supplies, monitor whine)
- **Clipping** — % of samples at full scale
- **Diagnoses** — plain-English problem statements
- **Suggested filters** — concrete ffmpeg `-af` strings, ready to drop into a pipeline
Show the user:
1. The spectrogram (open it visually if a display is available)
2. The diagnoses list
3. The suggested filters
Do NOT apply anything yet.
### Step 2 — confirm
Ask the user which suggestions to apply. They may want all, some, or none. They may also want to skip the messy-audio-fix entirely after seeing the diagnosis ("looks fine to me, just transcribe it").
If multiple narrow-band whines are detected, treat them as a single block — applying or skipping all of them together is fine; cherry-picking individual whines is over-engineering for ASR prep.
### Step 3 — apply (only on user confirmation)
Build the ffmpeg filter chain in order:
1. **High-pass** (if rumble flagged) — `highpass=f=90`
2. **Notches** (if hum or whines flagged) — chain `equalizer=...` filters with `t=q:w=2:g=-25`
3. **Loudness normalise** — `loudnorm=I=-16:TP=-1.5:LRA=11`
4. **Resample to mono 16 kHz** — `-ac 1 -ar 16000`
5. **Encode to opus 24k** — `-c:a libopus -b:a 24k`
If broadband HF hiss was flagged, EQ won't fix it — invoke the standalone `denoise` skill (DeepFilterNet or Auphonic) **before** building the filter chain. Then run this skill's filter chain on the denoised output.
If clipping was flagged, warn the user that no amount of filtering can recover the clipped peaks. Proceed anyway — ASR usually copes — but flag that the source recording was already damaged.
Output: `<stem>.fixed.opus` in `audio/processed/`.
### Step 4 — verify
After applying, re-render the spectrogram on the output and present it side-by-side with the original. Visual confirmation that the targeted bands actually got attenuated.
Then either:
- Hand off to `transcribe-gemini-raw` (or whichever ASR; `transcribe-assemblyai` only for timestamps/diarization), OR
- If the result still looks bad, escalate to `denoise` with a stronger backend, OR
- Conclude that the audio is unsalvageable and report.
## Folder convention
- `<stem>.spectrogram.png` and `<stem>.spectrogram.fixed.png` in `audio/processed/`
- `<stem>.spectrum-analysis.json` (the diagnostic report)
- `<stem>.fixed.opus` (final cleaned output)
## Honest expectations
- **Hum / rumble / narrow-band whines**: highly fixable with targeted notches. EQ is the right tool.
- **Broadband hiss / fan / room tone**: EQ can't help much. ML denoising (DeepFilterNet) is the right tool.
- **Wind, mouth noise, plosives**: very hard to fix post-hoc. Often unsalvageable for ASR.
- **Clipping**: unrecoverable. Source-side fix only.
- **Multiple overlapping speakers** when only one is wanted: not a denoising problem — needs source separation (`pyannote-audio` / `ElevenLabs Voice Isolator`), out of scope for this skill.
## What this skill does not do
- Auto-apply any filter without user confirmation
- Replace the standard preprocess pipeline (it's a deliberate diagnostic detour)
- Promise that messy audio becomes good audio — sets expectations honestly when source is unsalvageableFrom danielrosehill/Claude-Transcription-Plugin, MIT.
More from danielrosehill/Claude-Transcription-Plugin
- 0.462score
transcribe-gemini-cleaned
danielrosehill
Transcribe audio via Gemini with filler words and pause-words removed at transcription time.
SkillAFreshness: A★ 1Claude Code +9 - 0.462score
transcribe-gemini-raw
danielrosehill
Transcribe an audio file to a raw verbatim transcript using the gemini-transcription MCP server.
SkillAFreshness: A★ 1Claude Code +9 - 0.459score
export-transcript
danielrosehill
Export a transcript (or any pipeline output) by emailing it, uploading to Google Drive, or copying to clipboard.
SkillAFreshness: A★ 1Claude Code +9 - 0.391score
transcribe-podcast
danielrosehill
Transcribe a podcast episode and produce two outputs in one pass — (1) the raw API transcript exactly as the provider returned it, and (2) a podcast-formatted…
SkillCFreshness: C★ 1Claude Code +9 - 0.391score
combine-then-transcribe
danielrosehill
Concatenate multiple audio recordings into one file and send as a single transcription job.
SkillCFreshness: C★ 1Claude Code +9 - 0.391score
denoise
danielrosehill
Remove background noise from an audio file.
SkillCFreshness: C★ 1Claude Code +9 - 0.391score
extract-context
danielrosehill
Mine a transcript for durable personal context — facts about the speaker (location, role, projects, preferences, relationships, ongoing work) — and write them…
SkillCFreshness: C★ 1Claude Code +9 - 0.391score
iterative-refine
danielrosehill
Stepwise transcript refinement that never overwrites prior stages.
SkillCFreshness: C★ 1Claude Code +9 - 0.391score
split-transcript
danielrosehill
Segment a mixed-intent transcript into separate files by category — prompts, context, action items, background, decisions.
SkillCFreshness: C★ 1Claude Code +9 - 0.388score
preprocess-for-transcription
danielrosehill
Prepare audio for transcription — format normalise (mono/16kHz/opus), loudness normalise (EBU R128), and collapse long silences (silero-vad).
SkillCFreshness: C★ 1Claude Code +9 - 0.340score
normalize-format
danielrosehill
Convert audio to a transcription-friendly format — stereo to mono, resample to 16kHz, compress WAV to opus or mp3, reduce bitrate.
SkillDFreshness: D★ 1Claude Code +9 - 0.340score
setup-whisper
danielrosehill
One-time setup for local Whisper transcription — installs faster-whisper and downloads a default model.
SkillDFreshness: D★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 2
- Open issues
- 0
- Last commit (this folder)
- Apr 28, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from danielrosehill
- 0.470score
plugin-data-storage
danielrosehill
Canonical reference for where Claude Code plugins should persist user data.
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
save-plan
danielrosehill
Save a Claude Code plan (from ExitPlanMode, design discussion, or multi-step task) to persistent storage.
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
onboard
danielrosehill
First-run onboarding for the adb-ops plugin.
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
context-gate
danielrosehill
One-shot context-checkpoint workflow — when the current session is getting cluttered, write a structured handover plan capturing what's done and what's…
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
context-workflow-reference
danielrosehill
Reference and worked example for the CONTEXT.md / CLAUDE.md two-file workflow.
SkillAFreshness: A★ 2Claude Code +9 - 0.470score
scaffold-planning
danielrosehill
Create a lightweight `planning/` folder in the current repo with leftover-tasks.md, blockers.md, session-logs/, and handovers/.
SkillAFreshness: A★ 2Claude Code +9
Cite this page
messy-audio-fix skill. Agent Mart. https://agentmart.dev/skills/danielrosehill-messy-audio-fix (last updated 2026-10-24)