Strojový překlad · Anglický originál

Architektura

Individuální instrukce TTS

Vybudovat nativní podporu SDK z hlavního zdroje. Homebrew a další předkonstruované CLI verze nemusí zahrnovat tyto motory ještě.

Implementace (PR # 541): main

Publikované balíky MLX: aufklarer/FireRedTTS3-Instruct-MLX-fp32 · aufklarer/MOSS-VoiceGenerator-MLX-bf16

FireRedTTS3-Instruct — FireRedTTS3TTS: FireRedTTS3-Instruct uchovává Float32 model a dekodérové závaží. Vrací buffered audio: omit --stream. Anglické a čínské --language aliasy jsou přijímány. Generační limit zvyšuje chybu místo návratu zkrácený úspěch.

MOSS- VoiceGeneGenerator — MossVoiceGeneratorTTS: MOSS-VoiceGeneGenerator udržuje BF16 jazykové váhy a syntetický kodek FP32. Použijte --stream pro přírůstkové PCM. Omit --language a dát jazykové požadavky v --instruct .Dokončení odčerpává všech šestnáct kódbooků.

Každé pole textu a instrukcí je omezeno na 32,768 UTF-8 bytes. Kompletní vykreslený vstupní příkaz, včetně jeho šablony, se musí vejít do žetonů 4,096. Vstupy překračující buď limit jsou zamítnuty.

Instruction- following quality is unscored. Měření skriptu popisují testované nastavení; certifikace existující modelu latence zůstává neprůkazná.

Breeze TTS 2 · Breeze TTS

Angličtina / čínština TTS s hlasovým designem, referenčním klonováním a směrem, a streamovaný zvuk (MLX BF16 / 8-bit, 24 kHz; výzkum / non-komerční licence).

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

Původní Apple runtime · PocketTTS

PocketTTS přidává nativní syntézu CoreML do speech-swift. Všechny fáze jsou výchozí pouze pro CPU- provedení. Anglické Alba preset streams 1,920-výběrové rámy na 24 kHz (80 ms na snímek).

Použití Swift a CLI

speech-swift je organizován jako modulární Swift balíček se sdílenými protokoly, nezávislými modelovými moduly a jednotným CLI. Všechny inference běží on- device pomocí MLX (Metal GPU) nebo CoreML (Neural Engine).

Graf závislostí modulu

                    ┌──────────┐
                    │ 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)

Rozpočet na uchování bufferu MLX

MLX model runtimes sdílet výchozí znovu použitelný- buffer cap min(2 GiB, physical RAM / 4) od hmotnosti zatížení v průběhu životnosti modelu. Nižší rozpočet volajícího, včetně MLX.Memory.cacheLimit = 0, a stávající modelově specifické rozpočty jsou zachovány. Limity mezních bufferů; aktivní závaží, KV cache a celková procesní paměť může překročit. MLX trims na alokaci, takže poslední uvolněný buffer může dočasně dát cache nad svůj rozpočet až do dalšího alokace.

unload() uvolňuje registraci modelu; runtimes bez této metody jej uvolní na zničení. Poslední majitel obnoví rozpočet volajícího, zatímco dřívější vyložení uchovává stropy zbývajících modelů. CoreML- pouze cesty nemají získat MLX registrace.

MOSS Transcribe Diarize

MossTranscribe CoreML používá fixní 1,024- token MLState pro krátké nahrávky. MLX využívá dynamicky rostoucí kontext 131,072-token, afine INT5 / INT8 dekodér hmotnosti, a volitelné FP16-INT8 KV cache pro globální kontextualizované transskripty. Oba jsou offline, autoregresivní runtimes spíše než streaminové modely.

VoiceChat 11B

Úkol a odkaz: duplexní řeč-to-řeč; SALM- Duplex: Efektivní a přímé Duplex Modeling pro Speech- to- Speech Language Model (Interspeak 2025), citováno na kartě NVIDIA na vzestupu od VoiceChat.

Kompletní runtime, M5 Pro 48 GB, uvolnění, 80 ms live cadence: Protekted-head INT5 peak RSS je asi 8.69 GB; tři kontrolované celotělové RTF výsledky byly 0.96, 0.96 a 0.99. Optimalizovaný výkon INT8 nebyl dosud přeměřen.

