Einen Sprachagenten on-device betreiben
eine Pipeline, drei Speicherbudgets.
Ein lokaler Sprachagent ist nicht ein Modell — er ist eine Pipeline aus vieren: Sprachaktivitätserkennung, Speech-to-Text, ein Sprachmodell und Text-to-Speech, verdrahtet durch eine Zustandsmaschine für die Sprecherwechsel. Die Pipeline ist auf dem Handy und auf dem Laptop dieselbe. Was sich ändert, ist, welches Modell in welche Box kommt, und das entscheiden zwei Zahlen: wie viel Speicher du hast und welchen Beschleuniger du fütterst.
Die Zahl, die man sich merken sollte, ist die ganze Schleife, nicht ein Modell: Sprachwahrnehmung (STT) + Antwortgenerierung (LLM) + Sprachsynthese (TTS) passen alle hinein — ~1,2 GB auf dem iPhone, ~1,5 GB auf einem Galaxy S23 und unter ~4 GB auf einem Mac mit einem echten Chat-Gehirn.
Die Pipeline ist der portable Teil.
Die Orchestrierung steckt in speech-core als reine C++-Zustandsmaschine, die modellagnostisch ist: Die vier Stufen sind Schnittstellen, in die du jedes Backend einsteckst — on-device ONNX, LiteRT, CoreML/MLX oder sogar eine Cloud-API — sodass dieselbe Pipeline einen 270M-Tool-Caller auf dem Handy und ein Gemma-4-Gehirn auf einem Mac betreibt.
Eine Schleife, vier Stufen. Ein Wake-Word, AEC und Enhancement sind optionale Schritte vor dem VAD; die Tool-Calls des LLM sind es, die es handeln lassen, nicht nur antworten.
Der Orchestrator ist VoicePipeline in speech-core. Er übernimmt Sprecherwechsel-Erkennung, Unterbrechung, Gesprächsverlauf, die Tool-Call-Schleife und die Sprachwarteschlange — aber keine eigenen Modelle. Jede Stufe ist hinter einer Schnittstelle (VADInterface, STTInterface, LLMInterface, TTSInterface) austauschbar, die du mit ONNX Runtime, LiteRT, CoreML/MLX (über die Schwester speech-swift) oder sogar einer Cloud-API bespielst. Es gibt auch leichtere Modi — Echo (VAD → STT → TTS) und TranscribeOnly (VAD → STT → Text).
NPU zuerst, und die ganze Schleife passt in ~1,5 GB.
Auf dem Handy ist die Grenze Speicher, Akku und Temperatur — nicht rohe Rechenleistung. Das richtige Ziel ist die Neural Processing Unit (NPU): Apples Neural Engine unter iOS, NNAPI / Hexagon unter Android. Sie führt quantisierte Transformer mit einem Bruchteil der Leistung von CPU oder GPU aus und lässt die CPU frei für Audio und UI.
Warum die NPU und nicht die CPU oder GPU? Eine NPU ist eine Dataflow-Engine mit fester Funktion, gebaut für eine Aufgabe — die Multiply-Accumulate mit niedriger Präzision, aus der neuronale Netze bestehen. Sie hält die Gewichte im On-Chip-SRAM direkt neben den Recheneinheiten und überspringt Instruction-Fetch/Decode und die breiten Allzweck-Datenpfade, die den Großteil der Energie einer CPU oder GPU verbrauchen. Daten zu bewegen kostet weit mehr als zu rechnen, also ist beides lokal zu halten der Gewinn: Dieselben Matmuls laufen mit einem Bruchteil der Watt — kein thermisches Throttling, kein Akkuverbrauch, und die CPU bleibt für alles andere frei.
Die mobile Pipeline besteht also aus kleinen, quantisierten, NPU-freundlichen Modellen: Silero VAD, Parakeet-EOU 120M (leichtes Streaming-STT mit integrierter End-of-Utterance), FunctionGemma 270M (das Tool-Calling-Gehirn) und Kokoro-82M oder Supertonic-3 für die Stimme. Auf dem Gerät gemessen:
| Stufe · Modell | iPhone 16 Pro (CoreML / ANE) | Galaxy S23 (LiteRT / ONNX, CPU) |
|---|---|---|
| STT · Parakeet-EOU 120M | 0.04 RTF · 297 MB | 0.21 RTF · 232 MB |
| STT · Omnilingual 300M | 0.28 RTF · 495 MB | 0.15 RTF · 831 MB |
| TTS · Kokoro-82M | 0.08 RTF · 676 MB | 0.53 RTF · 640 MB |
| TTS · Supertonic-3 99M | 0.15 RTF · 956 MB | 0.34 RTF · 832 MB |
| LLM · FunctionGemma 270M | 128 tok/s · 236 MB | 118 tok/s · 611 MB |
RTF = Wanduhrzeit ÷ Audiosekunden (niedriger = schneller; <1,0 ist schneller als Echtzeit). Der Spitzenspeicher ist pro Modell, isoliert.
Jede Stufe schafft Echtzeit. Zusammen für einen Live-Agenten geladen, liegt der residente Arbeitssatz bei ~1,2 GB auf dem iPhone und ~1,5 GB auf dem Galaxy S23 — der Abstand ist fast ganz das LLM: FunctionGemma braucht 236 MB auf der ANE gegenüber 611 MB auf der S23-CPU. iOS läuft schon auf der NPU (daher die 0,04 RTF beim STT und 128 tok/s beim LLM); Android ist heute CPU-echtzeitfähig, mit NNAPI/Hexagon- Delegates als Bonus, nicht als Voraussetzung.
Probier es: Examples/iOSEchoDemo lässt Parakeet + Silero + Kokoro als vollständige Echo-Schleife auf einem iPhone laufen; die Android-Seite lebt in speech-android, die dieselbe Pipeline umschließt. (Examples/iOSBenchmark ist das Werkzeug hinter den iPhone-Zahlen oben.)
Ein echtes LLM, das die Maschine steuert — immer noch unter 4 GB.
Auf einem Mac lockert sich die Grenze: Unified Memory, geteilt zwischen CPU und einer Metal-GPU. Dieselben vier Stufen, größere Modelle und vor allem ein echtes Chat-Gehirn statt eines 270M-Tool-Callers — und die ganze Schleife passt weiterhin in ~4 GB.
Das LLM ist das Gehirn, und hier hört die Modellgröße auf, optional zu sein. Nach Tests haben sich zwei Modelle den Job verdient: FunctionGemma 270M auf mobil (genug, um einen Tool-Call abzusetzen — alles, was ein Agent auf dem Handy braucht) und Gemma 4 E2B/E4B (4-bit MLX) auf dem Desktop (echte mehrschrittige Konversation und Reasoning, die tragen, bei gleichzeitig geringem Gewicht). Die verlockende Mitte — ein kompakter Chat-Kopf unter 1B — sieht in der Größe frei aus, wackelt aber bei echter mehrschrittiger Konversation, also fiel er durch. Der entscheidende Sprung ist nicht 0,27B → 0,8B; es ist von FunctionGemmas Tool-Calls zu Gemma 4s Konversation.
Der Rest des Stacks legt auch zu: Auf dem Desktop wird das leichte Parakeet-EOU durch Parakeet-TDT (voll mehrsprachig) ersetzt, und TTS bleibt überall bei Supertonic-3 — schnell, 44,1 kHz, stabil. Die schwereren Zero-Shot-Cloning-TTS-Modelle lassen wir bewusst weg; Cloning ist nicht zuverlässig genug, um in einem Always-on-Agenten zu sitzen.
| Stufe | Mobil | Desktop (Mac / MLX) |
|---|---|---|
| VAD | Silero v6.2.1 | Silero v6.2.1 |
| STT | Parakeet-EOU (streaming) | Parakeet-TDT (multilingual) |
| LLM | FunctionGemma 270M | Gemma 4 E2B/E4B |
| TTS | Kokoro-82M / Supertonic-3 | Supertonic-3 |
| Resident set | iPhone ~1.2 GB · S23 ~1.5 GB | ~4 GB |
Dieser Desktop-Pfad ist das, was Runner Agent ausliefert — eine notarisierte macOS-App, die Mic → VAD → Parakeet-TDT → Gemma 4 → Supertonic TTS vollständig lokal ausführt, ein 47-MB-DMG mit der ganzen Schleife bei rund ~4 GB auf Apple Silicon. Und weil das Gehirn Tool-Calls absetzt, redet Runner nicht nur zurück — es steuert die Maschine per Stimme: einen Browser öffnen und DOM-Operationen ausführen, Telegram oder WhatsApp öffnen, um eingehende Nachrichten zu lesen und Antworten zu tippen, Apps starten und steuern — alles per Sprachbefehl, alles lokal. Das ist der wahre Grund, warum der Desktop Gemma 4 will und keinen 270M-Tool-Caller: auf der Maschine zu handeln erfordert echtes Reasoning, nicht bloß Slot-Filling.
Eine Pipeline, aufs Budget abgestimmt.
VAD → STT → LLM → TTS ist überall identisch. Das Interessante ist, jede Stufe an Beschleuniger und Speicher des Geräts anzupassen.
Akku und Temperatur wählen die Modelle. Die ANE macht iOS CPU-seitig quasi kostenlos; Android ist heute CPU-echtzeitfähig, mit NPU-Reserve in Aussicht.
Die ganze Schleife passt in ~4 GB, und dieses Budget kauft Gemma-4-Reasoning, das die Maschine per Stimme steuert, plus mehrsprachiges Parakeet-TDT.
Audio und Gesprächszustand verlassen das Gerät nie — Wahrnehmung, Reasoning und Synthese laufen auf dem Metall vor dir.
Weiterlesen.
Die Mac-, iPhone- und Galaxy-S23-Zahlen hinter diesem Beitrag.
Der lokale macOS-Sprachbegleiter, der deine Maschine steuert.
Komponiere VAD, STT, LLM und TTS zu einer Echtzeit-Schleife.
Mehr Beiträge zu On-Device-Sprache, sobald sie erscheinen.
