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.
Rimuovi la voce e salva una voce strumentale · Aggiungi una canzone in quattro WAV
Che cosa è
- 4 steli per traccia — voce, tamburi, basso, altro. Ciascuno è un file stelo a 2 canali 44.1 kHz.
- Modello di mascherina dignitudine — ogni modello di stelo predispone una maschera non negativa applicata allo spettrogramma di miscela; la fase viene prelevata dalla miscela.
- Wiener post-filtro (opzionale) — raffinatezza delle maschere in tutti i casi 4 steli in modo che riassumano coerentemente alla miscela.0.5 DB SDR.
- Ingombro ridotto — Param 8.9M per stelo, ~ 136 MB totale per tutti i 4 steli.
- Apache-2.0 — pesi a monte sotto MITil nostro CoreML/MLX conversione in Apache-2.0.
Architettura
Quattro steli indipendenti, ciascuno una copia della stessa rete:
| Fase | Forma / funzionamento |
|---|---|
| STATO | 4096-punto FFT, 1024-hop, finestra Hann periodico, blocco riflettente. 2049 contenitori di frequenza per frame. |
| Input normalizzare | Crop a 1487 bins (≈16 kHz), applicare imparato per-bin media + scala da allenamento. |
| Encoder | Lineare 2974 → 512 + BatchNorm + tanh. L'ingresso è 2 canali × 1487 bins. |
| BiLSTM | 3 strati, 256 nascosti per direzione (512 efficace). Cattura il contesto temporale attraverso i frame. |
| Decoder | Skip-concat di encoder e uscite LSTM (1024) → Lineare 1024 → 512 + BN + ReLU → Lineare 512 → 4098. |
| Denorm uscita + maschera | Elemento-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
| Componenti | Valore |
|---|---|
| Parametri / stelo | 8.9M |
| Parametri totali (4 steli) | - 35.6M |
| Tasso di campionamento | 44.1 kHz stereo |
| Latenza del gambo | Offline (full-track STFT) |
| Pesi | aufklarer/OpenUnmix-HQ-MLX (safetensors, ~136 MB) |
| A monte | sigsep/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).
| Componenti | Valore |
|---|---|
| Parametri | 168M (4 × 42M sotto-modelli fine-tuned) |
| Tasso di campionamento | 44.1 kHz stereo |
| Finestra | segmenti 7,8 s, 25% sovrapposizione, triangolare cross-fade |
| Pesi | aufklarer/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
... 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.