Tłumaczenie automatyczne · Oryginał angielski
HTDemucs & Open- Unmix - 4- Stem Music Separation
Open- Unmix HQ dzieli utwór muzyczny stereo na cztery niezależne łodygi - wokale, bębny, basoraz pozostałe. Cztery niezależne modele BiLSTM (jeden na łodygę) produkują maski wielkości nad mieszaniną STFT; opcjonalny wiener postfilter je godzi. Biega na Apple Silicon poprzez MLX.
Dostępne są dwa silniki: Open- Unmix HQ (lekki, domyślny) oraz HTDemucs (Demucs v4) - wysokiej jakości Hybrid Transformer model wybrany z --engine htdemucs. Oba uruchomione na Apple Silicon przez MLX i wyjście tych samych czterech łodyg w 44.1 kHz.
Usuń wokal i zapisać instrumentalny · Podziel piosenkę na cztery łodygi WAV
Co to jest?
- 4 łodygi na tor - wokale, bębny, basy, inne. Każdy z nich jest plikiem macierzystym 2- kanału 44.1 kHz.
- Model maski magnetycznej - każdy model łodygi przewiduje nienegatywną maskę zastosowaną do spektrogramu mieszaniny; faza jest pobierana z mieszaniny.
- Postfilter wienerowy (opcjonalny) - wygładzanie masek miękkich na wszystkich łodygach 4, tak aby sumuje spójnie z powrotem do mieszaniny. Dodaje ~ 0.5 dB SDR.
- Niewielki ślad - 8.9M paramy na trzon, ~ 136 MB suma dla wszystkich łodyg 4.
- Apache-2.0 - obciążniki w górę pod MIT, nasz CoreML/MLX Konwersja pod Apache-2.0.
Architektura
Cztery niezależne łodygi, każda kopia tej samej sieci:
| Etap | Kształt / działanie |
|---|---|
| STFT | 4096- punkt FFT, 1024- hop, okresowe okno Hann, reflektor-pad. 2049 kosze częstotliwości na ramę. |
| Normalizacja wejścia | Uprawy do 1487 koszy (sr. 16 kHz), stosować wyuczone perbin średnia + skala z treningu. |
| Enkoder | Linii 2974 → 512 + BatchNorm + tanh. Wejście 2 kanały × 1487 pojemniki. |
| BiLSTM | 3 warstwy, 256 ukryte na kierunek (512 skuteczne). |
| Dekoder | Skip- concat enkodera i wyjść LSTM (1024) → Linii 1024 → 512 + BN + ReLU → Linii 512 → 4098. |
| Denorm wyjściowy + maska | Element- wise mnożenie z wielkością mieszaniny; faza z mieszaniny; iSTFT overlap- add. |
| Wiener (nieobowiązkowo) | Maski Power@-@ ratio we wszystkich 4 szacunkach łodyg. Faza regrzysk tak wynika z sumy do mieszanki. |
Wzór
| Składnik | Wartość |
|---|---|
| Parametry / pień | 8.9M |
| Parametry ogółem (4 łodygi) | ~ 35.6M |
| Szybkość próbkowania | 44,1 kHz stereo |
| Latencja w kawałkach | Offline (full- track STFT) |
| Wagi | aufklarer / OpenUnmix- HQ- MLX (sejfy, ~ 136 MB) |
| Upstream | sigsep / open- unmix- pypalnik (Stöter et al., JOSS 2019) |
HTDemucs (Demucs v4)
Dla wyższej jakości separacji - szczególnie na basie i bębnach - pakiet również statków HTDemucs, Meta 's Hybrid Transformer Demucs. Łączy gałąź spektrogramu i falisty przez transformator domeny krzyżowej; wysłany htdemucs_ft wariant jest torbą czterech modeli podmodelowych z dostrojeniem fine-, jeden na łodygę. Wagi pobierane z HuggingFace przy pierwszym użyciu. Na kierunkowym wskaźniku próbki MUSDB- (museval / BSSEval v4) to średnie + 3.01 dB ponad UMX- HQ, z największymi zyskami na basie (+ 5.75 dB).
| Składnik | Wartość |
|---|---|
| Parametry | 168M (4 × 42M dostrojone do podmodeli) |
| Szybkość próbkowania | 44,1 kHz stereo |
| Ogrzewanie | 7.8 s segmenty, 25% nakładanie się, trójkątne skrzyżowanie |
| Wagi | aufklarer / HTDemucs- FT- MLX (fp16, ~ 320 MB) |
| Upstream | badania twarzy / demuki (Rouard et al., ICASSP 2023) |
Szybki 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 (domyślnie) dla najlepszej jakości. Pass targets: [.vocals] aby wydobyć tylko podzbiór łodyg i pomijać inne modele.
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
Kiedy stosować
... potrzebujesz lekkiej, offline source- separacja pass wewnątrz aplikacji lub rurociągu na Apple Silicon. 8.9M params na rdzeń utrzymuje pobieranie i pamięci skromny. Magnitude- maskowanie plus Wiener daje dobre łodygi na większości zawartości pop / rock. Dla stanu-of-the-sztuki izolacji wokalnej na materiał studyjny, przełącz na zestaw HTDemucs (Demucs v4) silnik przez --engine htdemucs; Open- Unmix pozostaje lekki, statek-w-aplikacji - koniec handlu.