Konekäännös · Englanninkielinen alkuperäinen

Arkkitehtuuri

Ensisijainen opetus TTS

Koodaa natiivi SDK tuki päälähteestä. Homebrew ja muut valmiiksi rakennetut CLI-päästöt eivät välttämättä vielä sisällä näitä moottoreita.

Täytäntöönpano (PR #541) : main

Julkaistu MLX nippu: aufklarer/FireRedTTS3-Instruct-MLX-fp32 · aufklarer/MOSS-VoiceGenerator-MLX-bf16

FireRedTTS3-Instruct — FireRedTTS3TTS: FireRedTTS3-Instruct säilyttää Float32 malli ja dekooderi painot. Se palauttaa puskuroitua ääntä: jätä --stream. Englanti ja Kiina --language alias hyväksytään. Sukupolven raja nostaa virhe sen sijaan, että palaisi tynkäinen menestys.

MOSS-ääniGenerator ... MossVoiceGeneratorTTS: MOSS-äänigenerator säilyttää BF16 kielipainot ja FP32 synteesikoodic. Käyttö --stream invergeneratiivisen PCM:n osalta. Omit --language ja laita kielivaatimukset --instruct.

Jokainen teksti- ja opetuskenttä on rajattu 32,768 UTF-8 tavuihin. Täydellisen renderoidun syöteke-kehotuksen, mukaan lukien sen malli, on mahduttava 4,096-kuponkien sisälle. Molemmat raja-arvot ylittävät syötteet hylätään.

Ohjeen mukainen laatu on jakamaton. Lyhyen komentosarjan mittaukset kuvaavat testattua asetelmaa; olemassa olevan mallin latenssisertifikaatti ei ole vielä varma.

Breeze TTS 2 · Breeze TTS

Englanti/Kiina TTS äänisuunnittelulla, vertailukloonauksella ja -ohjauksella ja streamatulla audiolla (MLX BF16/8-bittinen, 24 kHz; tutkimus/ei-kaupallinen lisenssi).

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 Applen ajoaika · PocketTTS

PocketTTS lisää natiivin CoreML puheen synteesin speech-swift. Kaikki vaiheet oletuksena CPU-yksinomaan suoritukseen. Englanti Alba esiasetetut virrat 1,920-0 näytekehys 24 kHz (80 ms per runko).

Swift ja CLI-käyttö

speech-swift on järjestetty modulaarisesti Swift paketti jaettu protokollia, riippumaton malli moduulit, ja yhtenäinen CLI. Kaikki päätelmät toimii laitteen avulla MLX (Metal GPU) tai CoreML (Neural Engine).

Moduulin riippuvuuskaavio

                    ┌──────────┐
                    │ 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 puskurivälimuistin budjetti

MLX -mallin ajoajat jakavat oletuksena uudelleenkäytettävän puskurin korkki min(2 GiB, physical RAM / 4) -painosta mallin käyttöiän aikana. Alemmat soittajan budjetit, mukaan lukien MLX.Memory.cacheLimit = 0 -mallikohtaiset budjetit ja nykyiset mallikohtaiset budjettivarat säilytetään. Yläraja rajoittaa joutokäyntipuskurit; aktiiviset painot, KV-välimuistit ja kokonaisprosessimuisti voivat ylittää sen. MLX -leikkaukset jaossa, joten viimeinen vapaa puskuri voi tilapäisesti asettaa välimuistin talousarvionsa yläpuolelle seuraavaan jakoon asti.

unload() vapauttaa mallin .Runttimes ilman tätä menetelmää vapauttaa sen tuhon.Viimeinen omistaja palauttaa soittajan budjetin, kun aiemmin purkaa säilyttää loput mallit.CoreML-vain polut eivät hanki MLX rekisteröinnit.

MOSS Transcribe Diarize

MossTranscribe palauttaa kaiuttimella varustetun aikaleiman kahden natiivin segmentin kautta. CoreML käyttää kiinteää 1,024-token MMLState-tallennusta lyhyille nauhoille. MLX käyttää dynaamisesti kasvavaa 131,072-token-kontekstia, affine INT5/INT8 dekooderipainot ja valinnainen FP16 INT8 KV-välimuistit maailmanlaajuisesti kontekstisoitua pitkämuotoista transkriptiota varten.

VoiceChat 11B

Tehtävä ja viite: duplex-puheen puhekielestä; SALM-Duplex: Tehokas ja suora duplex Modeling for Speech-to-Speech Language Model (Interspeech 2025), mainittu kohdassa NVIDIA's precentroor VoiceChat mallikortissa.

Täydellinen ajoaika, M5 Pro 48 GB, julkaisu, 80 ms livenä poljin: suojattu pää INT5 RSS-huippuarvo on noin 8,69 GB; kolme kontrolloitua kokonaista putkijohtoa RTF tulokset olivat 0,96, 0,96 ja 0,99. Optimoitua INT8 suorituskykyä ei ole vielä mitattu uudelleen.

VoiceChat Toteuttaa täydellisen natiivin MLX-ääni-audio-polun: syy-yhteys, Nemotron-H-duplex-teksti- ja toimintokanavat, erillinen teksti-koodekki, jossa on kahdeksan MaskGIT-iteraatiota, ja 22.05 kHz-heruaalikoodec. Virtaus säilyttää rajoitettua huomiota ja syy-konvoluutio välimuistia, kun taas tasainen kahdeksan ruudun live-koodi-ikkuna käyttää koottua kuvaajaa. Jokainen 80 ms-tulokehys tuottaa kielipäätöksen, 31 RVQ-koodit ja täsmälleen 1,764 lähtönäytteet. encoder/ + llm/ + tts/ INT5 ylläpitää nyt RTF:ää 1-tason alapuolella testattujen M5 Pro-ryhmien osalta, vaikka runkoa kohti p95 on edelleen kapea.

Päätelmät

TaustaosaLaitteistoMallit
MLX Metal GPU Qwen3-ASR, Qwen3-TTS, Breeze TTS 2, CosyVoice3, IndexTTS2, Qwen3.5-Chat, PersonaPlex, VoiceChat 11B, kokokielinen ASR (300M / 1B / 3B / 7B), Cohere Transkriptio 2B. Voxtral Mini 3B. MOSS -Transcribe Diarize. Pyannote, Silero VAD, WeSpeaker, SpeechBrain ECAPA LID, Nemotron 3 Diarisaatio FireRedTTS3-Instruct, MOSS-VoiceGenerator
CoreML CPU / GPU/Neural Engine (ANE) Qwen3-ASR koodaaja (hybridi), Parakeet TDT, Parakeet EOU-streaming, Omnilingual ASR 300M, Kokoro-82M, Qwen3.5-Chat (vapaaehtoinen), lajittelijan diarisaatio, DeepFilterNet3, Silero VAD (vapaaehtoinen), WeSpeaker (vapaaehtoinen), MOSS Antakaa Diarize, SpeechBrain ECAPA LID, Nemotron 3 Diarisoiminen
Akseleraatti CPU (SIMD) Äänen esikäsittely (STFT, mel, FFT), signaalinkäsittely

Mallin painomuoto

MLX -malleissa käytetään safetensors -muodossa, jossa on 4-bittinen tai 8-bittinen kvantitalisaatio (ryhmän koko 64). CoreML -malleissa on .mlmodelc -koodattu muoto. Muunnokset scripts/ muunnetaan PyTorchin tarkistuspisteistä.

Cohere ja Voxtral use MLX affine INT5 bundles. MLX ei tue affinea INT7; INT8 on tuettu korkealaatuisempi vaihtoehto.

MalliParaateja Määrä Levyn koko
Qwen3-ASR 0,6B (MLX)~600M4-bit / 8-bit680 MB / 1,0 GB
Qwen3-ASR 0,6B (CoreML)~186M (enkoodaaja)INT8~180 Mt
Qwen3-ASR 1,7B (MLX)~1.7B4-bit / 8-bit2,1 GB / 3,2 GB
Parakeet-TDT 0,6B (CoreML)~600MINT8500 Mt
Whisper Large-v3 Turbo (CoreML)809MFP161,6 GB
MOSS Tilaa Diarize 0.9B (MLX)908,5MFP16 audio + INT5 / INT8 dekooderi987.0 MiB / 1,200.1
MOSS Transkriptio Diarize 0.9B (CoreML)~900MFP16 / INT8 block-321,7 GB / 1,2 GB
Parakeet-EOU 120M (CoreML)~120MINT8~120 Mt
Omnilingual-ASR-CTC 300M (CoreML)326MINT8312 Mt
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 Tilaus 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 GB
Qwen3-TTS 1,7B (MLX)~1.7B4-bit / 8-bit3,2 GB / 4,8 GB
CosyVoice3 0,5B (MLX)~500M4-bittinen LLM~1,2 GB
IndexTTS2 laajennettu nippu (MLX)1.5B-luokkaFP16 + apumallit~4,8 GB
Kokoro-82M (CoreML)82MINT8 (1 kauha)~89 Mt
Qwen3.5-Chat 0,8B (MLX)~800MINT4418 Mt
Qwen3.5-Chat 0,8B (CoreML)~800MINT8981 Mt
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 Mt
Silero VAD v5~309Kfloat32~1.2 MB (MLX & CoreML)
p99 turn-1-mini5,3MFloat3222 MB (CoreML)
VAP (otoPpeech) 5.8MFloat3239 MB (CoreML) / 40 MB (ONNX)
WeSpeaker ResNet34~6,6Mfloat32~25 MB (MLX & CoreML)
PuheBrain ECAPA VoxLingua10721,25MFP16~40.6 MiB (MLX) / ~40.8 MiB (CoreML)
ReDimNet2-B612.3Mfloat16~25 MiB (CoreML)
Pyannote Community-1 (CoreML)8,35Mfloat32 + alkuperäinen VBx~32 Mt
Nemotron 3 Diarisaatio (CoreML / MLX) 100MINT8~100 Mt per taustaosa
Lajittelija (CoreML)—float16~50 Mt
DeepFilterNet3 (CoreML)~2.1MFP16~4,2 Mt
LocalVQE v1.4-AEC (CoreML + C++)200K + 2,742FP16 + FP32~732 KB

MLX mallin alustaminen

QuantizedLinear.preQuantized luo nollatäytteiset paikkamerkit tarkistuspisteistä ladattaville kvantisoiduille lineaarikerroksille ja välttää näin satunnaiset painot ja niiden tilapäiset kvantisointigraafit. withThrowawayRandomState pitää hylättävän liukulukualustuksen erillään kutsujan satunnaisavainten ketjusta. Yhdistetyt lataajat rajaavat jokaisen komponentin: MAGNeTin T5 ja EnCodec, Stable Audio 3:n T5Gemma ja SAME-L sekä CSM:n Mimi-koodekki. CSM:n kvantisoidut upotukset käyttävät yhä alkuperäistä alustusta ja säilyttävät sen tunnetun alustusgraafin rajoituksen.

Suorituskyvyn optimointi

Äänenkäsittely

Kaikki audio I/O käyttää Float32 PCM. Sisäiset resampling kahvat muodon muuntaminen:

Malli Odotettu korkoMuoto
Qwen3-ASR16 kHzMono Float32
Cohere Tarkennus 2B16 kHzMono Float32
Voxtral Mini 3B16 kHzMono Float32
Qwen3-TTS24 kHz:n lähtöMono Float32
CosyVoice324 kHz:n lähtöMono Float32
Kokoro-82M24 kHz:n lähtöMono Float32
PersonaPlex24 kHz I/OMono Float32
Pyannote VAD16 kHzMono Float32
Silero VAD16 kHzMono Float32
WeSpeaker16 kHzMono Float32
PuheBrain ECAPA LID16 kHzMono Float32
ReDimNet2-B616 kHzMono Float32
DeepFilterNet348 kHzMono Float32

Lähderakenne

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: natiivi MLX luokitus ja yhteisö spans (INT8, FP16 tai FP32 painot); ei Python inferenssihetkellä.

Clef-flash : paikallisten tekstipäätösten kehittämisen esikatselu (9B, afgene 4-bit MLX), jossa on yhteinen skeemapää ja erillinen ulostulo-bedatointi ennen.

MOSS-TTS-Nano

Puhesynteesi ja äänen kloonaus, joissa CoreML, 48 kHz:n stereoääni ja 80 ms:n palaset.

MossTTSNanoModel serialisoi pyyntöjä ja luo tuore CoreML tila kunkin lauseen. syntetisoi ja syntetisoidaStream state stereot; SpeechGenerationModel palauttaa mono downmix. Pass language: noil. Streams päättyy tyhjä lopullinen merkki.

macOS 15+ / iOS 18+; neljä koottua kaaviota yhteensä 367.6 MB. Näppärät, referenssit ja pyydetyt kehykset jakavat 1,024-row asiayhteys. Runtime hylkää ylivuoto ja nostaa virhe, jos maxFrames saavutetaan ennen luonnollista loppua-of-puhe. CPU on oletus; gpu-luvat CPU+GPU teloitus. PCG64 näytteenotossa käytetään NumPy-yhteensopivia siemeniä; taustaosan numeeriset erot voivat vielä muuttaa tuotosta.

MOSS-TSS-Nano

Paikallinen syntyperäinen päätelmä

Valinnainen agenttiDirectory loads a steaved Gemma 4 12B Unified INT4 tekstimalli yhdessä E4B. Käytä mallia: "gemma4-12b-it" chat-keskustelussa natiivityökalujen, tuloshistorian ja peruutusten kanssa. E4B on edelleen käytettävissä muihin pyyntöihin. Gemma4UnifiedChat käyttää naulattua MLX tekstin toteutusta ja julkaisee jokaisen pyynnön.

Natiivipalvelu serialisoi chatin, synteesin ja transkription; kevyt VAD on erillinen stream-tila. Gemma esitäyttö käyttää 256-varmoja eriä, pyyntö KV-tila vapautuu ja MLX välimuistin yläraja on 128 MiB 20 Gib allocator-rajalla.

API tiedot

Valinnainen malliomistus

PuheRuntime tarjoaa yhteisen latauksen, peruutettavissa olevan FIFO:n sisäänpääsyn ja sarjatoteutuksen. Qwen3ASRRuntime selecks MLX or full CoreML identifikaatioiden avulla; alkuperäisiä API- ja CLI-lippuja on edelleen saatavilla.

Äänipalvelimella on yksi suorituslupa jokaisen täydellisen pyynnön kautta, myös streamed-ulostulo, jossa on enintään 32 pyyntöä odottamassa. ASR viat tuottavat HTTP-virheitä tai WebSocket virhetapahtumia; voimassa olevat tyhjät transkriptiot pysyvät onnistuneina.

Voxtral TTS

Voxtral 4B TTS 2603 toimii paikallisesti Apple Silicon kautta VoextralTTS-moduuli: 20 esiasetettua ääntä, yhdeksän kieltä ja 24 kHz monopuhe.

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

Vain esiasetetut äänet; viite-audio kloonaaminen ei ole saatavilla. Äänitehovirta SDK, CLI, WebSocket ja HTTP PCM. Toimita täydellinen tuloteksti eteen. Mallipainot käyttävät CC BY-NC 4.0:a.

Lue Voxtral TTS Guide

Fish Audio Draama 3

Kokeellinen natiivi MLX tuki Drama 3:lle on saatavilla FishAudioDrama3Model. A 35B hybridi-huomio MoE:n selkärangan, ajallisen audiotornin ja Fish DAC:n koodekki tuottaa 44,1 kHz monoääni. 4-bittinen tarkastuspiste läpäisty aaltomuoto ja riippumaton ASR tarkastukset teksti-, vertailukloonaus- ja CLI-lähtöä Apple M5 Pro. 8-bittinen ja BF16 ei ole validoitu.

Oletusarvo balanced -tila leikkaa joutokäyntiä MLX -puskurit yli 512 MiB:n vaiheen rajoilla. Jaettua malli-elämänajan välimuistin korkkia sovelletaan myös, säilyttäen alemmat soittajan budjetit; kumpikaan kontrolli ei rajoita prosessin kokonaismuistia. --fish-drama3-memory-mode unrestricted tai memoryOptions: .unrestricted kuormitus painot innokkaasti ja ohittaa vaiheen trimmaamisen säilyttäen kuitenkin eliniän ylärajan.

Vain tekstisukupolvi lykkää 794.4 MiB:n viitekoodaajan painoja. Ensimmäinen viitekoodataa ja säilyttää kuormat, joten pidä codec.safetensors saatavilla siihen asti. Esimerkityt viitekoodit eivät tarvitse koodainta.

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

Rakennettu Fish Audio. Bundlesilla on yhteisön lisenssi ja ilmoitus.

4-bittinen vertailuarvo

PCM-streaming on saatavilla generateStreaming, generateStream ja --stream. Oletuspala sisältää 3 koodekkikehystä, noin 139 ms audiota. Automaattinen pitkätekstin pilkkominen ja streamed tekstin tulo ei ole käytettävissä.

Jokainen tornin koodikirja käyttää 4,096 poltearvot. Puskuroidut ja suoratoisto Fish DAC dekoodaus molemmat pihti jäännöskoodit Codec. 1,024- Palanneet koodikirjat säilyttävät alkuperäiset torniarvot.

Virheelliset pyörivät mitat hylätään ennen lastausmallin painoja.