← Voltar aos projetos Estudo de caso · Assistente virtual

Saphira

Assistente pessoal com voz e rosto expressivo: o celular vira microfone, tela e controle; o computador pensa, fala e executa tarefas. Comandos por texto e voz, integração de APIs e automação — tudo dentro da minha rede local.

Em aprimoramento · uso pessoal Rede local · sem nuvem
Papel
Concepção, fluxos e desenvolvimento
Stack
Python · FastAPI · WebSocket · Android WebView
Voz
Whisper (transcrição) + síntese de fala
Modelos
Groq · NVIDIA · Gemini · Ollama (fallback local)
Comandos
33 tipos, organizados por categoria
Memória
SQLite local, no computador
Diagrama da Saphira: do aplicativo Android ao servidor, interpretação, IA e resposta
ExpressõesRosto animado com 8 humores

A ideia

Ter uma assistente que mora no computador que eu já uso: ouvir e ler comandos, responder com voz, mostrar expressão no rosto e executar tarefas reais — arquivos, scripts, consultas — sem depender de serviços de assistente prontos.

O nome vem da pronúncia “safirra”. A versão atual do aplicativo Android usa uma arquitetura WebView nativa (HTML, CSS e JavaScript locais), escolhida depois que a abordagem anterior apresentou instabilidade: uma Activity minimalista carrega a interface local, que se conecta ao backend por WebSocket.

Como funciona

Diagrama da Saphira em cinco passos: aplicativo Android envia, servidor interpreta, IA e ferramentas executam, resposta volta com áudio e o rosto muda de expressão
O ciclo completo: celular → servidor no computador → interpretação → IA e ferramentas → resposta com voz e expressão.Clique para ampliar
Ver o fluxo em texto (acessível)
  1. O app Android envia texto, áudio ou imagem pelo WebSocket (ws://IP:PORTA/ws).
  2. O servidor transcreve áudio com Whisper, quando necessário.
  3. A intenção é interpretada: palavras-chave de um dos 33 comandos, análise de imagem ou conversa livre.
  4. O comando executa no sistema (arquivos, scripts, consultas) ou a resposta é gerada por um LLM.
  5. A resposta volta com texto e áudio sintetizado.
  6. O rosto expressivo atualiza a expressão (pensando, feliz, triste, bravo e outros humores).

Arquitetura

  • Servidor (o “cérebro”) — Python com FastAPI e Uvicorn: endpoints HTTP e o canal WebSocket bidirecional com o celular; pipeline de voz, intenção e execução.
  • Comandos e ferramentas — 33 comandos registrados em categorias (sistema, arquivos, banco de dados, consultas), cada um uma função com parâmetros e mensagem de resposta.
  • App Android — Activity nativa minimalista com WebView carregando HTML local; rosto expressivo desenhado em SVG/CSS com olhos, sobrancelhas e boca animados.
  • Modelos de linguagem — Groq para conversa rápida, NVIDIA para análise de imagens, Gemini como alternativa e Ollama com modelo local como fallback.
  • Memória — SQLite guarda preferências, fatos e contextos do usuário entre conversas.

Privacidade por padrão

As chaves de API ficam no computador, em arquivo de configuração local; os dados e a memória não saem dele. A comunicação entre celular e computador acontece pela rede local (LAN), e o fallback com modelo local permite conversar mesmo sem provedores externos.

Limites e próximos passos

  • Projeto pessoal em aprimoramento: depende de rede local estável e das chaves configuradas.
  • Reconhecimento de intenção por palavras-chave é simples e direto — e às vezes rígido demais; ampliar comandos e combinar com interpretação por LLM é o próximo passo.
  • Quero voz mais natural, mais expressões faciais e uma instalação mais simples em outros computadores.