Terjemahan mesin · Versi asli bahasa Inggris
Arsitektur
Instruksi asli TTS
Build asli SDK dukungan dari sumber utama. Homebrew dan lain prebuilt CLI rilis mungkin tidak termasuk mesin ini belum.
Bundel MLX yang diterbitkan: aufklarer/FireRedTTS3-Instruct-MLX-fp32 · aufklarer/MOSS-VoiceGenerator-MLX-bf16
FireRedTTS3-Instruct — FireRedTTS3TTS: FireRedTTS3-Instruct ditahan Float32 Model dan bobot decoder. Ini mengembalikan audio yang dibanjiri: abaikan --stream. Inggris dan Cina --language Sebuah batas generasi menimbulkan kesalahan bukannya kembali terpotong sukses.
MoSS- Pembuat Suara — MossVoiceGeneratorTTS: MOSS- Pembuat Suara mempertahankan BF16 bobot bahasa dan FP32 codec sintesis. Gunakan --stream untuk incremental PCM. Abaikan --language dan menempatkan persyaratan bahasa dalam --instructPenyelesaian menguras semua buku kode enam belas.
Setiap teks dan daerah instruksi dibatasi 32,768 UTF-8 bytes. Inserm masukan yang telah diberikan lengkap, termasuk template, harus cocok dalam 4,096 Token. "Input" melebihi batas ditolak.
Instruktuasi - berikut kualitas tidak mencetak. Ukuran skrg-script menggambarkan setup teruji; ada - model sertifikasi latensi tetap tidak meyakinkan.
Breeze TTS 2 Breeze TS
Inggris / Cina TTS dengan desain suara, referensi kloning dan arah, dan streaming audio (MLX BF16/8-bit, 24 kHz; penelitian / non-komersial lisensi).
speech speak "The quick brown fox jumps over the lazy dog." --engine breeze \
--instruct "A clear, calm English narrator." --stream -o design.wav--breeze-model-id:aufklarer/Breeze-TTS-2-MLX-8bit--breeze-bundle-dir--breeze-cache-limit-mib--breeze-reference-text--breeze-temperature:0.9--breeze-top-k:50--breeze-top-p:1--breeze-cfg-scale:4--breeze-max-frames:750--breeze-seed:42--first-chunk-frames:3--chunk-frames:25
Asli Apple waktu jalan
PocketTTS menambahkan asli CoreML speech synthesis to speech-swift. Semua tahap baku ke CPU hanya eksekusi. Aliran Alba Inggris preset 1,920-sampel frame di 24 kHz (80 ms per frame).
speech-swift terorganisir sebagai modular Swift paket dengan protokol terbagi, modul model independen, dan CPI terpadu. Semua kesimpulan dijalankan pada perangkat menggunakan MLX (Metal GPU) atau CoreML (Neural Engine).
Grafik Dependensi Modul
┌──────────┐
│ AudioCLI │ (entry point)
└────┬─────┘
│
┌──────┴──────┐
│ AudioCLILib │ (commands)
└──────┬──────┘
│
┌─────────┬───────┼───────┬──────────┬──────────────┐
│ │ │ │ │ │
┌────┴───┐ ┌──┴──┐ ┌──┴──┐ ┌─┴────┐ ┌───┴────┐ ┌──────┴───────┐
│Qwen3ASR│ │Qwen3│ │Cosy │ │Perso-│ │Speech- │ │ Speech- │
│Parakeet│ │ TTS │ │Voice│ │naPlex│ │ VAD │ │Enhancement │
└────┬───┘ └──┬──┘ └──┬──┘ └──┬───┘ └───┬───┘ └──────┬───────┘
│ │ │ │ │ │
└────────┴───────┼───────┴─────────┘ │
│ │
┌──────┴──────┐ │
│ Qwen3Common │ (shared layers) │
└──────┬──────┘ │
│ │
┌──────┴──────┐ │
│ AudioCommon │ ◄──────────────────────┘
└─────────────┘ (protocols, audio I/O)MLX buffer cache budget
MLX model runtimes berbagi sebuah default reusable-buffer cap dari min(2 GiB, physical RAM / 4) dari beban berat yang akan di muat sepanjang hidup sebagai model anggaran penelepon bawah, termasuk MLX.Memory.cacheLimit = 0, dan model yang sudah ada - anggaran spesifik telah diawetkan. Cap membatasi buffer yang menganggur; bobot aktif, cache dan memori proses total dapat melebihi itu. MLX trims pada alokasi, sehingga buffer yang dibebaskan terakhir dapat sementara menempatkan cache di atas anggarannya sampai alokasi berikutnya.
unload() melepas pendaftaran model; runtimes tanpa metode yang merilis itu pada penghancuran. Pemilik terakhir mengembalikan anggaran penelepon, sementara sebelumnya unloads mempertahankan langit-langit model yang tersisa. CoreML hanya jalur tidak mendapatkan MLX Registrasi.
Diarize Transkripsi MOSS
MossTranscribe mengembalikan speaker- yang dikaitkan dengan segmen penanda waktu melalui dua latar belakang asli. CoreML menggunakan tetap 1,024-Token MLState untuk rekaman pendek. MLX menggunakan secara dinamis berkembang 131,072-token konteks, affine INT5/INT8 beban decoder, dan opsional FP16/INT8 KV cache untuk transkripsi bentuk panjang konteks secara global. Keduanya offline, ausoregresif runtimes daripada streaming model.
VoiceChat 11B
Referensi dan tugas: duplex speech-to-speech; Modeling Duplex SALM-Duplex: Efisien and Direct Duplex untuk Speech-to-Speech Language Model (Interspeech 2025), dikutip oleh NVIDIA's upstream VoiceChat Kartu model.
Waktu-waktu-jalan yang lengkap, M5 Pro 48 GB, Rilis, 80 ms live cadence: protected-head INT5 puncak RSS adalah tentang 8.69 GB; tiga dikendalikan secara keseluruhan-baris pipa RTF Hasilnya adalah 0.96, 0.96, dan 0.99Teroptimasi INT8 kinerja belum diukur.
VoiceChat implementasi asli lengkap MLX jalur audio-audio- audio: causal FastConformer persepsi, Nemron-H duplex teks / fungsi saluran, teks standalone -conditired EAR- TTS decoder dengan delapan iterasi MaskGIT, dan 22.05 kodek saraf kHz. Streaming mempertahankan perhatian lapisan yang terbatas dan causal- caches convolution, sedangkan stabil delapan frame hidup decoc jendela menggunakan sebuah graph terkompile. Setiap grafik yang dikompilasi. 80 bingkai masukan ms menghasilkan keputusan bahasa, 31 RVQ kode, dan persis 1,764 keluaran sampel. Pemuat memerlukan sebuah lengkap encoder/ + llm/ + tts/ bundle dan menolak pemahaman lama -hanya ekspor. INT5 sekarang menopang kumpulan RTF di bawah 1 pada tes M5 Pro, meskipun per- frame p95 Ruang utama tetap sempit.
Backend Inferensi
| Backend | Perangkat Keras | Model |
|---|---|---|
| MLX | Metal GPU | Qwen3-ASR, Qwen3-TTS, Breeze TTS 2, CosyVoice3, IndexTTS2, Qwen3.5-Chat, PersonaPlex, VoiceChat 11B, Omnibahasa ASR (300M / 1B / 3B / 7B), Cohere Translate 2B, Voxtral Mini 3B, MOSS Translate Diarize, Pyannote, Silero VAD, WeSpeaker, SpeechBrain ECAPA LID, Nemotron 3 Diarisasi, FireRedTTS3-Instruct, MoSS- Pembuat Suara |
| CoreML | CPU / GPU - Neural Engine (ANE) | Qwen3-ASR Enkoder (Hybrid), Parakeet TDT, Parakeet EOU streaming, Omnibahasa ASR 300M, Kokoro-82M, Qwen3.5-Chat (opsional), Sortformer diarization, DeepFilterNet3, Silero VAD (opsional), WeSpeaker (opsional), MOSS Translate Diarize, SpeechBrain ECAPPA LID, Nemotron 3 Diarisasi |
| Percepat | CPU (SIMD) | Pemrosesan audio (STFT, mel, FFT), pemrosesan sinyal |
Format Berat Model
MLX model menggunakan safetensors format dengan 4-bit atau 8-bit kuantisasi (ukuran grup 64). CoreML penggunaan model .mlmodelc format terkompile. Skrip konversi dalam scripts/ dikonversi dari PyTorch checkpoint.
Cohere dan Voxtral juga gunakan MLX affine INT5 Bundel. MLX tidak mendukung affine INT7; INT8 adalah pilihan kualitas tinggi yang didukung.
| Model | Params | Kuantisasi | Ukuran pada Disk |
|---|---|---|---|
| Qwen3-ASR 0.6B (MLX) | - 600M | 4 bit / 8-bit | 680 MB / 1.0 GB |
| Qwen3-ASR 0.6B (CoreML) | ~ 186M (Enkoder) | INT8 | ~ 180 MB |
| Qwen3-ASR 1.7B (MLX) | ~ 1.7B | 4 bit / 8-bit | 2.1 GB / 3.2 GB |
| Parakeet- TDT 0.6B (CoreML) | - 600M | INT8 | 500 MB |
| Whisper Large-v3 Turbo (CoreML) | 809M | FP16 | 1.6 GB |
| MOSS Translate Diarize 0.9B (MLX) | 908.5M | Audio FP16 + INT5 / INT8 decoder | 987.0 MiB / 1.200.1 MiB |
| MOSS Translate Diarize 0.9B (CoreML) | ~ 900M | FP16 / INT8 block-32 | 1.7 GB / 1.2 GB |
| Parakeet- EOU 120M (CoreML) | ~ 120M | INT8 | ~ 120 MB |
| Omnilingual- ASR- CTC 300M (CoreML) | 326M | INT8 | 312 MB |
| Omnilingual- ASR- CTC 300M (MLX) | 326M | 4 bit / 8-bit | 193 MB / 342 MB |
| Omnilingual- ASR- CTC 1B (MLX) | 1.01B | 4 bit / 8-bit | 549 MB / 1006 MB |
| Omnilingual- ASR- CTC 3B (MLX) | ~ 3B | 4 bit / 8-bit | 1.71 GB / 3.16 GB |
| Omnilingual- ASR- CTC 7B (MLX) | ~ 7B | 4 bit / 8-bit | 3.55 GB / 6.63 GB |
| Cohere Translate 2B (MLX) | 2B | FP16 / INT5 / INT8 | 3,85 / 1.62 / 2.25 GiB |
| Voxtral Mini 3B 2507 (MLX) | 3B | FP16 / INT5 / INT8 | 8.71 / 3.77 / 5.18 GiB |
| Qwen3-ForcedAligner 0.6B (MLX) | - 600M | 4 bit / 8-bit | 979 MB / 1.4 GB |
| Qwen3-ForcedAligner 0.6B (CoreML) | - 600M | INT4 / INT8 | 630 MB / 1.0 GB |
| Qwen3-TTS 0.6B (MLX) | - 600M | 4 bit / 8-bit | 1.7 GB / 2.4 GB |
| Qwen3-TTS 1.7B (MLX) | ~ 1.7B | 4 bit / 8-bit | 3.2 GB / 4.8 GB |
| CosyVoice3 0.5B (MLX) | - 500M | 4- bit LLM | ~ 1.2 GB |
| IndexTTS2 expanded bundle (MLX) | Kelas 1.5B-class | Model tambahan FP16 + | ~ 4.8 GB |
| Kokoro-82M (CoreML) | 82M | INT8 (ember 1) | ~ 89 MB |
| Qwen3.5-Chat 0.8B (MLX) | - 800M | INT4 | 418 MB |
| Qwen3.5-Chat 0.8B (CoreML) | - 800M | INT8 | 981 MB |
| PersonaPlex 7B (MLX) | ~ 7B | 4 bit / 8-bit | 4.9 GB / 9.1 GB |
| VoiceChat 11B (MLX) | ~ 11B | INT5 / INT8 | 8.56 GB / 12.11 GB |
| Pyannote VAD (MLX) | ~ 1.49M | float32 | - 5.7 MB |
| Silero VAD v5 | ~ 309K | float32 | ~ 1.2 MB (MLX & CoreML) |
| p99 turn-1-mini | 5.3M | Float32 | 22 MB (CoreML) |
| VAP (otoSpeech) | 5.8M | Float32 | 39 MB (CoreML) / 40 MB (ONNX) |
| WeSpeaker ResNet34 | - 6.6M | float32 | ~ 25 MB (MLX & CoreML) |
| SpeechBrain ECAPA VoxLingua107 | 21.25M | FP16 | ~40.6 MiB (MLX) / ~40.8 MiB (CoreML) |
| ReDimNet2-B6 | 12,3M | float16 | ~ 25 MiB (CoreML) |
| Pyannote Community-1 (CoreML) | 8.35M | float32 + native VBx | ~ 32 MB |
| Nemotron 3 Diarisasi (CoreML / MLX) | 100M | INT8 | ~ 100 MB per backend |
| Sortmer (CoreML) | — | float16 | ~ 50 MB |
| DeepFilterNet3 (CoreML) | ~ 2.1M | FP16 | ~ 4.2 MB |
| LocalVQE v1.4-AEC (CoreML + C++) | 200K + 2.742 | FP16 + FP32 | ~ 732 KB |
MLX inisialisasi model
QuantizedLinear.preQuantized membuat placeholder nol untuk lapisan linear terkuantisasi yang dimuat dari checkpoint, sehingga menghindari bobot acak dan grafik kuantisasi sementaranya. withThrowawayRandomState mencegah inisialisasi floating-point yang dibuang memengaruhi rantai kunci acak pemanggil. Loader gabungan menerapkan cakupan ini pada setiap komponen: T5 dan EnCodec pada MAGNeT, T5Gemma dan SAME-L pada Stable Audio 3, serta codec Mimi pada CSM. Embedding terkuantisasi CSM masih menggunakan penginisialisasi upstream dan tetap memiliki keterbatasan grafik inisialisasinya yang telah diketahui.
Optimasi Performance
- Kompilasi MLX — Qwen3-TTS kompilasi Talker atas yang tumbuh valid- prefix cache dan kompilasi tetap 15-group Kode Predictor frame sebagai satu grafik untuk single- item sintesis.
- Metal pustaka shader - Pre- dikompile metalib avoids ~ 5x JIT kompilasi overhead.
scripts/build_mlx_metallib.sh. - Decode codec yang tersetem — TTS proses proses decoder pidato dalam 25-frame potongan dengan 10-frame konteks overlap untuk dihindari GPU istirahat.
- Batch- double CFG - CosyVoice3 DiT mengalir separuh dari aliran yang cocok melewati dengan menempel kondisional + tanpa syarat bersama-sama.
- Fused RoPE - Uses
MLXNN.RoPEdidukung oleh kernel Metal bukan rotasi manual. - Fusi BN - WeSpeaker batch normalisasi menyatu ke berat Conv2d pada konversi waktu.
Proses Audio
Semua audio I / O menggunakan Float32 PCM. Internal resampling menangani konversi format:
| Model | Diduga Laju | Format |
|---|---|---|
| Qwen3-ASR | 16 kHz | Mono Float32 |
| Cohere Translate 2B | 16 kHz | Mono Float32 |
| Voxtral Mini 3B | 16 kHz | Mono Float32 |
| Qwen3-TTS | Keluaran 24 kHz | Mono Float32 |
| CosyVoice3 | Keluaran 24 kHz | Mono Float32 |
| Kokoro-82M | Keluaran 24 kHz | Mono Float32 |
| PersonaPlex | 24 kHz I / O | Mono Float32 |
| Pyannote VAD | 16 kHz | Mono Float32 |
| Silero VAD | 16 kHz | Mono Float32 |
| WeSpeaker | 16 kHz | Mono Float32 |
| LID ECAPA SpeechBrain | 16 kHz | Mono Float32 |
| ReDimNet2-B6 | 16 kHz | Mono Float32 |
| DeepFilterNet3 | 48 kHz | Mono Float32 |
Struktur Sumber
Sources/
AudioCommon/ Shared protocols, audio I/O, system-output capture
(SystemAudioTap), HuggingFace downloader,
SentencePieceModel (protobuf reader)
MLXCommon/ MLX utilities: weight loading, QuantizedLinear helpers,
SDPA multi-head attention helper, metal budget
Qwen3Common/ Shared model components (KV cache, RoPE, quantization)
Qwen3ASR/ Qwen3-ASR speech-to-text
ParakeetASR/ Parakeet TDT speech-to-text (CoreML)
ParakeetStreamingASR/ Parakeet EOU 120M streaming dictation (CoreML)
OmnilingualASR/ Meta wav2vec2 + CTC, 1,672 languages
(CoreML 300M + MLX 300M / 1B / 3B / 7B)
CohereTranscribeASR/ Cohere Transcribe 2B speech-to-text (MLX)
VoxtralASR/ Voxtral Mini 3B speech-to-text (MLX)
Qwen3TTS/ Qwen3-TTS text-to-speech
FireRedTTS3TTS/ FireRedTTS3-Instruct (MLX, Float32)
MossVoiceGeneratorTTS/ MOSS-VoiceGenerator (MLX, BF16 + FP32)
CosyVoiceTTS/ CosyVoice3 text-to-speech
KokoroTTS/ Kokoro-82M text-to-speech (CoreML)
Qwen3Chat/ Qwen3.5-0.8B on-device LLM chat (MLX + CoreML)
PersonaPlex/ PersonaPlex speech-to-speech
SpeechVAD/ VAD (Silero + Pyannote), diarization, speaker embeddings
SpeechLanguageID/ Spoken language identification (SpeechBrain ECAPA, MLX + CoreML, 107 labels)
SpeechEnhancement/ DeepFilterNet3 noise suppression (CoreML)
SourceSeparation/ Open-Unmix HQ / UMX-L + HTDemucs (Demucs v4) music source separation (MLX, 4 stems)
MAGNeTMusicGen/ MAGNeT text-to-music generation (MLX, 30 s @ 32 kHz, INT4/INT8)
VoxCPM2TTS/ VoxCPM2 text-to-speech (MLX, 48 kHz, voice cloning + voice design)
IndexTTS2TTS/ IndexTTS2 voice cloning (MLX, semantic GPT + emotion/tempo/pause control + S2Mel + BigVGAN)
VibeVoiceTTS/ VibeVoice long-form / multi-speaker TTS (MLX, EN/ZH)
MagpieTTS/ NVIDIA Magpie-TTS Multilingual 357M (MLX INT4/INT8,
9 languages, 5 baked speakers, streaming)
MagpieTTSCoreML/ Magpie CoreML backend (4 .mlmodelc + Swift-side
FSQ inverse; 8 languages, batch-only; hybrid
with MagpieTTS for LocalTransformer + audio
embeddings)
MADLADTranslation/ MADLAD-400 many-to-many translation (MLX, 400+ languages)
GLiNER/ GLiNER2.5-Decide classification + entity spans (MLX, INT8/FP16/FP32)
AudioCLILib/ CLI command implementations
AudioCLI/ CLI entry point
scripts/ Model conversion (PyTorch → MLX/CoreML), benchmarking
Tests/ Unit and integration tests
Examples/ Demo apps (PersonaPlexDemo, SpeechDemo)GLiNER2.5-Decide: native MLX klasifikasi dan bentangan entitas (INT8, FP16 atau FP32 bobot); tidak Python pada waktu inferensi.
Bersihkan -flash: pratinjau pengembangan dari keputusan teks lokal (9B, affine 4-bit MLX), dengan kepala skema gabungan dan penggelapan terpisah sebelumnya.
MOSS- TTS- Nano
Sintesis suara dan suara berklon dengan CoreML, audio stereo 48 dan chunks 80 ms.
MossTTSNanoModel serializes permintaan dan menciptakan segar CoreML keadaan untuk setiap tingkat. mensintesis dan synthesizeStream melestarikan stereo; SpeechGenerationModel mengembalikan sebuah downmix mono. Pass bahasa: nil. Streams berakhir dengan penanda akhir kosong.
macOS 15+ / iOS 18+; empat grafik yang dikompile total 367.6 MB. Prompt, referensi dan diminta berbagi frame 1,024-row konteks. Kegagalan waktu-jalan overflow dan menimbulkan kesalahan jika maxFrames dicapai sebelum akhir natural -of- pidato. CPU adalah perizinan baku; gpu CPU+GPU Eksekusi. PCG64 sampling menggunakan NumPy-compatible seeds; backend numerik difference masih dapat mengubah keluaran.
Inferensi lokal lokal
Direktori agentDirektori opsional memuat suatu ter-stage Gemma 4 12B Disatukan INT4 model teks di samping E4B Gunakan model: "gemma4-12b-it"untuk chatting dengan alat-alat asli, hasil sejarah, dan pembatalan. E4B tetap tersedia untuk permintaan lain. Gemma4UnifiedChat gunakan jepped MLX implementasi teks dan rilis setiap cache KV permintaan. Menanggapi parsing penghapus saluran dari teks kembali. Orfaned tool- call terminator ditolak sebagai respon salah bentuk.
Layanan asli serialisasi percakapan, sintesis, dan transkripsi; ringan VAD memiliki keadaan aliran terpisah. Gemma prefill menggunakan 256-token batch, permintaan keadaan KV dirilis, dan MLX cache dicapped di 128 MiB dengan 20 Batas allocator GiB.
Pemilik model opsional
SpeechRuntime menyediakan muatan bersama, penerimaan FIFO yang dapat dibatalkan dan eksekusi serialisasi. Qwen3ASRRuntime memilih MLX atau penuh CoreML melalui deskriptor eksplisit; bendera APIs dan CLI asli masih tersedia.
Server audio memiliki satu ijin eksekusi melalui setiap permintaan lengkap, termasuk keluaran streaming, dengan hingga 32 permintaan menunggu. ASR gagal menghasilkan kesalahan HTTP atau WebSocket kesalahan terjadi; transkrip kosong tetap sukses. Pemutaran mempertahankan sampel overflow. Model cache dan audio putar menunggu masih menempati memori.
Voxtral TTS
Voxtral 4B TTS 2603 berjalan lokal pada Apple Silicon melalui modul Voxtral TTS: 20 preset suara, sembilan bahasa, dan 24 KHz mono speech.
VoxtralTTS → 26-layer LM → 3-layer acoustic transformer → 24 kHz PCMHanya preset suara; reference-audio cloning tidak tersedia. Keluaran stream audio melalui SDK, CLI, WebSocket dan HTTP PCM. Pasokan teks masukan lengkap di depan. Model bobot menggunakan CC BY- NC 4.0.
Fish Audio Drama 3
Support asli MLX untuk Drama 3 tersedia melalui FishAudioDrama3ModelA 35B hibrid- perhatian tulang punggung MoE, menara audio temporal dan produksi codec Fish DAC 44.1 KHz mono audio. 4-bit titik pemeriksaan melewati bentuk gelombang dan independen ASR cek untuk teks- hanya generasi, referensi kloning dan CLI keluaran di Apple M5 Pro. 8-bit dan BF16 tetap tak validasi.
Baku balanced mode trims idle MLX buffer di atas 512 MiB pada batas tahap. Topan singgahan model seumur hidup juga berlaku, menjaga anggaran penelepon bawah; tidak ada batas kontrol memori proses total. --fish-drama3-memory-mode unrestricted atau memoryOptions: .unrestricted beban beban penuh semangat dan melompat tahap pemangkasan, sementara mempertahankan topi seumur hidup.
Teks - hanya generasi desers 794.4 MiB referensi beban encoder. Referensi pertama pengkodean beban dan mempertahankan mereka, jadi keep codec.safetensors tersedia sampai saat itu. Kode referensi yang telah dihitung sebelumnya tidak perlu penyandi.
FishAudioTTS: FishAudioDrama3Model · backbone.model.* · semantic_head.* · tower.* · codec.safetensors
Dibangun dengan Fish Audio Bundles mempertahankan Lisensi komunitas dan NOTICE.
Streaming PCM tersedia melalui generateStreaming, generateStream dan --stream. Potongan bawaan berisi 3 bingkai codec, tentang 139 ms dari audio. Teks panjang otomatis chunking dan teks streaming masukan tetap tidak tersedia.
Setiap buku kode menara menggunakan nilai token 4.096. Buku-buku teks sampah ikan DAC yang diurutkan kembali ke kode-kode residual pada codec dengan 1.024 yang terdapat. Buku kode dikembalikan mempertahankan nilai-nilai menara asli.
Dimensi rotary tidak valid ditolak sebelum loading model bobot.