Awtomatikong salin · Orihinal sa Ingles
HTDemucs & Open-Unmix — 4-Stem Music Division
Hinahati ng Open-Unmix HQ ang isang stereo music track sa apat na independiyenteng tangkay — mga tinig, mga tambol, baho, at iba pa. Apat na independiyenteng modelong BELSTM (isa kada stem) ang lumilikha ng mga masel na magnitude sa halong STFT; isang opsyonal na Wener post-fitter na mga konstruksyon nito. Runs on Apple Silicon via MLX.
May dalawang makina: Open-Unmix HQ (gaan ng timbang, ang default) at ang default HTDemucs (Demucs v4) — isang mas mataas na modelong-quality Hybrid Transformer na pinili na may kasamang mas mataas na model --engine htdemucs. Pareho silang tumatakbo Apple Silicon sa pamamagitan MLX at output na parehong apat na tangkay 44.1 kHz.
Alisin ang mga kuwerdas at itabi ang isang instrumento · Hatiin ang isang awit sa apat na tangkay ng WAV
Kung ano ito
- 4 tangkay sa bawat track – mga vocal, drum, bass, isa pa. Ang bawat isa ay isang 2-channel 44.1 kHz stem file.
- Magnitude-mask model – ang bawat modelo ng stem ay humuhula ng isang hindi-negative mask na inilalapat sa halo spectrogram; ang phase ay kinukuha mula sa halo.
- Wiener post-fitter (optional) — soft-mask na pagdalisay sa kabila ng lahat 4 Mga tangkay upang ang mga ito'y magtugmang bumalik sa halo.0.5 dB SDR.
- Maliit na bakas ng paa — 8.9M params per stem, iX136 MB kabuuang para sa lahat ng mga tangkay ng 4.
- Apache-2.0 — Paglampas ng mga pabigat MIT, ang aming CoreML/MLX Pagkumberte sa ilalim ng Apache-2.0.
Arkitektura
Apat na nagsasariling tangkay, bawat isa'y isang kopya ng iisang network:
| Bagsag | Hugis / operasyon |
|---|---|
| PAGTUTOK | 4096-point FFT, 1024-hop, pana-panahong bintanang Hann, reflect-pad. 2049 frequency bins kada frame. |
| Ilagay sa normal na paraan | Anihan hanggang 1487 bins (imperyo16 kHz), ang aplikasyong pinag-aaralan per-bin ay nangangahulugang + scale mula sa pagsasanay. |
| Mang - aakit | Linear 2974 → 512 + BatchNorm + tangh. Iput ay 2 channel × 1487 bin. |
| ELSTM | 3 patong, 256 nakatago kada direksiyon (512 epektibo). Captures temporal konteksto sa ibayo ng frames. |
| Decoder | Skip-concat ng EXTr at LSTM outputs (1024) → Linear 1024 → 512 + BN + ReLU → Liner 512 → 4098. |
| Ilabas ang denorm + maskara | Ang elemento-wise ay nagpaparami na may halong magnitude; phase mula sa halo-halo; iSTFT coup-add. |
| Wiener (opsiyonal) | Power-ratio masks sa lahat ng 4 stem taya. refines phase sot values sumporces to mixed. |
Huwaran
| Nakikipagtulungan | Halaga |
|---|---|
| Mga Parameter / tangkay | 8.9M |
| Ang kabuuan ng parameters (4 tangkay) | °35.6M |
| Bilang ng Sample | 44.1 kHz stereo |
| Pagiging huli | Offline (full-track STT) |
| Timbang | Aufklarer/OpenUnmix-HQ-MLX (Mga ligtas na tensor, EX136 MB) |
| Pampasulong | Sigsep/bukas-unmix-pytorch (Stöter et al., JOSS 2019) |
HTDemucs (Demucs v4)
Para sa mas mataas na uri ng paghihiwalay — lalo na sa bass at drums — ang pakete ay mga barko rin HTDemucs, Hybrid Transformer Demucs ng Meta. Pinagsanib nito ang isang spectrogram na sanga at isang sangay ng waveform sa pamamagitan ng isang cross-domain transformer; ang shipd htdemucs_ft Ang variant ay isang bag ng apat na mga small-tuned sub-models, isa kada stem. weights download mula sa HuggingFace sa unang paggamit. Sa isang direksiyonal MUSDB-sample benchmark (museval / BSEval v4) ito ay may katamtamang rating +3.01 dB SDR Mahigit sa UMX-HQ, na may pinakamalaking pakinabang sa bass (+5.75 dB).
| Nakikipagtulungan | Halaga |
|---|---|
| Mga Parameter | 168M (4 × 42M na pino-tuned sub-models) |
| Bilang ng Sample | 44.1 kHz stereo |
| Pagmamamasid | 7.8 s mga bahagi, 25% magkasanib, tatsulok na krus-fade |
| Timbang | Aufklarer/HTDemucs-FT-MLX (fp16, ~320 MB) |
| Pampasulong | Facebookrese/demucs (Rouard et al., ICASSP 2023) |
Mabilis na simula — 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) Para sa pinakamahusay na kalidad. Pasahin ang targets: [.vocals] upang makakuha lamang ng isang subset ng mga tangkay at lagtawan ang iba pang mga modelo.
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
Kung kailan gagamitin
...kailangan mo ng magaang, offline source-separation passes sa loob ng isang app o pipeline sa Apple Silicon. 8.9M params per stem ay nagpapanatili ng download at memory simple. Magnitude-masking plus Ang Wiener ay nagbibigay ng mabubuting tangkay sa karamihan ng pop/rock content. Para sa state-of-the-art vocal na pagbubukod sa studio materyal, lumipat sa browddd. HTDemucs (Demucs v4) sa pamamagitan ng makina --engine htdemucs; Ang Open-Unmix ay nananatiling magaan, barko-in-yo-app na dulo ng tradeoff.