Traduzione automatica · Originale inglese

HTDemucs & Open-Unmix — 4-Stem Music Separation

Open-Unmix HQ divide una traccia musicale stereo in quattro fusti indipendenti — voce, tamburi, bassoe altri. Quattro modelli BiLSTM indipendenti (uno per stelo) producono maschere di magnitudo sulla miscela STFT; un optional Wiener post-filtro li riconcilia. Apple Silicon via via via via MLX.

Sono disponibili due motori: HQ Open-Unmix (peso leggero, il default) e HTDemucs (Demucs v4) — un modello di trasformatore ibrido di qualità superiore selezionato con --engine htdemucs. Entrambi funzionano su Apple Silicon tramite MLX ed emettono gli stessi quattro gambi a 44.1 kHz.

Che cosa è

Architettura

Quattro steli indipendenti, ciascuno una copia della stessa rete:

FaseForma / funzionamento
STATO4096-punto FFT, 1024-hop, finestra Hann periodico, blocco riflettente. 2049 contenitori di frequenza per frame.
Input normalizzareCrop a 1487 bins (≈16 kHz), applicare imparato per-bin media + scala da allenamento.
EncoderLineare 2974 → 512 + BatchNorm + tanh. L'ingresso è 2 canali × 1487 bins.
BiLSTM3 strati, 256 nascosti per direzione (512 efficace). Cattura il contesto temporale attraverso i frame.
DecoderSkip-concat di encoder e uscite LSTM (1024) → Lineare 1024 → 512 + BN + ReLU → Lineare 512 → 4098.
Denorm uscita + mascheraElemento-saggio moltiplicare con magnitudo miscela; fase da miscela; iSTFT sovrapposto-add.
Wiener (opzionale)Maschere Power-ratio attraverso tutte le 4 stime del fusto. Definisce la fase in modo che i fusti sommano alla miscela.

Modello

ComponentiValore
Parametri / stelo8.9M
Parametri totali (4 steli)- 35.6M
Tasso di campionamento44.1 kHz stereo
Latenza del gamboOffline (full-track STFT)
Pesiaufklarer/OpenUnmix-HQ-MLX (safetensors, ~136 MB)
A montesigsep/open-unmix-pytorch (Stöter et al., JOSS 2019)

HTDemucs (Demuc v4)

Per una maggiore qualità di separazione — soprattutto sui bassi e tamburi — il pacchetto anche navi HTDemucs, Meta's Hybrid Transformer Demucs. Si fonde con un ramo spettrogramma e un ramo forma d'onda attraverso un trasformatore cross-domain; il speditore htdemucs_ft variante è una borsa di quattro sottomodelli pregiati, uno per stelo. Pesos download da HuggingFace sul primo utilizzo. Su un punto di riferimento direzionale MUSDB-sample (museval / BSSEval v4) media +3.01 dB SDR over UMX-HQ, con i maggiori guadagni sul basso (+5.75 dB).

ComponentiValore
Parametri168M (4 × 42M sotto-modelli fine-tuned)
Tasso di campionamento44.1 kHz stereo
Finestrasegmenti 7,8 s, 25% sovrapposizione, triangolare cross-fade
Pesiaufklarer/HTDemucs-FT-MLX ( fp16, ~320 MB)
A monte facebookresearch/demucs (Rouard et al., ICASSP 2023)

Avvio rapido — 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 (default) per la migliore qualità. Pass targets: [.vocals] estrarre solo un sottoinsieme di steli e saltare gli altri modelli.

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

Quando usare

Open-Unmix si adatta quando...

... avete bisogno di un pass di separazione sorgente-off-line leggero all'interno di un'app o pipeline su Apple Silicon. 8.9M params per stelo mantiene il download e la memoria modesta. Magnitude-masking plus Wiener dà buoni gambi sulla maggior parte dei contenuti pop/rock. HTDemucs (Demucs v4) motore tramite --engine htdemucs; Open-Unmix rimane il leggero, naufragio-in-tuo-app fine del tradeoff.