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.

Attuazione (PR #541): main

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).

BreezeTTS · CLI · Swift API

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).

Utilizzo Swift e CLI

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

IndietroHardwareModelli
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.

ModelloParamsQuantificazioneDimensione su disco
Qwen3-ASR 0.6B ( MLX)- 600.4-bit / 8 bit680 MB / 1.0 GB
Qwen3-ASR 0.6B ( CoreML)~186M (encoder)INT8~ 180 MB
Qwen3-ASR 1.7B ( MLX)- 1.7B4-bit / 8 bit2.1 GB / 3.2 GB
Parakeet-TDT 0.6B ( CoreML)- 600.INT8500 MB
Whisper Turbo Large-v3 (CoreML)809MFP161.6 GB
MOSS Transcribe Diarize 0.9B ( MLX)908.5MFP16 audio + INT5 / INT8987.0 MiB / 1.200.1 MiB
MOSS Transcribe Diarize 0.9B ( CoreML- 900.FP16 / INT8 block-321.7 GB / 1.2 GB
Parakeet-EOU 120M ( CoreML)- 120.INT8~ 120 MB
Omnilingual-ASR-CTC 300M (CoreML)326MINT8312 MB
Omnilingual-ASR-CTC 300M (MLX)326M4-bit / 8 bit193 MB / 342 MB
Omnilingual-ASR-CTC 1B (MLX)1.01B4-bit / 8 bit549 MB / 1006 MB
Omnilingual-ASR-CTC 3B (MLX)- 3B4-bit / 8 bit1.71 GB / 3.16 GB
Omnilingual-ASR-CTC 7B (MLX)- 7B4-bit / 8 bit3.55 GB / 6.63 GB
Cohere Trascrivi 2B ( MLX)2.FP16 / INT5 / INT83.85 / 1.62 / 2.25 GiB
Voxtral Mini 3B 2507 ( MLX)3BFP16 / INT5 / INT88.71 / 3.77 / 5.18 GiB
Qwen3-ForcedAligner 0.6B ( MLX)- 600.4-bit / 8 bit979 MB / 1.4 GB
Qwen3-ForcedAligner 0.6B (CoreML)- 600.INT4 / INT8630 MB / 1.0 GB
Qwen3-TTS 0.6B ( MLX)- 600.4-bit / 8 bit1.7 GB / 2.4 GB
Qwen3-TTS 1.7B ( MLX)- 1.7B4-bit / 8 bit3.2 GB / 4,8 GB
CosyVoice3 0.5B ( MLX)- 500 milioni.4-bit LLM~ 1,2 GB
IndexTTS2 bundle espanso ( MLX)Classe 1.5BFP16 + modelli ausiliari~ 4,8 GB
Kokoro-82M ( CoreML)82MINT8 (1 secchio)~ 89 MB
Qwen3.5-Chat 0.8B ( MLX)- 800.INT4418 MB
Qwen3.5-Chat 0.8B ( CoreML)- 800.INT8981 MB
PersonaPlex 7B ( MLX)- 7B4-bit / 8 bit4.9 GB / 9,1 GB
VoiceChat 11B ( MLX)- 11BINT5 / INT88.56 GB / 12.11 GB
Pyannote VAD (MLX)~1.49float325,7 MB
Silero VAD v5- 309Kfloat32~1.2 MB ( MLX & CoreML)
p99 turn-1-mini5.3MFloat3222 MB ( CoreML)
VAP (otoSpeech)5.8MFloat3239 MB (B)CoreML) / 40 MB (B)ONNX)
WeSpeaker ResNet34- 6.6Mfloat32~25 MB ( MLX & CoreML)
SpesechBrain ECAPA VoxLingua10721.25MFP16~40.6 MiB (in inglese)MLX) / ~40.8 MiB (in inglese)CoreML)
ReDimNet2-B612.3Mfloat16~25 MiB ( CoreML)
Pyannote Community-1 ( CoreML)8.35Mfloat32 + nativo VBx~ 32 MB
Diarizzazione Nemotron 3 (CoreML / MLX)100 MINT8~100 MB per backend
Ordinatore ( CoreML)—float16~ 50 MB
DeepFilterNet3 (CoreML)- 2,1FP16~4.2 MB
LocalVQE v1.4-AEC ( CoreML + C++)200K + 2,742FP16 + 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

Lavorazione audio

Tutti gli audio I/O utilizzano Float32 PCM. Conversione interna delle maniglie di risampling:

ModelloTasso previstoFormato
Qwen3-ASR16 kHzMono Float32
Cohere Transcribe 2B16 kHzMono Float32
Voxtral Mini 3B16 kHzMono Float32
Qwen3-TTSUscita 24 kHzMono Float32
CosyVoice3Uscita 24 kHzMono Float32
Kokoro-82MUscita 24 kHzMono Float32
PersonaPlex24 kHz I/OMono Float32
Pyannote VAD16 kHzMono Float32
Silero VAD16 kHzMono Float32
WeSpeaker16 kHzMono Float32
SpeechBrain ECAPA LID16 kHzMono Float32
ReDimNet2-B616 kHzMono Float32
DeepFilterNet348 kHzMono 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.

MOSS-TTS-Nano

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.

Dettagli API

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 PCM

Solo 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.

Leggi la guida Voxtral TTS

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.

4-bit benchmark

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.