Terjemahan mesin · Versi asli bahasa Inggris
HTDemucs & Open-Unmix - 4-Stems Pemisahan Musik
Buka-Unmix HQ memecah trek musik stereo menjadi empat batang independen - vokal, drum, bass, dan lainEmpat model BiLSTM independen (satu per batang) menghasilkan mask skala atas STFT campuran; sebuah filter postingan pilihan Wiener mendamaikan mereka. Menjalankan Apple Silicon melalui MLX.
Dua mesin tersedia: Open- Unmix HQ (ringan, default) dan HTDemucs (Demucs v4) - Model Transformer Hibrida bermutu tinggi yang dipilih dengan --engine htdemucsKeduanya berjalan di Apple Silicon via MLX dan mengeluarkan empat batang yang sama pada 44.1 kHz.
Hapus vokal dan simpan sebuah instrumental · Pecah lagu menjadi empat batang WAV
Apa ini?
- 4 batang per trek - vokal, drum, bass, lain. masing-masing adalah 2-channel 44.1 berkas batang kHz.
- Model Magnusde- mask - Setiap model batang memprediksi topeng non-negatif yang diterapkan pada spektrogram campuran; fase diambil dari campuran.
- Penyaring post- Wiener (opsional) - Soft- masker perbaikan seluruh 4 stems sehingga mereka jumlah koherently kembali ke campuran. Tambahkan ~ 0.5 dB SDR.
- Jejak kecil — 8.9M params per batang, ~136 Total MB untuk semua 4 batang.
- Apache-2.0 - Upstream bobot di bawah MIT, kita CoreML/MLX konversi di bawah Apache-2.0.
Arsitektur
Empat batang independen, masing-masing salinan dari jaringan yang sama:
| Tahap | Bentuk / operasi |
|---|---|
| STFT | 4096-point FFT, 1024- hop, jendela periodik Hann, reflekt- pad. 2049 frekuensi sampah per frame. |
| Masukan normalisasi | Crop ke 1487 bins (Aver16 kHz), menerapkan belajar per- bin berarti + skala dari pelatihan. |
| Enkoder | Linear 2974 £512 + BatchNorm + tanh. Masukan adalah 2 saluran × 1487 sampah. |
| BiLSTM | 3 lapis, 256 tersembunyi per arah (512 efektif). Menangkap konteks temporal di frame. |
| Decoder | Lewati enkoder dan keluaran LSTM (1024) Kami sedang dalam perjalanan. 1024 → 512 + BN + RELU Liniar 512 → 4098. |
| Keluaran denorm + mask | Elemen-bijaksana kalikan dengan ukuran campuran; fase dari campuran; iSTFT overlap- tambah. |
| Wiener (opsional) | Daya rasio masker di seluruh 4 batang perkiraan. Mengurangi fase sehingga batang sum untuk campuran. |
Model
| Komponen | Nilai |
|---|---|
| Parameter / batang | 8,9M |
| Total parameter (4 batang) | ~ 35.6M |
| Laju sampel | Stereo 44.1 kHz |
| Latensi Chunk | Luring (full- track STFT) |
| ♪ Weights ♪ | aufklaler / OpenUnmixing -HQ- MLX (Safetensors, ~ 136 MB) |
| Upstream | sigsep / open- unmixing -pytorch (Stoter et al., JOSS 2019) |
HTDemucs (Demucs v4)
Untuk kualitas pemisahan yang lebih tinggi - terutama pada bass dan drum - paket juga kapal HTDemucs, Meta Hybrid Transformer Demucs. Ini menggabungkan cabang spektrogram dan bentuk gelombang melalui cross- domain transformer; dikirim htdemucs_ft varian adalah sebuah kantong berisi empat halus model subset, satu per batang. Weight download dari HuggingFace pada penggunaan pertama. Pada a directional FliDB-sample benchmark (museval / BSSEval v4) itu rata-rata + 3.01 dB SDR lebih dari UMX-HQ, dengan keuntungan terbesar pada bass (+ 5.75 dB).
| Komponen | Nilai |
|---|---|
| Parameter | 168M (4 x 42M fine- disetel sub-model) |
| Laju sampel | Stereo 44.1 kHz |
| Windowing | 7.8 segmen, 25% tumpang tindih, segitiga silang memudar |
| ♪ Weights ♪ | aufklarer / HTDemucs- FT-MLX (fp16, ~ 320 MB) |
| Upstream | facebookresearch / demucs (Rouard et al., ICASSP 2023) |
- 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 (baku) untuk kualitas terbaik. Pass targets: [.vocals] untuk mengekstrak hanya subset batang dan melewatkan model lainnya.
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
Kapan akan digunakan
... Anda perlu ringan, offline sumber-pemisahan lulus dalam aplikasi atau pipa pada Apple Silicon. 8.9M params per batang terus mengunduh dan memorinya. Magnusde-masking plus Wiener memberikan batang yang baik pada kebanyakan pop / rock konten. Untuk status -the- seni isolasi vokal di material studio, beralih ke bundled HTDemucs (Demucs v4) mesin melalui --engine htdemucs; Open- Unmix tetap yang ringan, kapal-dalam-Anda-aplikasi akhir tradeoff.