Konekäännös · Englanninkielinen alkuperäinen
Koosta musiikki & äänituotanto
Kolme laitemoduulia kattaa musiikin ja audio-tuotannon puolella speech-swift, kaikki käynnissä natiivina Apple Silicon via MLX tai CoreML. MAGNET tuottaa 30-sekunnin musiikkileikkeitä tekstikehosta. Lähde: (Open-Unmix) jakaa stereoraidan neljään varteen (laulu / rummut / basso / muu). Puheen lisääminen (DeepFilterNet3) poistaa taustamelun puheesta reaaliajassa.
| Moduuli | Tehtävä | Taustaosa | Tuotos | KLI |
|---|---|---|---|---|
| MAGNeT | Teksti → musiikki | MLX (INT4 / INT8) | 30 s @ 32 kHz mono | speech compose |
| Avoin-Unmix | Varsiero | MLX | 4 vartta @ 44.1 kHz stereot | speech separate |
| DeepFilterNet3 | Melunvaimennus | CoreML (Neural Engine) | 48 kHz, reaaliaikainen | speech denoise |
MAGNET ... Tekstimusiikista toiseen.
MLX Swift port of Meta's MAGNeT (Maged Audio Generation with a single Non-Autoregive Transformer).Tuottaa 30 s:n pätkän 32 kHz:n monomusiikkia vapaamuotoisesta englantilaisesta pikaviestistä "onnellinen rock," "energetic EDM with synth lead" tai runsaasti kuvailevaa tekstiä puhtaampaa tulosta varten.
Arkkitehtuuri
Kolme ladattua osaa, ladattu ensipuhelussa:
| Osa | Rooli | Lähde |
|---|---|---|
| MAGNet dekooderi LM | Naamioitu ei-autoreaggressiivinen muuntaja yli 4 EnCodec koodikirjat. 24 kerrosta (pieni, 300M) tai 48 (Medium, 1.5B). Q/K/V/out ennusteet + FFN-lineaarisuus (MLX-affini, ryhmä 64). | aufklarer/MAGNeT-{Small,Medium}-30secs-MLX-{4,8}bit |
| T5-base tekstinkoodaaja | 110M-parametrikoodain tekstinkäsittelylle. FP32 (koodaajan ainoa polku; ei dekooderia, ei LM-päätä). | t5-base |
| Encodec 32 kHz dekooderi | SEANet-dekooderi (Conv1d / ConvTranspose1d / ResnetBlock / 2-layer LSTM) + 4-codebook Euclidean RVQ. Kartoittaa LM:n erilliset tunnukset takaisin 32 kHz:n aaltomuotoon. | mlx-community/encodec-32khz-float32 |
Naamioitu yhdensuuntainen dekoodaus
Toisin kuin automaattiaggressiivinen sisarus MusicGen, MAGNet toimii 50 eteenpäin kulkee yhteensä (oletusjako [20, 10, 10, 10] yli 4 koodikirjat) kosine-suunniteltu uudelleenhaastattelu, luokittelija-vapaa opastus hehkutus, ja per-stage paikallisia huomiota ikkunoita. 0 on täysin itse-huomion; vaiheissa 1–3 käytä paikallista |q − k| ≤ 5 ikkuna, koska korkeammat koodikirjat vain tarkentaa yksityiskohtia.
Muunnokset
| Variantti | Paraateja | LM levyllä | RSS-huippu | Muuri (M-sarja, 30 s) | RTF |
|---|---|---|---|---|---|
small-int4 | 300M | 287 Mt | ~1,4 GB | ~10,8 s | 0.36× |
small-int8 | 300M | 425 Mt | ~1,5 GB | ~11 s | 0.37× |
medium-int4 | 1,5B | 1.36 GB | ~2,2 GB | ~36 s | 1.20× |
medium-int8 | 1,5B | 2,10 GB | ~3,0 GB | ~36 s | 1.20× |
RTF alle 1.0 = nopeampi kuin reaaliajassa. Kvantitalisaatio tuskin liikkuu seinä-kello . Huomio hallitsee, ei lineaarisia ennusteita . Joten INT4:n käytännön voitto on muisti eikä latenssi.
Nopea aloitus
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"))
KLI
# 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
Liput: --variant {small,medium}-{int4,int8}, --temperature (jännitetty, oletus 3,0), --top-p (oletusarvo 0,9), --cfg-max/ --cfg-min (oletuksena 10,0 / 1.0,0,00), --steps "20,10,10,10" (koodikirjaiterationit), --seed.
Lyhyet tagit kuten "happy rock" toimivat, mutta tuntuvat ohuilta. Kuvailevat kehotukset, joissa mainitaan instrumentit + tempo + mieliala huomattavasti parantaa johdonmukaisuutta laatumme lakaista rikkaampi nopeampi antoi korkeampi nolla-risteysnopeus (0,116 vs 0.093, eli enemmän korkean taajuuden yksityiskohtia) ja nollaleikkuu. Vertaa:
"happy rock"ohuet"energetic upbeat rock anthem with electric guitar riffs, driving drums, bass groove"rikkaampi, yleensä parempi
Bundles & lisenssi
Kaikki neljä MLX-pakettia ovat peräisin facebook/magnet-small-30secs sekä facebook/magnet-medium-30secs ja periä Metan lisenssi: CC-BY-NC 4.0 . Luotu ääni kuljettaa samaa rajoitusta.
Source erottaminen ... Open-Unmix (4 vartta)
Open-Unmix HQ / UMX-L siirretty MLX: lle. Jaa stereosekoituksen neljään varteen vokaalit, rummut, basso, muut välineet BILSTM-ennustimien ja monikanavaisen Wiener-EM-jälkisuotimen kautta, kaikki juoksut päähän-päästä-päähän-päälle MLX Käänteisen STFT:n kautta. RTF ~0.031 (32× reaaliaikaista nopeampi) M-sarjassa 30 Ääniä.
# 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)
Täydellinen arkkitehtuuri, viritys ja vertailutiedot Lähde-erotusoppaassa .
Puheenparannus .. DeepFilterNet3
DeepFilterNet3 marraskuuta 2009 Neural Engine (CoreML) Poistaa taustamelun 48 kHz-puhe reaaliajassa 2.1M-parametrimalli ... tarpeeksi pieni ajaakseen vieressä ASR putkijohto esikäsittelyvaiheena.
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)
Täysi konfiguraatio puheen lisälaiteoppaassa .
Oikean työkalun valinta
| Haluatko... | Käyttö |
|---|---|
| Luo musiikki tekstikehosta | MAGNeT (speech compose) |
| Vedä laulut tai rummut pois olemassa olevasta raidasta | Avoin-Unmix (speech separate) |
| Siivoa äänekäs puhe ennen transkriptiota | DeepFilterNet3 (speech denoise) |
| Muunna teksti puheeksi (äänisynteesi) | VoxCPM2 tai Qwen3-TTS |