Apple Silicon için yapay zeka destekli konuşma modelleri; MLX Swift ve CoreML ile çalışır.
📖 Read in: English · 中文 · 日本語 · 한국어 · Español · Deutsch · Français · हिन्दी · Português · Русский · العربية · Tiếng Việt · Türkçe · ไทย
Mac ve iOS için cihaz üzerinde konuşma tanıma, sentezleme ve anlama. Apple Silicon üzerinde yerel olarak çalışır — bulut yok, API anahtarı yok, hiçbir veri cihazınızdan dışarı çıkmaz.
📚 Tam Dokümantasyon → · 🤗 HuggingFace Modelleri · 📝 Blog · 💬 Discord
MacBook üzerinde yerel konuşma yapay zekası — açık kaynak kütüphanenin 4 dakikalık tanıtımını YouTube'da izleyin
Kullanım senaryoları: Sesli Ajanlar · Transkripsiyon · Konuşma Üretimi
Speech Swift paketine doğrulanabilir biçimde başvuran 16 açık depo.
AnythingLLM · Palmier Pro · Anarlog · ClawdHome · Jabber · Ora · VoxFlow · LokalBot · Voicey · HushType · DexDictate macOS · Watchtower · Wishper App · FriSpeak · Scribe · VoicePen
Yetenek grupları: STT / ASR · Hizalama · TTS · LLM ve çeviri · Speech-to-Speech · İyileştirme / restorasyon · Kaynak ayırma · Müzik / ses üretimi · Wake word, VAD, konuşmacı ayrıştırma ve konuşmacı kimliği
STT / ASR
- Qwen3-ASR — Konuşmadan metne (otomatik konuşma tanıma, 52 dil, MLX + CoreML)
- WhisperASR — Whisper Large-v3 Turbo speech-to-text via native CoreML runtime (ANE, multilingual)
- MOSS Transcribe Diarize — Model tarafından üretilen konuşmacı etiketleri ve zaman damgalarıyla yerel CoreML/MLX çevrimdışı transkripsiyonu (128K MLX bağlamı; INT5/INT8)
- Parakeet TDT — CoreML üzerinden konuşmadan metne (Neural Engine, NVIDIA FastConformer + TDT kod çözücü, 25 dil)
- Omnilingual ASR — Konuşmadan metne (Meta wav2vec2 + CTC, 32 yazı sistemi üzerinde 1.672 dil, CoreML 300M + MLX 300M/1B/3B/7B)
- Cohere Transcribe 2B — Yerel MLX konuşmadan metne (14 dil, FP16/INT5/INT8)
- Voxtral Mini 3B — Yerel MLX konuşmadan metne (8 dil, FP16/INT5/INT8) — M5 Pro üzerinde RTF 0,074
- Akış Dikte — Kısmi sonuçlar ve söyleyiş sonu algılaması ile gerçek zamanlı dikte (Parakeet-EOU-120M)
- Nemotron Streaming (Çok dilli) — Yerel noktalama ve büyük harf desteğiyle düşük gecikmeli akış ASR (NVIDIA Nemotron-3.5-ASR-Streaming-0.6B, CoreML + MLX, 40 dil-yerel ayarı)
- Nemotron Streaming (İngilizce) — Yerel noktalama ve büyük harf desteğiyle düşük gecikmeli akış ASR (NVIDIA Nemotron-Speech-Streaming-0.6B, CoreML, yalnızca İngilizce, çok dilli varyanttan daha küçük ve hızlı)
Hizalama
- Qwen3-ForcedAligner — Kelime düzeyinde zaman damgası hizalama (ses + metin → zaman damgaları)
TTS / Konuşma üretimi
- Qwen3-TTS — Metinden konuşmaya (en yüksek kalite, akış, özel konuşmacılar, 10 dil)
- CosyVoice TTS — Ses klonlama, çok konuşmacılı diyalog, duygu etiketleri ile akış TTS (9 dil)
- VoxCPM2 — Ses klonlama ve talimat odaklı ses tasarımı ile 48 kHz stüdyo kalitesinde TTS (2B, MLX bf16/int8, 30 dil)
- IndexTTS2 — Native MLX voice cloning from a reference voice (IndexTeam IndexTTS-2, 1.5B-class fp16 bundle, speaker/emotion/pause controls)
- F5-TTS — Zero-shot voice cloning from a short reference clip + transcript (SWivid F5-TTS v1 Base, DiT flow matching + Vocos, MLX fp16, 24 kHz, English + Mandarin; non-commercial license)
- Higgs TTS 3 — Conversational TTS with zero-shot voice cloning and inline emotion/style/SFX/prosody tags (Boson Higgs TTS 3, Qwen3-4B backbone, MLX bf16, 24 kHz, 100+ languages; research/non-commercial license)
- Kokoro TTS — Cihaz üzerinde TTS (82M, CoreML/Neural Engine, 54 ses, iOS için hazır, 10 dil)
- VibeVoice TTS — Uzun biçimli / çok konuşmacılı TTS (Microsoft VibeVoice Realtime-0.5B + 1.5B, MLX, 90 dakikaya kadar podcast/sesli kitap sentezi, EN/ZH)
- Magpie TTS — Çok dilli TTS (NVIDIA Magpie-TTS Multilingual 357M, MLX INT8 411 MB veya CoreML INT8 342 MB, 9 dil, 5 hazır konuşmacı, MLX'te akış)
- Supertonic TTS — Cihaz üzerinde flow-matching TTS (Supertone Supertonic-3 99M, CoreML/Neural Engine, 31 dil, 10 ses, G2P-free, 44.1 kHz)
- Chatterbox TTS — Zero-shot ses klonlama özellikli çok dilli TTS (Resemble AI Chatterbox Multilingual, MLX fp16 ~1,3 GB, 23 çalışma zamanı dili; İbranice için niqqud gerekir, MIT)
- OmniVoice TTS — Zero-shot ses klonlama ile otoregresif olmayan difüzyon TTS (k2-fsa OmniVoice, Qwen3 omurgası, MLX fp16 varsayılan / int8 kullanılabilir, 600+ dil, Apache-2.0)
- Indic-Mio — Hindi/Indic TTS with inline emotion markers and optional reference-voice cloning (MLX, 24 kHz)
- CSM (Conversational Speech Model) — Bir referans klip + transkript üzerinden zero-shot ses klonlama ile diyalog odaklı metinden konuşmaya (Sesame CSM-1B, Llama-1B omurgası + Mimi codec, MLX int8/fp16, 24 kHz, İngilizce; Apache-2.0)
LLM ve çeviri
- Qwen3Chat — Cihaz üzerinde LLM sohbet (Qwen3.5-0.8B MLX/CoreML artı dense Qwen3 4B ve Gemma 4 E2B/E4B MLX arka uçları, akış token'ları)
- FunctionGemma — Cihaz üzerinde yapılandırılmış fonksiyon / araç çağrıları için LLM (Gemma 3 270M, CoreML 8-bit paletleme, Neural Engine, ~252 tok/s)
- MADLAD-400 — 400+ dil arasında çoktan-çoğa çeviri (3B, MLX INT4 + INT8, T5 v1.1, Apache 2.0)
Speech-to-Speech ve sesli ajanlar
- Hibiki Zero-3B — Akışlı konuşmadan konuşmaya çeviri (FR/ES/PT/DE → EN, MLX INT4 + INT8, Kyutai Moshi/Mimi yığını, CC-BY-4.0)
- PersonaPlex — Tam çift yönlü (full-duplex) konuşmadan konuşmaya (7B, ses girişi → ses çıkışı, 18 ses ön ayarı)
- VoiceChat 11B — Sürekli konuşma girişi, duplex metin/işlev kanalları ve EAR-TTS + nöral codec üzerinden doğrudan konuşma çıkışı sunan native MLX duplex speech-to-speech (INT5/INT8)
- Audio2Face-3D — Konuşmayla sürülen avatar yüz animasyonu (NVIDIA Audio2Face-3D v2.3 Mark, 301 yüz katsayısı, MLX)
İyileştirme, ayırma ve ses üretimi
- DeepFilterNet3 — Gerçek zamanlı gürültü bastırma (2.1M parametre, 48 kHz)
- LocalVQE v1.4-AEC — Ayrı ve eşzamanlı mikrofon ile oynatma referansı akışlarından akışlı akustik yankı giderme (Core ML + yerel uyarlamalı filtre, 16 kHz, 16 ms algoritmik gecikme)
- Kaynak Ayrıştırma — HTDemucs (Demucs v4) + Open-Unmix ile müzik kaynağı ayrıştırma (UMX-HQ / UMX-L, 4 katman: vokal/davul/bas/diğer, 44,1 kHz stereo)
- MAGNeT — Metinden müziğe üretim (Meta MAGNeT Small 300M / Medium 1.5B, MLX INT8, 32 kHz mono'da 30 sn klipler, maskelenmiş paralel kod çözme)
- Stable Audio 3 — Text-to-audio/music generation (Stable Audio 3 Medium, MLX INT8/INT4, 44.1 kHz stereo, variable length)
- FlashSR — Ses süper çözünürlük (FlashSR ICASSP 2025, MLX, 48 kHz mono, 1 adımda damıtılmış difüzyon, INT4 363 MB / INT8 720 MB)
Sıra algılama, konuşmacı ayrıştırma ve konuşmacı kimliği
- Uyandırma kelimesi — Cihaz üzerinde anahtar kelime tespiti (KWS Zipformer 3M, CoreML, 26× gerçek zaman, yapılandırılabilir anahtar kelime listesi)
- VAD — Ses etkinlik algılama (Silero akış, Pyannote çevrimdışı, FireRedVAD 100+ dil)
- Konuşmacı Ayrımı — Kim ne zaman konuştu (Pyannote pipeline, Neural Engine üzerinde uçtan uca Sortformer) — artık artımlı akış oturumuyla (sabit konuşmacı kimlikleri, 480 ms'de bir güncelleme)
- Konuşmacı Gömmeleri — WeSpeaker ResNet34 (256-boyut), ReDimNet2-B6 ile adlandırılmış ses kimliği (192-boyut), CAM++ (192-boyut)
Makaleler: 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 Nis 2026 — Apple Silicon'da MLX vs CoreML — Doğru Backend'i Seçmek İçin Pratik Bir Rehber
- 20 Mar 2026 — Tamamen Mac'inizde Çalışan 600M'lik Bir Modelle Whisper Large v3'ü Geçtik
- 26 Şub 2026 — Apple Silicon'da Konuşmacı Ayrımı ve Ses Etkinlik Algılama — MLX ile Yerel Swift
- 23 Şub 2026 — Apple Silicon'da NVIDIA PersonaPlex 7B — MLX ile Yerel Swift'te Tam Çift Yönlü Konuşmadan Konuşmaya
- 12 Şub 2026 — Qwen3-ASR Swift: Apple Silicon İçin Cihaz Üzerinde ASR + TTS — Mimari ve Benchmark'lar
Paketi Package.swift dosyanıza ekleyin:
.package(url: "https://github.com/soniqo/speech-swift", branch: "main")Yalnızca ihtiyacınız olan modülleri içe aktarın — her model kendi SPM kütüphanesidir, böylece kullanmadığınız şey için bedel ödemezsiniz:
.product(name: "ParakeetStreamingASR", package: "speech-swift"),
.product(name: "SpeechUI", package: "speech-swift"), // isteğe bağlı SwiftUI görünümleriBir ses tamponunu 3 satırda transkribe edin:
import ParakeetStreamingASR
let model = try await ParakeetStreamingASRModel.fromPretrained()
let text = try model.transcribeAudio(audioSamples, sampleRate: 16000)Kısmi sonuçlarla canlı akış:
for await partial in model.transcribeStream(audio: samples, sampleRate: 16000) {
print(partial.isFinal ? "FINAL: \(partial.text)" : "... \(partial.text)")
}~10 satırda SwiftUI dikte görünümü:
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 yalnızca TranscriptionView (kesin sonuçlar + kısmi sonuçlar) ve TranscriptionStore (akış ASR adaptörü) sunar. Ses görselleştirme ve oynatma için AVFoundation kullanın.
Mevcut SPM ürünleri: Qwen3ASR, WhisperASR, MossTranscribe, Qwen3TTS, Qwen3TTSCoreML, ParakeetASR, ParakeetStreamingASR, NemotronStreamingASR, OmnilingualASR, CohereTranscribeASR, VoxtralASR, KokoroTTS, SupertonicTTS, VibeVoiceTTS, CosyVoiceTTS, VoxCPM2TTS, IndexTTS2TTS, F5TTS, HiggsTTS, ChatterboxTTS, OmniVoiceTTS, IndicMioTTS, FishAudioTTS, MagpieTTS, MagpieTTSCoreML, MAGNeTMusicGen, StableAudio3MusicGen, FlashSR, PersonaPlex, VoiceChat, CSM, Audio2Face3D, HibikiTranslate, MADLADTranslation, SpeechVAD, SpeechLanguageID, SpeechWakeWord, SpeechEnhancement, SpeechRestoration, SourceSeparation, Qwen3Chat, FunctionGemma, SpeechCore, SpeechUI, AudioCommon.
Aşağıda kompakt bir görünüm. Boyutlar, kuantizasyonlar, indirme URL'leri ve bellek tablolarıyla tam model kataloğu → soniqo.audio/architecture.
| Model | Görev | Backend'ler | Boyutlar | Diller |
|---|---|---|---|---|
| Qwen3-ASR | Konuşma → Metin | MLX, CoreML (hibrit) | 0.6B, 1.7B | 52 |
| WhisperASR | Speech → Text | CoreML (ANE) | Large-v3 Turbo | Multi |
| MOSS Transcribe Diarize | Konuşma → Metin + konuşmacı zaman damgaları | CoreML / MLX | 0.9B (MLX INT5/INT8; CoreML INT8/FP16) | Çok dilli |
| Parakeet TDT | Konuşma → Metin | CoreML (ANE) | 0.6B | 25 Avrupa dili |
| Parakeet EOU | Konuşma → Metin (akış) | CoreML (ANE) | 120M | 25 Avrupa dili |
| Nemotron Streaming (Çok dilli) | Konuşma → Metin (akış, noktalamalı) | CoreML (ANE), MLX | 0.6B | 40 |
| Nemotron Streaming (İngilizce) | Konuşma → Metin (akış, noktalamalı) | CoreML (ANE) | 0.6B | EN |
| Omnilingual ASR | Konuşma → Metin | CoreML (ANE), MLX | 300M / 1B / 3B / 7B | 1.672 |
| Cohere Transcribe 2B | Konuşma → Metin | MLX | 2B (FP16 / INT5 / INT8) | 14 |
| Voxtral Mini 3B | Konuşma → Metin | MLX | 3B (FP16 / INT5 / INT8) | 8 |
| Qwen3-ForcedAligner | Ses + Metin → Zaman damgaları | MLX, CoreML | 0.6B | Çoklu |
| Qwen3-TTS | Metin → Konuşma | MLX, CoreML | 0.6B, 1.7B | 10 |
| CosyVoice3 | Metin → Konuşma | MLX | 0.5B | 9 |
| VoxCPM2 | Metin → Konuşma (48 kHz, ses tasarımı + klonlama) | MLX | 2B (bf16/int8) | 30 |
| IndexTTS2 | Text → Speech (zero-shot voice cloning) | MLX | 1.5B-class (fp16) | EN/ZH |
| F5-TTS | Text → Speech (zero-shot voice cloning) | MLX | 336M (fp16) | EN/ZH |
| Higgs TTS 3 | Text → Speech (conversational, zero-shot voice cloning) | MLX | 4B (bf16) | 100+ |
| Kokoro-82M | Metin → Konuşma | CoreML (ANE) | 82M | 10 |
| Supertonic-3 | Metin → Konuşma (44.1 kHz, flow-matching, G2P-free) | CoreML (ANE) | 99M | 31 |
| VibeVoice Realtime-0.5B | Metin → Konuşma (uzun biçimli, çok konuşmacılı) | MLX | 0.5B | EN/ZH |
| VibeVoice 1.5B | Metin → Konuşma (90 dakikaya kadar podcast) | MLX | 1.5B | EN/ZH |
| Magpie-TTS Multilingual | Metin → Konuşma (5 hazır konuşmacı, akış) | MLX / CoreML | 357M (MLX INT8, CoreML INT8) | 9 (CoreML, JA hariç) |
| Chatterbox Multilingual | Metin → Konuşma (zero-shot klonlama) | MLX | 0.8B (fp16) | 23 (HE için niqqud gerekir) |
| OmniVoice | Metin → Konuşma (NAR difüzyon, zero-shot klonlama) | MLX | 0.8B (fp16 varsayılan / int8) | 600+ |
| Indic-Mio | Text → Speech (Hindi/Indic, emotion tags, voice cloning) | MLX | fp16 | Hindi / Indic |
| Fish Audio S2 Pro | Metin → Konuşma (zero-shot klonlama, açık stil işaretleri) | MLX | 0.5B-class (fp16) | Çok dilli |
| CSM | Metin → Konuşma (diyalog odaklı, zero-shot klonlama) | MLX | 1B (int8 / fp16) | EN |
| Qwen3.5 Chat | Text → Text (LLM) | MLX, CoreML | 0.8B | Multi |
| Qwen3 Dense Chat | Text → Text (LLM) | MLX | 4B | Multi |
| Gemma 4 Chat | Text → Text (LLM) | MLX | E2B / E4B (4-bit) | Multi |
| FunctionGemma | Metin → Araç çağrıları (LLM) | CoreML | 270M | EN |
| MADLAD-400 | Metin → Metin (Çeviri) | MLX | 3B | 400+ |
| Hibiki Zero-3B | Konuşma → Konuşma (Çeviri) | MLX | 3B | FR/ES/PT/DE → EN |
| PersonaPlex | Konuşma → Konuşma | MLX | 7B | EN |
| VoiceChat 11B | Konuşma → Konuşma + Metin | MLX | 11B (INT5 / INT8) | EN |
| Audio2Face-3D | Konuşma → Yüz animasyonu | MLX | v2.3 Mark | Bağımsız |
| Silero VAD | Ses Etkinlik Algılama | MLX, CoreML | 309K | Bağımsız |
| KWS Zipformer | Audio → Wake word | CoreML (ANE) | 3M | EN/custom keywords |
| Pyannote | VAD + Konuşmacı Ayrımı | MLX | 1.5M | Bağımsız |
| Pyannote Community-1 | Konuşmacı ayrıştırma + konuşmacı gömmeleri | CoreML (ANE) + Swift VBx | 8.35M | Bağımsız |
| Sortformer | Konuşmacı Ayrımı (E2E), artımlı akış | CoreML (ANE) | 117M | Bağımsız |
| DeepFilterNet3 | Konuşma İyileştirme | CoreML | 2.1M | Bağımsız |
| LocalVQE v1.4-AEC | Akustik Yankı Giderme | CoreML + C++ | 200K + 2,742 | Bağımsız |
| Sidon | Konuşma Onarımı (gürültü bastırma + yankı giderme, 48 kHz) | CoreML | w2v-BERT 2.0 + DAC (fp16/int8) | Bağımsız |
| HTDemucs (Demucs v4) | Kaynak Ayrıştırma | MLX | 168M | Bağımsız |
| Open-Unmix | Kaynak Ayrıştırma | MLX | 8.6M | Bağımsız |
| MAGNeT | Metin → Müzik (30s @ 32 kHz) | MLX | 300M / 1.5B (int4/int8) | EN prompt'ları |
| Stable Audio 3 | Text → Music/audio (44.1 kHz stereo) | MLX | Medium 1.4B (int4/int8) | EN prompts |
| FlashSR | Ses süper çözünürlük (48 kHz) | MLX | 363 MB / 720 MB (int4/int8) | Bağımsız |
| WeSpeaker | Konuşmacı Gömme | MLX, CoreML | 6.6M | Bağımsız |
| SpeechBrain ECAPA VoxLingua107 | Dil tanımlama | MLX, CoreML | 21.25M | 107 dil |
| ReDimNet2-B6 | Adlandırılmış Ses Kimliği | CoreML | 12.3M | Bağımsız |
Yerel ARM Homebrew (/opt/homebrew) gerektirir. Rosetta/x86_64 Homebrew desteklenmez.
brew install speechArdından:
speech transcribe recording.wav
speech transcribe recording.wav --engine cohere
speech transcribe recording.wav --engine voxtral
speech transcribe recording.wav --engine moss
speech transcribe meeting.wav --engine moss --backend mlx
speech speak "Hello world"
speech csm "Nice to meet you" --ref-audio voice.wav --ref-text "reference transcript"
speech translate "Hello, how are you?" --to es
speech respond --input question.wav --transcript
speech voice-chat
speech-server --port 8080 # yerel HTTP / WebSocket sunucusu (OpenAI-compatible /v1/realtime + /v1/audio/transcriptions)dependencies: [
.package(url: "https://github.com/soniqo/speech-swift", branch: "main")
]Yalnızca ihtiyacınız olanı içe aktarın — her model kendi SPM hedefidir:
import Qwen3ASR // Konuşma tanıma (MLX)
import WhisperASR // Whisper Large-v3 Turbo (CoreML)
import MossTranscribe // MOSS transcription with timestamps + speaker labels (CoreML + MLX)
import ParakeetASR // Konuşma tanıma (CoreML, batch)
import ParakeetStreamingASR // Kısmi sonuçlar + EOU ile akış dikte
import NemotronStreamingASR // Yerel noktalama ile çok dilli akış ASR (0.6B, 40 dil)
import OmnilingualASR // 1.672 dil (CoreML + MLX)
import CohereTranscribeASR // Cohere Transcribe 2B (MLX, 14 dil)
import VoxtralASR // Voxtral Mini 3B (MLX, 8 dil)
import Qwen3TTS // Metinden konuşmaya
import CosyVoiceTTS // Ses klonlama ile metinden konuşmaya
import VoxCPM2TTS // Ses klonlama + ses tasarımı ile 48 kHz TTS (2B)
import IndexTTS2TTS // Native MLX voice cloning from reference audio
import F5TTS // Zero-shot voice cloning (DiT flow matching + Vocos)
import HiggsTTS // Conversational TTS + cloning (Qwen3 backbone, control tags)
import CSM // Conversational Speech Model — text→audio + voice cloning (Sesame CSM-1B, MLX)
import KokoroTTS // Metinden konuşmaya (iOS için hazır)
import VibeVoiceTTS // Uzun biçimli / çok konuşmacılı TTS (EN/ZH)
import MagpieTTS // Çok dilli TTS (NVIDIA Magpie 357M, MLX, 9 dil)
import MagpieTTSCoreML // Magpie CoreML backend'i (hibrit CoreML + MLX, 8 dil)
import FishAudioTTS // Ses klonlama özellikli deneysel Fish Audio S2 Pro runtime
import Qwen3Chat // Cihaz üzerinde LLM sohbet
import FunctionGemma // Cihaz üzerinde araç çağrı LLM'i
import MADLADTranslation // 400+ dil arasında çoktan-çoğa çeviri
import HibikiTranslate // Akışlı konuşmadan konuşmaya çeviri (FR/ES/PT/DE → EN)
import PersonaPlex // Tam çift yönlü konuşmadan konuşmaya
import SpeechVAD // VAD + konuşmacı ayrımı + gömmeler
import SpeechEnhancement // Gürültü bastırma
import SpeechRestoration // Konuşma onarımı — gürültü bastırma + yankı giderme (Sidon, CoreML, 48 kHz)
import SourceSeparation // Müzik kaynak ayrıştırma (Open-Unmix, 4 katman)
import SpeechUI // Akış transkriptleri için SwiftUI bileşenleri
import AudioCommon // Paylaşılan protokoller ve yardımcılar- Swift 6+, Xcode 16+ (Metal Toolchain ile)
- macOS 15+ (Sequoia) veya iOS 18+, Apple Silicon (M1/M2/M3/M4)
macOS 15 / iOS 18 minimum gereksinimi MLState'ten gelir — Apple'ın CoreML pipeline'larının (Qwen3-ASR, Qwen3-Chat, Qwen3-TTS) KV önbelleklerini token adımları arasında Neural Engine'de tutmak için kullandığı kalıcı ANE durum API'sı.
git clone https://github.com/soniqo/speech-swift
cd speech-swift
make buildmake build, Swift paketini ve MLX Metal shader kütüphanesini derler. Metal kütüphanesi GPU çıkarımı için gereklidir — onsuz çalışma zamanında Failed to load the default metallib hatası görürsünüz. Debug build'leri için make debug, test paketi için make test.
Tam derleme ve kurulum rehberi →
- DictateDemo (dokümantasyon) — Canlı kısmi sonuçlar, VAD tabanlı söyleyiş sonu algılaması ve tek tıklama kopyalama ile macOS menü çubuğu akış dikte. Arka plan ajanı olarak çalışır (Parakeet-EOU-120M + Silero VAD).
- iOSEchoDemo — iOS yankı demosu (Parakeet ASR + Kokoro TTS). Cihaz ve simülatör.
- PersonaPlexDemo — Mikrofon girişi, VAD ve çok turlu bağlam ile konuşmacı sesli asistan. macOS. M2 Max üzerinde RTF ~0.94 (gerçek zamandan hızlı).
- Soniqo VoiceChat CLI (kılavuz) — Canlı RNN-T altyazıları, model tabanlı sıra alma, uyarlanabilir EAR-TTS ayrıntısı ve isteğe bağlı MCP araçları sunan yerel tam çift yönlü Nemotron 11B terminal asistanı. Birlikte gelen Apple Reminders yapılandırması yalnızca oluşturma, listeleme ve güncelleme işlemlerini açar.
- SpeechDemo — Sekmeli arayüzde dikte ve TTS sentezi. macOS.
Release derlemesinden sonra VoiceChat hatırlatıcı demosunu çalıştırın:
./.build/release/speech voice-chat \
--model /path/to/voicechat-mlx-int5 \
--mcp-config Examples/VoiceChatMCP/apple-reminders.jsonİfade, üretilen telaffuzun bitişi ve modelin çözdüğü araç yaşam döngüsü zaman damgaları için --debug-timeline ekleyin. Araç bağımsız değişkenlerini gösterebilir; paylaşılan günlüklerde kullanmayın. Derleme ve çalışma ayrıntıları için uygulama README'lerine veya bağlantılı kılavuza bakın.
Aşağıdaki kod parçacıkları her alan için minimum yolu gösterir. Her bölüm, yapılandırma seçenekleri, birden fazla backend, akış desenleri ve CLI tarifleriyle soniqo.audio üzerindeki tam bir rehbere bağlanır.
Konuşmadan metne — tam rehber →
import Qwen3ASR
let model = try await Qwen3ASRModel.fromPretrained()
let text = model.transcribe(audio: audioSamples, sampleRate: 16000)Alternatif backend'ler: WhisperASR (Whisper Large-v3 Turbo, native CoreML), Parakeet TDT (CoreML, 32× gerçek zaman), Omnilingual ASR (1.672 dil, CoreML veya MLX), Akış dikte (canlı kısmi sonuçlar).
Zorunlu Hizalama — tam rehber →
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)")
}Metinden konuşmaya — tam rehber →
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)Alternatif TTS motorları: CosyVoice3 (akış + ses klonlama + duygu etiketleri), Kokoro-82M (iOS için hazır, 54 ses), VibeVoice (uzun biçimli podcast / çok konuşmacılı, EN/ZH), Fish Audio S2 Pro (deneysel zero-shot klonlama + köşeli parantez stil işaretleri), Ses klonlama.
Konuşmadan konuşmaya — tam rehber →
import PersonaPlex
let model = try await PersonaPlexModel.fromPretrained()
let responseAudio = model.respond(userAudio: userSamples)
// Oynatmaya hazır 24 kHz mono Float32 çıkışLLM Sohbet — tam rehber →
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: "")
}Çeviri — tam rehber →
import MADLADTranslation
let translator = try await MADLADTranslator.fromPretrained()
let es = try translator.translate("Hello, how are you?", to: "es")
// → "Hola, ¿cómo estás?"Konuşma Çevirisi — tam rehber →
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, cihaz üzerinde, akışlı Mimi codecSes Etkinlik Algılama — tam rehber →
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") }Konuşmacı Ayrımı — tam rehber →
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") }Konuşma İyileştirme — tam rehber →
import SpeechEnhancement
let denoiser = try await DeepFilterNet3Model.fromPretrained()
let clean = try denoiser.enhance(audio: noisySamples, sampleRate: 48000)Akustik yankı giderme — tam kılavuz →
import SpeechEnhancement
let aec = try await LocalVQEEchoCanceller.fromPretrained()
let cleanMicrophone = try aec.processFrame(
microphone: microphoneFrame,
reference: playbackReferenceFrame
)Konuşma Onarımı — tam rehber →
Sidon ile birlikte gürültü bastırma ve yankı giderme (w2v-BERT 2.0 tahmincisi + DAC vokoderi, Core ML). Genel bir gürültü bastırıcının aksine, Sidon konuşmacı kimliğini koruyacak şekilde eğitilmiştir; bu nedenle TTS öncesinde gürültülü veya yankılı bir ses klonlama referansını temizlemek için çok uygundur. Giriş 16 kHz; çıkış 48 kHz mono'dur.
import SpeechRestoration
let restorer = try await SpeechRestorer.fromPretrained() // .fp16 (default) or .int8
let clean = try restorer.restore(audio: noisySamples, sampleRate: 16000) // → 48 kHzCLI'dan:
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-referenceSes Pipeline'ı (ASR → LLM → TTS) — tam rehber →
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, VAD tabanlı tur algılama, kesinti yönetimi ve eager STT ile gerçek zamanlı sesli ajan durum makinesidir (speech-core tarafından desteklenir). Herhangi bir SpeechRecognitionModel + SpeechGenerationModel + StreamingVADProvider bileşenini birbirine bağlar.
speech-server --port 8080OpenAI uyumlu API'lar dahil olmak üzere her modeli HTTP REST + WebSocket uç noktaları üzerinden sunar: /v1/realtime üzerindeki Realtime WebSocket ve /v1/audio/transcriptions üzerindeki transkripsiyon REST uç noktası. Bkz. Sources/AudioServer/.
- SALM-Duplex: Efficient and Direct Duplex Modeling for Speech-to-Speech Language Model — VoiceChat 11B mimari referansı (Interspeech 2025).
speech-swift, kullanıcıların yalnızca içe aktardıkları şey için bedel ödemesi adına model başına bir SPM hedefine ayrılmıştır. Paylaşılan altyapı AudioCommon (protokoller, ses G/Ç, HuggingFace indirici, SentencePieceModel) ve MLXCommon (ağırlık yükleme, QuantizedLinear yardımcıları, SDPA çok başlı dikkat yardımcısı) içinde yer alır.
Backend'ler, bellek tabloları ve modül haritasıyla tam mimari diyagramı → soniqo.audio/architecture · API referansı → soniqo.audio/api · Benchmark'lar → soniqo.audio/benchmarks
Yerel dokümantasyon (depo):
- Modeller: Qwen3-ASR · WhisperASR · MOSS Transcribe Diarize · Qwen3-TTS · CosyVoice · Kokoro · VoxCPM2 · IndexTTS2 · F5-TTS · Higgs TTS 3 · VibeVoice · Supertonic · Chatterbox · Indic-Mio · Fish Audio S2 Pro · Magpie TTS · Parakeet TDT · Parakeet Streaming · Nemotron Streaming · Omnilingual ASR · PersonaPlex · VoiceChat · CSM · Hibiki · MADLAD-400 · FunctionGemma · Qwen3.5 Chat · Gemma 4 Chat · Qwen3 Dense Chat · FireRedVAD · KWS Zipformer · Sidon · Source Separation · HTDemucs · MAGNeT · Stable Audio 3 · FlashSR · Audio2Face-3D
- Çıkarım: Qwen3-ASR · WhisperASR · MOSS Transcribe Diarize · Parakeet TDT · Parakeet Streaming · Nemotron Streaming · Omnilingual ASR · TTS · VoxCPM2 · IndexTTS2 · F5-TTS · Higgs TTS 3 · VibeVoice · Fish Audio S2 Pro · Magpie TTS · CSM · Hibiki · MADLAD-400 · MAGNeT · Stable Audio 3 · FlashSR · Forced Aligner · Silero VAD · FireRedVAD · Wake-word · Speaker Diarization · Speech Enhancement · Sidon · Cache/offline
- Yankı giderme: LocalVQE AEC
- Referans: Paylaşılan Protokoller
Model ağırlıkları ilk kullanımda HuggingFace'ten indirilir ve ~/Library/Caches/qwen3-speech/ dizinine önbelleğe alınır. QWEN3_CACHE_DIR (CLI) veya cacheDir: (Swift API) ile geçersiz kılabilirsiniz. Tüm fromPretrained() giriş noktaları, ağırlıklar zaten önbellekteyse ağı atlamak için offlineMode: true parametresini de kabul eder.
Sandbox'lı iOS konteyner yolları dahil tam ayrıntılar için docs/inference/cache-and-offline.md belgesine bakın.
Çalışma zamanında Failed to load the default metallib görürseniz Metal shader kütüphanesi eksiktir. Manuel bir swift build sonrası make build veya ./scripts/build_mlx_metallib.sh release komutunu çalıştırın. Metal Toolchain eksikse, önce onu kurun:
xcodebuild -downloadComponent MetalToolchainmake test # tam paket (birim + model indirmeleriyle E2E)
swift test --skip E2E # yalnızca birim (CI için güvenli, indirme yok)
swift test --filter Qwen3ASRTests # belirli modülE2E test sınıfları, CI'nin --skip E2E ile bunları filtreleyebilmesi için E2E önekini kullanır. Tam test kuralı için CLAUDE.md belgesine bakın.
PR'lar memnuniyetle karşılanır — hata düzeltmeleri, yeni model entegrasyonları, dokümantasyon. Fork'layın, bir özellik dalı oluşturun, make build && make test çalıştırın, main'e karşı bir PR açın.
Apache 2.0