Kiến trúc

speech-swift được tổ chức như một gói Swift module hóa với các giao thức chung, các module mô hình độc lập và một CLI thống nhất. Tất cả suy luận chạy trên thiết bị bằng MLX (GPU Metal) hoặc CoreML (Neural Engine).

Đồ thị phụ thuộc module

                    ┌──────────┐
                    │ AudioCLI │  (điểm vào)
                    └────┬─────┘
                         │
                  ┌──────┴──────┐
                  │ AudioCLILib │  (các lệnh)
                  └──────┬──────┘
                         │
       ┌─────────┬───────┼───────┬──────────┬──────────────┐
       │         │       │       │          │              │
  ┌────┴───┐ ┌──┴──┐ ┌──┴──┐ ┌─┴────┐ ┌───┴────┐ ┌──────┴───────┐
  │Qwen3ASR│ │Qwen3│ │Cosy │ │Perso-│ │Speech- │ │  Speech-     │
  │Parakeet│ │ TTS │ │Voice│ │naPlex│ │  VAD   │ │Enhancement   │
  └────┬───┘ └──┬──┘ └──┬──┘ └──┬───┘ └───┬───┘ └──────┬───────┘
       │        │       │       │         │             │
       └────────┴───────┼───────┴─────────┘             │
                        │                               │
                 ┌──────┴──────┐                        │
                 │ Qwen3Common │  (lớp dùng chung)      │
                 └──────┬──────┘                        │
                        │                               │
                 ┌──────┴──────┐                        │
                 │ AudioCommon │ ◄──────────────────────┘
                 └─────────────┘  (giao thức, I/O âm thanh)

Backend suy luận

BackendPhần cứngMô hình
MLX GPU Metal Qwen3-ASR, Qwen3-TTS, CosyVoice3, Qwen3.5-Chat, PersonaPlex, Omnilingual ASR (300M / 1B / 3B / 7B), Pyannote, Silero VAD, WeSpeaker
CoreML Neural Engine Encoder của Qwen3-ASR (hybrid), Parakeet TDT, Parakeet EOU streaming, Omnilingual ASR 300M, Kokoro-82M, Qwen3.5-Chat (tùy chọn), phân tách người nói Sortformer, DeepFilterNet3, Silero VAD (tùy chọn), WeSpeaker (tùy chọn)
Accelerate CPU (SIMD) Tiền xử lý âm thanh (STFT, mel, FFT), xử lý tín hiệu

Định dạng trọng số mô hình

Các mô hình MLX dùng định dạng safetensors với lượng tử hóa 4-bit hoặc 8-bit (kích thước nhóm 64). Các mô hình CoreML dùng định dạng đã biên dịch .mlmodelc. Các script chuyển đổi trong scripts/ chuyển đổi từ checkpoint PyTorch.

Mô hìnhTham sốLượng tử hóaKích thước trên đĩa
Qwen3-ASR 0.6B (MLX)~600M4-bit / 8-bit680 MB / 1.0 GB
Qwen3-ASR 0.6B (CoreML)~186M (encoder)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
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
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)~500MLLM 4-bit~1.2 GB
Kokoro-82M (CoreML)82MINT8 (1 bucket)~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
Pyannote VAD (MLX)~1.49Mfloat32~5.7 MB
Silero VAD v5~309Kfloat32~1.2 MB (MLX và CoreML)
WeSpeaker ResNet34~6.6Mfloat32~25 MB (MLX và CoreML)
Sortformer (CoreML)float16~50 MB
DeepFilterNet3 (CoreML)~2.1MFP16~4.2 MB

Tối ưu hóa hiệu năng

Xử lý âm thanh

Tất cả I/O âm thanh dùng PCM Float32. Việc lấy mẫu lại nội bộ xử lý chuyển đổi định dạng:

Mô hìnhTần số mong đợiĐịnh dạng
Qwen3-ASR16 kHzMono Float32
Qwen3-TTS24 kHz đầu raMono Float32
CosyVoice324 kHz đầu raMono Float32
Kokoro-82M24 kHz đầu raMono Float32
PersonaPlex24 kHz I/OMono Float32
Pyannote VAD16 kHzMono Float32
Silero VAD16 kHzMono Float32
WeSpeaker16 kHzMono Float32
DeepFilterNet348 kHzMono Float32

Cấu trúc mã nguồn

Sources/
  AudioCommon/            Giao thức chung, I/O âm thanh, trình tải HuggingFace,
                          SentencePieceModel (đọc protobuf)
  MLXCommon/              Tiện ích MLX: tải trọng số, helper QuantizedLinear,
                          helper attention đa đầu SDPA, ngân sách metal
  Qwen3Common/            Thành phần mô hình dùng chung (cache KV, RoPE, lượng tử hóa)
  Qwen3ASR/               Qwen3-ASR giọng nói thành văn bản
  ParakeetASR/            Parakeet TDT giọng nói thành văn bản (CoreML)
  ParakeetStreamingASR/   Parakeet EOU 120M chính tả streaming (CoreML)
  OmnilingualASR/         Meta wav2vec2 + CTC, 1.672 ngôn ngữ
                          (CoreML 300M + MLX 300M / 1B / 3B / 7B)
  Qwen3TTS/               Qwen3-TTS văn bản thành giọng nói
  CosyVoiceTTS/           CosyVoice3 văn bản thành giọng nói
  KokoroTTS/              Kokoro-82M văn bản thành giọng nói (CoreML)
  Qwen3Chat/              Qwen3.5-0.8B chat LLM trên thiết bị (MLX + CoreML)
  PersonaPlex/            PersonaPlex giọng nói thành giọng nói
  SpeechVAD/              VAD (Silero + Pyannote), phân tách người nói, embedding người nói
  SpeechEnhancement/      Khử nhiễu DeepFilterNet3 (CoreML)
  SourceSeparation/       Open-Unmix HQ / UMX-L 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)
  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)
  AudioCLILib/            Cài đặt các lệnh CLI
  AudioCLI/               Điểm vào CLI

scripts/              Chuyển đổi mô hình (PyTorch → MLX/CoreML), benchmarking
Tests/                Kiểm thử đơn vị và tích hợp
Examples/             Ứng dụng demo (PersonaPlexDemo, SpeechDemo)