Maskinoversettelse · Engelsk original
Arkitektur
Innfødt instruksjon TTS
Bygg innfødt SDK støtte fra hovedkilden. Homebrew og andre forhåndsbygde CLI-utgivelser kan ikke inneholde disse motorene ennå.
Implementering (PR #541): main
Publisert MLX pakker: aufklarer/FireRedTTS3-Instruct-MLX-fp32 · aufklarer/MOSS-VoiceGenerator-MLX-bf16
FireRedTTS3-Instruct — FireRedTTS3TTS: FireRedTTS3-Instruct beholder Float32 modell og dekodervekter. Det returnerer buffert lyd: utslett --stream. Engelsk og kinesisk --language alias er akseptert. En generasjonsgrense hever en feil i stedet for å returnere avkortet suksess.
MOSS-VoiceGenerator — MossVoiceGeneratorTTS: MOSS-FoiceGeneator beholder BF16 språkvekter og FP32 syntesekodeken. Bruk --stream for trinnvis PCM. Omit --language og sett språkkrav i --instruct. Fullføring drenerer alle seksten kodebøker.
Hvert tekst- og instruksjonsfelt er begrenset til 32.768 UTF-8 byte. Den fullstendig gjengitte inngangsprompten, inkludert malen, må passe innen 4.096 token. Innganger som overstiger enten grensen avvises.
Instruksjonsfølgende kvalitet er uscoret. Kortskrivne målinger beskriver det testede oppsettet; eksisterende modell latens sertifisering forblir inkonclusive.
Breeze TTS 2 · Breeze TTS
Engelsk/kinesisk TTS med stemmedesign, referansekloning og retning, og streamet lyd (MLX BF16/8-bit, 24 kHz; forskning/ikke-kommersiell lisens).
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
Native Apple Runtime · PocketTTS
PocketTTS legger til opprinnelig CoreML talesyntese til speech-swift. Alle stadier er standard til CPU-beskyttelse. Den engelske Alba-forhåndsinnstilte strømmer 1.920-prøverammer ved 24 kHz (80 ms per ramme).
speech-swift er organisert som en modulær Swift-pakke med delte protokoller, uavhengige modellmoduler og en enhetlig CLI. Alle inferenser kjører på enhet ved hjelp av MLX (Metal GPU) eller CoreML(Neural Engine).
Modulavhengighetsgraf
┌──────────┐
│ 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 budsjett
MLX-modellkjøringer deler en standard reussable-buffer-hette på min(2 GiB, physical RAM / 4) fra vektlasting gjennom modellen levetid. Lavere oppringerbudsjett, inkludert MLX.Memory.cacheLimit = 0, og eksisterende modellspesifikke budsjett er bevart. hetten begrenser inaktive buffere; aktive vekter, KV-buffere og total prosessminne kan overstige det. MLX trims på tildeling, så den siste frigjorte bufferen kan midlertidig sette cache over sitt budsjettet til neste tildeling.
unload() frigjør modellens registrering; løpstider uten den metoden frigjør den på ødeleggelse. Den siste eieren gjenoppretter anroperens budsjett, mens tidligere losser bevarer de gjenværende modellenes tak. CoreML-only stier ikke kjøpe MLX registreringer.
MOSS Transskriber Diarize
MossTranscribe returnerer høyttaler-tildelte tidsforsterkningssegmenter gjennom to innfødte motorer. CoreML bruker en fast 1.024-token MLState for korte opptak. MLX bruker en dynamisk voksende 131.072-token kontekst, affine INT5/INT8 dekodervekter og valgfri FP16/INT8 KV caches for globalt kontekstualisert langform transkripsjon. Begge er frakoblet, autoregressive løpstider i stedet for å streame modeller.
VoiceChat 11B
Oppgave og referanse: dupleks tale-til-speech; SALM-Duplex: Effektiv og direkte dupleks modellering for tale til talespråk modell (Interspeech 2025), sitert av NVIDIA er oppstrøms VoiceChat modellkort.
Fullført kjøretid, M5 Pro 48 GB, frigjøring, 80 ms live cadence: beskyttet-hode INT5 topp RSS er ca. 8,69 GB; tre kontrollert helpipelinje RTF resultater var 0,96, 0,96, og 0,99. Optimert INT8 ytelsen er ennå ikke blitt målt på nytt.
VoiceChat implementerer det fullstendige innfødte MLX lyd-til-lyd-sti: årsak FastConformer perception, Nemotron-H duplex tekst/funksjonskanaler, frittstående tekst-kvalifisert EAR-TTS dekoder med åtte MaskGIT iterasjoner, og en 22.05 kHz- nevrale kodek. Strømming beholder avgrenset per lag oppmerksomhet og kausell- konvolusjon caches, mens det jevne åtte-rammes live codec vinduet bruker en kompilert graf. 80 ms inngangsramme utgir en språkbeslutning, 31 RVQ-koder, og nøyaktig 1,764 utgang prøver. Lasteren krever en komplett encoder/ + llm/ + tts/ bunt og avviser eldre forståelse-bare eksport. INT5 opprettholder nå aggregert RTF under 1 på den testede M5 Pro, selv om per-frame p95 headroom forblir smal.
Inferensmotorer
| Motor | 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 koder (hybrid), Parakeet TDT, Parakeet EOU streaming, Omnilingual ASR 300M, Kokoro-82M, Qwen3.5-Chat (valgfritt), Sortformet diarisering, DeepFilterNet3, Silero VAD (valgfritt), WeSpeaker (valgfritt), MOSS Transcribe Diarize, SpeechBrain ECAPA LID, Nemotron 3 Diarisering |
| Accelerat | CPU (SIMD) | Lydbehandling (STFT, mel, FFT), signalbehandling |
Modellvektformat
MLX modeller bruker safetensors format med 4-bit eller 8 -bit kvantisering (gruppestørrelse 64). CoreML modeller bruk .mlmodelc kompilert format. Konverteringsskript i scripts/ convert fra Kontrollpunkter for PyTorch.
Cohere og Voxtral bruker også MLX affine INT5 bundter. MLX støtter ikke affin INT7; INT8 er det støttede alternativet for høyere kvalitet.
| Modell | Params | Kvantisering | Størrelse på disk |
|---|---|---|---|
| Qwen3-ASR 0.6B (MLX) | ~600M | 4-biters / 8-bits | 680 MB / 1.0 GB |
| Qwen3-ASR 0.6B (CoreML) | ~186M (encoder) | INT8 | ~180 MB |
| Qwen3-ASR 1.7B (MLX) | ~1.7B | 4-biters / 8-bits | 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 lyd + INT5 / INT8 dekoder | 987.0 MiB / 1,200.1 MBB |
| MOSS Transcribe Diarize 0.9B (CoreML) | ~900M | FP16 / INT8 block-32 | 1,7 GB / 1,2 GB |
| Parakeet-EOU 120M (CoreML) | ~120M | INT8 | ~120 MB |
| Omnilingual-ASR-CTC 300M (CoreML) | 326M | INT8 | 312 MB |
| Omnilingual-ASR-CTC 300M (MLX) | 326M | 4-biters / 8-bits | 193 MB / 342 MB |
| Omnilingual-ASR-CTC 1B (MLX) | 1.01B | 4-biters / 8-bits | 549 MB / 1006 MB |
| Omnilingual-ASR-CTC 3B (MLX) | ~3B | 4-biters / 8-bits | 1.71 GB / 3.16 GB |
| Omnilingual-ASR-CTC 7B (MLX) | ~7B | 4-biters / 8-bits | 3.55 GB / 6.63 GB |
| Cohere Transskriber 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-biters / 8-bits | 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-biters / 8-bits | 1,7 GB / 2,4 GB |
| Qwen3-TTS 1.7B (MLX) | ~1.7B | 4-biters / 8-bits | 3.2 GB / 4.8 GB |
| CosyVoice3 0.5B (MLX) | ~ 500M | 4-bit LLM | ~1.2 GB |
| IndexTTS2 utvidet pakke (MLX) | 1.5B-klasse | FP16 + hjelpemodeller | ~4.8 GB |
| Kokoro-82M (CoreML) | 82M | INT8 (1 bøtte) | ~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-biters / 8-bits | 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 (mot tale) | 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 + innfødt VBx | ~32 MB |
| Nemotron 3 Diarisering (CoreML / MLX) | 100M | INT8 | ~100 MB per motor |
| 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 |
MLX modell initialisering
QuantizedLinear.preQuantized oppretter nullfylte plassholdere for kvantiserte lineære lag som lastes fra sjekkpunkter, og unngår dermed tilfeldige vekter og deres midlertidige kvantiseringsgrafer. withThrowawayRandomState holder den forkastede flyttallsinitialiseringen utenfor anroperens kjede av tilfeldige nøkler. Sammensatte lastere avgrenser hver komponent: MAGNeT med T5 og EnCodec, Stable Audio 3 med T5Gemma og SAME-L samt CSM med Mimi-kodeken. De kvantiserte innbyggingene i CSM bruker fortsatt oppstrømsinitialiseringen og beholder dens kjente begrensning i initialiseringsgrafen.
Performance Optimizations
- MLX-sammenstilling - Qwen3-TTS kompilerer Taleren over sin voksende gyldig-menstruasjonsbuffer og kompilerer den faste 15-gruppe kodeprognoserammen som en graf for enkelt-element syntese.
- Metal Shader bibliotek - pre-kompilert metalllib unngår ~5x JIT samleoverdel. Bygget via
scripts/build_mlx_metallib.sh. - Khunket kodekdekodek — TTS dekoder prosesserer tale i 25-rammebiter med 10-rammes sammenheng overlapping for å unngå GPU tidsavbrudd.
- Batch doublet CFG — CosyVoice3 DiT halvdeler flyt matcher passerer ved batching betinget + ubetinget sammen.
- Fused RoPE - Bruker
MLXNN.RoPEstøttet av Metal kjerne i stedet for manuell rotasjon. - BN fusjon — WeSpeaker batch normalisering fusjonert til Conv2d vekter ved konverteringstid.
Lydbehandling
All lyd I/O bruker Float32 PCM. Interne resampling håndtak format konvertering:
| Modell | Ventet rate | Format |
|---|---|---|
| Qwen3-ASR | 16 kHz | Mono Float32 |
| Cohere Transskriber 2B | 16 kHz | Mono Float32 |
| Voxtral Mini 3B | 16 kHz | Mono Float32 |
| Qwen3-TTS | 24 kHz-utgang | Mono Float32 |
| CosyVoice3 | 24 kHz-utgang | Mono Float32 |
| Kokoro-82M | 24 kHz-utgang | 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: native MLX klassifisering og enhet spans (INT8, FP16 eller FP32 vekter); nei Python iferietid.
Clef-flash: Utviklingsforhåndsvisning av lokale tekstbeslutninger (9B, affine 4-bit MLX), med et felles skjemahode og en separat utgangsinnbygging tidligere.
MOSS-TTS-Nano
Streaming talesyntese og stemmekloning med CoreML, 48 kHz stereolyd og 80 ms biter.
MossTTSNanoModel serierer forespørsler og skaper friske CoreML tilstand for hver uttalelse. syntetisere og syntetisereStream konservering stereo; SpeechGenerationModel gir en mono downmix. Pass språk: nil. Strømmer slutter med en tom sluttmarkering.
macOS 15+ / iOS 18+; fire kompilerte grafer totalt 367.6 MB. Spør, referanse og forespurt rammer deler en 1,024-row-kontekst. Runtimen avviser overflod og hever en feil hvis maxframes nås før naturlig slutt på peech. CPU er standard; gpu-tillatelser CPU+GPU henrettelse. PCG64 prøvetaking bruker NumPy-kompatible frø; backend numeriske forskjeller kan fortsatt endre utdata.
Lokalt innfødt inferens
Valgfri agentDirectory laster en faset Gemma 4 12B Unified INT4 tekstmodell sammen med E4B. Bruk modell: gemma4-12b-it for chat med innfødte verktøy, resultathistorie og kansellering. E4B forblir tilgjengelig for andre forespørsler. Gemma4UnifiedChat bruker den festede MLX tekst implementering og frigjør hver forespørsels KV-cache. Responstolering fjerner kanaldetekter fra returnert tekst. Orphanede verktøyavsluttinger blir avvist som feilaktige svar.
Den opprinnelige tjenesten serialiserer chat, syntese og transkripsjon; lett VAD har separat stream-tilstand. Gemma forhåndsfyll bruker 256-token-partier, ber KV-tilstand frigis, og MLX cache er cache cache caped på 128 MiB med en 20 GiB allocator grense.
Valgfritt modelleierskap
SpeechRuntime gir delt lasting, kancellerbar FIFO-opptak og seriealisert utførelse. Qwen3ASRRuntime velger MLX eller full CoreML gjennom eksplisitte deskriptorer; innfødte API-er og CLI-flagg forblir tilgjengelige.
Lydserveren har én utføringstillatelse gjennom hver fullstendige forespørsel, inkludert streamingutgang, med opptil 32 forespørsler som venter. ASR feil produserer HTTP-feil eller WebSocket feilhenvisninger; gyldige tomme transkripsjoner forblir vellykket. Avspilling bevarer overflytprøver. Cachede modeller og avventende lyd fortsatt okkupasjonsminne.
Voxtral TTS
Voxtral 4B TTS 2603 kjører lokalt på Apple Silicon gjennom Voxtral TTS-modulen: 20 forhåndsinnstilte stemmer, ni språk og 24 kHz mono tale.
VoxtralTTS → 26-layer LM → 3-layer acoustic transformer → 24 kHz PCMBare forhåndsinnstillinger; referanse-audio kloning er utilgjengelig. Lydutgangsstrømmer gjennom SDK, CLI, WebSocket og HTTP PCM. Gi den komplette inngangsteksten opp foran. Modellvekter bruker CC BY-NC 4.0.
Fish Audio Drama 3
Eksperimentell innfødt MLX støtte for Drama 3 er tilgjengelig gjennom FishAudioDrama3Model. En 35B hybrid-attention MoE ryggrad, temporær lydtårn og Fish DAC codec produserer 44,1 kHz mono lyd. 4-biters kontrollpunkt passert bølgeform og uavhengig ASR kontroller for tekst-kun generasjon, referansekloning og CLI-utgang på Apple M5 Pro. 8-bit og BF16 forbli uvalidert.
Standarden balanced-modus trimmer inaktiv MLX-bufferer over 512 MiB ved trinngrenser. Den delte modellen-lifetime cache-hetten gjelder også, bevare lavere caller-budsjetter; verken kontroll begrenser total prosessminne. --fish-drama3-memory-mode unrestricted eller memoryOptions: .unrestricted laster ivrig vekter og hopper over trinn trimningen, mens du beholder livstidsdekningen.
Tekst-bare generasjon utsetter 794,4 MiB referansekoder vekter. Den første referansekodekoder laster og beholder dem, så hold codec.safetensors tilgjengelig til da. Forutsatt referansekoder trenger ikke koder.
FishAudioTTS: FishAudioDrama3Model · backbone.model.* · semantic_head.* · tower.* · codec.safetensors
Bygget med Fish Audio. Bundles beholde fellesskapslisensen og NOTICE.
PCM streaming er tilgjengelig gjennom generateStreaming, generateStream og --stream. Standardbiten inneholder 3 kodekrammer, ca. 139 ms lyd. Automatisk langtekstbiting og streaming av tekstinngang er utilgjengelig.
Hver tårn kodebok bruker 4,096 token verdier. Buffered og streaming Fish DAC dekoder begge klem restkoder til codec's 1.024-entry rest kodebøker. Returnerte kodebøker beholder de opprinnelige tårnverdier.
Ugyldige rotasjonsdimensjoner blir avvist før lasting av modellvekter.