Erste Schritte
Lieber eine gehostete API? Dieselbe Transkription, Synthese und das Cloning als Managed Service — OpenAI- und ElevenLabs-kompatibel. soniqo.audio/cloud →
Installiere die speech-CLI, um auf deinem Apple-Silicon-Mac Audio zu transkribieren und zu erzeugen. Mit dem Swift SDK integrierst du Sprachverarbeitung in macOS- und iOS-Apps.
Voraussetzungen für die CLI
- macOS 15+ (Sequoia oder neuer)
- Apple Silicon (arm64)
- Mindestens 8 GB RAM (16 GB empfohlen für größere Modelle)
CLI installieren
Homebrew (CLI)
Installiere speech und den HTTP/WebSocket-Server speech-server mit der nativen ARM-Version von Homebrew (/opt/homebrew).
brew install speech
speech --help
Erste Aufgabe: Eine M4A-Datei transkribieren
Lade die Beispielaufnahme herunter und transkribiere sie im Terminal:
Verbinde dich für den ersten Aufruf mit dem Internet. Das gewählte Modell wird von HuggingFace heruntergeladen und auf deinem Mac zwischengespeichert. Nach der Einrichtung kannst du mit diesem Modell lokale Aufnahmen offline transkribieren.
curl -fL https://soniqo.audio/audio/samples/cli/transcription-sample.m4a -o transcription-sample.m4a
speech transcribe transcription-sample.m4a --engine parakeet
Weiter zur Anleitung: M4A in Text umwandeln.
Schnellstart: Text-zu-Sprache
speech speak "Hello, world!" --output hello.wav
Lokale Sprach-API starten
Starte den HTTP/WebSocket-Server für lokale API-Anfragen:
speech-server --port 8080
Swift SDK
Füge die Swift-Module mit Swift Package Manager zu deiner App für macOS 15+ oder iOS 18+ hinzu.
Swift Package Manager
Füge speech-swift zu den Abhängigkeiten deiner Package.swift hinzu:
dependencies: [
.package(url: "https://github.com/soniqo/speech-swift", branch: "main")
]
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) |
WhisperASR | Sprache-zu-Text (Whisper Large-v3 Turbo, CoreML) |
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 |
Audio mit Swift transkribieren
import Qwen3ASR
let model = try await Qwen3ASRModel.fromPretrained()
// audioSamples: [Float] PCM at 16 kHz (e.g. decoded from a WAV)
let text = model.transcribe(audio: audioSamples, sampleRate: 16000)
print(text)
Sprache mit Swift erzeugen
import Qwen3TTS
import AudioCommon
let model = try await Qwen3TTSModel.fromPretrained()
let audio = model.synthesize(text: "Hallo Welt!", language: "german")
try WAVWriter.write(samples: audio, sampleRate: 24000, to: URL(filePath: "hello.wav"))
Aus dem Quellcode bauen
Für einen Build aus dem Quellcode brauchst du Xcode 16.3+ mit der Metal Toolchain und Swift 6+. Klone das Repository, baue die CLI und prüfe die ausführbare Datei im Checkout:
git clone https://github.com/soniqo/speech-swift.git
cd speech-swift
make build
.build/release/speech --help
make build kompiliert die MLX-Metal-Shader-Bibliothek automatisch. Ohne sie läuft die GPU-Inferenz ~5-mal langsamer wegen JIT-Shader-Kompilierung.
Shader-Builds verwenden standardmäßig macOS 15.0 und Metal 3.2, auch mit neueren SDKs. Für angepasste Builds ändern MACOSX_DEPLOYMENT_TARGET und MLX_METAL_LANGUAGE_VERSION diese Vorgaben; höhere Zielversionen können ältere Systeme ausschließen. Änderungen an Compiler, SDK, Optionen, Skript oder Quelldateien machen den Cache ungültig. Bei Kompilierungs- oder Linkfehlern bleiben die vorherige Bibliothek und der Cache-Hash erhalten.
Modell-Downloads
Modelle werden beim ersten Gebrauch automatisch von HuggingFace heruntergeladen und in ~/Library/Caches/qwen3-speech/ zwischengespeichert.
Alle Modelle werden beim ersten Gebrauch von HuggingFace heruntergeladen. Ungefähre Größen:
| Modell | Größe | RAM-Verbrauch |
|---|---|---|
| Qwen3-ASR 0.6B (4-bit MLX) | 680 MB | ~1.0 GB peak |
| Qwen3-ASR 0.6B (8-bit MLX) | 1.0 GB | ~1.3 GB peak |
| Qwen3-ASR 0.6B (CoreML INT8) | 180 MB | ~1.4 GB peak |
| Qwen3-ASR 1.7B (4-bit MLX) | 2.1 GB | ~3 GB peak |
| Qwen3-ASR 1.7B (8-bit MLX) | 3.2 GB | ~2.7 GB peak |
| Parakeet-TDT v3 (CoreML INT8) | 500 MB | ~900 MB peak |
| Whisper Large-v3 Turbo (CoreML FP16) | 1.6 GB | ~384 MB peak |
| Omnilingual CTC 300M (4-bit MLX) | 193 MB | ~400 MB peak |
| Omnilingual CTC 300M (CoreML INT8) | 312 MB | ~550 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
- Weiter zur Anleitung: M4A in Text umwandeln
- 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