Skip to content

IoT voice companion for positive children's development, actively combating passive social media consumption and dependency on AI for critical thinking

Notifications You must be signed in to change notification settings

ericklopezdev/crowbot-iot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crowbot - Proyecto de Asistente IOT

Resumen del Proyecto

Los días modernos se están volviendo grises debido al sobreconsumo de contenido en redes sociales y la dependencia de herramientas de IA. Especialmente para las próximas generaciones.

Crowbot surge como un contrapunto a esta tendencia: un asistente de voz IoT que reimagina la IA como una fuerza positiva para el desarrollo infantil. Al crear un compañero de aprendizaje interactivo y con voz, Crowbot ayuda a los niños a desarrollar habilidades de comunicación genuinas, fomenta la curiosidad a través de la educación conversacional y proporciona una alternativa saludable a las interacciones pasivas basadas en pantallas.

Idea del Proyecto

Audiencia Objetivo

  • Niños de 5-12 años curiosos.
  • Educadores que buscan herramientas de enseñanza innovadoras.
  • Padres que desean complementar métodos de aprendizaje tradicionales.

Diagrama de Arquitectura

[Dispositivo Local / IoT] <--> Broker MQTT <--> [Servidor] <--> API HTTP <--> [Aplicación Web]
     |                           |              |
     v                           v              v
[Grabación de Audio] --> [STT] --> [LLM] --> [TTS] --> [Reproducción]
     |                           |
     +--> Prueba Local (cmd/local) |
     +--> Prueba MQTT (test_mqtt.sh)

Características Futuras

Iteraciones Planificadas

  • Broker MQTT
  • Backend MQTT
  • Pruebas Locales
  • Simulación de Flujo de Trabajo
  • Configuración Esp32 con sensores (micrófono, amplificador y altavoz)
  • Persistencia de Base de Datos
  • API Backend HTTP ApiRest
  • Visualizador de Dashboard de Aplicación Web Frontend

Arquitectura

Componentes

  • Grabador Local (internal/utils/local_recorder.go): Maneja la grabación de audio desde el micrófono, guarda en WAV y activa el procesamiento.
  • Orquestador Local (internal/core/local_orchestrator.go): Coordina la canalización STT → LLM → TTS para procesamiento local.
  • Orquestador (internal/core/orchestrator.go): Orquestador general para procesamiento basado en MQTT.
  • Cliente MQTT (internal/mqtt/client.go): Maneja conexiones MQTT, publicación y suscripción para procesamiento distribuido.
  • Servicios:
    • GCP STT (internal/services/gcp_stt_service.go): Convierte audio a texto usando Google Speech-to-Text.
    • Gemini LLM (internal/services/gemini_service.go): Procesa prompts de texto y genera respuestas.
    • GCP TTS (internal/services/gcp_tts_service.go): Convierte respuestas de texto a audio y maneja la reproducción.

Flujo de Simulación Local

  1. Grabación: El usuario presiona 'R' para iniciar/detener la grabación vía PortAudio.
  2. Procesamiento de Audio: Los chunks PCM crudos se recopilan y guardan como local_record.wav.
  3. STT: El archivo WAV se envía a Google STT (español), devuelve texto transcrito.
  4. LLM: El texto se envía a Gemini con prompt del sistema, devuelve texto de respuesta.
  5. TTS: El texto de respuesta se sintetiza a audio (voz en español).
  6. Reproducción: El audio se reproduce vía PortAudio, y se guarda como local_response.wav para depuración.

Flujo Distribuido MQTT

  1. Codificación de Audio: Divide el audio grabado en chunks (ej. segmentos PCM de 1 segundo), codifica a base64.
  2. Publicación MQTT: Envía chunks a tópicos MQTT (/device/audio/start, /device/audio/chunk, /device/audio/end).
  3. Procesamiento del Servidor: El servidor MQTT se suscribe, reensambla el audio, ejecuta STT/LLM/TTS, divide la respuesta en chunks.
  4. Suscripción MQTT: El cliente recibe chunks de respuesta de /device/{device_id}/audio/response_chunk, decodifica, reensambla y reproduce.
  5. Gestión de Chunks: Usa números de secuencia y conteo total para ordenar.

Prerrequisitos

  • Go 1.25.1+
  • Credenciales de Google Cloud
  • Variables de entorno:
    • GEMINI_API_KEY: Tu clave de API de Gemini
    • PROMPT: Prompt del sistema para el LLM (ej. "Eres un asistente útil.")
  • Dependencias: Instala con go mod tidy
  • Para MQTT: Broker Mosquitto (ver infra/mosquitto/mosquitto.conf)

Ejecutando Simulación Local

go run cmd/local/main.go
  • Presiona 'R' luego Enter para iniciar la grabación.
  • Habla en español.
  • Presiona 'R' de nuevo para detener y procesar.
  • El audio de respuesta se reproduce automáticamente.

Ejecutando Servidor MQTT

go run cmd/mqtt/main.go
``` - Inicia el servidor MQTT escuchando en `tcp://localhost:1883`. Procesa chunks de audio de dispositivos y envía respuestas de vuelta.

### Probando MQTT

Usa el script de prueba proporcionado:

```bash
./test_mqtt.sh test.wav [broker] [port]
  • Convierte test.wav a chunks, envía vía MQTT, recibe y reproduce respuesta.

Archivos Generados

  • local_record.wav: Audio grabado (modo local).
  • local_response.wav: Respuesta sintetizada (modo local).
  • combined.pcm: Audio de respuesta reensamblado (modo MQTT).

Hardware del Proyecto

Esta configuración permite escalar a múltiples dispositivos IoT mientras mantiene respaldo local. README.md

About

IoT voice companion for positive children's development, actively combating passive social media consumption and dependency on AI for critical thinking

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published