Erste Schritte
speech-swift bietet KI-Sprachverarbeitung auf dem Gerät für macOS und iOS auf Apple Silicon. Modelle laufen lokal über MLX (Metal-GPU) und CoreML (Neural Engine).
Voraussetzungen
- macOS 14+ (Sonoma oder neuer)
- Apple Silicon (M1-, M2-, M3-, M4-Serie)
- Xcode 15.4+ / Swift 6.0+
- Mindestens 8 GB RAM (16 GB empfohlen für größere Modelle)
Installation
Swift Package Manager
Füge speech-swift zu den Abhängigkeiten deiner Package.swift hinzu:
dependencies: [
.package(url: "https://github.com/soniqo/speech-swift", from: "0.0.9")
]
Füge dann die benötigten Module zu deinem Target hinzu:
.target(
name: "MyApp",
dependencies: [
.product(name: "Qwen3ASR", package: "speech-swift"),
.product(name: "Qwen3TTS", package: "speech-swift"),
.product(name: "SpeechVAD", package: "speech-swift"),
// ... füge beliebige benötigte Module hinzu
]
)
Verfügbare Module
| Modul | Beschreibung |
|---|---|
Qwen3ASR | Sprache-zu-Text (Qwen3-ASR) |
ParakeetASR | Sprache-zu-Text (Parakeet TDT, CoreML) |
Qwen3TTS | Text-zu-Sprache (Qwen3-TTS) |
CosyVoiceTTS | Text-zu-Sprache (CosyVoice3, mehrsprachig) |
KokoroTTS | Text-zu-Sprache (Kokoro-82M, CoreML, iOS-tauglich) |
Qwen3Chat | LLM-Chat auf dem Gerät (Qwen3.5-0.8B, MLX + CoreML) |
PersonaPlex | Sprache-zu-Sprache (PersonaPlex 7B) |
SpeechVAD | VAD (Silero + Pyannote), Diarisierung, Sprechereinbettungen |
SpeechEnhancement | Rauschunterdrückung (DeepFilterNet3, CoreML) |
AudioCommon | Gemeinsame Protokolle, Audio-I/O, HuggingFace-Downloader |
Aus dem Quellcode bauen
Klone das Repository und baue:
git clone https://github.com/soniqo/speech-swift.git
cd speech-swift
make build
Wichtig
make build kompiliert die MLX-Metal-Shader-Bibliothek automatisch. Ohne sie läuft die GPU-Inferenz ~5-mal langsamer wegen JIT-Shader-Kompilierung.
Schnellstart: Audio transkribieren
CLI
# Eine WAV-Datei transkribieren
.build/release/audio 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)
Modelle werden beim ersten Gebrauch automatisch von HuggingFace heruntergeladen und in ~/Library/Caches/qwen3-speech/ zwischengespeichert.
Schnellstart: Text-zu-Sprache
CLI
# Sprache erzeugen
.build/release/audio speak "Hallo Welt!" --output hello.wav
Swift-API
import Qwen3TTS
let model = try await Qwen3TTSModel.loadFromHub()
let audio = try await model.speak("Hallo Welt!")
try audio.write(to: "hello.wav")
Modell-Downloads
Alle Modelle werden beim ersten Gebrauch von HuggingFace heruntergeladen. Ungefähre Größen:
| Modell | Größe | RAM-Verbrauch |
|---|---|---|
| Qwen3-ASR 0.6B (4-Bit) | 680 MB | ~2,2 GB Peak |
| Qwen3-ASR 0.6B (8-Bit) | 1,0 GB | ~2,5 GB Peak |
| Qwen3-ASR 1.7B (4-Bit) | 2,1 GB | ~4 GB Peak |
| Parakeet-TDT (CoreML INT8) | 500 MB | ~600 MB Peak |
| Qwen3-TTS 0.6B (4-Bit) | 1,7 GB | ~2 GB Peak |
| Qwen3-TTS 1.7B (4-Bit) | 3,2 GB | ~4 GB Peak |
| CosyVoice3 (4-Bit-LLM) | 1,2 GB | ~1,5 GB Peak |
| Kokoro-82M (CoreML INT8) | 89 MB | ~200 MB Peak |
| Qwen3.5-Chat 0.8B (INT4 MLX) | 418 MB | ~700 MB Peak |
| Qwen3.5-Chat 0.8B (INT8 CoreML) | 981 MB | ~1,2 GB Peak |
| PersonaPlex 7B (8-Bit) empfohlen | 9,1 GB | ~11 GB Peak |
| PersonaPlex 7B (4-Bit) | 4,9 GB | ~6,5 GB Peak |
| Pyannote VAD | 5,7 MB | ~20 MB Peak |
| Silero VAD v5 | 1,2 MB | ~5 MB Peak |
| WeSpeaker ResNet34 | 25 MB | ~50 MB Peak |
| DeepFilterNet3 (FP16) | 4,2 MB | ~10 MB Peak |
Nächste Schritte
- CLI-Referenz — alle verfügbaren Befehle und Optionen
- Qwen3-ASR-Anleitung — detaillierte Dokumentation zu Sprache-zu-Text
- Qwen3-TTS-Anleitung — detaillierte Dokumentation zu Text-zu-Sprache
- API & Protokolle — gemeinsame Protokolle und Typen