Traduzione automatica · Originale inglese
Architettura
Istruzioni native TTS
Costruisci il supporto nativo SDK dalla fonte principale. Homebrew e altre versioni CLI precostruite potrebbero non includere ancora questi motori.
Pubblicato MLX fasci: aufklarer/FireRedTTS3-Instruct-MLX-fp32 · aufklarer/MOSS-VoiceGenerator-MLX-bf16
FireRedTTS3-Instruct — FireRedTTS3TTS: FireRedTTS3-Instruct mantiene il modello Float32 e i pesi decoder. restituisce l'audio bufferizzato: omit --stream. Gli alias --language sono accettati. Un limite di generazione solleva un errore invece di restituire il successo troncato.
MOSS-VoiceGenerator — MossVoiceGeneratorTTS: MOSS-VoceGenerator mantiene BF16 pesi linguistici e codifica di sintesi FP32. Utilizzare --stream per PCM incrementale. Omit --language e mettere requisiti di lingua sedici in --instruct all code.
Ogni campo di testo e istruzioni è limitato a 32.768 byte UTF-8. Il prompt completo di ingresso reso, compreso il suo modello, deve essere inserito entro 4.096 token.
Le misure a breve termine descrivono la configurazione testata; la certificazione di latenza esistente rimane inconcludente.
Breeze TTS 2 · Breeze TTS
Inglese/cinese TTS con design vocale, clonazione di riferimento e direzione, e audio streamed (MLX BF16/8-bit, 24 kHz; ricerca/ licenza non commerciale).
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
Tempo di esecuzione nativo di Apple · PocketTTS
PocketTTS aggiunge la sintesi vocale nativo CoreML a speech-swift. Tutte le fasi di default all'esecuzione della CPU. I flussi preimpostati di Alba inglese 1,920-sample frame a 24 kHz (80 ms per frame).
speech-swift è organizzato come modulare Swift pacchetto con protocolli condivisi, moduli di modello indipendenti, e un CLI unificato. MLX (Metal GPU) o CoreML (Neural Engine).
Grafico della dipendenza del modulo
┌──────────┐
│ 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
I runtime del modello MLX condividono un tappo predefinito di buffer riutilizzabili min(2 GiB, physical RAM / 4) dal carico di peso attraverso la durata del modello. MLX.Memory.cacheLimit = 0, e i budget specifici per i modelli esistenti sono conservati. Il tappo limita i buffer di idle; pesi attivi, cache KV e memoria di processo totale può superarlo. MLX trims sull'allocazione, in modo che l'ultimo buffer libero può temporaneamente mettere la cache sopra il suo budget fino alla successiva allocazione.
unload() rilascia la registrazione del modello; i tempi di esecuzione senza che il metodo lo rilascia sulla distruzione. L’ultimo proprietario ripristina il budget del chiamante, mentre i precedenti scarichi conservano i restanti soffitti dei modelli. MLX registrazioni.
MOSS Trascrive Diarize
MossTranscribe restituisce segmenti timestamp attributi dai diffusori attraverso due backend nativi. CoreML utilizza un fisso 1,024-token MLState per brevi registrazioni. MLX utilizza una crescita dinamica 131,072- contesto, affine INT5/INT8 pesi decoder, e facoltativo FP16/INT8 Le cache KV per la trascrizione a lungo termine globalmente contestualizzata, sono entrambe runtime offline, autoregressive, piuttosto che modelli di streaming.
VoiceChat 11
Task e riferimento: duplex speech-to-speech; SALM-Duplex: Efficiente e diretto Duplex Modeling for Speech-to-Speech Language Model (Interspeeč 2025), citato da NVIDIA la scheda upstream VoiceChat
Tempo pieno, M5 Pro 48 GB, Rilasciare, 80 ms cadenza live: Testa protetta INT5 picco RSS è circa 8.69 GB; tre linee intere controllate RTF risultati 0.96, 0.96e 0.99. Ottimizzato INT8 le prestazioni non sono ancora state rassicurate.
VoiceChat implementa il nativo completo MLX percorso audio-audio: la percezione causale FastConformer, i canali di testo/funzione duplex Nemotron-H, il decoder EAR-TTS con otto iterazioni MaskGIT, e un decodificatore EAR-TS 22.05 kHz neural codec. Streaming mantiene limitato l'attenzione per strato e le cache causali-convolution, mentre la finestra live codec a otto frame costante utilizza un grafico compilato. 80 ms input frame produce una decisione di lingua, 31 Codici RVQ, e esattamente 1,764 campioni di uscita. Il caricatore richiede un completo encoder/ + llm/ + tts/ INT5 supporta ora l'aggregato RTF sotto 1 sul collaudato M5 Pro, anche se per-frame p95 headroom rimane stretto.
Inferenza backends
| Indietro | Hardware | Modelli |
|---|---|---|
| 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 Trascrizione 2B, Voxtral Mini Mini 3B, MOSS Trascrivi Diarize, Pyannote, Silero VAD, WeSpeaker, SpeechBrain ECAPA LID, Nemotron 3 Diarizzazione, FireRedTTS3-Instruct, MOSS-VoiceGenerator |
| CoreML | CPU / GPU/Neural Engine (ANE) | Qwen3-ASR encoder (ibrido), Parakeet TDT, Parakeet EOU streaming, Omnilingual ASR 300M. Kokoro-82M, Qwen3.5-Chat (opzionale), diarizzazione Sortformer, DeepFilterNet3, Silero VAD (facoltativo), WeSpeaker (facoltativo), MOSS Trascrivi Diarize, SpeechBrain ECAPA LID, Nemotron 3 Diarizzazione |
| Accelerare | CPU (SIMD) | Preelaborazione audio (STFT, mel, FFT), elaborazione del segnale |
Formato del peso del modello
I modelli MLX utilizzano safetensors formato con 4-bit o 8-bit quantization (dimensione gruppo) 64). CoreML modelli uso .mlmodelc Formato compilato. Conversion scripts in scripts/ convertire da PyTorch checkpoints.
Cohere e Voxtral anche l'uso MLX fischio INT5 fasci. MLX non supporta l'affezione INT7; INT8 è l'opzione di qualità superiore supportata.
| Modello | Params | Quantificazione | Dimensione su disco |
|---|---|---|---|
| Qwen3-ASR 0.6B ( MLX) | - 600. | 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) | - 600. | INT8 | 500 MB |
| Whisper Turbo Large-v3 (CoreML) | 809M | FP16 | 1.6 GB |
| MOSS Transcribe Diarize 0.9B ( MLX) | 908.5M | FP16 audio + INT5 / INT8 | 987.0 MiB / 1.200.1 MiB |
| MOSS Transcribe Diarize 0.9B ( CoreML | - 900. | FP16 / INT8 block-32 | 1.7 GB / 1.2 GB |
| Parakeet-EOU 120M ( CoreML) | - 120. | 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 Trascrivi 2B ( MLX) | 2. | 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) | - 600. | 4-bit / 8 bit | 979 MB / 1.4 GB |
| Qwen3-ForcedAligner 0.6B (CoreML) | - 600. | INT4 / INT8 | 630 MB / 1.0 GB |
| Qwen3-TTS 0.6B ( MLX) | - 600. | 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) | - 500 milioni. | 4-bit LLM | ~ 1,2 GB |
| IndexTTS2 bundle espanso ( MLX) | Classe 1.5B | FP16 + modelli ausiliari | ~ 4,8 GB |
| Kokoro-82M ( CoreML) | 82M | INT8 (1 secchio) | ~ 89 MB |
| Qwen3.5-Chat 0.8B ( MLX) | - 800. | INT4 | 418 MB |
| Qwen3.5-Chat 0.8B ( CoreML) | - 800. | 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.49 | 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 (B)CoreML) / 40 MB (B)ONNX) |
| WeSpeaker ResNet34 | - 6.6M | float32 | ~25 MB ( MLX & CoreML) |
| SpesechBrain ECAPA VoxLingua107 | 21.25M | FP16 | ~40.6 MiB (in inglese)MLX) / ~40.8 MiB (in inglese)CoreML) |
| ReDimNet2-B6 | 12.3M | float16 | ~25 MiB ( CoreML) |
| Pyannote Community-1 ( CoreML) | 8.35M | float32 + nativo VBx | ~ 32 MB |
| Diarizzazione Nemotron 3 (CoreML / MLX) | 100 M | INT8 | ~100 MB per backend |
| Ordinatore ( CoreML) | — | float16 | ~ 50 MB |
| DeepFilterNet3 (CoreML) | - 2,1 | FP16 | ~4.2 MB |
| LocalVQE v1.4-AEC ( CoreML + C++) | 200K + 2,742 | FP16 + FP32 | ~732 KB |
MLX inizializzazione del modello
QuantizedLinear.preQuantized crea segnaposto a zero per gli strati lineari quantizzati caricati dal checkpoint, evitando pesi casuali e grafi temporanei di quantizzazione. withThrowawayRandomState impedisce che l’inizializzazione in virgola mobile scartata influisca sulla catena di chiavi casuali del chiamante. I caricatori compositi applicano questo ambito a ogni componente: T5 ed EnCodec di MAGNeT, T5Gemma e SAME-L di Stable Audio 3 e il codec Mimi di CSM. Gli embedding quantizzati di CSM usano ancora l’inizializzatore upstream e ne conservano la nota limitazione del grafo di inizializzazione.
Ottimizzazione delle prestazioni
- MLX compilazione — Qwen3-TTS compila il Talker sulla sua cache valida-prefisso crescente e compila il frame predittore del codice fisso 15-gruppo come un grafico per la sintesi di un singolo-item.
- Metal libreria shader — Metal lo precompilato evita ~5x JIT compilazione overhead. Costruito tramite
scripts/build_mlx_metallib.sh. - Chunked codec decode — TTS decoder elabora il discorso in chunks 25-frame con sovrapposizione di contesto 10-frame per evitare GPU
- Batch-doppiato CFG — CosyVoice3 DiT ha il flusso di corrispondenti passi di batching condizionale + incondizionato insieme.
- RoPE — Utilizza
MLXNN.RoPEsupportato dal kernel Metal anziché dalla rotazione manuale. - BN fusion — WeSpeaker normalizzazione dei lotti fusa in pesi Conv2d al momento della conversione.
Lavorazione audio
Tutti gli audio I/O utilizzano Float32 PCM. Conversione interna delle maniglie di risampling:
| Modello | Tasso previsto | Formato |
|---|---|---|
| Qwen3-ASR | 16 kHz | Mono Float32 |
| Cohere Transcribe 2B | 16 kHz | Mono Float32 |
| Voxtral Mini 3B | 16 kHz | Mono Float32 |
| Qwen3-TTS | Uscita 24 kHz | Mono Float32 |
| CosyVoice3 | Uscita 24 kHz | Mono Float32 |
| Kokoro-82M | Uscita 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 |
| SpeechBrain ECAPA LID | 16 kHz | Mono Float32 |
| ReDimNet2-B6 | 16 kHz | Mono Float32 |
| DeepFilterNet3 | 48 kHz | Mono Float32 |
Struttura della fonte
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 : nativo MLX classificazione e entità spans ( INT8, FP16 o FP32 pesi); no Python in tempo di inferenza.
Clef-flash : anteprima di sviluppo delle decisioni di testo locali (9B, affine 4-bit MLX), con una testa di schema comune e una uscita-embedding separata prima.
MOSS-TTS-Nano
Streaming della sintesi vocale e clonazione vocale con CoreML, 48 kHz audio stereo e 80 ms pezzi.
MossTTSNanoModel serializza richieste e crea fresco CoreML stato per ogni pronuncia. sintetizzare e sintetizzareStream preservare stereo; SpeechGenerationModel restituisce un mono downmix. Lingua di passaggio: nil. Streams termina con un marcatore finale vuoto.
macOS 15+ / iOS 18+; quattro grafici compilati totali 367.6 MB. Prompt, riferimento e frame richiesti condividono una 1,024Il runtime rifiuta il troppopieno e solleva un errore se maxFrames viene raggiunto prima dell'estremo naturale del picco. CPU è il default; gpu permessi CPU+GPU esecuzione. PCG64 campionamento utilizza semi compatibili con NumPy; differenze numeriche backend possono ancora cambiare l'output.
Inferenza locale
Agenti opzionali La direzione carica un Gemma 4 12B Unificata INT4 modello di testo insieme E4B. Modello d'uso: "gemma4-12b-it" per chattare con strumenti nativi, storia dei risultati e cancellazione. E4B rimane disponibile per altre richieste. Gemma4UnifiedChat utilizza il pinned MLX L'implementazione del testo e rilascia la cache KV di ogni richiesta. La parsing di risposta rimuove i delimitatori del canale dal testo restituito. I terminatori di chiamata degli strumenti orfani vengono rifiutati come risposte malformate.
Il servizio nativo serializza la chat, la sintesi e la trascrizione; leggero VAD ha uno stato di flusso separato. Gemma prefill utilizza batch a 256-token, viene rilasciato lo stato KV richiesta, e la cache MLX è bloccata a 128 MiB con un limite di allocatore da 20 GiB.
Proprietà del modello opzionale
SpeechRuntime fornisce il caricamento condiviso, l'ammissione FIFO cancellabile e l'esecuzione serializzata. Qwen3ASRRuntime seleziona MLX o CoreML completo attraverso descrittori espliciti; le API native e le bandiere CLI rimangono disponibili.
Il server audio contiene un permesso di esecuzione per ogni richiesta completa, inclusa l'uscita in streaming, con fino a 32 richieste di attesa. ASR guasti producono errori HTTP o WebSocket
Voxtral TTS
Voxtral 4B TTS 2603 funziona localmente su Apple Silicon attraverso il modulo VoxtraLTTS: 20 voci predefinite, nove lingue e 24 kHz monolingua.
VoxtralTTS → 26-layer LM → 3-layer acoustic transformer → 24 kHz PCMSolo le voci preimpostate; la clonazione audio di riferimento non è disponibile. I flussi di output audio attraverso il SDK, CLI, WebSocket e HTTP PCM. Fornire il testo di input completo sul fronte. I pesi del modello utilizzano CC BY-NC 4.0.
Fish Audio Dramma 3
Il supporto sperimentale MLX nativo per Drama 3 è disponibile attraverso FishAudioDrama3Model. 35B ibrido-attenzione MoE backbone, torre audio temporale e Fish DAC codec produrre 44.1 kHz mono audio. 4-bit checkpoint superato forma d'onda e indipendente ASR controlli per generazione, clonazione di riferimento e uscita CLI su Apple M5 Pro. 8-bit e BF16 rimane invariato.
Il valore predefinito balanced la modalità regola idle MLX buffers sopra 512 MiB ai confini della fase. Il modello condiviso-vita di cache cap si applica anche, mantenendo i budget più bassi del caller; né limita il controllo della memoria di processo totale. --fish-drama3-memory-mode unrestricted o memoryOptions: .unrestricted carica i pesi con ansia e salta la fase di rifilatura, mantenendo il tappo di vita.
Sfiori di generazione di testo 794.4 MiB di pesi di codifica di riferimento. Il primo riferimento codifica carichi e li mantiene, quindi mantenere codec.safetensors disponibili fino ad allora. I codici di riferimento precomputati non hanno bisogno dell'encoder.
FishAudioTTS: FishAudioDrama3Model · backbone.model.* · semantic_head.* · tower.* · codec.safetensors
Costruito con Fish Audio. Bundles conservano la Licenza Comunitaria e AVVISO.
Lo streaming PCM è disponibile tramite generateStreaming, generateStream e --stream. Il blocco predefinito contiene cornici codec 3, circa ms 139 dell'audio.
Ogni codice della torre utilizza 4.096 valori di token. Buffered e lo streaming Fish DAC decodifica entrambi i codici residui di morsetto ai codec residui 1,024-entry.
Le dimensioni rotative non valide vengono respinte prima di caricare i pesi del modello.