Terjemahan mesin · Versi asli bahasa Inggris

Arsitektur

Instruksi asli TTS

Build asli SDK dukungan dari sumber utama. Homebrew dan lain prebuilt CLI rilis mungkin tidak termasuk mesin ini belum.

Implementasi (PR # 541): main

Bundel MLX yang diterbitkan: aufklarer/FireRedTTS3-Instruct-MLX-fp32 · aufklarer/MOSS-VoiceGenerator-MLX-bf16

FireRedTTS3-Instruct — FireRedTTS3TTS: FireRedTTS3-Instruct ditahan Float32 Model dan bobot decoder. Ini mengembalikan audio yang dibanjiri: abaikan --stream. Inggris dan Cina --language Sebuah batas generasi menimbulkan kesalahan bukannya kembali terpotong sukses.

MoSS- Pembuat Suara — MossVoiceGeneratorTTS: MOSS- Pembuat Suara mempertahankan BF16 bobot bahasa dan FP32 codec sintesis. Gunakan --stream untuk incremental PCM. Abaikan --language dan menempatkan persyaratan bahasa dalam --instructPenyelesaian menguras semua buku kode enam belas.

Setiap teks dan daerah instruksi dibatasi 32,768 UTF-8 bytes. Inserm masukan yang telah diberikan lengkap, termasuk template, harus cocok dalam 4,096 Token. "Input" melebihi batas ditolak.

Instruktuasi - berikut kualitas tidak mencetak. Ukuran skrg-script menggambarkan setup teruji; ada - model sertifikasi latensi tetap tidak meyakinkan.

Breeze TTS 2 Breeze TS

Inggris / Cina TTS dengan desain suara, referensi kloning dan arah, dan streaming audio (MLX BF16/8-bit, 24 kHz; penelitian / non-komersial lisensi).

BreezeTTS 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

Asli Apple waktu jalan

PocketTTS menambahkan asli CoreML speech synthesis to speech-swift. Semua tahap baku ke CPU hanya eksekusi. Aliran Alba Inggris preset 1,920-sampel frame di 24 kHz (80 ms per frame).

Penggunaan Swift dan CLI

speech-swift terorganisir sebagai modular Swift paket dengan protokol terbagi, modul model independen, dan CPI terpadu. Semua kesimpulan dijalankan pada perangkat menggunakan MLX (Metal GPU) atau CoreML (Neural Engine).

Grafik Dependensi Modul

                    ┌──────────┐
                    │ 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 berbagi sebuah default reusable-buffer cap dari min(2 GiB, physical RAM / 4) dari beban berat yang akan di muat sepanjang hidup sebagai model anggaran penelepon bawah, termasuk MLX.Memory.cacheLimit = 0, dan model yang sudah ada - anggaran spesifik telah diawetkan. Cap membatasi buffer yang menganggur; bobot aktif, cache dan memori proses total dapat melebihi itu. MLX trims pada alokasi, sehingga buffer yang dibebaskan terakhir dapat sementara menempatkan cache di atas anggarannya sampai alokasi berikutnya.

unload() melepas pendaftaran model; runtimes tanpa metode yang merilis itu pada penghancuran. Pemilik terakhir mengembalikan anggaran penelepon, sementara sebelumnya unloads mempertahankan langit-langit model yang tersisa. CoreML hanya jalur tidak mendapatkan MLX Registrasi.

Diarize Transkripsi MOSS

MossTranscribe mengembalikan speaker- yang dikaitkan dengan segmen penanda waktu melalui dua latar belakang asli. CoreML menggunakan tetap 1,024-Token MLState untuk rekaman pendek. MLX menggunakan secara dinamis berkembang 131,072-token konteks, affine INT5/INT8 beban decoder, dan opsional FP16/INT8 KV cache untuk transkripsi bentuk panjang konteks secara global. Keduanya offline, ausoregresif runtimes daripada streaming model.

VoiceChat 11B

Referensi dan tugas: duplex speech-to-speech; Modeling Duplex SALM-Duplex: Efisien and Direct Duplex untuk Speech-to-Speech Language Model (Interspeech 2025), dikutip oleh NVIDIA's upstream VoiceChat Kartu model.

Waktu-waktu-jalan yang lengkap, M5 Pro 48 GB, Rilis, 80 ms live cadence: protected-head INT5 puncak RSS adalah tentang 8.69 GB; tiga dikendalikan secara keseluruhan-baris pipa RTF Hasilnya adalah 0.96, 0.96, dan 0.99Teroptimasi INT8 kinerja belum diukur.

VoiceChat implementasi asli lengkap MLX jalur audio-audio- audio: causal FastConformer persepsi, Nemron-H duplex teks / fungsi saluran, teks standalone -conditired EAR- TTS decoder dengan delapan iterasi MaskGIT, dan 22.05 kodek saraf kHz. Streaming mempertahankan perhatian lapisan yang terbatas dan causal- caches convolution, sedangkan stabil delapan frame hidup decoc jendela menggunakan sebuah graph terkompile. Setiap grafik yang dikompilasi. 80 bingkai masukan ms menghasilkan keputusan bahasa, 31 RVQ kode, dan persis 1,764 keluaran sampel. Pemuat memerlukan sebuah lengkap encoder/ + llm/ + tts/ bundle dan menolak pemahaman lama -hanya ekspor. INT5 sekarang menopang kumpulan RTF di bawah 1 pada tes M5 Pro, meskipun per- frame p95 Ruang utama tetap sempit.

Backend Inferensi

BackendPerangkat KerasModel
MLX Metal GPU Qwen3-ASR, Qwen3-TTS, Breeze TTS 2, CosyVoice3, IndexTTS2, Qwen3.5-Chat, PersonaPlex, VoiceChat 11B, Omnibahasa ASR (300M / 1B / 3B / 7B), Cohere Translate 2B, Voxtral Mini 3B, MOSS Translate Diarize, Pyannote, Silero VAD, WeSpeaker, SpeechBrain ECAPA LID, Nemotron 3 Diarisasi, FireRedTTS3-Instruct, MoSS- Pembuat Suara
CoreML CPU / GPU - Neural Engine (ANE) Qwen3-ASR Enkoder (Hybrid), Parakeet TDT, Parakeet EOU streaming, Omnibahasa ASR 300M, Kokoro-82M, Qwen3.5-Chat (opsional), Sortformer diarization, DeepFilterNet3, Silero VAD (opsional), WeSpeaker (opsional), MOSS Translate Diarize, SpeechBrain ECAPPA LID, Nemotron 3 Diarisasi
Percepat CPU (SIMD) Pemrosesan audio (STFT, mel, FFT), pemrosesan sinyal

Format Berat Model

MLX model menggunakan safetensors format dengan 4-bit atau 8-bit kuantisasi (ukuran grup 64). CoreML penggunaan model .mlmodelc format terkompile. Skrip konversi dalam scripts/ dikonversi dari PyTorch checkpoint.

Cohere dan Voxtral juga gunakan MLX affine INT5 Bundel. MLX tidak mendukung affine INT7; INT8 adalah pilihan kualitas tinggi yang didukung.

ModelParamsKuantisasiUkuran pada Disk
Qwen3-ASR 0.6B (MLX)- 600M4 bit / 8-bit680 MB / 1.0 GB
Qwen3-ASR 0.6B (CoreML)~ 186M (Enkoder)INT8~ 180 MB
Qwen3-ASR 1.7B (MLX)~ 1.7B4 bit / 8-bit2.1 GB / 3.2 GB
Parakeet- TDT 0.6B (CoreML)- 600MINT8500 MB
Whisper Large-v3 Turbo (CoreML)809MFP161.6 GB
MOSS Translate Diarize 0.9B (MLX)908.5MAudio FP16 + INT5 / INT8 decoder987.0 MiB / 1.200.1 MiB
MOSS Translate 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 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 Translate 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- bit LLM~ 1.2 GB
IndexTTS2 expanded bundle (MLX)Kelas 1.5B-classModel tambahan FP16 +~ 4.8 GB
Kokoro-82M (CoreML)82MINT8 (ember 1)~ 89 MB
Qwen3.5-Chat 0.8B (MLX)- 800MINT4418 MB
Qwen3.5-Chat 0.8B (CoreML)- 800MINT8981 MB
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 MB
Silero VAD v5~ 309Kfloat32~ 1.2 MB (MLX & CoreML)
p99 turn-1-mini5.3MFloat3222 MB (CoreML)
VAP (otoSpeech)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 + native VBx~ 32 MB
Nemotron 3 Diarisasi (CoreML / MLX)100MINT8~ 100 MB per backend
Sortmer (CoreML)—float16~ 50 MB
DeepFilterNet3 (CoreML)~ 2.1MFP16~ 4.2 MB
LocalVQE v1.4-AEC (CoreML + C++)200K + 2.742FP16 + FP32~ 732 KB

MLX inisialisasi model

QuantizedLinear.preQuantized membuat placeholder nol untuk lapisan linear terkuantisasi yang dimuat dari checkpoint, sehingga menghindari bobot acak dan grafik kuantisasi sementaranya. withThrowawayRandomState mencegah inisialisasi floating-point yang dibuang memengaruhi rantai kunci acak pemanggil. Loader gabungan menerapkan cakupan ini pada setiap komponen: T5 dan EnCodec pada MAGNeT, T5Gemma dan SAME-L pada Stable Audio 3, serta codec Mimi pada CSM. Embedding terkuantisasi CSM masih menggunakan penginisialisasi upstream dan tetap memiliki keterbatasan grafik inisialisasinya yang telah diketahui.

Optimasi Performance

Proses Audio

Semua audio I / O menggunakan Float32 PCM. Internal resampling menangani konversi format:

ModelDiduga LajuFormat
Qwen3-ASR16 kHzMono Float32
Cohere Translate 2B16 kHzMono Float32
Voxtral Mini 3B16 kHzMono Float32
Qwen3-TTSKeluaran 24 kHzMono Float32
CosyVoice3Keluaran 24 kHzMono Float32
Kokoro-82MKeluaran 24 kHzMono Float32
PersonaPlex24 kHz I / OMono Float32
Pyannote VAD16 kHzMono Float32
Silero VAD16 kHzMono Float32
WeSpeaker16 kHzMono Float32
LID ECAPA SpeechBrain16 kHzMono Float32
ReDimNet2-B616 kHzMono Float32
DeepFilterNet348 kHzMono Float32

Struktur Sumber

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 klasifikasi dan bentangan entitas (INT8, FP16 atau FP32 bobot); tidak Python pada waktu inferensi.

Bersihkan -flash: pratinjau pengembangan dari keputusan teks lokal (9B, affine 4-bit MLX), dengan kepala skema gabungan dan penggelapan terpisah sebelumnya.

MOSS- TTS- Nano

Sintesis suara dan suara berklon dengan CoreML, audio stereo 48 dan chunks 80 ms.

MossTTSNanoModel serializes permintaan dan menciptakan segar CoreML keadaan untuk setiap tingkat. mensintesis dan synthesizeStream melestarikan stereo; SpeechGenerationModel mengembalikan sebuah downmix mono. Pass bahasa: nil. Streams berakhir dengan penanda akhir kosong.

macOS 15+ / iOS 18+; empat grafik yang dikompile total 367.6 MB. Prompt, referensi dan diminta berbagi frame 1,024-row konteks. Kegagalan waktu-jalan overflow dan menimbulkan kesalahan jika maxFrames dicapai sebelum akhir natural -of- pidato. CPU adalah perizinan baku; gpu CPU+GPU Eksekusi. PCG64 sampling menggunakan NumPy-compatible seeds; backend numerik difference masih dapat mengubah keluaran.

MOSS- TTS- Nano

Inferensi lokal lokal

Direktori agentDirektori opsional memuat suatu ter-stage Gemma 4 12B Disatukan INT4 model teks di samping E4B Gunakan model: "gemma4-12b-it"untuk chatting dengan alat-alat asli, hasil sejarah, dan pembatalan. E4B tetap tersedia untuk permintaan lain. Gemma4UnifiedChat gunakan jepped MLX implementasi teks dan rilis setiap cache KV permintaan. Menanggapi parsing penghapus saluran dari teks kembali. Orfaned tool- call terminator ditolak sebagai respon salah bentuk.

Layanan asli serialisasi percakapan, sintesis, dan transkripsi; ringan VAD memiliki keadaan aliran terpisah. Gemma prefill menggunakan 256-token batch, permintaan keadaan KV dirilis, dan MLX cache dicapped di 128 MiB dengan 20 Batas allocator GiB.

Rincian API

Pemilik model opsional

SpeechRuntime menyediakan muatan bersama, penerimaan FIFO yang dapat dibatalkan dan eksekusi serialisasi. Qwen3ASRRuntime memilih MLX atau penuh CoreML melalui deskriptor eksplisit; bendera APIs dan CLI asli masih tersedia.

Server audio memiliki satu ijin eksekusi melalui setiap permintaan lengkap, termasuk keluaran streaming, dengan hingga 32 permintaan menunggu. ASR gagal menghasilkan kesalahan HTTP atau WebSocket kesalahan terjadi; transkrip kosong tetap sukses. Pemutaran mempertahankan sampel overflow. Model cache dan audio putar menunggu masih menempati memori.

Voxtral TTS

Voxtral 4B TTS 2603 berjalan lokal pada Apple Silicon melalui modul Voxtral TTS: 20 preset suara, sembilan bahasa, dan 24 KHz mono speech.

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

Hanya preset suara; reference-audio cloning tidak tersedia. Keluaran stream audio melalui SDK, CLI, WebSocket dan HTTP PCM. Pasokan teks masukan lengkap di depan. Model bobot menggunakan CC BY- NC 4.0.

Baca Voxtral TTS Panduan

Fish Audio Drama 3

Support asli MLX untuk Drama 3 tersedia melalui FishAudioDrama3ModelA 35B hibrid- perhatian tulang punggung MoE, menara audio temporal dan produksi codec Fish DAC 44.1 KHz mono audio. 4-bit titik pemeriksaan melewati bentuk gelombang dan independen ASR cek untuk teks- hanya generasi, referensi kloning dan CLI keluaran di Apple M5 Pro. 8-bit dan BF16 tetap tak validasi.

Baku balanced mode trims idle MLX buffer di atas 512 MiB pada batas tahap. Topan singgahan model seumur hidup juga berlaku, menjaga anggaran penelepon bawah; tidak ada batas kontrol memori proses total. --fish-drama3-memory-mode unrestricted atau memoryOptions: .unrestricted beban beban penuh semangat dan melompat tahap pemangkasan, sementara mempertahankan topi seumur hidup.

Teks - hanya generasi desers 794.4 MiB referensi beban encoder. Referensi pertama pengkodean beban dan mempertahankan mereka, jadi keep codec.safetensors tersedia sampai saat itu. Kode referensi yang telah dihitung sebelumnya tidak perlu penyandi.

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

Dibangun dengan Fish Audio Bundles mempertahankan Lisensi komunitas dan NOTICE.

4- bit benchmark

Streaming PCM tersedia melalui generateStreaming, generateStream dan --stream. Potongan bawaan berisi 3 bingkai codec, tentang 139 ms dari audio. Teks panjang otomatis chunking dan teks streaming masukan tetap tidak tersedia.

Setiap buku kode menara menggunakan nilai token 4.096. Buku-buku teks sampah ikan DAC yang diurutkan kembali ke kode-kode residual pada codec dengan 1.024 yang terdapat. Buku kode dikembalikan mempertahankan nilai-nilai menara asli.

Dimensi rotary tidak valid ditolak sebelum loading model bobot.