Terjemahan mesin · Versi asli bahasa Inggris
Buat - Musik & amp; Audio Produksi
Tiga modul perangkat yang meliput musik dan audio- bagian produksi speech-swift, semua berjalan secara native pada Apple Silicon melalui MLX atau CoreML. MAGNET menghasilkan 30-detik klip musik dari singkat teks. Pemisahan Sumber (Open-Unmix) memecah trek stereo menjadi empat batang (vokal / drums / bass / other). Enhancement Pidato (DeepFilterNet3) menghapus suara latar belakang dari pidato secara langsung.
| Modul | Tugas | Backend | Keluaran | CLI |
|---|---|---|---|---|
| MAGNET | Musik Teks meragukan | MLX (INT4 / INT8) | 30 s @ 32 kHz mono | speech compose |
| Open-Unmix | Pemisahan stem | MLX | 4 batang @ 44.1 kHz stereo | speech separate |
| DeepFilterNet3 | Penampakan suara | CoreML (Neural Engine) | 48 kHz, real-time | speech denoise |
MAGNET - text-to-music generation
MLX Swift port Meta MAGNET (Generasi Audio Bertopeng dengan Transformer Tidak-Autoregresif). Menghasilkan 30 s klip dari 32 kHz mono music from a freet- form English prompt - "happy rock", "energetic EDM with synth lead", atau teks deskriptif kaya untuk hasil yang lebih bersih.
Arsitektur
Tiga komponen dimuat, diunduh pada panggilan pertama:
| Komponen | Peran | Sumber |
|---|---|---|
| LM decoder MAGNeT | Masked non-autoregresif transformer lebih dari 4 EnCodec codebooks. 24 lapis (Small, 300M) atau 48 (Medium, 1.5B). Diquantised Q / K / V / out proyeksi + FFN linears (MLX-affine, grup 64). | aufklarer/MAGNeT-{Small,Medium}-30secs-MLX-{4,8}bit |
| T5-base penyandi teks | 110M-parameter enkoder untuk pengkondisian teks. FP32 (hanya jalur encoder-hanya jalur enkoder; tidak ada decoder, tidak ada kepala LM). | t5-base |
| EnCodec 32 kHz decoder | Decoder Seanet (Conv1d / ConvTranspose1d / ResnetBlock / 2-layer LSTM) + 4-codebook Euclidean RVQ. Maps the LM discrete token back to a 32 kHz waveform. | mlx-community/encodec-32khz-float32 |
Encoding paralel topeng
Tidak seperti Autoregresif Saudara MusicGen, MAGNeT berjalan 50 forward melewati total (Pembagian baku [20, 10, 10, 10] di seluruh 4 codebooks) dengan kosin- jadwal remasking, klasifikasi bebas bimbingan annealing, dan per- tahap jendela perhatian lokal. 0 memiliki perhatian penuh; tahap 1–3 gunakan lokal |q − k| ≤ 5 jendela karena lebih tinggi buku kode hanya memperbaiki rincian.
Variabel
| Varian | Params | LM on- disk | Puncak RSS | Dinding (M- series, 30 s) | RTF |
|---|---|---|---|---|---|
small-int4 | 300 juta. | 287 MB | ~ 1.4 GB | - 10,8 s | 0.36× |
small-int8 | 300 juta. | 425 MB | ~ 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 di bawah 1.0 = lebih cepat dari waktu sebenarnya. Quantisasi hampir tidak bergerak di dinding-jam - perhatian mendominasi, bukan proyeksi linear - sehingga kemenangan praktis dari INT4 adalah memori daripada latensi.
Cepat mulai
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
Flag: --variant {small,medium}-{int4,int8}, --temperature (annieled, default 3.0), --top-p (0.9 baku), --cfg-max / --cfg-min (baku 10.0 / 1.0), --steps "20,10,10,10" (per-codebook iterasi) --seed.
Tag pendek seperti "happy rock" Bekerja tapi merasa tipis, dorongan destruktif yang menyebutkan, instrumen + tempo + mood tanpa diketahui peningkatan koheren - dalam pencarian kualitas kita yang lebih kaya memberikan laju perlintasan zero- lebih tinggi (0.116 vs 0.093, yaitu detail frekuensi tinggi) dan nol kliping. Komponen:
"happy rock"- tipis"energetic upbeat rock anthem with electric guitar riffs, driving drums, bass groove"- kaya, biasanya lebih baik
Bundles & amp; license
Keempat bundel MLX diturunkan dari facebook / magnet-small-30secs dan facebook / magnet-medium-30secs dan mewarisi lisensi Meta itu: CC-BY- NC 4.0 - hanya penggunaan bukan komersialAudio yang dihasilkan membawa pembatasan yang sama.
Pemisahan sumber - Open-Unmix (4 batang)
Open- Unmix HQ / UMX-L Dipindahkan ke MLX. Splits sebuah stereo campuran menjadi empat batang - vokal, drum, bass, instrumen lain - melalui prediktor perstem BiLSTM dan sebuah multi channel Wiener- EM posting-filter, semua berjalan end-to-end pada MLX Melalui STFT terbalik. RTF ~0.031 (32× lebih cepat dari real time) di M- series untuk 30 s dari 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)
Arsitektur, tuning, dan catatan benchmark pada Panduan Pemisah Sumber.
Pidato ditingkatkan - DeepFilterNet3
DeepFilterNet3 pada Neural Engine (CoreML). Menghapus suara latar belakang dari 48 kHz berbicara secara real time dengan 2.1Model parameter M- - cukup kecil untuk dijalankan bersama ASR baris pipa sebagai langkah pre- pemrosesan.
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)
Konfigurasi penuh pada Panduan Enhancement Pidato.
Memilih alat yang tepat
| Kau mau... | Gunakan |
|---|---|
| Hasilkan musik dari sebuah prompt teks | MAGNET (speech compose) |
| Tarik vokal atau drum keluar dari trek yang ada | Open-Unmix (speech separate) |
| Bersihkan pidato bising sebelum transkripsi | DeepFilterNet3 (speech denoise) |
| Ubah teks ke pidato (synthesis suara) | VoxCPM2 atau Qwen3-TTS |