Strojový překlad · Anglický originál

Kompozice - Hudba & amp; Výroba zvuku

Tři on- device moduly pokrývají hudbu a audioprodukci speech-swift, všechny běží nativně na Apple Silicon přes MLX nebo CoreML. MAGNET generuje 30-second hudební klipy z textového tlačítka. Oddělování zdrojů (Open- Unmix) rozděluje stereo track do čtyř stonků (vokály / bubny / baskytara / jiné). Vylepšení řeči (DeepFilterNet3) odstraňuje hluk pozadí z řeči v reálném čase.

ModulÚkolBackendVýstupCLI
MAGNETText → hudbaMLX (INT4 / INT8)30 s @ 32 kHz monospeech compose
OdmíchatOddělování kmenůMLX4 stonky @ 44.1 kHz stereospeech separate
DeepFilterNet3Potlačení hlukuCoreML (Neural Engine)48 kHz, reálný časspeech denoise

MAGNET - tvorba text- to- hudby

MLX Swift port Meta MAGNET (Maskovaná Audio Generace s Single Non- Autoregresivní transformátor). Vytváří klipy 30 z monografie 32 kHz z free- form English quick - "happy rock", "energický EDM se synthovým vedením" nebo bohatý popisný text pro čistší výsledky.

Architektura

Tři naložené komponenty stažené při prvním volání:

SoučástÚlohaZdroj
MAGNET dekodér LMMaskovaný non-autoregresivní transformátor nad 4 EnCodec kodeknihy. 24 vrstev (Small, 300M) nebo 48 (Medium, 1.5B). Kvantizované Q / K / V / out projekce + FFN linears (MLX- afine, skupina 64).aufklarer/MAGNeT-{Small,Medium}-30secs-MLX-{4,8}bit
Textový enkodér T5-base110M- parametr enkodér pro textovou kondicionování. FP32 (enkoder- only path; no dekodér, no LM head).t5-base
Encodec 32 kHz dekodérSEAnet dekodér (Conv1d / ConvTranspose1d / ResnetBlock / 2- vrstva LSTM) + 4-Codebook Euklidovský RVQ. Mapy LM diskrétních tokenů zpět na 32 kHz vlnění.mlx-community/encodec-32khz-float32

Maskované paralelní dekódování

Na rozdíl od autoregresivního sourozence MusicGen, MAGNET běží 50 vpřed prochází celkem (výchozí rozdělení [20, 10, 10, 10] na konci 4 Codebooks) s kosine- plánované remasking, klasifikační-free navádění žíhání, a per- stage místní pozornost okna. 0 má plnou sebevědomí; etapy 1–3 použít lokální |q − k| ≤ 5 okno, protože vyšší kódy pouze vylepšují detaily.

Varianty

VariantaParamsLM on- diskVrchol RSSZeď (M- série, 30 s)RTF
small-int4300 M287 MB~ 1.4 GB~ 10.80.36×
small-int8300 M425 MB- 1,5 GB~ 11 s0.37×
medium-int41.5B1.36 GB~ 2.2 GB~ 36 s1.20×
medium-int81.5B2,10 GB~ 3.0 GB~ 36 s1.20×

RTF pod 1.0 = rychlejší než v reálném čase. Kvantizace sotva pohybuje tapety - pozornost dominuje, ne lineární projekce - takže praktické vítězství INT4 je spíše pamětí než latencí.

Rychlý start

import MAGNeTMusicGen

let model = try await MAGNeTMusicGen.fromPretrained(variant: .smallInt4)
let pcm = model.generate(text: "energetic upbeat rock anthem with electric guitar riffs, driving drums, bass groove")
// pcm: [Float] length 960_000 (30 s × 32 kHz mono)

try WAVWriter.write(samples: pcm, sampleRate: 32_000,
                    to: URL(fileURLWithPath: "out.wav"))

CLI

# Default: small-int4 (~10 s on M-series for 30 s of audio)
speech compose "happy rock" -o happy_rock.wav

# Larger model — better prompt following, ~3.5× slower
speech compose "lo-fi hip hop with mellow piano and warm vinyl crackle" \
    --variant medium-int4 -o lofi.wav

# Reproducible
speech compose "energetic EDM with synth lead" --seed 42 -o edm.wav

Vlajky: --variant {small,medium}-{int4,int8}, --temperature (žíhaný, výchozí 3.0), --top-p (výchozí 0.9), --cfg-max / --cfg-min (výchozí hodnota 10.0 / 1.0), --steps "20,10,10,10" (per- codebook iterations) --seed.

Tip pro projektování

Krátké štítky jako "happy rock" práce, ale cítit tenký. Popisné podněty, které zmiňují nástroje + tempo + nálada Výrazně zlepšit soudržnost - v naší kvalitě zametat bohatší rychle dal vyšší nulovou rychlost (0.116 vs 0.093, tj. vyšší frekvence detail) a nulové stříhání. Porovnat:

  • "happy rock" - tenký
  • "energetic upbeat rock anthem with electric guitar riffs, driving drums, bass groove" - bohatší, obvykle lepší.

Svazky & amp; licence

Všechny čtyři soubory MLX jsou odvozeny od facebook / magnet-small-30secs a facebook / magnet-medium-30secs a zdědit Metovu licenci: CC-BY-NC 4.0 - pouze pro nekomerční použití. Generovaný zvuk nese stejné omezení.

Oddělování zdrojů - Open- Unmix (4 stonky)

Open- Unmix HQ / UMX-L Přenos do MLX. Rozdělí stereo mix na čtyři stonky - vokály, bubny, okoun, ostatní nástroje - per- stem BiLSTM prediktory a multikanálový Wiener-EM post-filtr, všechny běží end- to-end na MLX přes inverzní STFT. Real- world RTF ~ 0.031 (32 × rychlejší než reálný čas) na M- sérii 30 s audio.

# Split mix.wav into vocals/drums/bass/other.wav next to it
speech separate mix.wav

# Or keep stems together
speech separate mix.wav --output stems/

import SourceSeparation

let separator = try await SourceSeparator.fromPretrained()
let stems = separator.separate(audio: stereoSamples, sampleRate: 44_100)
// stems[.vocals], stems[.drums], stems[.bass], stems[.other]  — each [[Float]] (stereo)

Úplná architektura, ladění a referenční poznámky k Příručka pro oddělení zdrojů.

Vylepšení řeči - DeepFilterNet3

DeepFilterNet3 na Neural Engine (CoreML). Odstraňuje hluk pozadí z řeči 48 kHz v reálném čase s parametrem 2.1M--model - dost malý na to, aby běžel vedle potrubí ASR jako krok předzpracování.

speech denoise noisy.wav -o clean.wav

import SpeechEnhancement

let enhancer = try await SpeechEnhancer.fromPretrained()
let clean = try enhancer.enhance(audio: noisy, sampleRate: 48_000)

Kompletní konfigurace na Příručka pro vylepšení řeči.

Vybírání správného nástroje

Chceš...Použití
Vygenerovat hudbu z textového tlačítkaMAGNET (speech compose)
Vytáhněte vokály nebo bubny z existující tratiOdmíchat (speech separate)
Ukliďte hlučnou řeč před přepisemDeepFilterNet3 (speech denoise)
Převést text do řeči (syntéza hlasu)VoxCPM2 nebo Qwen3-TTS