Kjører en stemmeagent på device
En rørledning, tre minnebudsjetter.
En lokal taleagent er ikke én modell - det er en rørledning på fire: taleaktivitetsdeteksjon, tale-til-tekst, en språkmodell og tekst-til-speech, koblet sammen av en turn-takende tilstand maskin. Rørledningen er den samme på en telefon og på en bærbar datamaskin. Hva endringer er hvilken modell går i hver boks, og det er bestemt av to tall: hvor mye minne du har, og hvilken akselerator du mater.
Antallet som skal holdes på er hele sløyfen, ikke én modell: speech perception (STT) + svargenerasjon (LLM) + talesyntese (TTS) alle passer inn i den - ~1.2 GB på iPhone, ~1,5 GB på en Galaxy S23, og under ~4 GB på Mac med en reell chat-hjerne.
Kjernebibliotek: Rørledningen er den bærbare delen.
Orkesteret bor i speech-core som ren C++ tilstandsmaskin som er modell-agnostisk: de fire trinnene er grensesnitt du kobler til alle motorer i - på-device ONNX, LiteRT, CoreML/MLX Eller til og med en sky API - så den samme rørledningen kjører en 270M verktøy-samtaler på en telefon og en Gemma 4 Hjernen på en Mac.
Ett sløyfe, fire stadier. Et våkeord, AEC og forbedring er valgfrie pre-VAD-trinn; LLMs verktøysamtaler er det som lar det fungere, ikke bare svare.
Orkesteret er VoicePipeline i speech-core . Det eier turdetektering, avbrudd, konversasjonshistorie, verktøy-kalleløkken og tale queuing - men ingen modeller av sin egen. Hvert trinn kan byttes bak en grensesnitt (VADInterface, STTInterface, LLMInterface, TTSInterface), som du tilbake med ONNX Runtime, LiteRT og CoreML/MLX (via den speech-swift søsken), eller til og med en sky API. Lysere moduser eksisterer også - Echo (VAD → STT → TTS) og TranscribeOnly (VAD → STT → tekst).
Mobile: NPU-første, og hele sløyfen passer i ~ 1,5 GB.
På en telefon er begrensningen minne, batteri og termiske - ikke råberegning. Det rette målet er neurale prosesseringsenheten (NPU): Apples Neural Engine på iOS, NNAPI / Hexagon på Android. Det kjører kvantiserte transformatorer i en brøkdel av kraften i CPU eller GPU og forlater CPU gratis for lyd og UI.
Hvorfor NPU og ikke CPU eller GPU- En NPU er en fast funksjon datastrømsmotor bygget for en jobb - lav-presisjon multiplisering-akkumulerer at nevrale nett er laget av. Den holder vekter i on-chip SRAM rett ved siden av beregningsenhetene og hopper over instruksjonshent/dekode og brede generelle databaner som brenner det meste av en CPU eller GPU energi. Flytting av data koster langt mer enn å gjøre matematikken, så å holde begge lokale er seieren: de samme matmullene kjører på en brøkdel av wattene - ingen termisk trottling, ingen batteri drenering, og CPU Hold deg fri for alt annet.
Så den mobile rørledningen er liten, kvantisert, NPU-vennlige modeller: Silero VAD, Parakeet-EOU 120M (lysvektsstrøming STT med innvendig ende-av-skjæring), FunctionGemma 270M (verktøy-kalling hjernen), og Kokoro-82M eller Supertonic-3 for stemme. Målt på enheten:
| Stage · 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 = vegg-tid ̊ lyd-sekunder (lavere = raskere; < 1.0 er raskere enn sanntid). Peak minne er per modell i isolasjon.
Hvert trinn rydder sanntid. Lastet sammen for en levende agent, er det bosatte arbeidssettet ~1.2 GB på iPhone og ~1.5 GB på Galaxy S23 Gapet er nesten alt LLM: FunctionGemma is 236 MB på ANE versus 611 MB på S23 CPU. iOS allerede kjører på NPU (Det er 0.04 RTF STT og 128 TOK/S LLM); Android er CPU-real-time i dag, med NNAPI/Hexagon delegater som opp, ikke en forutsetning.
Prøv det: Examples/iOSEchoDemo kjører Parakeet + Silero+ Kokoro som en full ekko sløyfe på en iPhone; Android side lever i speech-android Innpakning av samme rørledning. ( Examples/iOSBenchmark er selen bak iPhone tallene ovenfor.)
Skrivebord: En ekte LLM som driver maskinen - fortsatt under 4 GB.
På en Mac avslapper begrensningen: forent minne delt mellom CPU og Metal GPU. Samme fire etapper, større modeller og avgjørende en ekte chat-hjerne i stedet for en 270M verktøy-caller - og hele sløyfen passer fortsatt i ~4 GB.
LLM er hjernen, og det er der modellstørrelsen stopper å være valgfri. Etter testing fikk to modeller jobben: FunctionGemma 270M på mobil (men å sende ut et verktøysamtale, alle en telefon-side agent behov) og Gemma 4 E2B/E4B (4-bit MLX) på desktop (genuine multi-turn samtale og resonnement som holder opp, mens du holder lys). Den fristende midten - en kompakt sub-1B chathodet - ser gratis på fotavtrykk, men wobbles på ekte multi-turn, så det gjorde ikke kuttet. Hoppet som betyr noe er ikke 0.27B → 0.8B; det er FunctionGemma Værktøjssamtaler Gemma 4 samtale.
Resten av stabelen trapper også opp: desktop bytter den lette Parakeet-EOU for Parakeet-TDT (full flerspråklig), og TTS forblir på Supertonic-3 overalt - rask, 44,1 kHz, stabil. Vi hopper over den tyngre nullshot-kloning TTS modeller på hensikt; kloning er ikke pålitelig nok til å sitte inne i et alltid-på-middel.
| Stage | Mobile | Skrivebord (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 |
| Stage · 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 = veggen ® lyd sekunder (lavere = raskere); LLM raden er dekode gjennomstrøms. Peak minne er per modell alene - lastet sammen hele sløyfen er sambolig i ~3.6 GB (brønn under 4 GB): CoreML STT/TTS/VAD vekter er minnekartlagt, så de ikke stable den måten de isolerte toppene ville.
En pipeline som passer til budsjettet.
VAD → STT → LLM → TTS er identisk overalt. Alt interessant passer hvert trinn til enhetens akselerator og minne.
Batteri og termer velger modellene. ANE gjør iOS effektivt gratis CPU-vis; Android er CPU-real-time i dag med NPU hovedrom som skal skje.
Hele sløyfen passer i ~4 GB, og det budsjettet kjøper Gemma 4 resonnement som driver maskinen med stemme pluss flerspråklig parakeet-TDTD.
Lyd- og samtaletilstand forlater aldri enheten - oppfatning, resonnement og syntese alle kjører på metallet foran deg.
