Two ways to pull a vocal out of a finished mix — listen to both, then see how
each scores against the real isolated stems. The input is a real 16 s excerpt
of Orphans (mono, 22.05 kHz) — a full
band mix with sung vocals. This run has true ground truth: the isolated
vocal and instrumental stems (from the original session) are loaded separately
and used to score each separator. The REPET-SIM separator sees only the
mixture; the fingerprint method is additionally handed the true vocal's
fingerprints as its optimization target (supervised).
A. REPET-SIM (repetition-based separation, unsupervised):
decompose.nn_filter(|STFT|, median, cosine, width=2 s) →
element-min with S → decompose.softmask (margins 2/10, power 2)
→ istft with the mixture phase. It models the repeating background and
treats the non-repeating residue as foreground.
B. Fingerprint (pleco's stem-guided matching pipeline,
supervised — it is
given the true vocal's fingerprints):
processAudioToFingerprints → optimizeEqCurves →
reconstructVocal.
Honest framing: both are pure DSP — no trained model, no weights, no GPU. On real dense material the unsupervised REPET-SIM baseline recovers the vocal weakly (it needs enough background repetition, and dense percussion leaks through); the supervised fingerprint method — handed the true vocal as a target — wins clearly, as it should. All correlations are measured against the real stems and reported below, nothing hidden. (Metric: time-domain Pearson correlation; the mix ≈ vocal + instrumental so this is meaningful.)