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.

Wat het is.

Architectuur

Vier onafhankelijke stengels, elk een kopie van hetzelfde netwerk:

Fase Vorm / bewerking
STFT4096-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.
EncoderLineaire 2974 → 512 + BatchNorm + tanh. Invoer is 2 kanalen × 1487 bakken.
BILSTM3 lagen, 256 verborgen per richting (512 effectief). Legt temporale context over frames.
DecoderSkip-concat of encoder and LSTM outputs (1024) → Linear 1024 → 512 + BN + ReLU → Lijn 512 → 4098.
Uitvoer denorm + maskerElement-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 / stam8,9M
Parameters totaal (4 stengels)~35,6M
Monstersnelheid44,1 kHz stereo
Chunk latentieOffline (full-track STFT)
Gewichtenaufklarer/OpenUnmix-HQ-MLX (safetensors, ~136 MB)
Upstreamsigsep/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
Parameters168M (4 × 42M fijngelijnde submodellen)
Monstersnelheid44,1 kHz stereo
Venster7,8 s segmenten, 25% overlapping, driehoekig kruisvervaagd
Gewichtenaufklarer/HTDemucs-FT-MLX (fp16, ~320 MB)
Upstreamfacebookresearch/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?

Open-Unmix past wanneer...

...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.