Başlangıç

speech-swift, Apple Silicon üzerinde macOS ve iOS için cihaz içi yapay zekâ tabanlı konuşma işleme sağlar. Modeller yerel olarak MLX (Metal GPU) ve CoreML (Neural Engine) ile çalışır.

Gereksinimler

Kurulum

Homebrew (CLI)

speech-swift'i macOS üzerinde denemenin en hızlı yolu. Hem speech CLI'sini hem de speech-server HTTP/WebSocket sunucusunu (OpenAI uyumlu /v1/realtime uç noktası) kurar. Yerel ARM Homebrew (/opt/homebrew) gereklidir.

brew install soniqo/tap/speech

Kurulumdan sonra her iki çalıştırılabilir dosya da PATH'inizde yer alır:

speech transcribe recording.wav
speech speak "Hello, world!" --output hello.wav
speech-server --port 8080            # yerel HTTP / WebSocket sunucusu

Swift Package Manager

speech-swift'i Package.swift bağımlılıklarınıza ekleyin:

dependencies: [
    .package(url: "https://github.com/soniqo/speech-swift", from: "0.0.9")
]

Ardından ihtiyaç duyduğunuz modülleri hedefinize ekleyin:

.target(
    name: "MyApp",
    dependencies: [
        .product(name: "Qwen3ASR", package: "speech-swift"),
        .product(name: "Qwen3TTS", package: "speech-swift"),
        .product(name: "SpeechVAD", package: "speech-swift"),
        // ... add any modules you need
    ]
)

Mevcut Modüller

ModülAçıklama
Qwen3ASRKonuşmadan metne (Qwen3-ASR)
ParakeetASRKonuşmadan metne (Parakeet TDT, CoreML)
Qwen3TTSMetinden konuşmaya (Qwen3-TTS)
CosyVoiceTTSMetinden konuşmaya (CosyVoice3, çok dilli)
KokoroTTSMetinden konuşmaya (Kokoro-82M, CoreML, iOS uyumlu)
Qwen3ChatCihaz içi LLM sohbeti (Qwen3.5-0.8B, MLX + CoreML)
PersonaPlexKonuşmadan konuşmaya (PersonaPlex 7B)
SpeechVADVAD (Silero + Pyannote), konuşmacı ayrıştırma, konuşmacı embedding'leri
SpeechEnhancementGürültü azaltma (DeepFilterNet3, CoreML)
AudioCommonOrtak protokoller, ses I/O, HuggingFace indirici

Kaynaktan Derleme

Depoyu klonlayın ve derleyin:

git clone https://github.com/soniqo/speech-swift.git
cd speech-swift
make build
Önemli

make build, MLX Metal shader kütüphanesini otomatik olarak derler. Bu olmadan, JIT shader derlemesi nedeniyle GPU üzerindeki çıkarım yaklaşık 5 kat daha yavaş çalışır.

Hızlı Başlangıç: Sesi Metne Dönüştürme

CLI

# Bir WAV dosyasını metne dönüştür
.build/release/speech transcribe recording.wav

Swift API

import Qwen3ASR

let model = try await Qwen3ASRModel.loadFromHub()
let result = try await model.transcribe(audioFile: "recording.wav")
print(result.text)

Modeller ilk kullanımda HuggingFace'ten otomatik olarak indirilir ve ~/Library/Caches/qwen3-speech/ içinde önbelleğe alınır.

Hızlı Başlangıç: Metinden Konuşmaya

CLI

# Konuşma üret
.build/release/speech speak "Hello, world!" --output hello.wav

Swift API

import Qwen3TTS

let model = try await Qwen3TTSModel.loadFromHub()
let audio = try await model.speak("Hello, world!")
try audio.write(to: "hello.wav")

Model İndirmeleri

Tüm modeller ilk kullanımda HuggingFace'ten indirilir. Yaklaşık boyutlar:

ModelBoyutRAM Kullanımı
Qwen3-ASR 0.6B (4-bit)680 MB~2.2 GB tepe
Qwen3-ASR 0.6B (8-bit)1.0 GB~2.5 GB tepe
Qwen3-ASR 1.7B (4-bit)2.1 GB~4 GB tepe
Parakeet-TDT (CoreML INT8)500 MB~600 MB tepe
Qwen3-TTS 0.6B (4-bit)1.7 GB~2 GB tepe
Qwen3-TTS 1.7B (4-bit)3.2 GB~4 GB tepe
CosyVoice3 (4-bit LLM)1.2 GB~1.5 GB tepe
Kokoro-82M (CoreML INT8)89 MB~200 MB tepe
Qwen3.5-Chat 0.8B (INT4 MLX)418 MB~700 MB tepe
Qwen3.5-Chat 0.8B (INT8 CoreML)981 MB~1.2 GB tepe
PersonaPlex 7B (8-bit) önerilen9.1 GB~11 GB tepe
PersonaPlex 7B (4-bit)4.9 GB~6.5 GB tepe
Pyannote VAD5.7 MB~20 MB tepe
Silero VAD v51.2 MB~5 MB tepe
WeSpeaker ResNet3425 MB~50 MB tepe
DeepFilterNet3 (FP16)4.2 MB~10 MB tepe

Sonraki Adımlar