VoiceChat implementuje kompletní rodný MLX audio- to- audio cesta: kauzální vnímání FastConformer, Nemotron- H duplexní textové / funkční kanály, samostatný textový dekodér Ear- TTS s osmi iteracemi MaskGIT a 22.05 kHz neurální kodek. Streaming udržuje ohraničenou per- vrstvu pozornosti a carex - konvoluční cache, zatímco ustálené ive kodek-rám okno používá sestavený graf. 80 ms vstupní rámec vytváří jazykové rozhodnutí, 31 RVQ kódy a přesně 1,764 výstupní vzorky. Nakladač vyžaduje kompletní encoder/ + llm/ + tts/ Svazek a odmítá starší porozumění-pouze exporty. INT5 nyní udržuje agregátní RTF pod 1 na testovaných M5 Pro, i když per- frame p95 headroom zůstává úzký.

Zálohy inference

BackendHardwareModely
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, MOSS Transcribe Diarize, Pyannote, Silero VAD, WeSpeaker, SpeechBrain ECAPA LID, Nemotron 3 Diarizace, FireRedTTS3-Instruct, MOSS- VoiceGeneGenerator
CoreML CPU / GPU / Neural Engine ANE Qwen3-ASR kodér (hybrid), Parakeet TDT, Parakeet EOU streaming, Omnilingual ASR 300M, Kokoro-82M, Qwen3.5-Chat (nepovinně), diarizace Sortformer, DeepFilterNet3, Silero VAD (nepovinně), WeSpeaker (nepovinně), MOSS Transcribe Diarize, SpeechBrain ECAPA LID, Nemotron 3 Diarizace
Akcelerát CPU (SIMD) Přepracování zvuku (STFT, mel, FFT), zpracování signálu

Model Váhový formát

Použití modelů MLX safetensors formát s 4-bit nebo 8-bitová kvantifikace (velikost skupiny 64). CoreML používání modelů .mlmodelc kompilovaný formát. Převod skriptů v scripts/ konvertovat z PyTorch kontrolních bodů.

Cohere a Voxtral také použití MLX afin INT5 Svazky. MLX nepodporuje afinu INT7; INT8 je podporovaná volba vyšší kvality.

VzorParamsKvantizaceVelikost na disku
Qwen3-ASR 0.6B (MLX)~ 600M4-bit / 8-bit680 MB / 1.0 GB
Qwen3-ASR 0.6B (CoreML)~ 186M (enkodér)INT8~ 180 MB
Qwen3-ASR 1.7B (MLX)~ 1.7B4-bit / 8-bit2,1 GB / 3,2 GB
Parakeet- TDT 0.6B (CoreML)~ 600MINT8500 MB
Whisper Large-v3 Turbo (CoreML)809MFP161.6 GB
MOSS Transcribe Diarize 0.9B (MLX)908.5MFP16 audio + INT5 / INT8 dekodér987.0 MiB / 1,200.1 MiB
MOSS Transcribe Diarize 0.9B (CoreML)~ 900MFP16 / INT8 block-321.7 GB / 1.2 CZ
Parakeet- EOU 120M (CoreML)~ 120MINT8~ 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 Transcribe 2B (MLX)2BFP16 / 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)~ 600M4-bit / 8-bit979 MB / 1,4 GB
Qwen3-ForcedAligner 0.6B (CoreML)~ 600MINT4 / INT8630 MB / 1.0 GB
Qwen3-TTS 0.6B (MLX)~ 600M4-bit / 8-bit1.7 GB / 2.4 CZ
Qwen3-TTS 1.7B (MLX)~ 1.7B4-bit / 8-bit3,2 GB / 4,8 GB
CosyVoice3 0.5B (MLX)~ 500M4- bit LLM~ 1.2 GB
IndexTTS2 rozšířený svazek (MLX)1.5B- třídaFP16 + pomocné modely~ 4.8 GB
Kokoro-82M (CoreML)82MINT8 (Kýbl 1)~ 89 MB
Qwen3.5-Chat 0.8B (MLX)~ 800MINT4418 MB
Qwen3.5-Chat 0.8B (CoreML)~ 800MINT8981 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.49Mfloat32~ 5,7 MB
Silero VAD v5~ 309Kfloat32~ 1.2 MB (MLX & CoreML)
p99 turn-1-mini5.3MFloat3222 MB (CoreML)
VAP (otoSpeech)5.8MFloat3239 MB (CoreML) / 40 MB (ONNX)
WeSpeaker ResNet34~ 6.6Mfloat32~ 25 MB (MLX & CoreML)
SpeechBrain ECAPA VoxLingua10721.25MFP16~40.6 MiB (MLX) / ~40.8 MiB (CoreML)
ReDimNet2-B612.3Mfloat16~ 25 MiB (CoreML)
Pyannote Community-1 (CoreML)8.35Mfloat32 + nativní VBx~ 32 MB
Nemotron 3 Diarizace (CoreML / MLX)100 MINT8~ 100 MB na backend
Sortformer (CoreML)—float16~ 50 MB
DeepFilterNet3 (CoreML)~ 2.1MFP16~ 4.2 MB
LocalVQE v1.4-AEC (CoreML + C++)200K + 2,742FP16 + FP32~ 732 KB

