Maskinoversættelse · Engelsk original
Arkitektur
Indfødt instruktion TTS
Byg native SDK støtte fra hovedkilden. Homebrew og andre præbyggede CLI udgivelser kan ikke inkludere disse motorer endnu.
Gennemførelse (PR # 541): main
Published MLX bundter: aufklarer/FireRedTTS3-Instruct-MLX-fp32 · aufklarer/MOSS-VoiceGenerator-MLX-bf16
FireRedTTS3-Instruct — FireRedTTS3TTS: FireRedTTS3-Instruct bevarer Float32 model og dekoder vægte. Det returnerer buffered audio: udelt --stream. Engelsk og kinesisk --language aliaser accepteres. En generation grænse hæver en fejl i stedet for at returnere trunkeret succes.
MOSS- VoiceGenerator — MossVoiceGeneratorTTS: MOSS- VoiceGenerator bibeholder BF16 sprogvægte og FP32 syntesecodec. Brug --stream til trinvis PCM. Omit --language og sætte sprogkrav i --instruct. Færdiggørelse dræn alle seksten kodebøger.
Hvert tekst- og instruktionsfelt er begrænset til 32,768 UTF-8 bytes. Den komplette afleverede inddataport, herunder dens skabelon, skal passe inden for 4,096 tokens. Indgange, der overskrider begge grænser, afvises.
Instruction- følgende kvalitet er uscoret. Kortscriptmålinger beskriver den testede opsætning; eksisterende-model latency certificering forbliver ukonklusivt.
Breeze TTS 2 · Breeze tTS
Engelsk / kinesisk TTS med stemme design, reference kloning og retning, og streamet audio (MLX BF16 / 8- bit, 24 kHz; forskning / ikke-kommerciel licens).
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
Indfødt Apple runtime · PocketTTS
PocketTTS tilføjer indfødt CoreML talesyntesse til speech-swift. Alle trin standard til CPU- kun udførelse. Den engelske Alba forudindstillet streams 1,920- prøvesæt på 24 kHz (80 ms per frame).
speech-swift er organiseret som en modulær Swift pakke med delte protokoller, uafhængige modelmoduler og en samlet CLI. Alle inferens kører on- device ved hjælp af MLX (Metal GPU) eller CoreML (Neural Engine).
Modul afhængighedsdiagram
┌──────────┐
│ 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 buffer cache budget
MLX model runtimes deler en standard reusable-buffer cap af min(2 GiB, physical RAM / 4) fra vægtbelastning gennem modelens levetid. Lavere kaldebudget, herunder MLX.Memory.cacheLimit = 0, og eksisterende modelspecifikke budgetter bevares. cap grænser tomgang buffere; aktive vægte, KV cache og total proces hukommelse kan overstige det. MLX trimmer på tildeling, så den sidste frigivne buffer kan midlertidigt sætte cachen over sit budget indtil næste tildeling.
unload() frigiver modellens registrering; runtimes without that method release it on destruction. Den sidste ejer genopretter opkalderens budget, mens tidligere losses bevare de resterende modellers lofter. Corem- kun stier ikke erhverve MLX registreringer.
MOSS Transcribe Diarize
MossTranscribe returnerer specter- attributed tidsstempel segmenter gennem to indfødte backends. CoreML bruger en fast 1,024-MEN MLState til korte optagelser. MLX bruger en dynamisk voksende 131,072-token sammenhæng, affin INT5/INT8 dekodervægte og valgfrie FP16/INT8 KV caches for globalt kontekstualiseret lang form transskription. Begge er offline, autoregressive runtimes snarere end streaming modeller.
VoiceChat 11B
Opgave og reference: duplex speech- to- tale; SALM- Duplex: Effektiv og direkte Duplex-modellering til tale- to- tale- sprogmodel (Intertaly 2025), citeret ved NVIDIA 's opstrømsmodel VoiceChat-kort.
Fuldstændig driftstid M5 Pro 48 GB, Release 80 ms live kadence: protected- head INT5 peak RSS er omkring 8.69 GB; tre kontrollerede helpdepipeline RTF resultater var 0.96, 0.96 og 0.99. Optimeret INT8 ydeevne er endnu ikke blevet genmålt.
VoiceChat implementerer den komplette native MLX audio- to- audio sti: causal FastConformer opfattelse, Nemotron- H duplex tekst / funktion kanaler, den standalone tekst- condition EAR- TTS dekoder med otte MaskGIT iterationer, og en 22.05 kHz neurale codec. Streaming bibeholder afgrænset per- lag opmærksomhed og causal- convolution caches, mens den stabile oight- frame live codec vindue bruger en kompileret graf. Hver 80 ms input ramme producerer en sprogvalg, 31 RVQ koder, og præcis 1,764 output prøver kræver en komplet. encoder/ + llm/ + tts/ bundt og afviser ældre forståelse-kun eksport. INT5 nu opretholder samlet RTF under 1 på den testede M5 Pro, selvom per- frame p95 headroom forbliver smal.
Inferenskomponenter
| Backend | Hardware | 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 MOSS Transcribe Diarize, Pyannote, Silero VAD, WeSpeaker, SpeechBrain ECAPA LID, Nemotron 3 Diarisering FireRedTTS3-Instruct, MOSS- VoiceGenerator |
| CoreML | CPU / GPU / Neural Engine (ANE) | Qwen3-ASR encoder (hybrid) Parakeet TDT Parakeet EOU streaming, Omnilingual ASR 300M Kokoro-82M, Qwen3.5-Chat (frivilligt) sortformer-diarisering DeepFilterNet3, Silero VAD (frivilligt) WeSpeaker (frivilligt) MOSS Transcribe Diarize, SpeechBrain ECAPA LID, Nemotron 3 Diarisering |
| Accelerat | CPU (SIMD) | Den samlede værdi af de aktiver, der er stillet til rådighed som sikkerhed, skal være lig med eller højere end den værdi, der er fastsat i artikel 4, stk. 1, litra a), i forordning (EU) nr. 575 / 2013. |
Model for vægt format
MLX modeller bruger safetensors format med 4- bit eller 8-bit kvantisering (gruppe størrelse 64). CoreML modeller bruger .mlmodelc kompileret format. Konvertering scripts i scripts/ konvertere fra PyTorch checkpoints.
Cohere og Voxtral også anvendelse MLX affin INT5 bundter. MLX ikke understøtter affin INT7; INT8 er den støttede mulighed for højere kvalitet.
| Model | Paramboler | Kvantificering | Størrelse på disk |
|---|---|---|---|
| Qwen3-ASR 0.6 (MLX) | ~ 600M | 4- bit / 8- bit | 680 MB / 1.0 GB |
| Qwen3-ASR 0.6 (CoreML) | ~ 186M (encoder) | INT8 | ~ 180 MB |
| Qwen3-ASR 1.7 (MLX) | ~ 1.7B | 4- bit / 8- bit | 2.1 GB / 3.2 |
| 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 dekoder | 987,0 MiB / 1,200.1 MiB |
| MOSS Transcribe Diarize 0.9B (CoreML) | ~ 900M | FP16 / INT8 block-32 | 1.7 GB / 1.2 |
| 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 |
| Omnilingual- ASR- CTC 7B (MLX) | ~ 7B | 4- bit / 8- bit | 3.55 GB / 6.63 |
| 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.6 (MLX) | ~ 600M | 4- bit / 8- bit | 979 MB / 1,4 GB |
| Qwen3-ForcedAligner 0.6 (CoreML) | ~ 600M | INT4 / INT8 | 630 MB / 1.0 GB |
| Qwen3-TTS 0.6 (MLX) | ~ 600M | 4- bit / 8- bit | 1.7 GB / 2.4 |
| Qwen3-TTS 1.7 (MLX) | ~ 1.7B | 4- bit / 8- bit | 3.2 GB / 4.8 |
| CosyVoice3 0.5 (MLX) | ~ 500M | 4- bit LLM | ~ 1,2 GB |
| IndexTTS2 ekspanderet bundt (MLX) | 1.5B- klasse | FP16 + hjælpemodeller | ~ 4,8 GB |
| Kokoro-82M (CoreML) | 82M | INT8 (1 spand) | ~ 89 MB |
| Qwen3.5-Chat 0.8 (MLX) | ~ 800M | INT4 | 418 MB |
| Qwen3.5-Chat 0.8 (CoreML) | ~ 800M | INT8 | 981 MB |
| PersonaPlex 7 (MLX) | ~ 7B | 4- bit / 8- bit | 4.9 GB / 9.1 |
| VoiceChat 11 (MLX) | ~ 11B | INT5 / INT8 | 8.56 GB / 12.11 |
| 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 (otoTale) | 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 + native VBx | ~ 32 MB |
| Nemotron 3 Diarisering (CoreML / MLX) | 100M | INT8 | ~ 100 MB pr. motor |
| Ssortformer (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 modelinitialisering
QuantizedLinear.preQuantized opretter nuludfyldte pladsholdere til kvantiserede lineære lag indlæst fra checkpoints og undgår dermed tilfældige vægte og deres midlertidige kvantiseringsgrafer. withThrowawayRandomState holder den kasserede flydende-komma-initialisering uden for kalderens kæde af tilfældige nøgler. Sammensatte indlæsere afgrænser hver komponent: MAGNeT med T5 og EnCodec, Stable Audio 3 med T5Gemma og SAME-L samt CSM med Mimi-codec. CSMs kvantiserede indlejringer bruger stadig upstream-initialiseringen og bevarer dens kendte begrænsning i initialiseringsgrafen.
Præstationsoptimering
- MLX samling - Qwen3-TTS kompilerer oplæser over sin voksende validitet- prefix cache og kompilerer den faste 15- gruppe Code Predictor ramme som én graf for single- element syntese.
- Metal skygger-bibliotek - Forkompileret metallib undgår ~ 5x JIT compilation overhead. Bygget via
scripts/build_mlx_metallib.sh. - Afkodet kodec-afkode - TTS dekoder processer tale i 25- frame stykker med 10-frame sammenhæng overlapper for at undgå GPU timeout.
- Batch- fordoblet CFG - CosyVoice3 DiT halverer matchende flowpas ved at slå betinget + ubetinget sammen.
- Fused RoPE - Anvendelse
MLXNN.RoPEbakkes op af Metal kerne i stedet for manuel rotation. - Batch fusion - WeSpeaker batch normalisering smeltet til Conv2d vægte ved konverteringstid.
Lydbehandling
Alle lyd I / O bruger Float32 PCM. Intern resampling håndterer format konvertering:
| Model | Forventet sats | 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 output | Mono Float32 |
| CosyVoice3 | 24 kHz output | Mono Float32 |
| Kokoro-82M | 24 kHz output | 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 |
Kildestruktur
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: indfødte MLX klassificering og enhed spænder (INT8, FP16 eller FP32 vægte); ingen Python på inferens tid.
Clef- flash: udvikling preview af lokale tekstbeslutninger (9B, affine 4- bit MLX), med et fælles skema hoved og en separat output- embedding før.
MOSS- TTS- Nano
Streaming tale syntese og stemme kloning med CoreML, 48 kHz stereo audio og 80 ms stykker.
MossTTSNanoModel serialiserer anmodninger og skaber frisk CoreML tilstand for hver ytter. syntetisering og synthesize Stream bevare stereo; SpeechGenerationModel returnerer en mono downmix. Pass sprog: nul. Streams slutter med en tom sidste markør.
macOS 15+ / iOS 18+; fire kompilerede grafer i alt 367.6 MB. Prompt, reference og ønskede rammer deler en 1,024-række sammenhæng. Runtime afviser overløb og rejser en fejl, hvis maxFrames er nået før naturlige slut- af-tale. CPU er standard; gpu tillader CPU+GPU henrettelse. PCG64 prøver bruger NumPy- kompatible frø; backend numeriske forskelle kan stadig ændre output.
Lokal indfødt inferens
Valgfri agentDirectory indlæser en iscenesat Gemma 4 12B Ensartet INT4 tekstmodel ved siden af E4B. Brug model: "gemma4-12b-it"for chat med indfødte værktøjer, resultat historie, og annullering. E4B forbliver til rådighed for andre anmodninger. Gemma4UnifiedChat bruger den fæstnede MLX tekst implementering og frigiver hver anmodning KV cache. Response parsing fjerner kanal delimiters fra returneret tekst. Orphoned tool- call terminatorer afvises som misdannede svar.
Den indfødte service serialiserer chat, syntese og transskription; letvægts VAD har separat stream tilstand. Gemma prefill bruger 256- token batcher, anmodning KV tilstand er frigivet, og MLX cache er begrænset til 128 MiB med en 20 GiB tildelingsgrænse.
Valgfri modelejerskab
SpeechRuntime giver delt indlæsning, annullerbar FIFO optagelse og serialiseret udførelse. Qwen3ASRRuntime vælger MLX eller fuld CoreML via eksplicitte deskriptorer; indfødte API 'er og CLI-flag forbliver tilgængelige.
Lydserveren har en udførelsestilladelse gennem hver komplet anmodning, herunder streamet output, med op til 32 anmodninger venter. ASR fejl producerer HTTP fejl eller WebSocket fejlbegivenheder; gyldige tomme udskrifter forbliver vellykket. Playback bevarer overløb prøver. Cached modeller og venter afspilning lyd stadig optager hukommelse.
Voxtral TTS
Voxtral 4B TTS 2603 kører lokalt Apple Silicon gennem Voxtral TTS-modulet: 20 forudindstillet stemmer, ni sprog, og 24 kHz mono tale.
VoxtralTTS → 26-layer LM → 3-layer acoustic transformer → 24 kHz PCMForetag kun stemmer; reference- audio kloning er ikke tilgængelig. Lydoutput strømme gennem SDK, CLI, WebSocket og HTTP PCM. Levere den komplette input tekst op foran. Model vægte bruge CC BY-NC 4.0.
Fish Audio DramaCity in Italy 3
Eksperimentel indfødt MLX støtte til Drama 3 er tilgængelig gennem FishAudioDrama3ModelA 35B hybridopmærksomhed MoE rygrad, temporal audio tårn og Fish DAC codec producere 44.1 kHz mono audio. 4-bit checkpoint passerede kurveform og uafhængig ASR kontroller for text- only generation, reference kloning og CLI output på Apple M5 Pro. 8- bit og BF16 forblive uvalideret.
Standard balanced mode trim tomgang MLX buffere over 512 MiB på trin grænser. Den delte model-levetid cache cap gælder også, bevare lavere opkaldsbudgetter; hverken kontrol begrænser total proces hukommelse. --fish-drama3-memory-mode unrestricted eller memoryOptions: .unrestricted belastninger vægte ivrigt og skipper fase trimning, samtidig med at livstidshætten.
Tekst- kun generations deferers 794.4 MiB af referenceindkodningsvægte. Den første reference kodning belastninger og bevarer dem, så hold codec.safetensors tilgængelige indtil da. Præberegnede referencekoder behøver ikke encoder.
FishAudioTTS: FishAudioDrama3Model · backbone.model.* · semantic_head.* · tower.* · codec.safetensors
Bygget med Fish Audio. Bundles bevarer fællesskabstilladelsen og ANMELDELSE.
PCM streaming er tilgængelig gennem generateStreaming, generateStream og --stream. Standard chunk indeholder 3 codec rammer, om 139 ms af lyd. Automatisk lang- tekst chunking og streamet tekst input forbliver utilgængelig.
Hvert tårn kodebook bruger 4,096 token værdier. Bufferet og streaming Fish DAC dekodning begge tang restkoder til codec 's 1.024- indgang resterende kodebøger. Returnerede kodebøger bevarer de oprindelige tårn værdier.
Ugyldige rotationsdimensioner afvises før lastmodelvægte.