Kör en röstagent on-device
en pipeline, tre minnesbudgetar.
En lokal röstagent är inte en modell - det är en pipeline av fyra: röstaktivitetsdetektering, tal-till-text, en språkmodell och text-till-tal, trådbunden av en vändande statsmaskin. Pipeline är densamma på en telefon och på en bärbar dator. Vilka förändringar är som modell går i varje ruta , och det bestäms av två siffror: hur mycket minne du har, och vilken accelerator du matar.
Antalet att hålla fast vid är hela slingan, inte en modell: tal perception (STT) + svar generation (LLM) + talsyntes (TTS) alla passar in i den - ~ 1,2 GB på iPhone, ~ 1,5 GB på en Galaxy S23, och under ~4 GB på Mac med en riktig chatt hjärna.
Kärnbibliotek: Rörledningen är den portabla delen.
Orkestrering lever i speech-core som en ren C++ statsmaskin som är modell-agnostisk: de fyra stegen är gränssnitt du ansluter någon backend till - on-device ONNX, LiteRT, CoreML/MLXeller till och med ett moln API - Så samma pipeline kör en 270M-verktygskalare på en telefon och en Gemma 4 Hjärnan på en Mac.
En slinga, fyra steg. Ett vaken ord, AEC och förbättring är valfria pre-VAD steg; LLM verktygssamtal är vad låt det agera, inte bara svara.
Orkestratorn är VoicePipeline in i speech-core Det äger turdetektering, avbrott, konversationshistoria, verktygskallingsslingan och talköer - men inga egna modeller. Varje steg är bytbar bakom en Interface (VADInterface, STTInterface, LLMInterface, TTSInterface) att du tillbaka med ONNX Runtime, LiteRT CoreML/MLX (via speech-swift syskon), eller till och med ett moln API. Lättare lägen finns också Echo (VAD → STT → TTS) och TranscribeOnly (VAD → STT → text).
Mobile Mobile Mobile Mobile: NPU-först, och hela slingan passar in ~ 1,5 GB.
På en telefon är begränsningen minne, batteri och termaler - inte raw compute. Det rätta målet är den neurala bearbetningsenheten (se nedan).NPU) Apples Neural Engine på iOSNNAPI / Hexagon på AndroidDet driver kvantiserade transformatorer på en bråkdel av kraften i kraften CPU eller GPU och lämnar CPU gratis för ljud och UI.
Varför NPU och inte CPU eller GPU? en ? NPU är en fixerad funktion dataflöde motor byggd för ett jobb - den låga precision multiplicera som neurala nät är gjorda av. Det håller vikter i on-chip SRAM precis bredvid de beräkningsenheter och hoppar över instruktionsfetch / dekod och bred allmänt ändamål datapaths som bränner de flesta av en CPU’s eller GPUAtt flytta data kostar mycket mer än att göra matematiken, så att hålla båda lokala är vinsten: samma mallar körs på en bråkdel av watten - ingen termisk halsning, inget batteriavlopp och den CPU Håller sig fri för allt annat.
Så mobilledningen är liten, kvantiserad, NPU-vänliga modeller: Silero VAD, Parakeet-EOU 120M (Lätt streaming STT med inline end-of-utterance), FunctionGemma 270M (verktygskallande hjärna) och Kokoro-82M eller Supertonic-3 för röst. mätt på enheten:
| Steg · 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 = wall-time ÷ ljudsekunder (lägre = snabbare; <1.0 är snabbare än realtid). Peak memory isoleras per-model.
Varje steg rensar realtid. Loaded tillsammans för en levande agent, den bosatta arbetsuppsättningen är 1.2 GB på iPhone och 1.5 GB på Galaxy S23 gapet är nästan allt LLM: FunctionGemma är att 236 MB på ANE versus 611 MB på S23 CPU. iOS redan körs på NPU (det är det 0.04 RTF STT och 128 Tok/s LLM); Android är CPU-realtid idag, med NNAPI/Hexagon-delegater som uppåt, inte en förutsättning.
Prova det: Examples/iOSEchoDemo kör Parakeet + Silero+ Kokoro som en full eko loop på en iPhone; Android sidan bor i speech-android , omslag på samma pipeline. ( Examples/iOSBenchmark är selen bakom iPhone-numren ovan.)
Desktop: En riktig LLM som kör maskinen - fortfarande under 4 GB.
På en Mac slappnar begränsningen av: enhetligt minne som delas mellan CPU och en Metal GPU. Samma fyra steg, större modeller och avgörande en riktig chatthjärna istället för en 270M-verktygskalare - och hela slingan passar fortfarande i ~4 GB.
LLM är hjärnan, och det är där modellstorleken slutar vara valfri. Efter testning tjänade två modeller jobbet: FunctionGemma 270M på mobilen (tillräckligt för att avge ett verktygssamtal, alla en telefon-sida agent behöver) och Gemma 4 E2B/E4B (4-bit MLX) på skrivbordet (genuin multi-turn konversation och resonemang som håller upp, medan du håller ljus). sub-1B chatthuvud - ser fri på fotavtryck men wobbles på riktiga multi-turn, så det gjorde inte klippningen. hoppet som betyder något är inte 0.27B 0.8B; det är FunctionGemma Tool-calls → Gemma 4 konversation.
Resten av stacken steg upp också: skrivbordet byter lätta Parakeet-EOU för Parakeet-TDT (full flerspråkig) och TTS stannar på Supertonic-3 överallt -- snabb, 44.1 kHz, stabil. Vi hoppar över den tyngre zero-shot-cloning TTS
| Steg | Mobile Mobile Mobile Mobile | Skrivbord (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 | ~3.6 GB |
| Steg · Modell | Mac · M5 Pro (4-bit MLX / CoreML) |
|---|---|
| VAD · Silero v6.2.1 | sub-ms / chunk |
| STT · Parakeet-TDT | 0.04 RTF · 1.3 GB |
| LLM · Gemma 4 E2B | 214 tok/s · 2.9 GB |
| TTS · Supertonic-3 | 0.03 RTF · 0.9 GB |
RTF = vägg ÷ ljudsekunder (lägre = snabbare); LLM raden är avkodning genomströmning. Peak minne är per modell ensam - laddad tillsammans hela slingan är medboende i ~3.6 GB (väl under 4 GB): GB CoreML STT/TTS/VAD Vikter är minnesmonterade, så de staplar inte hur de isolerade topparna skulle.
En pipeline, matchad till budgeten.
VAD → STT → LLM TTS
Batteri och termaler plocka modellerna. ANE gör iOS effektivt gratis CPU-wise; Android är CPU realtid idag med NPU huvudrum att komma.
Hela slingan passar in ~ 4 GB, och den budgeten köper Gemma 4 resonemang som driver maskinen med röst, plus flerspråkig Parakeet-TDT.
Ljud- och konversationstillstånd lämnar aldrig enheten - uppfattning, resonemang och syntes alla körs på metallen framför dig.