Inicializace modelu MLX

QuantizedLinear.preQuantized vytváří nulové zástupné hodnoty pro kvantované lineární vrstvy načítané z checkpointu, čímž se vyhne náhodným vahám a jejich dočasným kvantizačním grafům. withThrowawayRandomState brání tomu, aby zahazovaná inicializace s plovoucí řádovou čárkou ovlivnila řetězec náhodných klíčů volajícího. Složené načítací funkce vymezují každou komponentu: T5 a EnCodec v MAGNeT, T5Gemma a SAME-L ve Stable Audio 3 a kodek Mimi v CSM. Kvantované embeddingy CSM stále používají původní inicializátor a zachovávají jeho známé omezení inicializačního grafu.

Optimalizace výkonu

Zpracování zvuku

Všechny audio I / O používá Float32 PCM. Interní přepočítání rukojeti konverzi formátu:

VzorOčekávaná míraFormát
Qwen3-ASR16 kHzMono Float32
Cohere Transcribe 2B16 kHzMono Float32
Voxtral Mini 3B16 kHzMono Float32
Qwen3-TTSVýstup 24 kHzMono Float32
CosyVoice3Výstup 24 kHzMono Float32
Kokoro-82MVýstup 24 kHzMono Float32
PersonaPlex24 kHz I / OMono Float32
Pyannote VAD16 kHzMono Float32
Silero VAD16 kHzMono Float32
WeSpeaker16 kHzMono Float32
LID EKAPA16 kHzMono Float32
ReDimNet2-B616 kHzMono Float32
DeepFilterNet348 kHzMono Float32

Struktura zdroje

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: Nativní MLX klasifikace a rozdělení subjektů (INT8, FP16 nebo FP32 závaží); ne Python v době inference.

Clef- flash: vývojový náhled místních textových rozhodnutí (9B, afine 4-bit MLX), se společnou hlavou schématu a samostatným umístěním před ním.

MOSS- TTS- Nano

Streamování syntézy řeči a klonování hlasu s úlomky CoreML, 48 kHz stereo audio a 80 ms.

MossTTSNanoModel serializuje žádosti a vytváří čerstvé CoreML stav pro každé utce. syntetizovat a syntetizeStream zachovat stereo; SpeechGenerationModel vrací mono downmix. Pass jazyk: nula. Streams konec s prázdnou finální marker.

macOS 15+ / iOS 18+; čtyři sestavené grafy celkem 367.6 MB. Prompt, reference a požadované rámy sdílejí a 1,024-řádek kontext. runtime odmítá přetečení a vyvolává chybu, pokud maxFrames je dosaženo před přirozeným end- of- proslovu. CPU je výchozí; gpu povolení CPU+GPU poprava. PCG64 odběr vzorků používá semínka kompatibilní s NumPy-; číselné rozdíly v backendu mohou ještě změnit výstup.

MOSS- TTS- Nano

Místní rodný odvod

