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 TuotosKLI
MAGNeT Teksti → musiikkiMLX (INT4 / INT8)30 s @ 32 kHz monospeech compose
Avoin-Unmix VarsieroMLX4 vartta @ 44.1 kHz stereotspeech separate
DeepFilterNet3MelunvaimennusCoreML (Neural Engine)48 kHz, reaaliaikainenspeech 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:

OsaRooli Lähde
MAGNet dekooderi LMNaamioitu 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 tekstinkoodaaja110M-parametrikoodain tekstinkäsittelylle. FP32 (koodaajan ainoa polku; ei dekooderia, ei LM-päätä).t5-base
Encodec 32 kHz dekooderiSEANet-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

VarianttiParaatejaLM levylläRSS-huippu Muuri (M-sarja, 30 s)RTF
small-int4300M287 Mt~1,4 GB~10,8 s0.36×
small-int8300M425 Mt~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 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.

Nopeudenohjausvinkki

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 tekstikehostaMAGNeT (speech compose)
Vedä laulut tai rummut pois olemassa olevasta raidastaAvoin-Unmix (speech separate)
Siivoa äänekäs puhe ennen transkriptiotaDeepFilterNet3 (speech denoise)
Muunna teksti puheeksi (äänisynteesi)VoxCPM2 tai Qwen3-TTS