Kaynak Ayrımı

Open-Unmix HQ, bir stereo müzik parçasını dört bağımsız stem'e böler — vocals, drums, bass ve other. Dört bağımsız BiLSTM modeli (her stem için bir tane) karışımın STFT'si üzerinde büyüklük maskeleri üretir; isteğe bağlı bir Wiener son-filtresi bunları uzlaştırır. MLX üzerinden Apple Silicon'da çalışır.

İki motor mevcuttur: Open-Unmix HQ (hafif, varsayılan) ve HTDemucs (Demucs v4)--engine htdemucs ile seçilen, daha yüksek kaliteli bir Hybrid Transformer modeli. İkisi de MLX üzerinden Apple Silicon'da çalışır ve aynı dört stem'i 44.1 kHz'de üretir.

Nedir

Mimari

Dört bağımsız stem, her biri aynı ağın bir kopyası:

AşamaŞekil / işlem
STFT4096 noktalı FFT, 1024 hop, periyodik Hann penceresi, reflect-pad. Çerçeve başına 2049 frekans bini.
Girdi normalleştirme1487 bin'e kırp (≈16 kHz), eğitimden öğrenilmiş bin başına ortalama + ölçek uygula.
EncoderLinear 2974 → 512 + BatchNorm + tanh. Girdi 2 kanal × 1487 bin.
BiLSTM3 katman, yön başına 256 hidden (etkin 512). Çerçeveler boyunca zamansal bağlamı yakalar.
DecoderEncoder ve LSTM çıktılarının skip-concat'i (1024) → Linear 1024 → 512 + BN + ReLU → Linear 512 → 4098.
Çıktı denorm + maskeKarışım büyüklüğü ile eleman-bazında çarpım; faz karışımdan; iSTFT overlap-add.
Wiener (isteğe bağlı)Dört stem tahmininin tümü üzerinde güç-oranı maskeleri. Stem'lerin karışıma toplanması için fazı iyileştirir.

Model

BileşenDeğer
Parametre / stem8.9M
Toplam parametre (4 stem)~35.6M
Örnekleme hızı44.1 kHz stereo
Parça gecikmesiÇevrimdışı (tam-parça STFT)
Ağırlıklaraufklarer/OpenUnmix-HQ-MLX (safetensors, ~136 MB)
Yukarı akışsigsep/open-unmix-pytorch (Stöter ve ark., JOSS 2019)

HTDemucs (Demucs v4)

For higher separation quality — especially on bass and drums — the package also ships HTDemucs, Meta's Hybrid Transformer Demucs. It merges a spectrogram branch and a waveform branch through a cross-domain transformer; the shipped htdemucs_ft variant is a bag of four fine-tuned sub-models, one per stem. Weights download from HuggingFace on first use. On a directional MUSDB-sample benchmark (museval / BSSEval v4) it averages +3.01 dB SDR over UMX-HQ, with the biggest gains on bass (+5.75 dB).

ComponentValue
Parameters168M (4 × 42M fine-tuned sub-models)
Sample rate44.1 kHz stereo
Windowing7.8 s segments, 25% overlap, triangular cross-fade
Weightsaufklarer/HTDemucs-FT-MLX (fp16, ~320 MB)
Upstreamfacebookresearch/demucs (Rouard et al., ICASSP 2023)

Hızlı başlangıç — 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")
)

En iyi kalite için wiener: true (varsayılan) iletin. Yalnızca stem'lerin bir alt kümesini çıkarmak ve diğer modelleri atlamak için targets: [.vocals] iletin.

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

Ne zaman kullanılır

Open-Unmix şu durumlarda uygundur…

…Apple Silicon üzerinde bir uygulama veya pipeline içinde hafif, çevrimdışı bir kaynak ayrımı adımına ihtiyacınız olduğunda. Stem başına 8.9M parametre, indirme boyutunu ve bellek kullanımını mütevazı tutar. Büyüklük-maskeleme artı Wiener, çoğu pop/rock içerikte iyi stem'ler verir. Stüdyo malzemesinde son teknoloji vokal izolasyonu için --engine htdemucs aracılığıyla pakete dahil HTDemucs (Demucs v4) motoruna geçin; Open-Unmix bu ödünleşmenin hafif, uygulamanızla birlikte gönderilebilen ucu olarak kalır.