Blog·
On-Device
July 7, 2026

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.

Kernbibliothek

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.

On-device voice-agent pipelineMicrophone audio passes an optional wake-word gate, echo cancellation, and enhancement, then voice activity detection, speech-to-text (perception), a language model with tool calls (generation), and text-to-speech (synthesis) back to the speaker. The synthesized audio feeds back as the echo-cancellation reference.wake word · AEC · enhance (opt.)tools?Audiomic inVADturn gateSTTperceptionLLMgenerationTTSsynthesisAudiospeakerAEC reference

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).

Mobil

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 · ModelliPhone 16 Pro (CoreML / ANE)Galaxy S23 (LiteRT / ONNX, CPU)
STT · Parakeet-EOU 120M0.04 RTF · 297 MB0.21 RTF · 232 MB
STT · Omnilingual 300M0.28 RTF · 495 MB0.15 RTF · 831 MB
TTS · Kokoro-82M0.08 RTF · 676 MB0.53 RTF · 640 MB
TTS · Supertonic-3 99M0.15 RTF · 956 MB0.34 RTF · 832 MB
LLM · FunctionGemma 270M128 tok/s · 236 MB118 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.)

Desktop

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.

StufeMobilDesktop (Mac / MLX)
VADSilero v6.2.1Silero v6.2.1
STTParakeet-EOU (streaming)Parakeet-TDT (multilingual)
LLMFunctionGemma 270MGemma 4 E2B/E4B
TTSKokoro-82M / Supertonic-3Supertonic-3
Resident setiPhone ~1.2 GB · S23 ~1.5 GB~4 GB
Runner: ein Sprachagent, der den Mac steuert

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.

Takeaways

Eine Pipeline, aufs Budget abgestimmt.

Die Pipeline portiert; die Modelle nicht

VAD → STT → LLM → TTS ist überall identisch. Das Interessante ist, jede Stufe an Beschleuniger und Speicher des Geräts anzupassen.

Mobil: NPU zuerst, ~1,2–1,5 GB

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.

Desktop: ein echtes Gehirn, immer noch ~4 GB

Die ganze Schleife passt in ~4 GB, und dieses Budget kauft Gemma-4-Reasoning, das die Maschine per Stimme steuert, plus mehrsprachiges Parakeet-TDT.

Alles ist lokal

Audio und Gesprächszustand verlassen das Gerät nie — Wahrnehmung, Reasoning und Synthese laufen auf dem Metall vor dir.

Where next

Weiterlesen.