आर्किटेक्चर

speech-swift एक मॉड्यूलर Swift पैकेज के रूप में संगठित है जिसमें साझा प्रोटोकॉल, स्वतंत्र मॉडल मॉड्यूल, और एक एकीकृत CLI है। सभी इन्फ़रेंस MLX (Metal GPU) या CoreML (Neural Engine) का उपयोग करके ऑन-डिवाइस चलते हैं।

मॉड्यूल निर्भरता ग्राफ़

                    ┌──────────┐
                    │ 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)

MOSS Transcribe Diarize

MossTranscribe native CoreML और MLX backends से speaker सहित timestamp segments देता है। छोटे recordings के लिए CoreML fixed 1,024-token state उपयोग करता है। MLX dynamic 131,072-token context, affine INT5/INT8 decoder weights और वैकल्पिक FP16/INT8 KV caches उपयोग करता है। दोनों offline autoregressive runtimes हैं, streaming नहीं।

VoiceChat 11B

Task और reference: duplex speech-to-speech; SALM-Duplex: Efficient and Direct Duplex Modeling for Speech-to-Speech Language Model (Interspeech 2025), जिसे NVIDIA के upstream VoiceChat model card में cite किया गया है।

पूरा runtime, M5 Pro 48 GB, Release, 80 ms live cadence: protected-head INT5 का peak RSS लगभग 8.69 GB है; तीन controlled whole-pipeline RTF results 0.96, 0.96 और 0.99 थे। Optimized INT8 performance को अभी दोबारा नहीं मापा गया है।

VoiceChat पूरा native MLX audio-to-audio path लागू करता है: causal FastConformer perception, Nemotron-H duplex text/function channels, आठ MaskGIT iterations वाला स्वतंत्र text-conditioned EAR-TTS decoder और 22.05 kHz neural codec। Streaming हर layer के bounded attention और causal-convolution caches रखती है, जबकि steady eight-frame live codec window compiled graph का उपयोग करती है। हर 80 ms input frame एक language decision, 31 RVQ codes और ठीक 1,764 output samples बनाता है। loader को पूरा encoder/ + llm/ + tts/ bundle चाहिए और पुराने understanding-only exports अस्वीकार होते हैं। INT5 अब परीक्षित M5 Pro पर average RTF 1 से कम रखता है, हालांकि per-frame p95 headroom अभी कम है।

इन्फ़रेंस बैकएंड

बैकएंडहार्डवेयरमॉडल
MLX Metal GPU Qwen3-ASR, Qwen3-TTS, 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
CoreML Neural Engine Qwen3-ASR encoder (हाइब्रिड), Parakeet TDT, Parakeet EOU streaming, Omnilingual ASR 300M, Kokoro-82M, Qwen3.5-Chat (वैकल्पिक), Sortformer diarization, DeepFilterNet3, Silero VAD (वैकल्पिक), WeSpeaker (वैकल्पिक), MOSS Transcribe Diarize, SpeechBrain ECAPA LID
Accelerate CPU (SIMD) ऑडियो प्रीप्रोसेसिंग (STFT, mel, FFT), सिग्नल प्रोसेसिंग

मॉडल वेट फ़ॉर्मैट

MLX मॉडल safetensors फ़ॉर्मैट का उपयोग करते हैं जिसमें 4-bit या 8-bit क्वांटिज़ेशन (group size 64) होता है। CoreML मॉडल .mlmodelc कंपाइल्ड फ़ॉर्मैट का उपयोग करते हैं। scripts/ में कन्वर्ज़न स्क्रिप्ट PyTorch चेकपॉइंट से कन्वर्ट करती हैं।

Cohere और Voxtral में MLX affine INT5 बंडल भी उपलब्ध हैं। MLX affine INT7 का समर्थन नहीं करता; अधिक गुणवत्ता वाला समर्थित विकल्प INT8 है।

मॉडलपैरामीटरक्वांटिज़ेशनडिस्क पर आकार
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
Whisper Large-v3 Turbo (CoreML)809MFP161.6 GB
MOSS Transcribe Diarize 0.9B (MLX)908.5MFP16 audio + INT5 / INT8 decoder987.0 MiB / 1,200.1 MiB
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-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 Transcribe 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)1.5B-classFP16 + auxiliary models~4.8 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
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)
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
Sortformer (CoreML)float16~50 MB
DeepFilterNet3 (CoreML)~2.1MFP16~4.2 MB
LocalVQE v1.4-AEC (CoreML + C++)200K + 2,742FP16 + FP32~732 KB

परफ़ॉर्मेंस ऑप्टिमाइज़ेशन

ऑडियो प्रोसेसिंग

सभी ऑडियो I/O Float32 PCM का उपयोग करता है। आंतरिक resampling फ़ॉर्मैट कन्वर्ज़न को हैंडल करती है:

मॉडलअपेक्षित रेटफ़ॉर्मैट
Qwen3-ASR16 kHzMono Float32
Cohere Transcribe 2B16 kHzMono Float32
Voxtral Mini 3B16 kHzMono Float32
Qwen3-TTS24 kHz आउटपुटMono Float32
CosyVoice324 kHz आउटपुटMono Float32
Kokoro-82M24 kHz आउटपुटMono 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

सोर्स संरचना

Sources/
  AudioCommon/            साझा प्रोटोकॉल, ऑडियो I/O, सिस्टम आउटपुट कैप्चर
                          (SystemAudioTap), HuggingFace डाउनलोडर,
                          SentencePieceModel (protobuf रीडर)
  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
  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/       बोली गई भाषा की पहचान (SpeechBrain ECAPA, MLX + CoreML, 107 लेबल)
  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)
  MADLADTranslation/      MADLAD-400 many-to-many translation (MLX, 400+ languages)
  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)