สถาปัตยกรรม
TTS ตามคำสั่งแบบเนทีฟ
สร้าง SDK แบบเนทีฟจากซอร์ส main โดย Homebrew และ CLI ที่สร้างไว้ล่วงหน้าอื่นอาจยังไม่มีเอนจินเหล่านี้
บันเดิล MLX ที่เผยแพร่แล้ว: aufklarer/FireRedTTS3-Instruct-MLX-fp32 · aufklarer/MOSS-VoiceGenerator-MLX-bf16
FireRedTTS3-Instruct — FireRedTTS3TTS: FireRedTTS3-Instruct คงน้ำหนักโมเดลและตัวถอดรหัสแบบ Float32 ส่งคืนเสียงที่บัฟเฟอร์ครบแล้ว จึงต้องไม่ใช้ --stream ส่วน --language ยอมรับชื่อภาษาอังกฤษและจีน เมื่อถึงขีดจำกัดจะเกิดข้อผิดพลาดแทนการส่งเสียงที่ตัดขาดเป็นผลสำเร็จ
MOSS-VoiceGenerator — MossVoiceGeneratorTTS: MOSS-VoiceGenerator คงน้ำหนักภาษา BF16 และโคเดกสังเคราะห์ FP32 ใช้ --stream สำหรับ PCM ทีละส่วน ไม่ต้องระบุ --language แต่ให้ใส่ภาษาใน --instruct การจบงานจะระบายข้อมูลครบทั้งสิบหกโค้ดบุ๊ก
ช่องข้อความและคำสั่งแต่ละช่องจำกัดที่ 32,768 ไบต์ UTF-8 พรอมป์ต์อินพุตทั้งหมดหลังประกอบรวมเทมเพลตต้องไม่เกิน 4,096 โทเค็น ระบบจะปฏิเสธอินพุตที่เกินขีดจำกัดใดก็ตาม
ยังไม่ได้ให้คะแนนคุณภาพการทำตามคำสั่ง ผลวัดข้อความสั้นอธิบายเฉพาะชุดทดสอบนี้ การรับรองการถดถอยด้านเวลาแฝงยังสรุปไม่ได้
Breeze TTS 2 · BreezeTTS
สังเคราะห์เสียงภาษาอังกฤษและจีน พร้อมออกแบบเสียง โคลนและกำกับเสียงจากเสียงอ้างอิง และสตรีมเสียง (MLX BF16/8-bit, 24 kHz; สำหรับการวิจัยและการใช้งานที่ไม่ใช่เชิงพาณิชย์).
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
รันไทม์แบบเนทีฟสำหรับ Apple · PocketTTS
PocketTTS เพิ่มการสังเคราะห์เสียง CoreML แบบเนทีฟให้ speech-swift ทุกขั้นตอนใช้ CPU เท่านั้นโดยค่าเริ่มต้น เสียง Alba ภาษาอังกฤษส่งเฟรมขนาด 1,920 ตัวอย่างที่ 24 kHz หรือ 80 มิลลิวินาทีต่อเฟรม
speech-swift จัดเป็นแพ็กเกจ Swift แบบโมดูลาร์ พร้อมโปรโตคอลที่ใช้ร่วมกัน โมดูลโมเดลที่เป็นอิสระ และ CLI แบบรวม การอนุมานทั้งหมดทำงานบนอุปกรณ์โดยใช้ MLX (GPU Metal) หรือ CoreML (Neural Engine)
กราฟการพึ่งพาของโมดูล
┌──────────┐
│ AudioCLI │ (จุดเข้า)
└────┬─────┘
│
┌──────┴──────┐
│ AudioCLILib │ (คำสั่ง)
└──────┬──────┘
│
┌─────────┬───────┼───────┬──────────┬──────────────┐
│ │ │ │ │ │
┌────┴───┐ ┌──┴──┐ ┌──┴──┐ ┌─┴────┐ ┌───┴────┐ ┌──────┴───────┐
│Qwen3ASR│ │Qwen3│ │Cosy │ │Perso-│ │Speech- │ │ Speech- │
│Parakeet│ │ TTS │ │Voice│ │naPlex│ │ VAD │ │Enhancement │
└────┬───┘ └──┬──┘ └──┬──┘ └──┬───┘ └───┬───┘ └──────┬───────┘
│ │ │ │ │ │
└────────┴───────┼───────┴─────────┘ │
│ │
┌──────┴──────┐ │
│ Qwen3Common │ (เลเยอร์ใช้ร่วมกัน) │
└──────┬──────┘ │
│ │
┌──────┴──────┐ │
│ AudioCommon │ ◄──────────────────────┘
└─────────────┘ (โปรโตคอล, I/O เสียง)งบประมาณแคชบัฟเฟอร์ MLX
โมเดล MLX ใช้ขีดจำกัดเริ่มต้นร่วมกันสำหรับบัฟเฟอร์ที่นำกลับมาใช้ได้ คือ min(2 GiB, physical RAM / 4) ตั้งแต่โหลดน้ำหนักจนสิ้นสุดอายุโมเดล โดยคงงบประมาณที่ต่ำกว่าของผู้เรียก รวมถึง MLX.Memory.cacheLimit = 0 และงบประมาณเฉพาะโมเดลเดิมไว้ ขีดจำกัดนี้ใช้กับบัฟเฟอร์ที่ไม่ได้ใช้งาน น้ำหนักที่ใช้งานอยู่ แคช KV และหน่วยความจำรวมของโปรเซสอาจเกินขีดจำกัดได้ MLX ลดแคชเมื่อจัดสรรหน่วยความจำ ดังนั้นบัฟเฟอร์ที่คืนล่าสุดอาจทำให้แคชเกินงบประมาณชั่วคราวจนกว่าจะมีการจัดสรรครั้งถัดไป
unload() คืนการลงทะเบียนของโมเดล ส่วนโมเดลที่ไม่มีเมธอดนี้จะคืนเมื่อทำลายออบเจ็กต์ เจ้าของรายสุดท้ายจะคืนงบประมาณของผู้เรียก ขณะที่การยกเลิกโหลดก่อนหน้านั้นยังคงขีดจำกัดของโมเดลที่เหลือ เส้นทางที่ใช้เฉพาะ CoreML จะไม่ลงทะเบียนงบประมาณ MLX
MOSS Transcribe Diarize
MossTranscribe ส่งคืนช่วงเวลาที่ระบุผู้พูดผ่าน backend CoreML และ MLX แบบเนทีฟ CoreML ใช้สถานะคงที่ 1,024 token สำหรับไฟล์สั้น ส่วน MLX ใช้ context แบบไดนามิก 131,072 token, น้ำหนัก decoder affine INT5/INT8 และ KV cache FP16/INT8 ที่เลือกได้ ทั้งสองเป็น runtime แบบ autoregressive ออฟไลน์ ไม่ใช่ streaming
VoiceChat 11B
งานและเอกสารอ้างอิง: duplex speech-to-speech; SALM-Duplex: Efficient and Direct Duplex Modeling for Speech-to-Speech Language Model (Interspeech 2025) ซึ่ง model card VoiceChat ต้นทางของ NVIDIA อ้างอิง
runtime ครบถ้วน, M5 Pro 48 GB, Release, จังหวะ live 80 ms: INT5 แบบ protected-head มี RSS สูงสุดประมาณ 8.69 GB; ผล whole-pipeline RTF แบบควบคุมสามครั้งคือ 0.96, 0.96 และ 0.99 ยังไม่ได้วัด performance ของ INT8 หลัง optimize ซ้ำ
VoiceChat ใช้เส้นทางเสียงสู่เสียงแบบ native MLX อย่างครบถ้วน: การรับรู้ FastConformer แบบ causal, ช่องข้อความ/ฟังก์ชัน duplex ของ Nemotron-H, EAR-TTS decoder แบบกำหนดเงื่อนไขด้วยข้อความที่แยกอิสระพร้อม MaskGIT แปดรอบ และ neural codec 22.05 kHz Streaming เก็บ cache ของ attention และ causal convolution แบบจำกัดต่อ layer ขณะที่หน้าต่าง live codec แปด frame แบบ steady ใช้ graph ที่ compile แล้ว ทุก input frame 80 ms จะสร้างการตัดสินใจภาษา รหัส RVQ 31 รหัส และ output sample 1,764 ตัวอย่างพอดี Loader ต้องใช้ bundle ที่มี encoder/ + llm/ + tts/ ครบ และปฏิเสธ export รุ่นเก่าที่มีเฉพาะความเข้าใจ INT5 รักษา average RTF ต่ำกว่า 1 บน M5 Pro ที่ทดสอบได้แล้ว แม้ per-frame p95 headroom ยังแคบ
แบ็กเอนด์การอนุมาน
| แบ็กเอนด์ | ฮาร์ดแวร์ | โมเดล |
|---|---|---|
| MLX | GPU Metal | 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, Pyannote, Silero VAD, WeSpeaker, MOSS Transcribe Diarize, SpeechBrain ECAPA LID, Nemotron 3 Diarization, FireRedTTS3-Instruct, MOSS-VoiceGenerator |
| CoreML | CPU / GPU / Neural Engine (ANE) | เอ็นโคเดอร์ของ Qwen3-ASR (ไฮบริด), Parakeet TDT, Parakeet EOU streaming, Omnilingual ASR 300M, Kokoro-82M, Qwen3.5-Chat (ตัวเลือก), การแยกผู้พูด Sortformer, DeepFilterNet3, Silero VAD (ตัวเลือก), WeSpeaker (ตัวเลือก), MOSS Transcribe Diarize, SpeechBrain ECAPA LID, Nemotron 3 Diarization |
| Accelerate | CPU (SIMD) | การประมวลผลเสียงเบื้องต้น (STFT, mel, FFT), การประมวลผลสัญญาณ |
รูปแบบน้ำหนักโมเดล
โมเดล MLX ใช้รูปแบบ safetensors พร้อมการควอนไทเซชัน 4-bit หรือ 8-bit (ขนาดกลุ่ม 64) โมเดล CoreML ใช้รูปแบบที่คอมไพล์แล้ว .mlmodelc สคริปต์การแปลงใน scripts/ แปลงจากเช็คพอยต์ PyTorch
Cohere และ Voxtral มีบันเดิล MLX affine INT5 ด้วย MLX ไม่รองรับ affine INT7 โดย INT8 คือตัวเลือกคุณภาพสูงกว่าที่รองรับ
| โมเดล | พารามิเตอร์ | การควอนไทเซชัน | ขนาดบนดิสก์ |
|---|---|---|---|
| Qwen3-ASR 0.6B (MLX) | ~600M | 4-bit / 8-bit | 680 MB / 1.0 GB |
| Qwen3-ASR 0.6B (CoreML) | ~186M (encoder) | INT8 | ~180 MB |
| Qwen3-ASR 1.7B (MLX) | ~1.7B | 4-bit / 8-bit | 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 audio + INT5 / INT8 decoder | 987.0 MiB / 1,200.1 MiB |
| 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-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 GB |
| Omnilingual-ASR-CTC 7B (MLX) | ~7B | 4-bit / 8-bit | 3.55 GB / 6.63 GB |
| 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.6B (MLX) | ~600M | 4-bit / 8-bit | 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-bit / 8-bit | 1.7 GB / 2.4 GB |
| Qwen3-TTS 1.7B (MLX) | ~1.7B | 4-bit / 8-bit | 3.2 GB / 4.8 GB |
| CosyVoice3 0.5B (MLX) | ~500M | LLM 4-bit | ~1.2 GB |
| IndexTTS2 expanded bundle (MLX) | 1.5B-class | FP16 + auxiliary models | ~4.8 GB |
| Kokoro-82M (CoreML) | 82M | INT8 (1 bucket) | ~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-bit / 8-bit | 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 (otoSpeech) | 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 Diarization (CoreML / MLX) | 100M | INT8 | ~100 MB per backend |
| 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
QuantizedLinear.preQuantized สร้างอาร์เรย์ตัวแทนที่มีค่าเป็นศูนย์สำหรับชั้นเชิงเส้นแบบควอนไทซ์ที่โหลดน้ำหนักจากเช็กพอยต์ จึงไม่ต้องสร้างน้ำหนักสุ่มและกราฟควอนไทซ์ชั่วคราว withThrowawayRandomState แยกการเริ่มต้นแบบทศนิยมลอยตัวที่จะถูกแทนที่ออกจากสายโซ่คีย์สุ่มของผู้เรียก ตัวโหลดโมเดลแบบประกอบแยกขอบเขตของแต่ละองค์ประกอบ ได้แก่ T5 และ EnCodec ของ MAGNeT, T5Gemma และ SAME-L ของ Stable Audio 3 และโคเดก Mimi ของ CSM ส่วนเอ็มเบดดิงแบบควอนไทซ์ของ CSM ยังคงใช้ตัวเริ่มต้นจากต้นทาง จึงยังมีข้อจำกัดที่ทราบเกี่ยวกับอายุของกราฟการเริ่มต้น
การปรับปรุงประสิทธิภาพ
- MLX compile() — การหลอมรวมเคอร์เนลสำหรับลูปออโตเรเกรสซีฟ Talker ใช้
compile(shapeless: true), Code Predictor ใช้compile(shapeless: false)พร้อมขนาดแคชคงที่ - ไลบรารีเชดเดอร์ Metal — metallib ที่คอมไพล์ล่วงหน้าหลีกเลี่ยงค่าใช้จ่ายในการคอมไพล์ JIT ~5 เท่า บิลด์ผ่าน
scripts/build_mlx_metallib.sh - การถอดรหัสโคเด็กแบบแบ่งชังก์ — เดโคเดอร์ TTS ประมวลผลเสียงพูดในชังก์ 25 เฟรมพร้อมการซ้อนทับบริบท 10 เฟรมเพื่อหลีกเลี่ยง GPU timeout
- CFG แบบเพิ่มแบตช์เป็นสองเท่า — DiT ของ CosyVoice3 ลดจำนวนการ flow matching ลงครึ่งหนึ่งโดยรวม conditional + unconditional เข้าในแบตช์เดียวกัน
- RoPE ที่หลอมรวมแล้ว — ใช้
MLXNN.RoPEที่รองรับโดยเคอร์เนล Metal แทนการหมุนด้วยมือ - การหลอมรวม BN — Batch normalization ของ WeSpeaker ถูกหลอมรวมเข้ากับน้ำหนัก Conv2d ในเวลาที่แปลง
การประมวลผลเสียง
I/O เสียงทั้งหมดใช้ PCM Float32 การสุ่มซ้ำภายในจัดการการแปลงรูปแบบ:
| โมเดล | อัตราที่คาดหวัง | รูปแบบ |
|---|---|---|
| Qwen3-ASR | 16 kHz | Mono Float32 |
| Cohere Transcribe 2B | 16 kHz | Mono Float32 |
| Voxtral Mini 3B | 16 kHz | Mono Float32 |
| Qwen3-TTS | เอาต์พุต 24 kHz | Mono Float32 |
| CosyVoice3 | เอาต์พุต 24 kHz | Mono Float32 |
| Kokoro-82M | เอาต์พุต 24 kHz | 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 |
โครงสร้างซอร์สโค้ด
Sources/
AudioCommon/ โปรโตคอลที่ใช้ร่วมกัน, ออดิโอ I/O,
การจับเอาต์พุตของระบบ (SystemAudioTap),
ตัวดาวน์โหลด HuggingFace, SentencePieceModel
(ตัวอ่าน protobuf)
MLXCommon/ ยูทิลิตี MLX: การโหลดน้ำหนัก, ตัวช่วย QuantizedLinear,
ตัวช่วย attention หลายหัว SDPA, งบประมาณ metal
Qwen3Common/ องค์ประกอบโมเดลที่ใช้ร่วมกัน (แคช KV, RoPE, การควอนไทเซชัน)
Qwen3ASR/ Qwen3-ASR การถอดเสียงเป็นข้อความ
ParakeetASR/ Parakeet TDT การถอดเสียงเป็นข้อความ (CoreML)
ParakeetStreamingASR/ Parakeet EOU 120M การพิมพ์ตามคำบอก streaming (CoreML)
OmnilingualASR/ Meta wav2vec2 + CTC, 1,672 ภาษา
(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 การสังเคราะห์เสียงพูด
FireRedTTS3TTS/ FireRedTTS3-Instruct (MLX, Float32)
MossVoiceGeneratorTTS/ MOSS-VoiceGenerator (MLX, BF16 + FP32)
CosyVoiceTTS/ CosyVoice3 การสังเคราะห์เสียงพูด
KokoroTTS/ Kokoro-82M การสังเคราะห์เสียงพูด (CoreML)
Qwen3Chat/ Qwen3.5-0.8B LLM chat บนอุปกรณ์ (MLX + CoreML)
PersonaPlex/ PersonaPlex เสียงพูดเป็นเสียงพูด
SpeechVAD/ VAD (Silero + Pyannote), การแยกผู้พูด, เอ็มเบดดิงผู้พูด
SpeechLanguageID/ การระบุภาษาพูด (SpeechBrain ECAPA, MLX + CoreML, 107 ป้าย)
SpeechEnhancement/ การลดเสียงรบกวน DeepFilterNet3 (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
AudioCLI/ จุดเข้า CLI
scripts/ การแปลงโมเดล (PyTorch → MLX/CoreML), การทำเบนช์มาร์ก
Tests/ การทดสอบหน่วยและการทดสอบรวม
Examples/ แอปเดโม (PersonaPlexDemo, SpeechDemo)GLiNER2.5-Decide: การจัดประเภทและช่วงข้อความเอนทิตีแบบเนทีฟบน MLX (น้ำหนัก INT8, FP16 หรือ FP32) ไม่ต้องใช้ Python ขณะอนุมาน
⚠ Translation out of date — English guide. The new Clef section below awaits translation.
Clef-flash: development preview of local text decisions (9B, affine 4-bit MLX), with a joint schema head and a separate output-embedding prior.
MOSS-TTS-Nano
สังเคราะห์และโคลนเสียงแบบสตรีมด้วย CoreML ให้เสียงสเตอริโอ 48 kHz เป็นช่วงละ 80 ms
MossTTSNanoModel ประมวลผลคำขอตามลำดับและสร้างสถานะ CoreML ใหม่ทุกประโยค synthesize และ synthesizeStream เก็บสเตอริโอ ส่วน SpeechGenerationModel ให้เสียงผสมโมโน ใช้ language: nil สตรีมจบด้วยตัวทำเครื่องหมายสุดท้ายที่ว่าง
ต้องใช้ macOS 15+ / iOS 18+ โมเดลคอมไพล์สี่ตัวรวม 367.6 MB พรอมป์ต์ เสียงอ้างอิง และเฟรมที่ขอใช้บริบท 1,024 แถวร่วมกัน หากเกินบริบทหรือถึง maxFrames ก่อนจบเสียงตามธรรมชาติจะเกิดข้อผิดพลาด ค่าเริ่มต้นเป็น CPU; gpu อนุญาต CPU+GPU ค่า seed ของ PCG64 เข้ากันได้กับ NumPy แต่ความต่างเชิงตัวเลขของแบ็กเอนด์อาจเปลี่ยนผลลัพธ์
การจัดการโมเดลแบบเลือกใช้
SpeechRuntime รองรับการโหลดร่วมกัน การรับงาน FIFO ที่ยกเลิกได้ และการรันตามลำดับ Qwen3ASRRuntime เลือก MLX หรือ CoreML แบบเต็มผ่านตัวอธิบายที่ชัดเจน โดยยังใช้ API ดั้งเดิมและตัวเลือก CLI ได้
เซิร์ฟเวอร์ถือสิทธิ์รันตลอดคำขอ รวมถึงเอาต์พุตสตรีม และให้รอได้สูงสุด 32 คำขอ ความล้มเหลว ASR ส่งเป็นข้อผิดพลาด HTTP หรือเหตุการณ์ผิดพลาด WebSocket ส่วนผลถอดเสียงว่างที่ถูกต้องยังสำเร็จ การเล่นเสียงเก็บตัวอย่างที่ล้นไว้ โมเดลในแคชและเสียงรอเล่นยังใช้หน่วยความจำ
Voxtral TTS
Voxtral 4B TTS 2603 ทำงานในเครื่องบน Apple Silicon ผ่านโมดูล VoxtralTTS รองรับเสียงที่ตั้งไว้ล่วงหน้า 20 เสียง 9 ภาษา และเสียงโมโน 24 kHz
VoxtralTTS → 26-layer LM → 3-layer acoustic transformer → 24 kHz PCMรองรับเฉพาะเสียงที่กำหนดไว้ล่วงหน้า ยังไม่รองรับการโคลนจากเสียงอ้างอิง SDK, CLI, WebSocket และ HTTP PCM ส่งเสียงได้ระหว่างการสร้าง ต้องส่งข้อความอินพุตทั้งหมดตั้งแต่เริ่มต้น น้ำหนักโมเดลใช้สัญญาอนุญาต CC BY-NC 4.0
Fish Audio Drama 3
รองรับ Drama 3 แบบ MLX เนทีฟในขั้นทดลองผ่าน FishAudioDrama3Model โมเดล MoE ขนาด 35 พันล้านพารามิเตอร์พร้อม attention แบบผสม ตัวถอดรหัสเสียงตามเวลา และตัวแปลงสัญญาณ Fish DAC สร้างเสียงโมโน 44.1 kHz โมเดล 4 บิตผ่านการตรวจสอบรูปคลื่นและ ASR อิสระสำหรับการสร้างเสียงจากข้อความ การโคลนเสียงอ้างอิง และเอาต์พุต CLI บน Apple M5 Pro แล้ว รุ่น 8 บิตและ BF16 ยังไม่ได้รับการตรวจสอบ
โหมดเริ่มต้น balanced ล้างบัฟเฟอร์ MLX ที่ไม่ได้ใช้งานเมื่อเกิน 512 MiB ระหว่างขั้นตอน ขีดจำกัดแคชร่วมยังคงใช้ตลอดอายุโมเดลและคงงบประมาณที่ต่ำกว่าของผู้เรียกไว้ ทั้งสองอย่างไม่ใช่ขีดจำกัดหน่วยความจำรวมของโปรเซส --fish-drama3-memory-mode unrestricted หรือ memoryOptions: .unrestricted จะโหลดน้ำหนักล่วงหน้าและข้ามการล้างระหว่างขั้นตอน แต่ยังคงขีดจำกัดตลอดอายุโมเดล
การสร้างจากข้อความอย่างเดียวจะเลื่อนการโหลดน้ำหนักตัวเข้ารหัสเสียงอ้างอิง 794.4 MiB ไปจนถึงการเข้ารหัสเสียงอ้างอิงครั้งแรก จากนั้นเก็บน้ำหนักไว้ จึงต้องเก็บ codec.safetensors ให้เข้าถึงได้จนถึงตอนนั้น รหัสอ้างอิงที่คำนวณไว้แล้วไม่จำเป็นต้องใช้ตัวเข้ารหัส
FishAudioTTS: FishAudioDrama3Model · backbone.model.* · semantic_head.* · tower.* · codec.safetensors
สร้างด้วย Fish Audio ชุดโมเดลคง Community License และ NOTICE ไว้
รองรับการสตรีม PCM ผ่าน generateStreaming, generateStream และ --stream โดยปริยายแต่ละชังก์มี 3 เฟรมโคเดก หรือเสียงประมาณ 139 มิลลิวินาที ยังไม่รองรับการแบ่งข้อความยาวอัตโนมัติหรือป้อนข้อความแบบสตรีม
แต่ละโค้ดบุ๊กของทาวเวอร์ใช้ค่าโทเคน 4,096 ค่า การถอดรหัส Fish DAC ทั้งแบบบัฟเฟอร์และสตรีมจะจำกัดรหัสส่วนตกค้างให้อยู่ในช่วงโค้ดบุ๊กส่วนตกค้าง 1,024 รายการของตัวแปลงสัญญาณ โค้ดบุ๊กที่ส่งกลับยังคงค่าดั้งเดิมของทาวเวอร์ไว้
มิติการเข้ารหัสตำแหน่งแบบหมุนที่ไม่ถูกต้องจะถูกปฏิเสธก่อนโหลดน้ำหนักโมเดล