Mimari
Yerel talimatlı TTS
Yerel SDK desteğini main kaynak kodundan derleyin. Homebrew ve diğer hazır CLI sürümleri bu motorları henüz içermeyebilir.
Yayımlanmış MLX paketleri: aufklarer/FireRedTTS3-Instruct-MLX-fp32 · aufklarer/MOSS-VoiceGenerator-MLX-bf16
FireRedTTS3-Instruct — FireRedTTS3TTS: FireRedTTS3-Instruct model ve çözücü ağırlıklarını Float32 olarak korur. Sesi tamamen tamponlanmış döndürür: --stream kullanmayın. --language İngilizce ve Çince adlarını kabul eder. Üretim sınırına ulaşmak kesilmiş başarı yerine hata verir.
MOSS-VoiceGenerator — MossVoiceGeneratorTTS: MOSS-VoiceGenerator BF16 dil ağırlıklarını ve FP32 sentez kodeğini korur. Artımlı PCM için --stream kullanın. --language seçeneğini atlayıp dil gereksinimini --instruct içine yazın. Bitişte on altı kod kitabının tamamı boşaltılır.
Metin ve talimat alanlarının her biri 32.768 UTF-8 baytla sınırlıdır. Şablon dahil oluşturulmuş giriş isteminin tamamı 4.096 token içine sığmalıdır. Herhangi bir sınırı aşan girişler reddedilir.
Talimat izleme kalitesi henüz puanlanmadı. Kısa metin ölçümleri test edilen kurulumu gösterir; mevcut modellerin gecikme regresyonu doğrulaması sonuçsuzdur.
Breeze TTS 2 · BreezeTTS
İngilizce ve Çince TTS; ses tasarımı, referans ses klonlama ve yönlendirme, ses akışı (MLX BF16/8-bit, 24 kHz; araştırma ve ticari olmayan kullanım lisansı).
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
Apple için yerel çalışma zamanı · PocketTTS
PocketTTS, speech-swift'e yerel CoreML konuşma sentezi ekler. Tüm aşamalar varsayılan olarak yalnızca CPU kullanır. İngilizce Alba sesi 24 kHz'de 1.920 örneklik kareler, yani kare başına 80 ms ses aktarır.
speech-swift, ortak protokoller, bağımsız model modülleri ve birleşik bir CLI ile modüler bir Swift paketi olarak düzenlenmiştir. Tüm çıkarım MLX (Metal GPU) veya CoreML (Neural Engine) kullanılarak cihaz üstünde çalışır.
Modül bağımlılık grafiği
┌──────────┐
│ AudioCLI │ (giriş noktası)
└────┬─────┘
│
┌──────┴──────┐
│ AudioCLILib │ (komutlar)
└──────┬──────┘
│
┌─────────┬───────┼───────┬──────────┬──────────────┐
│ │ │ │ │ │
┌────┴───┐ ┌──┴──┐ ┌──┴──┐ ┌─┴────┐ ┌───┴────┐ ┌──────┴───────┐
│Qwen3ASR│ │Qwen3│ │Cosy │ │Perso-│ │Speech- │ │ Speech- │
│Parakeet│ │ TTS │ │Voice│ │naPlex│ │ VAD │ │Enhancement │
└────┬───┘ └──┬──┘ └──┬──┘ └──┬───┘ └───┬───┘ └──────┬───────┘
│ │ │ │ │ │
└────────┴───────┼───────┴─────────┘ │
│ │
┌──────┴──────┐ │
│ Qwen3Common │ (paylaşılan katmanlar)│
└──────┬──────┘ │
│ │
┌──────┴──────┐ │
│ AudioCommon │ ◄──────────────────────┘
└─────────────┘ (protokoller, ses G/Ç)MLX arabellek önbelleği bütçesi
MLX modelleri, ağırlıkların yüklenmesinden model ömrünün sonuna kadar yeniden kullanılabilir arabellekler için min(2 GiB, physical RAM / 4) varsayılan sınırını paylaşır. MLX.Memory.cacheLimit = 0 dahil çağıranın daha düşük bütçeleri ve mevcut modele özgü bütçeler korunur. Sınır boşta duran arabellekler içindir; etkin ağırlıklar, KV önbellekleri ve toplam işlem belleği bu sınırı aşabilir. MLX önbelleği bellek ayırırken temizler; bu nedenle son serbest bırakılan arabellek bir sonraki ayırmaya kadar önbelleği geçici olarak bütçenin üzerine çıkarabilir.
unload() modelin kaydını serbest bırakır; bu yöntemi olmayan modeller kaydı nesne yok edildiğinde bırakır. Son sahip çağıranın bütçesini geri yükler; önceki boşaltmalar kalan modellerin sınırlarını korur. Yalnızca CoreML kullanan yollar MLX bütçesi kaydetmez.
MOSS Transcribe Diarize
MossTranscribe, yerel CoreML ve MLX backendleriyle konuşmacı etiketli zaman damgası bölümleri döndürür. CoreML kısa kayıtlar için sabit 1.024-token durum kullanır. MLX dinamik 131.072-token bağlam, affine INT5/INT8 decoder ağırlıkları ve isteğe bağlı FP16/INT8 KV önbellekleri kullanır. İkisi de streaming değil, çevrimdışı otoregresif runtimelardır.
VoiceChat 11B
Görev ve referans: duplex speech-to-speech; SALM-Duplex: Efficient and Direct Duplex Modeling for Speech-to-Speech Language Model (Interspeech 2025), NVIDIA'nın upstream VoiceChat model kartında atıf yapılır.
Tam runtime, M5 Pro 48 GB, Release, 80 ms canlı ritim: korumalı head INT5 tepe RSS'si yaklaşık 8.69 GB'dir; üç kontrollü tüm-pipeline RTF sonucu 0.96, 0.96 ve 0.99'dur. Optimize INT8 performansı henüz yeniden ölçülmedi.
VoiceChat eksiksiz native MLX sesten-sese yolunu uygular: nedensel FastConformer algı, Nemotron-H duplex metin/işlev kanalları, sekiz MaskGIT iterasyonlu bağımsız metin koşullu EAR-TTS decoder ve 22,05 kHz nöral codec. Streaming, katman başına sınırlı attention ve nedensel convolution cache'lerini tutarken kararlı sekiz-frame canlı codec penceresi derlenmiş graph kullanır. Her 80 ms giriş frame'i bir dil kararı, 31 RVQ kodu ve tam 1.764 çıkış örneği üretir. Loader eksiksiz encoder/ + llm/ + tts/ bundle ister ve eski yalnızca-anlama export'larını reddeder. INT5 artık test edilen M5 Pro'da ortalama RTF'yi 1'in altında tutar, ancak frame başına p95 payı hâlâ dardır.
Çıkarım backend'leri
| Backend | Donanım | Modeller |
|---|---|---|
| MLX | Metal GPU | Qwen3-ASR, Qwen3-TTS, Breeze TTS 2, CosyVoice3, IndexTTS2, Qwen3.5-Chat, PersonaPlex, VoiceChat 11B, Omnilingual ASR (300M / 1B / 3B / 7B), Cohere Transcribe 2B, Voxtral Mini 3B, Pyannote, Silero VAD, WeSpeaker, MOSS Transcribe Diarize, SpeechBrain ECAPA LID, Nemotron 3 Diarization, FireRedTTS3-Instruct, MOSS-VoiceGenerator |
| CoreML | CPU / GPU / Neural Engine (ANE) | Qwen3-ASR encoder (hibrit), Parakeet TDT, Parakeet EOU streaming, Omnilingual ASR 300M, Kokoro-82M, Qwen3.5-Chat (isteğe bağlı), Sortformer konuşmacı ayrıştırması, DeepFilterNet3, Silero VAD (isteğe bağlı), WeSpeaker (isteğe bağlı), MOSS Transcribe Diarize, SpeechBrain ECAPA LID, Nemotron 3 Diarization |
| Accelerate | CPU (SIMD) | Ses ön işleme (STFT, mel, FFT), sinyal işleme |
Model ağırlık formatı
MLX modelleri safetensors formatını 4-bit veya 8-bit nicemleme (grup boyutu 64) ile kullanır. CoreML modelleri derlenmiş .mlmodelc formatını kullanır. scripts/ dizinindeki dönüştürme komut dosyaları PyTorch checkpoint'lerinden dönüşüm yapar.
Cohere ve Voxtral ayrıca MLX affine INT5 paketleri sunar. MLX affine INT7 desteklemez; desteklenen daha yüksek kaliteli seçenek INT8'dir.
| Model | Parametre | Nicemleme | Diskteki boyut |
|---|---|---|---|
| Qwen3-ASR 0.6B (MLX) | ~600M | 4-bit / 8-bit | 680 MB / 1.0 GB |
| Qwen3-ASR 0.6B (CoreML) | ~186M (encoder) | 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 Transcribe Diarize 0.9B (MLX) | 908.5M | FP16 audio + INT5 / INT8 decoder | 987.0 MiB / 1,200.1 MiB |
| MOSS Transcribe 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 Transcribe 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) | 1.5B-class | FP16 + auxiliary models | ~4.8 GB |
| Kokoro-82M (CoreML) | 82M | INT8 (1 bucket) | ~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 ve 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 ve 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 Diarization (CoreML / MLX) | 100M | INT8 | ~100 MB per backend |
| Sortformer (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 modellerinin başlatılması
QuantizedLinear.preQuantized, ağırlıkları kontrol noktasından yüklenen nicemlenmiş doğrusal katmanlar için sıfırlarla dolu geçici diziler oluşturur; rastgele ağırlıkların ve bunların geçici nicemleme grafiklerinin oluşturulmasını önler. withThrowawayRandomState, daha sonra atılacak kayan noktalı başlatma işlemini çağıranın rastgele anahtar zincirinden ayırır. Bileşik model yükleyicileri her bileşeni ayrı kapsamda tutar: MAGNeT için T5 ve EnCodec, Stable Audio 3 için T5Gemma ve SAME-L, CSM için Mimi kodeği. CSM’nin nicemlenmiş gömmeleri hâlâ üst kaynak başlatıcısını kullanır ve başlatma grafiğinin ömrüyle ilgili bilinen sınırlamayı korur.
Performans optimizasyonları
- MLX compile() — Otoregresif döngüler için çekirdek füzyonu. Talker
compile(shapeless: true), Code Predictor sabit önbellek boyutlarıylacompile(shapeless: false)kullanır. - Metal shader kütüphanesi — Önceden derlenmiş metallib, ~5x JIT derleme yükünden kaçınır.
scripts/build_mlx_metallib.shile derlenir. - Parçalanmış codec çözümü — TTS decoder, GPU zaman aşımını önlemek için konuşmayı 10 frame bağlam örtüşmesiyle 25 frame'lik parçalar halinde işler.
- Batch çiftli CFG — CosyVoice3 DiT, koşullu + koşulsuzu birlikte batch'leyerek flow matching geçişlerini yarıya indirir.
- Birleştirilmiş RoPE — Manuel döndürme yerine Metal çekirdeği destekli
MLXNN.RoPEkullanır. - BN füzyonu — WeSpeaker batch normalizasyonu, dönüştürme sırasında Conv2d ağırlıklarına birleştirilir.
Ses işleme
Tüm ses G/Ç'si Float32 PCM kullanır. Dahili yeniden örnekleme, format dönüşümünü ele alır:
| Model | Beklenen oran | Format |
|---|---|---|
| Qwen3-ASR | 16 kHz | Mono Float32 |
| Cohere Transcribe 2B | 16 kHz | Mono Float32 |
| Voxtral Mini 3B | 16 kHz | Mono Float32 |
| Qwen3-TTS | 24 kHz çıkış | Mono Float32 |
| CosyVoice3 | 24 kHz çıkış | Mono Float32 |
| Kokoro-82M | 24 kHz çıkış | Mono Float32 |
| PersonaPlex | 24 kHz G/Ç | Mono Float32 |
| Pyannote VAD | 16 kHz | Mono Float32 |
| Silero VAD | 16 kHz | Mono Float32 |
| WeSpeaker | 16 kHz | Mono Float32 |
| SpeechBrain ECAPA LID | 16 kHz | Mono Float32 |
| ReDimNet2-B6 | 16 kHz | Mono Float32 |
| DeepFilterNet3 | 48 kHz | Mono Float32 |
Kaynak yapısı
Sources/
AudioCommon/ Ortak protokoller, ses G/Ç, sistem çıkışı yakalama
(SystemAudioTap), HuggingFace indirici,
SentencePieceModel (protobuf okuyucu)
MLXCommon/ MLX yardımcıları: ağırlık yükleme, QuantizedLinear yardımcıları,
SDPA çok başlı dikkat yardımcısı, metal bütçesi
Qwen3Common/ Paylaşılan model bileşenleri (KV önbelleği, RoPE, nicemleme)
Qwen3ASR/ Qwen3-ASR konuşmadan metne
ParakeetASR/ Parakeet TDT konuşmadan metne (CoreML)
ParakeetStreamingASR/ Parakeet EOU 120M streaming dikte (CoreML)
OmnilingualASR/ Meta wav2vec2 + CTC, 1.672 dil
(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 metinden konuşmaya
FireRedTTS3TTS/ FireRedTTS3-Instruct (MLX, Float32)
MossVoiceGeneratorTTS/ MOSS-VoiceGenerator (MLX, BF16 + FP32)
CosyVoiceTTS/ CosyVoice3 metinden konuşmaya
KokoroTTS/ Kokoro-82M metinden konuşmaya (CoreML)
Qwen3Chat/ Qwen3.5-0.8B cihaz üstü LLM sohbet (MLX + CoreML)
PersonaPlex/ PersonaPlex konuşmadan konuşmaya
SpeechVAD/ VAD (Silero + Pyannote), konuşmacı ayrıştırma, konuşmacı gömmeleri
SpeechLanguageID/ Konuşulan dil tanımlama (SpeechBrain ECAPA, MLX + CoreML, 107 etiket)
SpeechEnhancement/ DeepFilterNet3 gürültü bastırma (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 komut uygulamaları
AudioCLI/ CLI giriş noktası
scripts/ Model dönüşümü (PyTorch → MLX/CoreML), kıyaslama
Tests/ Birim ve entegrasyon testleri
Examples/ Demo uygulamalar (PersonaPlexDemo, SpeechDemo)GLiNER2.5-Decide: yerel MLX sınıflandırma ve varlık aralıkları (INT8, FP16 veya FP32 ağırlıklar); çıkarım sırasında Python gerekmez.
⚠ Translation out of date — English guide. The new Clef section below awaits translation.
Clef-flash: development preview of local text decisions (9B, affine 4-bit MLX), with a joint schema head and a separate output-embedding prior.
MOSS-TTS-Nano
CoreML ile akışlı konuşma sentezi ve ses klonlama; 48 kHz stereo ve 80 ms parçalar.
MossTTSNanoModel istekleri sırayla yürütür ve her ifade için yeni CoreML durumu oluşturur. synthesize ve synthesizeStream stereoyu korur; SpeechGenerationModel mono karışım döndürür. language: nil geçirin. Akış boş bir son işaretle biter.
macOS 15+ / iOS 18+ gerekir; dört derlenmiş model toplam 367,6 MB. İstem, referans ve istenen kareler 1.024 satırlık bağlamı paylaşır. Taşma veya doğal bitişten önce maxFrames sınırına ulaşılması hata verir. Varsayılan CPU; gpu, CPU+GPU kullanımına izin verir. PCG64 tohumları NumPy ile uyumludur; arka uçların sayısal farkları çıktıyı değiştirebilir.
İsteğe bağlı model yönetimi
SpeechRuntime paylaşılan yükleme, iptal edilebilir FIFO kabulü ve sıralı çalıştırma sağlar. Qwen3ASRRuntime açık tanımlayıcılarla MLX veya tam CoreML seçer; yerel API ve CLI seçenekleri kullanılabilir kalır.
Sunucu akış çıktısı dahil tüm istek boyunca bir çalıştırma izni tutar ve en fazla 32 isteği bekletir. ASR hataları HTTP hataları veya WebSocket hata olayları olarak iletilir; geçerli boş dökümler başarılı kalır. Oynatma, taşan örnekleri korur. Önbellekteki modeller ve bekleyen ses verisi bellekte yer kaplamaya devam eder.
Voxtral TTS
Voxtral 4B TTS 2603, VoxtralTTS modülüyle Apple Silicon üzerinde yerel çalışır: 20 hazır ses, dokuz dil ve 24 kHz tek kanallı konuşma.
VoxtralTTS → 26-layer LM → 3-layer acoustic transformer → 24 kHz PCMYalnızca hazır sesler desteklenir; referans sesten klonlama kullanılamaz. SDK, CLI, WebSocket ve HTTP PCM, üretim sırasında ses iletir. Giriş metni başlangıçta eksiksiz verilmelidir. Model ağırlıkları CC BY-NC 4.0 lisansını kullanır.
Fish Audio Drama 3
Drama 3 için deneysel yerel MLX desteği FishAudioDrama3Model üzerinden sunulur. Karma dikkat kullanan 35 milyar parametreli MoE omurgası, zamansal ses çözücü ve Fish DAC kodeği ile 44,1 kHz mono ses üretilir. 4 bit kontrol noktası, Apple M5 Pro üzerinde metinden ses üretimi, referansla ses klonlama ve CLI çıktısı için dalga biçimi ve bağımsız ASR kontrollerini geçti. 8 bit ve BF16 çeşitleri henüz doğrulanmadı.
Varsayılan balanced modu aşama sınırlarında 512 MiB üzerindeki boşta duran MLX arabelleklerini temizler. Çağıranın daha düşük bütçesini koruyan ortak önbellek sınırı da model ömrü boyunca geçerlidir; bu kontroller toplam işlem belleğini sınırlamaz. --fish-drama3-memory-mode unrestricted veya memoryOptions: .unrestricted ağırlıkları önceden yükler ve aşama temizliğini atlar, ancak model ömrü sınırını korur.
Yalnızca metinden üretim, referans kodlayıcının 794.4 MiB ağırlığının yüklenmesini erteler. İlk referans kodlaması bunları yükleyip tutar; o zamana kadar codec.safetensors dosyasını erişilebilir bırakın. Önceden hesaplanmış referans kodları kodlayıcıya ihtiyaç duymaz.
FishAudioTTS: FishAudioDrama3Model · backbone.model.* · semantic_head.* · tower.* · codec.safetensors
Fish Audio ile geliştirilmiştir. Paketler Community License ve NOTICE dosyalarını korur.
generateStreaming, generateStream ve --stream ile PCM akışı kullanılabilir. Varsayılan parça 3 kodek karesi, yaklaşık 139 ms ses içerir. Uzun metni otomatik bölme ve akış halinde metin girişi henüz desteklenmez.
Kulenin her kod kitabı 4.096 token değeri kullanır. Hem arabellekli hem de akışlı Fish DAC çözümü, artık kodları kodeğin 1.024 girdili artık kod kitaplarının aralığıyla sınırlar. Döndürülen kod kitapları kulenin özgün değerlerini korur.
Geçersiz döner konum kodlama boyutları, model ağırlıkları yüklenmeden önce reddedilir.