Maskinoversettelse · Engelsk original
HTDemucs & Open-Umix — 4-Stem musikkseparering
Open-Umix HQ deler et stereo musikkspor i fire uavhengige stengler - vokal, drommer, bass, og andre. Fire uavhengige BiLSTM-modeller (en per stamme) produserer størrelsesmasker over blandingen STFT; et valgfritt Wiener-postfilter forener dem. Kjører på Apple Silicon via MLX.
To motorer er tilgjengelige: Open-Unmix HQ (litenvekt, standard) og HTDemucs (Demucs v4) - en Hybrid Transformer-modell av høyere kvalitet valgt med --engine htdemucs. Begge kjører på Apple Silicon via MLX og skriver ut de samme fire stemplene ved 44.1 kHz.
Fjerne vokaler og lagre en instrumental · Spytt en sang i fire WAV stengler
Hva det er
- 4 stengler per spor - vokal, trommer, bass, andre. Hver er en 2-kanals 44,1 kHz stammefil.
- Magnitude-maskemodell - hver stammodell forutsier en ikke-negativ maske som påføres blandingen spektrogram; fase tas fra blandingen.
- Wiener etterfilter (valgfritt) - mykmaskeraffinering på alle 4 stengler slik at de summerer sammenhengende tilbake til blandingen. Legger ~0,5 dB SDR.
- Liten fotavtrykk — 8.9M params per stengel, ~136 MB totalt for alle 4 stengler.
- Apache-2.0 - oppstrømsvekter under MIT, vår CoreML/MLX konvertering under Apache-2.0.
Arkitektur
Fire uavhengige stengler, hver kopi av samme nettverk:
| Stage | Form/operasjon |
|---|---|
| STFT | 4096-punkt FFT, 1024-hop, periodisk Hann-vindu, reflekteringsplate. 2049 frekvensbokser per ramme. |
| Inngang normalisere | Beskjær til 1487 bins (-16 kHz), påfør lærde per-bin middel + skala fra trening. |
| Koder | Linje 2974 → 512 + BatchNorm + tanh. Inngang er 2 kanaler × 1487 bins. |
| BiLSTM | 3 lag, 256 skjult per retning (512 effektiv). Fanger tidsmessig kontekst på tvers av rammer. |
| Dehydrering | Hopp-konkat av koder og LSTM-utganger (1024) → Linear 1024 → 512 + BN + ReLU → Linear 512 → 4098. |
| Utgangsdenorm + maske | Elementvis multipliseres med blandingsstørrelse; fase fra blanding; iSTFT overlapp-add. |
| Wiener (valgfritt) | Strømforholdsmasker på tvers av alle 4 stamestimater. Refenser fase så stilker sum til blanding. |
Modell
| Komponent | Verdi |
|---|---|
| Parametre / stengel | 8.9M |
| Parametre totalt (4 stengler) | ~35.6M |
| Samplingsrate | 44.1 kHz stereo |
| Chunk latency | Frakoblet (fullsporet STFT) |
| Vekter | aufklarer/OpenUnmix-HQ-MLX (sikrere, ~136 MB) |
| Upstream | sigsep/open-unmix-pytorch (Stöter et al., JOSS 2019) |
HTDemucs (demucs v4)
For høyere separasjon kvalitet - spesielt på bass og trommer - pakken også skip HTDemucsMeta's Hybrid Transformer Demucs. Den smelter sammen en spektrogramgren og en bølgeform gren gjennom en tverrdomene transformator; den fraktede htdemucs_ft varianten er en pose med fire finjusterte undermodeller, en per stang. Vekter lastes ned fra HuggingFace på første bruk. På en retningsbestemt MUSDB-prøve benchmark (museval / BSSEval v4) det i gjennomsnitt +3.01 DB SDR over UMX-HQ, med de største gevinstene på bass (+5.75 dB).
| Komponent | Verdi |
|---|---|
| Parametre | 168M (4 × 42M finjustert undermodell) |
| Samplingsrate | 44.1 kHz stereo |
| Vindu | 7.8 s segmenter, 25% overlapp, trekantet tverrfase |
| Vekter | aufklarer/HTDemucs-FT-MLX (fp16, ~320 MB) |
| Upstream | facebookresearch/demucs (Rouard et al., ICASSP 2023) |
Rask start — 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 (standard) for beste kvalitet. Pass targets: [.vocals] å trekke ut bare en del av stengler og hoppe over de andre modellene.
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
Når du skal bruke
...du trenger en lett, offline kilde-separasjon passere inne i en app eller rørledning på Apple Silicon. 8.9M params per stamme holder nedlasting og minne beskjeden. Magnitude-maskating pluss Wiener gir gode stengler på det meste pop/rock innhold. For state-of-the-art vokal isolasjon på studio materiale, bytte til den pakkede HTDemucs (Demuc. v4) motor via --engine htdemucs; Open-Umix forblir den lette, skip-in-the-app-end of the trade.