Automatische vertaling · Engels origineel
HTDemucs & Open-Unmix .4-Stem Muziekscheiding
Open-Unmix HQ splitst een stereo-muzieknummer op in vier onafhankelijke stelen. zang, trommels, basen Andere. Vier onafhankelijke BiLSTM-modellen (één per steel) produceren magnitudemaskers over het mengsel STFT; een optioneel Wiener-postfilter combineert ze. Draait op Apple Silicon via MLX.
Er zijn twee motoren beschikbaar: Open-Unmix HQ (lichtgewicht, de standaard) en HTDemucs (Demucs v4) Een Hybrid Transformer model van hogere kwaliteit geselecteerd met --engine htdemucs. Beide lopen op Apple Silicon via MLX en uitgang dezelfde vier stengels op 44.1 kHz.
Verwijder de vocalen en sla een instrumentaal · Splits een nummer in vier WAV stengels
Wat het is.
- 4 stengels per track Zang, drums, bas, andere. Elk is een 2-kanaals 44.1 kHz stambestand.
- Magnetisch maskermodel .Elk stammodel voorspelt een niet-negatief masker dat op het mengselspectrogram wordt toegepast; fase wordt uit het mengsel genomen.
- Wiener post-filter (optioneel) Verfijning van zachte maskers over alle 4 stengels, zodat ze op coherente wijze terug naar het mengsel. Voegt ~0.5 dB SDR.
- Kleine voetafdruk 8.9M params per stam, ~136 MB totaal voor alle 4 stengels.
- Apache-2.0 Onderaanstaande gewichten MIT, onze CoreML/MLX conversie onder Apache-2.0.
Architectuur
Vier onafhankelijke stengels, elk een kopie van hetzelfde netwerk:
| Fase | Vorm / bewerking |
|---|---|
| STFT | 4096-punts-TS, 1024-hop, periodiek Hann-venster, reflect-pad. 2049 frequentiebakken per frame. |
| Invoer normaliseren | Bijsnijden tot 1487 bakken (≈16 kHz), van toepassing geleerde per-bin gemiddelde + schaal van de training. |
| Encoder | Lineaire 2974 → 512 + BatchNorm + tanh. Invoer is 2 kanalen × 1487 bakken. |
| BILSTM | 3 lagen, 256 verborgen per richting (512 effectief). Legt temporale context over frames. |
| Decoder | Skip-concat of encoder and LSTM outputs (1024) → Linear 1024 → 512 + BN + ReLU → Lijn 512 → 4098. |
| Uitvoer denorm + masker | Element-wise vermenigvuldigen met mengsel magnitude; fase uit mengsel; iSTFT overlapping-add. |
| Wiener (facultatief) | Power-ratio maskers over alle 4 de stam schattingen. Verfijnt fase dus stengels som tot mengsel. |
Model
| Onderdeel | Waarde |
|---|---|
| Parameters / stam | 8,9M |
| Parameters totaal (4 stengels) | ~35,6M |
| Monstersnelheid | 44,1 kHz stereo |
| Chunk latentie | Offline (full-track STFT) |
| Gewichten | aufklarer/OpenUnmix-HQ-MLX (safetensors, ~136 MB) |
| Upstream | sigsep/open-unmix-pytorch (Stöter et al., JOSS 2019) |
HTDemucs (Demucs v4)
Voor een hogere scheidingskwaliteit wordt met name op bas en trommels het pakket ook vervoerd HTDemucs, Meta's Hybrid Transformer Demucs. Het fuseert een spectrogramtak en een golfvormtak via een cross-domeintransformator; de verzonden htdemucs_ft variant is een zak van vier fijn afgestemde submodellen, één per stam. Gewichten downloaden van HuggingFace bij eerste gebruik. Op een directionele MUSDB-x-benchmark (museval / BSSEval v4) is het gemiddelde +3.01 dB SDR boven UMX-HQ, met de grootste winsten op bas (+5.75 dB).
| Onderdeel | Waarde |
|---|---|
| Parameters | 168M (4 × 42M fijngelijnde submodellen) |
| Monstersnelheid | 44,1 kHz stereo |
| Venster | 7,8 s segmenten, 25% overlapping, driehoekig kruisvervaagd |
| Gewichten | aufklarer/HTDemucs-FT-MLX (fp16, ~320 MB) |
| Upstream | facebookresearch/demucs (Rouard et al., ICASSP 2023) |
Snel starten met Swift
import SourceSeparation
import AudioCommon
let separator = try await SourceSeparator.fromPretrained()
let stereo = try AudioFileLoader.loadStereo(
url: URL(fileURLWithPath: "song.wav"),
targetSampleRate: 44100
)
let stems = separator.separate(audio: stereo, sampleRate: 44100)
// stems[.vocals], stems[.drums], stems[.bass], stems[.other]
// Each is [[Float]] — left channel, right channel.
try WAVWriter.writeStereo(
left: stems[.vocals]![0],
right: stems[.vocals]![1],
sampleRate: 44100,
to: URL(fileURLWithPath: "vocals.wav")
)
Pass wiener: true (standaard) voor de beste kwaliteit. Geef targets: [.vocals] om alleen een deelverzameling van stengels uit te pakken en sla de andere modellen over.
CLI
speech separate song.wav # all 4 stems into song_stems/ (Open-Unmix)
speech separate song.wav --engine htdemucs # Demucs v4 — higher quality
speech separate song.wav --engine htdemucs --htdemucs-precision int8 # smaller int8 bundle
speech separate song.wav --stems vocals # vocals only
speech separate song.wav --stems vocals,drums # subset
speech separate song.wav --output-dir /tmp/stems/ # custom output dir
speech separate song.wav --verbose # show timing
Wanneer moet u dit middel gebruiken?
...je hebt een lichtgewicht, offline bronscheidingspas nodig in een app of pijplijn op Apple Silicon. 8.9M params per steel blijft downloaden en geheugen bescheiden. Hoogtemaskering plus Wiener geeft goede stengels op de meeste pop/rock inhoud. Voor state-of-the-art vocale isolatie op studiomateriaal, schakel over op de gebundelde HTDemucs (Demuc's v4) motor via --engine htdemucs; Open-Unmix blijft het lichtgewicht, schip-in-your-app einde van de tradeoff.