Awtomatikong salin · Orihinal sa Ingles

Compose — Musika & Audio Production

Tatlo sa mga on-device module ang sumasaklaw sa musika at audio-production side ng speech-swift, lahat ay tumatakbo ng katutubo sa Apple Silicon via MLX o CoreML. MAGNET Gumawa ng 30-second music clips mula sa isang text leader. Pinagmumulan ng Paghihiwalay (Open-Unmix) ang isang stereo track sa apat na tangkay (vocals / drums / bass / iba pa). Pag - unlad sa Pagsasalita (DeepFilterNet3) ay nag-aalis ng ingay ng background mula sa pagsasalita sa tunay na panahon.

ModuleTask LikodIlabasCLI
MAGNETText → musikaMLX (INT4 / INT8)30 s × 32 kHz monospeech compose
Open-Unmix Paghihiwalay ng IsmoMLX4 tangkay × 44.1 kHz stereospeech separate
DeepFilterNet3 Pagpigil sa IngayCoreML (Neural Engine)48 kHz, real-timespeech denoise

MAGNET — teksto-to-music na henerasyon

MLX Swift port of Meta's MAGNET (Masked Audio Generation na may isang Single Non-Autoregresssive Transformer). Generates 30 s clips of 32 kHz mono music mula sa isang free-form English agarang – "maligayang rock", "energetic EDM na may synth lead", o mayamang naglalarawang teksto para sa mas malinis na resulta.

Arkitektura

Tatlong nakakargang bahagi, na naka - download sa unang tawag:

Nakikipagtulungan Ang Papel Pinagmumulan
MAGNET decoder LM Masinam na non-autoregressive transformer sa 4 na mga codebook ng EnCodec. 24 patong (Small, 300M) o 48 (Medium, 1.5B). Quantised Q/K/V/out projections + FFN linears (MLX-afine, grupo 64).aufklarer/MAGNeT-{Small,Medium}-30secs-MLX-{4,8}bit
T5-base text regulator110M-parameter regulater para sa pagkokondisyon ng teksto. FP32 (encoder-lamang path; walang decoder, walang LM head).t5-base
EnCodec 32 kHz decoderSEANet decoder (E.Conv1d / ConvTranspose1d / ResnetBlock / 2-layer LSTM) + 4-codebook Euclidean RVQ. Mapa Ang discrete ng LM ay nagrereplekta pabalik sa isang noble 32 kHz waveform.mlx-community/encodec-32khz-float32

Mas maliit na kahilerang decoding

Hindi tulad ng autoregressive fratern MusicGen, tumatakbo ang MAGNET Ang 50 forward ay nagreresulta sa kabuuan ( Paghihiwalay [20, 10, 10, 10] Sa ibayo ng 4 codebooks) na may cosine-scheduled remasking, classifier-free guidance annealing, at per-stage local attention windows.Ang Stage 0 ay may full self-tension; ang mga yugtong 1–3 na gumagamit ng isang lokal na localQXZ |q − k| ≤ 5 bintana sapagkat dinidalisay lamang ng mas mataas na mga aklat ng kodigo ang mga detalye.

Mga Variant

Kaurian Mga ParamLM on-disk Pinakamataas na RS Pader (M-series, 30 s)RTF
small-int4300M287 MB°1.4 GB°10.8 s0.36×
small-int8300M425 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 mababa sa 1.0 = mas mabilis kaysa sa tunay na panahon. Quantisation ay bahagyang gumagalaw ng pader-oras – nangingibabaw ang pansin, hindi ang linear projections – kaya ang praktikal na panalo mula INT4 ay memorya sa halip na latency.

Mabilis na pagsisimula

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

Mga Bandila: --variant {small,medium}-{int4,int8}, --temperature (annealed, default 3.0), --top-p (default 0.9), --cfg-max / --cfg-min (default 10.0 / 1.0), --steps "20,10,10,10" (per-codebook series), --seed.

Bimb-engineering tip

Maikling tag tulad ng "happy rock" ang nag - uudyok sa pagbanggit na iyon na maging payat. mga instrumento + tempo + kondisyon Kapansin-pansing pagpapabuti ng kompensasyon – sa kalidad natin ay pinalis ang mas mayamang agarang pag-aalsa ay nagbigay ng mas mataas na sero-crossing rate (na mas mataas na zero-crosting rate)0.116 mga v 0.093, i.e. higit pang mataas-na-frequency na detalye) at sero na paggupit. Ihambing ang:

  • "happy rock" — manipis
  • "energetic upbeat rock anthem with electric guitar riffs, driving drums, bass groove" — mas mayaman, karaniwang mas mahusay

Bundles & kuto

Ang lahat ng apat na bungkos ng MLX ay mula sa mukhang aklat/magnet-small-30secs at mukhang aklat/magnet-medium-30secs At manahin mo ang kuto ni Meta: CC-BY-NC 4.0 — hindi-komersyal na paggamit lamang. Ang "generated audio " ay may gayunding restriksiyon.

Paghihiwalay ng Source — Open-Unmix (4 tangkay)

Open-Unmix HQ / UMX-L Nahahati sa apat na tangkay ang stereo na may tatak na MLX. mga tinig, mga tambol, baho, iba pang instrumento – via per-stem BELSTM propesiyars at isang multichannel Wiener-EM post-fitter, lahat ng tumatakbong dulo-to-end on MLX sa pamamagitan ng Inverse STFT. Real-world RTF ~0.031 (32× mas mabilis kaysa sa tunay na oras) sa M-series para sa 30 Mga halimbawa ng 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)

Buong arkitektura, pag - aayos, at mga notang benmark sa ibabaw ng Pinagmumulan ng Pagbubukod na giya.

Pagpapasulong sa pagsasalita — DeepFilterNet3

DeepFilterNet3 tungkol sa Neural Engine (CoreML).. Inaalis ang ingay sa paligid mula sa ). 48 kHz pagsasalita sa tunay na panahon na may kasamang isang 2.1M-parameter model — maliit lamang para tumakbo sa tabi ng isang modelo ASR pipeline bilang isang pre-processing na hakbang.

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)

Buong pagsasaayos sa Speech Enhancement guide.

Pagpili ng tamang kagamitan

Gusto mo... Gamitin
Tumugtog ng musika mula sa isang pag - uutos ng tekstoMAGNET (speech compose)
Mga kuwerdas o mga tambol mula sa dati nang rilesOpen-Unmix (speech separate)
Linisin ang maingay na pananalita bago isalinDeepFilterNet3 (speech denoise)
Komberteng teksto sa pagsasalita (voice synthesis)VoxCPM2 o Qwen3-TTS