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ě.
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).
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).
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
| Backend | Hardware | Modely |
|---|---|---|
| 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.
| Vzor | Params | Kvantizace | Velikost na disku |
|---|---|---|---|
| Qwen3-ASR 0.6B (MLX) | ~ 600M | 4-bit / 8-bit | 680 MB / 1.0 GB |
| Qwen3-ASR 0.6B (CoreML) | ~ 186M (enkodér) | 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 dekodér | 987.0 MiB / 1,200.1 MiB |
| MOSS Transcribe Diarize 0.9B (CoreML) | ~ 900M | FP16 / INT8 block-32 | 1.7 GB / 1.2 CZ |
| 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 CZ |
| 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 rozšířený svazek (MLX) | 1.5B- třída | FP16 + pomocné modely | ~ 4.8 GB |
| Kokoro-82M (CoreML) | 82M | INT8 (Kýbl 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 + nativní VBx | ~ 32 MB |
| Nemotron 3 Diarizace (CoreML / MLX) | 100 M | INT8 | ~ 100 MB na 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 |
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
- MLX kompilace - Qwen3-TTS sestavuje Talker nad jeho rostoucí valid- prefix cache a sestavuje pevný rámec kódu skupiny 15- jako jeden graf pro syntézu single-položky.
- Metal shader knihovna - Pre- compilation metallib avoids ~ 5x JIT compilation režie.
scripts/build_mlx_metallib.sh. - dekódování kodeků chunked - TTS dekodér zpracovává řeč v rámečcích 25- s překrytím rámce 10-, aby se zabránilo timeout GPU.
- Kabely - zdvojnásobené CFG - CosyVoice3 DiT poloviční průtok protéká záplavou podmíněného + bezpodmínečného společně.
- FUZE ROPE - Použití
MLXNN.RoPEkrytý jádrem Metal místo ruční rotace. - BN fúze - WeSpeaker dávková normalizace se v čase přeměny spojila do závaží Conv2d.
Zpracování zvuku
Všechny audio I / O používá Float32 PCM. Interní přepočítání rukojeti konverzi formátu:
| Vzor | Očekávaná míra | Formát |
|---|---|---|
| Qwen3-ASR | 16 kHz | Mono Float32 |
| Cohere Transcribe 2B | 16 kHz | Mono Float32 |
| Voxtral Mini 3B | 16 kHz | Mono Float32 |
| Qwen3-TTS | Výstup 24 kHz | Mono Float32 |
| CosyVoice3 | Výstup 24 kHz | Mono Float32 |
| Kokoro-82M | Výstup 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 EKAPA | 16 kHz | Mono Float32 |
| ReDimNet2-B6 | 16 kHz | Mono Float32 |
| DeepFilterNet3 | 48 kHz | Mono 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.
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.
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 PCMPouze 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.
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í.
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í.