Traduzione automatica · Originale inglese
Blog·
Suggerimento
July 7, 2026

In esecuzione di un agente vocale on-device
una pipeline, tre budget di memoria.

Un agente vocale locale non è un modello — è una pipeline di quattro: rilevamento di attività vocale, discorso-to-text, un modello di lingua, e testo-to-speech, cablato insieme da una macchina di stato girante. La pipeline è la stessa su un telefono e su un computer portatile. quale modello va in ogni scatola, e questo è deciso da due numeri: quanta memoria hai, e quale acceleratore stai alimentando.

Il numero da tenere su è l'intero ciclo, non un modello: percezione del discorso (STT) + generazione di risposta (LLM) + sintesi vocale (TTS) tutto in forma dentro di esso — ~1.2 GB su iPhone, ~1.5 GB su una galassia S23e sotto.4 GB su un Mac con un vero cervello di chat.

Libreria centrale: La pipeline è la parte portatile.

L'orchestrazione vive in speech-core come un puro C++ macchina di stato che è modello-agnostico: le quattro fasi sono interfacce che si collegano qualsiasi backend in — on-device ONNX, LiteRT, CoreML/MLX, o anche una nuvola API — così la stessa pipeline gestisce un 270M tool-caller su un telefono e un Gemma 4 cervello su un Mac.

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

Un loop, quattro fasi. Una parola sveglia, AEC e il miglioramento sono gradini pre-VAD opzionali; le chiamate utensili LLM

L'orchestratore è VoicePipeline in speech-core . Possiede rilevamento di turno, interruzione, storia di conversazione, il ciclo di registrazione degli strumenti, e queuing del discorso — ma nessun modello del proprio. Ogni fase è swappable dietro un interfaccia (VADInterface, STTInterface, LLMInterface, TTSInterface) che si torna con ONNX Runtime, LiteRT e CoreML/MLX (via speech-swift sibling), o anche una nuvola API. Le modalità più leggere esistono anche — Echo (VAD → STT → TTS) e TranscribeOnly (VAD → STT → testo).

Mobile: NPU-first, e l'intero ciclo si adatta in ~1,5 GB.

Su un telefono il vincolo è la memoria, la batteria e le terme — non la computazione grezza. L'obiettivo giusto è l'unità di elaborazione neurale (NPU): Apple's Neural Engine su iOS, NNAPI / Hexagon su Android. Funziona trasformatori quantizzati in una frazione del potere del CPU o GPU e lascia il CPU gratis per audio e UI.

Perché NPU e non il CPU o GPUAn? NPU è un motore di flusso dati a funzione fissa costruito per un lavoro — il moltiplicatore a bassa precisione che si fa reti neurali. Mantiene i pesi in on-chip SRAM proprio accanto alle unità di calcolo e salta le istruzioni fetch / decodifica e ampi percorsi di dati generali che bruciano la maggior parte di un CPU’ o GPUIl trasferimento dei dati costa molto di più che fare la matematica, quindi mantenere entrambi locali è la vittoria: gli stessi matmul funzionano a una frazione dei watt — nessun interruzione termica, nessun scarico della batteria, e la CPU rimane libero per tutto il resto.

Quindi il condotto mobile è piccolo, quantizzato, modelli NPU-friendly: Silero VAD, Parakeet-EOU 120M (STT in streaming leggero con end-of-utterance in linea), FunctionGemma 270M (il cervello che lega gli strumenti), e Kokoro-82M o Supertonic-3 per voce. Misurato sul dispositivo:

Stage · modelloiPhone 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 = parete-tempo ÷ audio-secondi (più basso = più veloce; <1.0 è più veloce del tempo reale). La memoria di picco è per-modello in isolamento.

Ogni fase si sgombera in tempo reale. Caricato insieme per un agente dal vivo, il set di lavoro residente è ~1.2 GB su iPhone e ~1.5 GB sul Galaxy S23 — il divario è quasi tutto LLM: FunctionGemma è 236 MB sulla ANE contro 611 MB sulla S23 CPU. iOS già corre sul NPU (questo è il 0.04 RTF STT e 128 tok/s LLM); Android è CPU-real-time oggi, con NNAPI/Hexagon delegati come lato superiore, non un prerequisito.

Provalo: Examples/iOSEchoDemo esegue Parakeet + Silero+ Kokoro come un ciclo di eco completo su un iPhone; il lato Android vive in speech-android , avvolgere la stessa pipeline. ( Examples/iOSBenchmark è l'imbragatura dietro i numeri di iPhone sopra.)

Desktop: Un vero LLM che guida la macchina — ancora sotto 4 GB.

Su uno Mac il vincolo si rilassa: memoria unificata condivisa tra CPU e Metal GPU. Stesse quattro fasi, modelli più grandi, e crucialemente un cervello di chat reale invece di un tool-caller 270M - e l'intero loop si adatta ancora a ~4 GB.

Lo LLM è il cervello, ed è dove la dimensione del modello smette di essere opzionale. Dopo i test, due modelli si sono guadagnati il lavoro: FunctionGemma 270M su mobile (sebbene emettere una chiamata di strumento, tutti gli agenti del telefono hanno bisogno) e Gemma 4 E2B/E4B (4-bit MLX) sul desktop (genuine conversazione multi-turn e ragionamento che regge, mentre rimane leggero). Il centro tentante — un compatto sub-1B chat head — guarda libero su impronta ma ciottoli su reale multi-turn, quindi non ha fatto il taglio. Il salto che conta non è 0.27B → 0.8B; è FunctionGemma’s tool-calls → Gemma 4 La conversazione.

Anche il resto della pila sale: il desktop scambia il Parakeet-EOU leggero per Parakeet-TDT (completamente multilingue), e TTS rimane su Supertonic-3 ovunque — veloce, 44.1 kHz, stabile. Saltiamo i più pesanti modelli TTS a zero-shot-cloning di proposito; clonazione non è abbastanza affidabile per sedersi all'interno di un agente sempre su.

FaseMobileDesktop ( 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~3.6 GB
Stage · modelloMac · M5 Pro (4-bit MLX / CoreML
VAD · Silero v6.2.1sub-ms / chunk
STT · Parakeet-TDT0.04 RTF · 1.3 GB
LLM · Gemma 4 E2B214 tok/s · 2.9 GB
TTS · Supertonic-30.03 RTF · 0.9 GB

RTF = parete ÷ audio-secondi (più basso = più veloce); il LLM file è decode throughput. La memoria di picco è per modello da solo — caricato insieme l'intero loop è co-resident in ~3.6 GB (ben sotto 4 GB): il CoreML STT.TTS/VAD pesi sono memoria-mapped, in modo da non impilare il modo in cui i picchi isolati sarebbe.

Takeaways

Una pipeline, abbinata al budget.

Le porte della pipeline; i modelli non

VAD → STT → LLM → TTS è identico ovunque. Tutto ciò che è interessante è abbinare ogni fase all’acceleratore e alla memoria del dispositivo.

Mobile: NPU-first, ~1.2–1,5 GB

La ANE rende iOS efficientemente libera dal senso della CPU; Android è CPU-real-time oggi con NPU headroom per venire.

Desktop: un vero cervello, ancora ~4 GB

L'intero ciclo si adatta a ~4 GB, e quel budget acquista Gemma 4 ragionamento che guida la macchina per voce, più Parakeet-TDT multilingue.

Tutto è locale

Audio e stato conversazione non lasciare mai il dispositivo — percezione, ragionamento e sintesi tutti funzionano sul metallo di fronte a voi.

Where next

Continua a leggere.