Lea es un asistente de voz en el navegador: un orbe minimalista, wake word, respuestas en streaming y TTS natural. Pensado para pantallas táctiles, kioscos y despliegues web como lea.grisbope.com.
Toca el orbe, di Lea, Alexa o Jarvis, habla y escucha la respuesta.
Mi papel
Diseñé y desarrollé la experiencia de voz de extremo a extremo: estados visuales, activación por palabra, captura de audio, respuesta en streaming y síntesis de voz para una interfaz pensada para pantallas táctiles.
Decisión clave
Eliminé deliberadamente el chat y el teclado. El orbe concentra toda la interacción y comunica cada estado con color y movimiento, de modo que la experiencia pueda entenderse a distancia y sin ruido visual.
Qué hace
Interfaz solo voz: sin chat, sin teclado, sin ruido visual. El orbe cambia de color según el estado:
| Estado | Qué ocurre | |--------|------------| | Idle | Escucha la wake word o espera un toque | | Listening | Captura tu frase | | Thinking | Consulta a OpenClaw | | Speaking | Responde con TTS en streaming | | Error | Mensaje breve y vuelve a idle |
Barge-in: si hablas mientras responde, interrumpe y escucha de nuevo.
Despedida: «adiós», «gracias Lea», «hasta luego» → vuelve a reposo.
Resultado
Lea quedó como un asistente web desplegable para kioscos y superficies táctiles, con conversación por voz, interrupción durante la respuesta y una interfaz que vuelve a reposo al terminar.
Stack
- React 18 + Vite 5 + Tailwind CSS
- Web Speech API + VAD (Silero ONNX en el cliente)
- OpenClaw como backend conversacional (SSE streaming)
- OpenAI para STT/TTS (configurable)
- Docker + nginx para producción
Enlaces
- Repositorio: github.com/grismaldo/lea
- Demo: lea.grisbope.com

