Skip to content

Audio Problem Fixer

Takes the guesswork out of corrective processing. Point it at a file, it runs problem detection under the hood, then applies targeted EQ cuts and high-pass filters to fix what it finds. The original file stays untouched.

Requires the phantom-audio[processing] extra. Add it with: uv tool install "phantom-audio[processing]" --python 3.13 --force

Parameters

Parameter Type Default Description
file_path string required Path to audio file to fix
problems list[string] null (auto-detect) Specific problems to fix: "hum", "sibilance", "mud", "harshness", "dc_offset", "resonant_peak". If omitted, runs detect_problems first and fixes every detected problem that has a recipe.
output_path string null (auto-named) Where to write the fixed file. Defaults to <name>_fixed.wav inside Phantom's output directory (~/.phantom/output, or PHANTOM_OUTPUT_DIR) -- not next to the input. Paths outside that directory are rejected.

Example Output

fix_audio

{ "output_path": "/Users/you/.phantom/output/vocals_raw_fixed.wav", "fixes_applied": ["sibilance", "hum"], "before": { "problems": [ ... ] }, "after": { "problems": [ ... ] }, "improvements": [ { "problem_type": "hum", "before_severity": "significant", "after_severity": null, "status": "resolved" }, { "problem_type": "sibilance", "before_severity": "moderate", "after_severity": "minor", "status": "improved" } ], "regressions": [] }

What It Fixes

Every fix is static EQ. There is no de-esser, limiter, or other dynamics processing in the recipe set.

ProblemHow it fixes it
humDeep notch (-30 dB, Q 30) at each detected harmonic
sibilanceParametric cut at 7 kHz, -5 dB, Q 0.7
mudHigh-pass at 80 Hz plus a low shelf cut at 300 Hz, -4 dB
harshnessParametric cut at 3 kHz, -4 dB, Q 1.5
dc_offsetSubsonic high-pass at 5 Hz
resonant_peakParametric cut at each detected resonance, -6 dB, Q from the measurement

What It Cannot Fix

detect_problems reports these, but fix_audio will not act on them — naming one in problems changes nothing. They need a different take or a re-render, not corrective EQ.

clipping, inter_sample_peak, noise_floor, snr, lossy_codec

Reading the Result

fix_audio re-runs problem detection on the file it wrote, so before and after are full detect_problems payloads and you can see what actually moved. improvements and regressions summarise that diff per problem type, with status being one of resolved, improved, unchanged, worsened, or new_problem. A non-empty regressions list means the corrective EQ introduced something that wasn’t there before — worth listening to before you keep the output.

When to Use It

Run this after detect_problems flags issues in your stems. It’s most useful during the early stages of mixing when you want to clean up recordings before making creative decisions. Think of it as a cleanup pass, not a replacement for intentional EQ choices.

Pro tip

You can target specific problems if you only want to fix some of them. For example, “fix the hum in bass.wav but leave the sibilance alone” will pass problems: ["hum"] and skip the 7 kHz cut.

Typical Prompts

  • “Fix all the problems in vocals.wav”
  • “Remove the 60 Hz hum from bass.wav”
  • “Cut the sibilance on the vocal and save it as vocals_clean.wav”
  • “Run problem detection on all stems and auto-fix everything”