Apple Silicon के लिए AI स्पीच मॉडल, MLX Swift और CoreML द्वारा संचालित।
📖 Read in: English · 中文 · 日本語 · 한국어 · Español · Deutsch · Français · हिन्दी · Português · Русский · العربية · Tiếng Việt · Türkçe · ไทย
Mac और iOS के लिए ऑन-डिवाइस स्पीच रिकग्निशन, सिंथेसिस और समझ। Apple Silicon पर पूरी तरह लोकली चलता है — कोई क्लाउड नहीं, कोई API key नहीं, कोई डेटा डिवाइस से बाहर नहीं जाता।
📚 पूर्ण डॉक्यूमेंटेशन → · 🤗 HuggingFace मॉडल · 📝 ब्लॉग
MacBook पर लोकल स्पीच AI — YouTube पर चार मिनट का ओपन-सोर्स लाइब्रेरी टूर देखें
यूज़-केस: वॉइस एजेंट · ट्रांसक्रिप्शन · स्पीच जनरेशन
- Qwen3-ASR — स्पीच-टू-टेक्स्ट (ऑटोमैटिक स्पीच रिकग्निशन, 52 भाषाएँ, MLX + CoreML)
- Parakeet TDT — CoreML के माध्यम से स्पीच-टू-टेक्स्ट (Neural Engine, NVIDIA FastConformer + TDT decoder, 25 भाषाएँ)
- Omnilingual ASR — स्पीच-टू-टेक्स्ट (Meta wav2vec2 + CTC, 1,672 भाषाएँ 32 लिपियों में, CoreML 300M + MLX 300M/1B/3B/7B)
- Streaming Dictation — पार्शियल्स और एंड-ऑफ-अटरन्स डिटेक्शन के साथ रियल-टाइम डिक्टेशन (Parakeet-EOU-120M)
- Nemotron Streaming (बहुभाषी) — नेटिव विराम चिह्न और कैपिटलाइज़ेशन के साथ लो-लेटेंसी स्ट्रीमिंग ASR (NVIDIA Nemotron-3.5-ASR-Streaming-0.6B, CoreML + MLX, 40 भाषा-लोकेल)
- Nemotron Streaming (अंग्रेज़ी) — नेटिव विराम चिह्न और कैपिटलाइज़ेशन के साथ लो-लेटेंसी स्ट्रीमिंग ASR (NVIDIA Nemotron-Speech-Streaming-0.6B, CoreML, केवल अंग्रेज़ी, बहुभाषी संस्करण से छोटा और तेज़)
- Qwen3-ForcedAligner — शब्द-स्तरीय टाइमस्टैम्प अलाइनमेंट (ऑडियो + टेक्स्ट → टाइमस्टैम्प)
- Qwen3-TTS — टेक्स्ट-टू-स्पीच (सर्वोच्च गुणवत्ता, स्ट्रीमिंग, कस्टम स्पीकर, 10 भाषाएँ)
- CosyVoice TTS — वॉयस क्लोनिंग, मल्टी-स्पीकर डायलॉग, इमोशन टैग के साथ स्ट्रीमिंग TTS (9 भाषाएँ)
- VoxCPM2 — वॉयस क्लोनिंग + निर्देश-आधारित वॉयस डिज़ाइन के साथ 48 kHz स्टूडियो-गुणवत्ता TTS (2B, MLX bf16/int8, 30 भाषाएँ)
- Kokoro TTS — ऑन-डिवाइस TTS (82M, CoreML/Neural Engine, 54 वॉयस, iOS-ready, 10 भाषाएँ)
- VibeVoice TTS — लंबे-रूप / बहु-वक्ता TTS (Microsoft VibeVoice Realtime-0.5B + 1.5B, MLX, 90 मिनट तक के पॉडकास्ट / ऑडियोबुक संश्लेषण, EN/ZH)
- Magpie TTS — बहुभाषी TTS (NVIDIA Magpie-TTS Multilingual 357M, MLX INT8 411 MB या CoreML INT8 342 MB, 9 भाषाएँ, 5 पूर्व-निर्धारित वक्ता, MLX पर स्ट्रीमिंग)
- Supertonic TTS — ऑन-डिवाइस फ़्लो-मैचिंग TTS (Supertone Supertonic-3 99M, CoreML/Neural Engine, 31 भाषाएँ, 10 वॉयस, G2P-free, 44.1 kHz)
- Chatterbox TTS — ज़ीरो-शॉट वॉयस क्लोनिंग के साथ बहुभाषी TTS (Resemble AI Chatterbox Multilingual, MLX fp16 ~1.3 GB, 23 भाषाएँ, MIT)
- Qwen3.5-Chat — ऑन-डिवाइस LLM चैट (0.8B, MLX INT4 + CoreML INT8, DeltaNet हाइब्रिड, स्ट्रीमिंग टोकन)
- FunctionGemma — संरचित फ़ंक्शन / टूल कॉल के लिए ऑन-डिवाइस LLM (Gemma 3 270M, CoreML 8-बिट पैलेटाइज़, Neural Engine, ~252 tok/s)
- MADLAD-400 — 400+ भाषाओं में बहु-दिशात्मक अनुवाद (3B, MLX INT4 + INT8, T5 v1.1, Apache 2.0)
- Hibiki Zero-3B — स्ट्रीमिंग स्पीच-टू-स्पीच अनुवाद (FR/ES/PT/DE → EN, MLX INT4 + INT8, Kyutai Moshi/Mimi स्टैक, CC-BY-4.0)
- PersonaPlex — फुल-डुप्लेक्स स्पीच-टू-स्पीच (7B, ऑडियो इन → ऑडियो आउट, 18 वॉयस प्रीसेट)
- DeepFilterNet3 — रियल-टाइम नॉइज़ सप्रेशन (2.1M params, 48 kHz)। 60 s सिंगल-शॉट सीमा से अधिक लंबे ऑडियो को crossfade के साथ स्वतः चंक किया जाता है —
enhanceChunked(...)देखें - सोर्स सेपरेशन — HTDemucs (Demucs v4) + Open-Unmix के ज़रिए म्यूज़िक सोर्स सेपरेशन (UMX-HQ / UMX-L, 4 स्टेम: वोकल/ड्रम्स/बेस/अन्य, 44.1 kHz स्टीरियो)
- MAGNeT — टेक्स्ट से संगीत निर्माण (Meta MAGNeT Small 300M / Medium 1.5B, MLX INT8, 30 सेकंड क्लिप 32 kHz मोनो, मास्क्ड पैरलल डिकोडिंग)
- FlashSR — ऑडियो सुपर-रेज़ोल्यूशन (FlashSR ICASSP 2025, MLX, 48 kHz मोनो, 1-स्टेप डिस्टिल्ड डिफ्यूज़न, INT4 363 MB / INT8 720 MB)
- वेक-वर्ड — ऑन-डिवाइस कीवर्ड स्पॉटिंग (KWS Zipformer 3M, CoreML, 26× रियल-टाइम, कॉन्फ़िगरेबल कीवर्ड सूची)
- VAD — वॉयस एक्टिविटी डिटेक्शन (Silero स्ट्रीमिंग, Pyannote ऑफ़लाइन, FireRedVAD 100+ भाषाएँ)
- Speaker Diarization — कौन कब बोला (Pyannote पाइपलाइन, Neural Engine पर एंड-टू-एंड Sortformer)
- Speaker Embeddings — WeSpeaker ResNet34 (256-dim), CAM++ (192-dim)
पेपर: Qwen3-ASR (Alibaba) · Qwen3-TTS (Alibaba) · Omnilingual ASR (Meta) · Parakeet TDT (NVIDIA) · CosyVoice 3 (Alibaba) · Kokoro (StyleTTS 2) · PersonaPlex (NVIDIA) · Mimi (Kyutai) · Hibiki (Kyutai) · Sortformer (NVIDIA)
- 19 Apr 2026 — MLX vs CoreML on Apple Silicon — A Practical Guide to Picking the Right Backend
- 20 Mar 2026 — We Beat Whisper Large v3 with a 600M Model Running Entirely on Your Mac
- 26 Feb 2026 — Speaker Diarization and Voice Activity Detection on Apple Silicon — Native Swift with MLX
- 23 Feb 2026 — NVIDIA PersonaPlex 7B on Apple Silicon — Full-Duplex Speech-to-Speech in Native Swift with MLX
- 12 Feb 2026 — Qwen3-ASR Swift: On-Device ASR + TTS for Apple Silicon — Architecture and Benchmarks
अपने Package.swift में पैकेज जोड़ें:
.package(url: "https://github.com/soniqo/speech-swift", branch: "main")केवल वही मॉड्यूल इम्पोर्ट करें जिनकी आपको ज़रूरत है — प्रत्येक मॉडल अपनी अलग SPM लाइब्रेरी है, इसलिए आप केवल उसी के लिए भुगतान करते हैं जो आप उपयोग करते हैं:
.product(name: "ParakeetStreamingASR", package: "speech-swift"),
.product(name: "SpeechUI", package: "speech-swift"), // वैकल्पिक SwiftUI व्यू3 लाइनों में ऑडियो बफ़र ट्रांसक्राइब करें:
import ParakeetStreamingASR
let model = try await ParakeetStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000)पार्शियल्स के साथ लाइव स्ट्रीमिंग:
for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
print(partial.isFinal ? "FINAL: \(partial.text)" : "... \(partial.text)")
}~10 लाइनों में SwiftUI डिक्टेशन व्यू:
import SwiftUI
import ParakeetStreamingASR
import SpeechUI
@MainActor
struct DictateView: View {
@State private var store = TranscriptionStore()
var body: some View {
TranscriptionView(finals: store.finalLines, currentPartial: store.currentPartial)
.task {
let model = try? await ParakeetStreamingASRModel.fromPretrained()
guard let model else { return }
for await p in model.transcribeStream(audio: samples, sampleRate: 16000) {
store.apply(text: p.text, isFinal: p.isFinal)
}
}
}
}SpeechUI केवल TranscriptionView (finals + partials) और TranscriptionStore (स्ट्रीमिंग ASR एडाप्टर) प्रदान करता है। ऑडियो विज़ुअलाइज़ेशन और प्लेबैक के लिए AVFoundation का उपयोग करें।
उपलब्ध SPM उत्पाद: Qwen3ASR, Qwen3TTS, Qwen3TTSCoreML, ParakeetASR, ParakeetStreamingASR, NemotronStreamingASR, OmnilingualASR, KokoroTTS, SupertonicTTS, VibeVoiceTTS, CosyVoiceTTS, VoxCPM2TTS, ChatterboxTTS, MagpieTTS, MagpieTTSCoreML, MAGNeTMusicGen, FlashSR, PersonaPlex, HibikiTranslate, SpeechVAD, SpeechEnhancement, SourceSeparation, Qwen3Chat, SpeechCore, SpeechUI, AudioCommon.
नीचे संक्षिप्त दृश्य। पूर्ण मॉडल कैटलॉग (आकार, क्वांटिज़ेशन, डाउनलोड URL, मेमोरी टेबल्स) → soniqo.audio/architecture.
| मॉडल | कार्य | बैकएंड | आकार | भाषाएँ |
|---|---|---|---|---|
| Qwen3-ASR | स्पीच → टेक्स्ट | MLX, CoreML (हाइब्रिड) | 0.6B, 1.7B | 52 |
| Parakeet TDT | स्पीच → टेक्स्ट | CoreML (ANE) | 0.6B | 25 यूरोपीय |
| Parakeet EOU | स्पीच → टेक्स्ट (स्ट्रीमिंग) | CoreML (ANE) | 120M | 25 यूरोपीय |
| Nemotron Streaming (बहुभाषी) | भाषण → टेक्स्ट (स्ट्रीमिंग, विराम चिह्नों के साथ) | CoreML (ANE), MLX | 0.6B | 40 |
| Nemotron Streaming (अंग्रेज़ी) | भाषण → टेक्स्ट (स्ट्रीमिंग, विराम चिह्नों के साथ) | CoreML (ANE) | 0.6B | EN |
| Omnilingual ASR | स्पीच → टेक्स्ट | CoreML (ANE), MLX | 300M / 1B / 3B / 7B | 1,672 |
| Qwen3-ForcedAligner | ऑडियो + टेक्स्ट → टाइमस्टैम्प | MLX, CoreML | 0.6B | बहुभाषी |
| Qwen3-TTS | टेक्स्ट → स्पीच | MLX, CoreML | 0.6B, 1.7B | 10 |
| CosyVoice3 | टेक्स्ट → स्पीच | MLX | 0.5B | 9 |
| VoxCPM2 | टेक्स्ट → स्पीच (48 kHz, वॉयस डिज़ाइन + क्लोनिंग) | MLX | 2B (bf16/int8) | 30 |
| Chatterbox Multilingual | टेक्स्ट → स्पीच (ज़ीरो-शॉट क्लोनिंग) | MLX | 0.8B (fp16) | 23 |
| Kokoro-82M | टेक्स्ट → स्पीच | CoreML (ANE) | 82M | 10 |
| Supertonic-3 | टेक्स्ट → स्पीच (44.1 kHz, फ़्लो-मैचिंग, G2P-free) | CoreML (ANE) | 99M | 31 |
| VibeVoice Realtime-0.5B | टेक्स्ट → स्पीच (लंबे-रूप, बहु-वक्ता) | MLX | 0.5B | EN/ZH |
| VibeVoice 1.5B | टेक्स्ट → स्पीच (90 मिनट तक पॉडकास्ट) | MLX | 1.5B | EN/ZH |
| Magpie-TTS Multilingual | टेक्स्ट → वाक् (5 पूर्व-निर्धारित वक्ता, स्ट्रीमिंग) | MLX / CoreML | 357M (MLX INT8, CoreML INT8) | 9 (CoreML में JA नहीं) |
| Qwen3.5-Chat | टेक्स्ट → टेक्स्ट (LLM) | MLX, CoreML | 0.8B | बहुभाषी |
| FunctionGemma | टेक्स्ट → टूल कॉल (LLM) | CoreML | 270M | EN |
| MADLAD-400 | टेक्स्ट → टेक्स्ट (अनुवाद) | MLX | 3B | 400+ |
| Hibiki Zero-3B | स्पीच → स्पीच (अनुवाद) | MLX | 3B | FR/ES/PT/DE → EN |
| PersonaPlex | स्पीच → स्पीच | MLX | 7B | EN |
| Silero VAD | वॉयस एक्टिविटी डिटेक्शन | MLX, CoreML | 309K | भाषा-तटस्थ |
| Pyannote | VAD + Diarization | MLX | 1.5M | भाषा-तटस्थ |
| Sortformer | Diarization (E2E) | CoreML (ANE) | — | भाषा-तटस्थ |
| DeepFilterNet3 | स्पीच एन्हांसमेंट | CoreML | 2.1M | भाषा-तटस्थ |
| Sidon | स्पीच रिस्टोरेशन (नॉइज़ हटाना + डीरीवर्ब, 48 kHz) | CoreML | w2v-BERT 2.0 + DAC (fp16/int8) | भाषा-तटस्थ |
| HTDemucs (Demucs v4) | सोर्स सेपरेशन | MLX | 168M | Agnostic |
| Open-Unmix | सोर्स सेपरेशन | MLX | 8.6M | Agnostic |
| MAGNeT | टेक्स्ट → संगीत (30 सेकंड @ 32 kHz) | MLX | 300M / 1.5B (int4/int8) | EN प्रॉम्प्ट्स |
| FlashSR | ऑडियो सुपर-रेज़ोल्यूशन (48 kHz) | MLX | 363 MB / 720 MB (int4/int8) | भाषा-निरपेक्ष |
| WeSpeaker | स्पीकर एम्बेडिंग | MLX, CoreML | 6.6M | भाषा-तटस्थ |
नेटिव ARM Homebrew (/opt/homebrew) आवश्यक है। Rosetta/x86_64 Homebrew समर्थित नहीं है।
brew install speechफिर:
speech transcribe recording.wav
speech speak "Hello world"
speech translate "Hello, how are you?" --to es
speech respond --input question.wav --transcript
speech-server --port 8080 # स्थानीय HTTP / WebSocket सर्वर (OpenAI-compatible /v1/realtime + /v1/audio/transcriptions)dependencies: [
.package(url: "https://github.com/soniqo/speech-swift", branch: "main")
]केवल वही इम्पोर्ट करें जो आपको चाहिए — प्रत्येक मॉडल अपना SPM target है:
import Qwen3ASR // स्पीच रिकग्निशन (MLX)
import ParakeetASR // स्पीच रिकग्निशन (CoreML, बैच)
import ParakeetStreamingASR // पार्शियल्स + EOU के साथ स्ट्रीमिंग डिक्टेशन
import NemotronStreamingASR // बहुभाषी स्ट्रीमिंग ASR नेटिव विराम चिह्न के साथ (0.6B, 40 भाषाएँ)
import OmnilingualASR // 1,672 भाषाएँ (CoreML + MLX)
import Qwen3TTS // टेक्स्ट-टू-स्पीच
import CosyVoiceTTS // वॉयस क्लोनिंग के साथ TTS
import VoxCPM2TTS // 48 kHz TTS, वॉयस क्लोनिंग + वॉयस डिज़ाइन (2B)
import KokoroTTS // टेक्स्ट-टू-स्पीच (iOS-ready)
import VibeVoiceTTS // लंबे-रूप / बहु-वक्ता TTS (EN/ZH)
import MagpieTTS // बहुभाषी TTS (NVIDIA Magpie 357M, MLX, 9 भाषाएँ)
import MagpieTTSCoreML // Magpie CoreML बैकएंड (CoreML + MLX हाइब्रिड, 8 भाषाएँ)
import Qwen3Chat // ऑन-डिवाइस LLM चैट
import FunctionGemma // ऑन-डिवाइस टूल-कॉल LLM
import MADLADTranslation // 400+ भाषाओं में बहु-दिशात्मक अनुवाद
import HibikiTranslate // स्ट्रीमिंग स्पीच-टू-स्पीच अनुवाद (FR/ES/PT/DE → EN)
import PersonaPlex // फुल-डुप्लेक्स स्पीच-टू-स्पीच
import SpeechVAD // VAD + स्पीकर डायराइज़ेशन + एम्बेडिंग
import SpeechEnhancement // नॉइज़ सप्रेशन
import SpeechRestoration // स्पीच रिस्टोरेशन — नॉइज़ हटाना + डीरीवर्ब (Sidon, CoreML, 48 kHz)
import SourceSeparation // म्यूज़िक सोर्स सेपरेशन (Open-Unmix, 4 स्टेम)
import MAGNeTMusicGen // टेक्स्ट से संगीत निर्माण (30 सेकंड, 32 kHz)
import FlashSR // ऑडियो सुपर-रेज़ोल्यूशन (48 kHz, 1-स्टेप डिफ्यूज़न)
import SpeechUI // स्ट्रीमिंग ट्रांसक्रिप्ट के लिए SwiftUI कॉम्पोनेंट
import AudioCommon // शेयर्ड प्रोटोकॉल और यूटिलिटीज़- Swift 6+, Xcode 16+ (Metal Toolchain के साथ)
- macOS 15+ (Sequoia) या iOS 18+, Apple Silicon (M1/M2/M3/M4)
macOS 15 / iOS 18 न्यूनतम आवश्यकता MLState से आती है —— Apple की परसिस्टेंट ANE स्टेट API —— जिसका उपयोग CoreML पाइपलाइन (Qwen3-ASR, Qwen3-Chat, Qwen3-TTS) टोकन स्टेप्स के बीच KV कैश को Neural Engine पर रखने के लिए करती हैं।
git clone https://github.com/soniqo/speech-swift
cd speech-swift
make buildmake build Swift पैकेज और MLX Metal shader library दोनों को कंपाइल करता है। GPU इन्फ़रेंस के लिए Metal library आवश्यक है — इसके बिना आपको रनटाइम पर Failed to load the default metallib दिखेगा। make debug डीबग बिल्ड के लिए, make test टेस्ट सूट के लिए।
- DictateDemo (डॉक्स) — macOS मेनू-बार स्ट्रीमिंग डिक्टेशन, लाइव पार्शियल्स, VAD-संचालित एंड-ऑफ-अटरन्स डिटेक्शन, और वन-क्लिक कॉपी। बैकग्राउंड एजेंट के रूप में चलता है (Parakeet-EOU-120M + Silero VAD)।
- iOSEchoDemo — iOS इको डेमो (Parakeet ASR + Kokoro TTS)। डिवाइस और सिम्युलेटर।
- PersonaPlexDemo — माइक इनपुट, VAD, और मल्टी-टर्न संदर्भ के साथ संवादात्मक वॉयस असिस्टेंट। macOS। M2 Max पर RTF ~0.94 (रियल-टाइम से तेज़)।
- SpeechDemo — टैब्ड इंटरफ़ेस में डिक्टेशन और TTS सिंथेसिस। macOS।
प्रत्येक डेमो के README में बिल्ड निर्देश हैं।
नीचे दिए गए स्निपेट्स प्रत्येक डोमेन के लिए न्यूनतम पथ दिखाते हैं। प्रत्येक अनुभाग soniqo.audio पर पूर्ण गाइड से लिंक होता है जिसमें कॉन्फ़िगरेशन विकल्प, कई बैकएंड, स्ट्रीमिंग पैटर्न, और CLI रेसिपी शामिल हैं।
स्पीच-टू-टेक्स्ट — पूर्ण गाइड →
import Qwen3ASR
let model = try await Qwen3ASRModel.fromPretrained()
let text = model.transcribe(audio: audioSamples, sampleRate: 16000)वैकल्पिक बैकएंड: Parakeet TDT (CoreML, 32× रियल-टाइम), Omnilingual ASR (1,672 भाषाएँ, CoreML या MLX), स्ट्रीमिंग डिक्टेशन (लाइव पार्शियल्स)।
फ़ोर्स्ड अलाइनमेंट — पूर्ण गाइड →
import Qwen3ASR
let aligner = try await Qwen3ForcedAligner.fromPretrained()
let aligned = aligner.align(
audio: audioSamples,
text: "Can you guarantee that the replacement part will be shipped tomorrow?",
sampleRate: 24000
)
for word in aligned {
print("[\(word.startTime)s - \(word.endTime)s] \(word.text)")
}टेक्स्ट-टू-स्पीच — पूर्ण गाइड →
import Qwen3TTS
import AudioCommon
let model = try await Qwen3TTSModel.fromPretrained()
let audio = model.synthesize(text: "Hello world", language: "english")
try WAVWriter.write(samples: audio, sampleRate: 24000, to: outputURL)वैकल्पिक TTS इंजन: CosyVoice3 (स्ट्रीमिंग + वॉयस क्लोनिंग + इमोशन टैग), Kokoro-82M (iOS-ready, 54 वॉयस), VibeVoice (लंबे-रूप पॉडकास्ट / बहु-वक्ता, EN/ZH), वॉयस क्लोनिंग।
स्पीच-टू-स्पीच — पूर्ण गाइड →
import PersonaPlex
let model = try await PersonaPlexModel.fromPretrained()
let responseAudio = model.respond(userAudio: userSamples)
// 24 kHz मोनो Float32 आउटपुट — प्लेबैक के लिए तैयारLLM चैट — पूर्ण गाइड →
import Qwen3Chat
import FunctionGemma
let chat = try await Qwen35MLXChat.fromPretrained()
chat.chat(messages: [(.user, "Explain MLX in one sentence")]) { token, isFinal in
print(token, terminator: "")
}अनुवाद — पूरी गाइड →
import MADLADTranslation
let translator = try await MADLADTranslator.fromPretrained()
let es = try translator.translate("Hello, how are you?", to: "es")
// → "Hola, ¿cómo estás?"स्पीच अनुवाद — पूरी गाइड →
import HibikiTranslate
import AudioCommon
let model = try await HibikiTranslateModel.fromPretrained()
let pcm = try AudioFileLoader.load(url: input, targetSampleRate: 24000)
let (englishAudio, textTokens) = model.translate(
sourceAudio: pcm, sourceLanguage: .fr
)
// Hibiki Zero-3B — FR/ES/PT/DE → EN, ऑन-डिवाइस, स्ट्रीमिंग Mimi कोडेकवॉयस एक्टिविटी डिटेक्शन — पूर्ण गाइड →
import SpeechVAD
let vad = try await SileroVADModel.fromPretrained()
let segments = vad.detectSpeech(audio: samples, sampleRate: 16000)
for s in segments { print("\(s.startTime)s → \(s.endTime)s") }स्पीकर डायराइज़ेशन — पूर्ण गाइड →
import SpeechVAD
let diarizer = try await DiarizationPipeline.fromPretrained()
let segments = diarizer.diarize(audio: samples, sampleRate: 16000)
for s in segments { print("Speaker \(s.speakerId): \(s.startTime)s - \(s.endTime)s") }स्पीच एन्हांसमेंट — पूर्ण गाइड →
import SpeechEnhancement
let denoiser = try await DeepFilterNet3Model.fromPretrained()
let clean = try denoiser.enhance(audio: noisySamples, sampleRate: 48000)स्पीच रिस्टोरेशन — पूर्ण गाइड →
Sidon (w2v-BERT 2.0 प्रेडिक्टर + DAC वोकोडर, Core ML) के साथ संयुक्त नॉइज़ हटाना और डीरीवर्ब। एक सामान्य नॉइज़ सप्रेसर के विपरीत, Sidon को स्पीकर की पहचान संरक्षित रखने के लिए ट्रेन किया गया है, इसलिए यह TTS से पहले किसी शोरयुक्त या रीवर्बरेंट वॉयस-क्लोनिंग रेफ़रेंस को साफ़ करने के लिए उपयुक्त है। इनपुट 16 kHz है; आउटपुट 48 kHz मोनो है।
import SpeechRestoration
let restorer = try await SpeechRestorer.fromPretrained() // .fp16 (default) or .int8
let clean = try restorer.restore(audio: noisySamples, sampleRate: 16000) // → 48 kHzCLI से:
speech restore noisy.wav -o clean.wav # denoise + dereverb, 48 kHz output
speech restore noisy.wav --variant int8 # smaller, lower peak RAM
# Clean a voice-cloning reference before TTS (opt-in; preserves speaker identity):
speech speak "Hello" --engine voxcpm2 --voice-sample ref.wav --clean-referenceवॉयस पाइपलाइन (ASR → LLM → TTS) — पूर्ण गाइड →
import SpeechCore
let pipeline = VoicePipeline(
stt: parakeetASR,
tts: qwen3TTS,
vad: sileroVAD,
config: .init(mode: .voicePipeline),
onEvent: { event in print(event) }
)
pipeline.start()
pipeline.pushAudio(micSamples)VoicePipeline रियल-टाइम वॉयस-एजेंट स्टेट मशीन है (speech-core द्वारा संचालित) जो VAD-संचालित टर्न डिटेक्शन, इंटरप्शन हैंडलिंग, और eager STT के साथ आता है। यह किसी भी SpeechRecognitionModel + SpeechGenerationModel + StreamingVADProvider को कनेक्ट करता है।
speech-server --port 8080सभी मॉडलों को HTTP REST + WebSocket endpoints के माध्यम से एक्सपोज़ करता है, जिसमें OpenAI-संगत APIs शामिल हैं: /v1/realtime पर Realtime WebSocket और /v1/audio/transcriptions पर ट्रांसक्रिप्शन REST endpoint। देखें Sources/AudioServer/।
speech-swift प्रति मॉडल एक SPM टारगेट में विभाजित है ताकि उपभोक्ता केवल उसी के लिए भुगतान करें जो वे इम्पोर्ट करते हैं। साझा इन्फ़्रास्ट्रक्चर AudioCommon (प्रोटोकॉल, ऑडियो I/O, HuggingFace डाउनलोडर, SentencePieceModel) और MLXCommon (वेट लोडिंग, QuantizedLinear हेल्पर्स, multi-head attention के लिए SDPA हेल्पर) में रहता है।
बैकएंड, मेमोरी टेबल्स, और मॉड्यूल मैप के साथ पूर्ण आर्किटेक्चर डायग्राम → soniqo.audio/architecture · API संदर्भ → soniqo.audio/api · बेंचमार्क → soniqo.audio/benchmarks
स्थानीय डॉक्स (रिपॉज़िटरी):
- मॉडल: Qwen3-ASR · Qwen3-TTS · CosyVoice · Kokoro · VibeVoice · Parakeet TDT · Parakeet Streaming · Nemotron Streaming · Omnilingual ASR · PersonaPlex · Hibiki · FireRedVAD · Source Separation · HTDemucs · MAGNeT · FlashSR
- इन्फ़रेंस: Qwen3-ASR · Parakeet TDT · Parakeet Streaming · Nemotron Streaming · Omnilingual ASR · TTS · VibeVoice · Hibiki · Forced Aligner · Silero VAD · स्पीकर डायराइज़ेशन · स्पीच एन्हांसमेंट · MAGNeT · FlashSR
- संदर्भ: शेयर्ड प्रोटोकॉल
मॉडल वेट पहले उपयोग पर HuggingFace से डाउनलोड होते हैं और ~/Library/Caches/qwen3-speech/ में कैश होते हैं। QWEN3_CACHE_DIR (CLI) या cacheDir: (Swift API) से ओवरराइड करें। सभी fromPretrained() एंट्री पॉइंट offlineMode: true भी स्वीकार करते हैं ताकि वेट कैश होने पर नेटवर्क स्किप किया जा सके।
मुख्यभूमि चीन के उपयोगकर्ता (या जहाँ भी huggingface.co धीमा/अवरुद्ध है) HF_ENDPOINT सेट करके मिरर से डाउनलोड कर सकते हैं, जैसे export HF_ENDPOINT=https://hf-mirror.com।
सैंडबॉक्स्ड iOS कंटेनर पाथ सहित पूर्ण विवरण के लिए docs/inference/cache-and-offline.md देखें।
यदि आपको रनटाइम पर Failed to load the default metallib दिखता है, तो Metal shader library गुम है। मैनुअल swift build के बाद make build या ./scripts/build_mlx_metallib.sh release चलाएँ। यदि Metal Toolchain गुम है, तो पहले इसे इंस्टॉल करें:
xcodebuild -downloadComponent MetalToolchainmake test # पूर्ण सुइट (यूनिट + मॉडल डाउनलोड के साथ E2E)
swift test --skip E2E # केवल यूनिट (CI-सुरक्षित, कोई डाउनलोड नहीं)
swift test --filter Qwen3ASRTests # विशिष्ट मॉड्यूलE2E टेस्ट क्लासेस E2E उपसर्ग का उपयोग करती हैं ताकि CI उन्हें --skip E2E से फ़िल्टर कर सके। पूर्ण टेस्टिंग नियम के लिए CLAUDE.md देखें।
PRs का स्वागत है — बग फ़िक्स, नए मॉडल इंटीग्रेशन, डॉक्यूमेंटेशन। फ़ॉर्क करें, feature ब्रांच बनाएँ, make build && make test, main के विरुद्ध PR खोलें।
Apache 2.0