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

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

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

Swift og CLI-bruk

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

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

ModellParams Kvantisering Størrelse på disk
Qwen3-ASR 0.6B (MLX)~600M4-biters / 8-bits680 MB / 1.0 GB
Qwen3-ASR 0.6B (CoreML)~186M (encoder)INT8~180 MB
Qwen3-ASR 1.7B (MLX)~1.7B4-biters / 8-bits2.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 lyd + INT5 / INT8 dekoder987.0 MiB / 1,200.1 MBB
MOSS Transcribe Diarize 0.9B (CoreML)~900MFP16 / INT8 block-321,7 GB / 1,2 GB
Parakeet-EOU 120M (CoreML)~120MINT8~120 MB
Omnilingual-ASR-CTC 300M (CoreML)326MINT8312 MB
Omnilingual-ASR-CTC 300M (MLX)326M4-biters / 8-bits193 MB / 342 MB
Omnilingual-ASR-CTC 1B (MLX)1.01B4-biters / 8-bits549 MB / 1006 MB
Omnilingual-ASR-CTC 3B (MLX)~3B4-biters / 8-bits1.71 GB / 3.16 GB
Omnilingual-ASR-CTC 7B (MLX)~7B4-biters / 8-bits3.55 GB / 6.63 GB
Cohere Transskriber 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-biters / 8-bits979 MB / 1.4 GB
Qwen3-ForcedAligner 0.6B (CoreML)~600MINT4 / INT8630 MB / 1.0 GB
Qwen3-TTS 0.6B (MLX)~600M4-biters / 8-bits1,7 GB / 2,4 GB
Qwen3-TTS 1.7B (MLX)~1.7B4-biters / 8-bits3.2 GB / 4.8 GB
CosyVoice3 0.5B (MLX)~ 500M4-bit LLM~1.2 GB
IndexTTS2 utvidet pakke (MLX)1.5B-klasseFP16 + hjelpemodeller~4.8 GB
Kokoro-82M (CoreML)82MINT8 (1 bøtte)~89 MB
Qwen3.5-Chat 0,8B (MLX)~ 800MINT4418 MB
Qwen3.5-Chat 0,8B (CoreML)~ 800MINT8981 MB
PersonaPlex 7B (MLX)~7B4-biters / 8-bits4,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-mini 5.3MFloat3222 MB (CoreML)
VAP (mot tale) 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 + innfødt VBx~32 MB
Nemotron 3 Diarisering (CoreML / MLX)100MINT8~100 MB per motor
Sortformer (CoreML)—float16~50 MB
DeepFilterNet3 (CoreML)~2.1MFP16~4.2 MB
LocalVQE v1.4-AEC (CoreML + C++)200K + 2,742FP16 + 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

Lydbehandling

All lyd I/O bruker Float32 PCM. Interne resampling håndtak format konvertering:

ModellVentet rateFormat
Qwen3-ASR16 kHzMono Float32
Cohere Transskriber 2B16 kHzMono Float32
Voxtral Mini 3B16 kHzMono Float32
Qwen3-TTS24 kHz-utgangMono Float32
CosyVoice324 kHz-utgangMono Float32
Kokoro-82M24 kHz-utgangMono 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

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.

MOSS-TTS-Nano

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.

API detaljer

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 PCM

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

Les Voxtral TTS guide

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.

4-bits benchmark

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.