O termo “assistente de bancada” deixou de ser sinônimo de produto fechado. Hoje existe uma pilha open-source suficiente para montar, do zero, um companheiro de IA sobre um módulo de poucos dólares — e o mais relevante é que as peças já se encaixam. Este panorama mapeia os repositórios que sustentam esse ecossistema, o que cada um entrega de fato e onde estão os gargalos reais: API de nuvem, TLS no microcontrolador e streaming de áudio.
Os repositórios que formam a base
78/xiaozhi-esp32
É hoje a referência mais direta para um chatbot de bancada. O firmware implementa o ciclo completo de áudio (captura, wake word, envio, reprodução) sobre ESP32, ESP32-S3 e variantes C3, com uma arquitetura de tool calling via MCP (Model Context Protocol). O que se aproveita direto: a máquina de estados de áudio, o cliente de rede, o particionamento de flash e o fluxo de OTA. A licença MIT é o detalhe estratégico — permite incorporar o código a um produto próprio sem obrigar a abrir o restante.
espressif/esp-sparkbot
O ESP-SparkBot leva o conceito um passo além: é um robô LLM baseado em ESP32-S3 com display, câmera e base móvel, apresentado no blog da Espressif. Em vez de apenas um chatbot, entrega firmware, estrutura mecânica e os serviços de ASR, LLM e TTS já costurados. O valor aqui é de referência de integração: mostra como combinar áudio, vídeo e movimento em um único S3 sem travar o pipeline de áudio.
espressif/esp-sr
É o componente que resolve o ponto mais frágil de qualquer assistente embarcado: detectar a palavra-chave sem nuvem. O ESP-SR empacota o WakeNet (wake word), o AFE (front-end com AEC, supressão de ruído e AGC) e modelos multi-idioma. É a peça que garante latência de detecção abaixo de 100 ms e funcionamento offline, independente de rede.
espressif/esp-box
O ESP-BOX é o devkit de referência da Espressif para interação por voz com display. Traz firmware de exemplo, array de microfones, codec de áudio e uma UI pronta. Serve como placa de validação: se o seu pipeline roda no BOX, ele roda em qualquer S3 equivalente.
lvgl/lvgl
Camada de interface. O LVGL é a biblioteca de UI embarcada mais usada no ecossistema, com widgets, temas e desenho acelerado por DMA. Para um assistente de bancada, é o que transforma um LED de status em uma interface de verdade — nível de áudio, transcrição e botões.
ollama/ollama
Fecha o loop do lado servidor. Com o Ollama, o LLM roda na sua máquina ou no seu homelab e expõe uma API HTTP compatível com o formato OpenAI. Isso permite trocar a nuvem por um endpoint local — decisivo para privacidade, custo zero por token e operação em rede isolada.
Tabela comparativa de repositórios
| Repositório | URL | Licença | Hardware-alvo | O que entrega |
|---|---|---|---|---|
| 78/xiaozhi-esp32 | https://github.com/78/xiaozhi-esp32 | MIT | ESP32 / ESP32-S3 / C3 | Firmware de chatbot com fluxo de áudio, wake word, tool calling (MCP) e OTA |
| espressif/esp-sparkbot | https://github.com/espressif/esp-sparkbot | Apache-2.0 | ESP32-S3 (ESP-SparkBot) | Robô LLM: firmware, mecânica, display, câmera e ASR/LLM/TTS integrados |
| espressif/esp-sr | https://github.com/espressif/esp-sr | Apache-2.0 | ESP32-S3 / ESP32 | WakeNet (wake word) + AFE (AEC/NS/AGC) + modelos multi-idioma |
| espressif/esp-box | https://github.com/espressif/esp-box | Apache-2.0 (com componentes de terceiros) | ESP32-S3-BOX / BOX-3 | Devkit de referência com display, mic array e firmware de exemplo |
| lvgl/lvgl | https://github.com/lvgl/lvgl | MIT | Qualquer MCU/MPU | Biblioteca de UI gráfica embarcada (widgets, temas, DMA) |
| ollama/ollama | https://github.com/ollama/ollama | MIT | PC / servidor (homelab) | Runtime de LLM local com API HTTP compatível com OpenAI |
Tabela comparativa de APIs para hardware
| API | Latência típica | Custo | Limite de contexto | TLS/streaming no MCU |
|---|---|---|---|---|
| OpenAI Realtime (WebSocket, áudio nativo) | ~300–800 ms | Alto (cobrança por áudio/minuto) | ~128k tokens | WebSocket + TLS são pesados; na prática exige proxy/ponte |
| OpenAI Chat Completions (SSE) | 0,5–2 s | Médio (por token) | ~128k tokens | SSE exige TLS + parsing de chunked; viável com esp_http_client |
| Google Gemini Live | ~300–700 ms | Médio-alto | Até ~1M tokens | WebSocket; mesma barreira do Realtime |
| Ollama (local, HTTP) | Depende da GPU local | Zero por token (custo é o hardware) | Depende do modelo carregado | HTTP local sem TLS; streaming por linhas JSON é trivial |
| WakeNet / ESP-SR (on-device) | <100 ms | Zero | N/A (comando) | Não usa rede; roda no próprio MCU |
Como isso acelera um ecossistema próprio
Repare no padrão: cada repositório resolve uma camada e não exige coordenação com as demais. O ESP-SR cuida do áudio embarcado; o xiaozhi-esp32 dá o esqueleto de aplicação; o LVGL cuida da interface; o Ollama fecha o lado servidor. Isso significa que uma equipe pequena não precisa construir do zero a stack de voz — começa pelo firmware pronto, troca o backend e evolui a UI.
A divisão de trabalho fica explícita em três camadas: (1) aquisição e front-end de áudio no MCU; (2) transporte e roteamento (TLS, WebSocket, MCP); (3) inteligência (LLM local ou na nuvem). Escolher onde traçar a linha entre a camada 2 e a 3 é a decisão mais estratégica do projeto — e é exatamente o que a comparação de APIs acima ilumina. Um protótipo que fica no WakeNet + Ollama local tem latência e custo radicalmente diferentes de um que aposta no Realtime na nuvem.
Do ponto de vista de engenharia, o ganho é composto: você herda um pipeline de áudio já testado, um esquema de interface pronto e um backend substituível. O esforço migra da infraestrutura para o produto — que é onde ele deveria estar.
Este texto é o mapa; a montagem vem depois. Se você quer o contexto de voz offline antes de partir para o hardware, vale revisar os artigos anteriores sobre assistentes de voz offline e a série J.A.R.V.I.S. Para o runtime de modelo, veja o material sobre LLMs locais; e para a integração com hardware mais amplo, a discussão sobre Edge AI.
Não some depois da matéria
Radar do hub: Núcleo Hits, Além do Oculto, Bobinho. Sem spray, sem lista comprada.
Radar do hub
Um e-mail quando sair matéria que importa — sem spray de newsletter genérica.

Deixe um comentário
Entre com Google ou Facebook para comentar. Nome e e-mail vêm da sua conta — sem preencher formulário.
Se o login falhar, configure Google e Facebook em Configurações → Nextend Social Login.
Outras opções de login