Volitelné agentDirectory načítá zinscenované Gemma 4 12B Jednotná INT4 vedle textového modelu E4B Model: ".gemma4-12b-it"pro chat s nativní nástroje, historie výsledků, a zrušení. E4B zůstává k dispozici pro další žádosti. Gemma4UnifiedChat používá přišpendlené MLX implementace textů a uvolní každý požadavek KV cache. Response parsing odstraňuje oddělovače kanálů z vráceného textu. Opuštěné koncovky tool- call jsou odmítnuty jako chybná odpověď.

Nativní služba serializuje chat, syntézu a transkripci; lehký VAD má samostatný stav proudu. Gemma Předplněná použití 256-token dávky, požadavek KV stav je propuštěn, a MLX cache je omezena na 128 MiB s 20 GiB limit pro alokátor.

API podrobnosti

Nepovinné vlastnictví modelu

SpeechRuntime poskytuje sdílené zatížení, zrušitelné FIFO přijetí a serializovaný výkon. Qwen3ASRRuntime vybere MLX nebo plný CoreML prostřednictvím explicitních deskriptorů; Nativní API a CLI vlajky zůstávají k dispozici.

Audio server má jedno povolení k provedení přes každý kompletní požadavek, včetně streamovaného výstupu, s až 32 požadavky čekání. ASR selhání produkují HTTP chyby nebo WebSocket chybové události; platné prázdné přepisy zůstávají úspěšné. Přehrávání uchovává přetečení vzorků. Cached modely a čeká přehrávání audio stále zabírá paměť.

Voxtral TTS

Voxtral 4B TTS 2603 běží lokálně na Apple Silicon přes modul Voxtral TTS: 20 přednastavené hlasy, devět jazyků a 24 KHz mono řeč.

VoxtralTTS → 26-layer LM → 3-layer acoustic transformer → 24 kHz PCM

Pouze přednastavené hlasy; reference-audio klonování je nedostupné. Audio výstupy proudí přes SDK, CLI, WebSocket a HTTP PCM. Dodávejte kompletní vstupní text vpředu. Modelové váhy používají CC BY-NC 4.0.

Přečtěte si průvodce Voxtral TTS

Fish Audio Drama 3

Experimentální rodák MLX podpora pro Drama 3 je k dispozici prostřednictvím FishAudioDrama3ModelA. 35B hybrid- pozornost MoE páteř, časová audio věž a rybí DAC kodek produkt 44.1 kHz mono audio. 4-bit kontrolní bod prošel waveform a nezávislý ASR kontroly pro tvorbu textů, referenční klonování a CLI výstup na Apple M5 Pro. 8-bit a BF16 zůstat neověřený.

Výchozí balanced režim ztrojnásobuje volnoběžné buffery MLX nad 512 MiB na okrajích jeviště. Použijí se také sdílená cache cache-life cache cach, která zachovává nižší rozpočty volajícího; ani kontrola neomezuje celkovou procesní paměť. --fish-drama3-memory-mode unrestricted nebo memoryOptions: .unrestricted zatížení závaží dychtivě a přeskakuje stadium sekání, přičemž zachování životnosti uzávěr.

Text- pouze generace odkládá 794.4 MiB referenčních vah kodéru. První referenční kódování zatížení a udržuje je, takže držet codec.safetensors K dispozici do té doby. Předpočítatelné referenční kódy nepotřebují kodér.

FishAudioTTS: FishAudioDrama3Model · backbone.model.* · semantic_head.* · tower.* · codec.safetensors

Postaven se Fish Audio. Svazky si zachovají licenci a notifikaci Společenství.

Referenční hodnota 4-bit

Proudění PCM je k dispozici prostřednictvím generateStreaming, generateStream a --stream. Výchozí kus obsahuje 3 codec rámy, o 139 ms audio. Automatické dlouhotrvající textové cunking a streamovaný textový vstup zůstává nedostupný.

Každá věž kodebook používá 4,096 token hodnot. Buffered a streaming Fish DAC dekódování oba svorky zbytkové kódy na kodek je 1,024-vstup zbytkové kodebooks. Vrácené kodebooky zachovat původní hodnoty věže.

Neplatné rotační rozměry se před zatížením modelu závaží zamítají.