Maskinoversættelse · Engelsk original
HTDemucs & Open- Unmix - 4- Stam- musikadskillelse
Open- Unmix HQ deler et stereomusikspor i fire uafhængige stængler - vokal, trommer, bas, og andet. Fire uafhængige BiLSTM modeller (en per stamme) producerer størrelse masker over blandingen STFT; en valgfri Wiener postfilter forener dem. Kører på Apple Silicon via MLX.
Der er to motorer til rådighed: Open- Mix HQ (letvægts, standard) og HTDemucs (Demucs v4) - en højere kvalitet Hybrid Transformer model udvalgt med --engine htdemucsBegge løb på Apple Silicon via MLX og output de samme fire stængler ved 44.1 kHz.
Fjern vokal og gem en instrumental · Opdel en sang i fire WAV stængler
Hvad er det?
- 4 stængler pr. spor - vokal, trommer, bas, andet. Hver er en 2- kanal 44.1 kHz stamfil.
- Magnitude- maske model - hver stammodel forudser en ikke-negativ maske, der anvendes på blandingen spektrogram; fase er taget fra blandingen.
- Wiener postfilter (valgfri) - soft- maske raffinement på tværs af alle 4 stængler, så de summen sammenhængende tilbage til blandingen. Tilfører ~ 0.5 dB SDR.
- Lille fodaftryk - 8.9M params per stamme, ~ 136 MB i alt for alle 4 stængler.
- Apache-2.0 - opstrøms vægte under MIT, vores CoreML/MLX omregning i henhold til Apache-2.0.
Arkitektur
Fire uafhængige stængler, hver en kopi af det samme netværk:
| Fase | Form / operation |
|---|---|
| STFT | 4096-point FFT, 1024-hop, periodisk Hann vindue, reflekt- pad. 2049 frekvens bins per ramme. |
| Normaliser for input | Crop to 1487 bins (Þ16 kHz), anvende lært per- bin gennemsnit + skala fra uddannelse. |
| Encoder | Linear 2974 → 512 + BatchNorm + tanh. Input er 2 kanaler × 1487 bins. |
| BiLSTM | 3 lag, 256 skjult pr. retning (512 effektiv). Indfanger tidsmæssig kontekst på tværs af rammer. |
| AfkoderStencils | Skip-kontat af encoder og LSTM udgange (1024) → Linear 1024 → 512 + BN + LU → Lineær 512 → 4098. |
| Output denorm + maske | Elementært-vis formere sig med blanding størrelse; fase fra blanding; iSTFT overlap- add. |
| Wiener (valgfrit) | Power- ratio masker på tværs af alle 4 stængler skøn. Begrænser fase så stængler sum til blanding. |
Model
| Komponent | Værdi |
|---|---|
| Parametre / stængler | 8.9M |
| Parametre i alt (4 stængler) | ~ 35,6 M |
| Stikprøverate | 44.1 kHz stereo |
| Klunk latency | Offline (full track STFT) |
| Vægt | aufklarer / OpenUnmix- HQ- MLX (safetensorer, ~ 136 MB) |
| Upstream | sigsep / open- unmix- pyfach (Stöter et al., JOSS 2019) |
HTDemucs (Demucs v4)
For højere separationskvalitet - især på bas og trommer - leveres pakken også HTDemucs, Meta 's Hybrid Transformer Demucs. Det smelter en spektrogram gren og en waveform gren gennem en cross-domæne transformer; den afsendt htdemucs_ft variant er en pose med fire fine- tunede sub- modeller, en per stængel. Vægt download fra HuggingFace ved første brug. På en retningsbestemt MUSDB- prøve benchmark (musikal / BSSEval v4) det gennemsnit + 3.01 dB SDR over UMX- HQ, med de største gevinster på bas (+ 5.75 dB).
| Komponent | Værdi |
|---|---|
| Parametre | 168M (4 × 42M fine- tunede undermodeller) |
| Stikprøverate | 44.1 kHz stereo |
| Vindowning | 7.8 s segmenter, 25% overlap, trekantet tværfade |
| Vægt | aufklarer / HTDemucs-FT- MLX (fp16, ~ 320 MB) |
| Upstream | facebookresearch / demucs (Rouard et al., ICASSP 2023) |
Hurtig 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 bedste kvalitet. targets: [.vocals] kun at udtrække en delmængde af stængler og springe de andre modeller over.
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
Hvornår skal du bruge
... du har brug for en letvægts, offline source- separation pass inde i en app eller pipeline på Apple Silicon. 8.9M params per stamme holder download og hukommelse beskeden. Magnitude- masking plus Wiener giver gode stilke på de fleste pop / rock indhold. For state- of- the- art vokal isolation på studiemateriale, skifte til bundtet HTDemucs (Demucs v4) Motor via --engine htdemucs; Open- Unmix forbliver den lette, shipping-in-your- app ende af handlen.