Mascota AR

Steven Silva2 min de lectura
  • unity
  • mascotas
  • AR
  • IA

🔄 Estructura de la Conexión (Flujo de Datos)

​El cliente (Unity) no se comunica directamente con las APIs de IA para evitar exponer las claves privadas dentro de la aplicación móvil y para reducir la carga de procesamiento en el dispositivo.

​El ciclo de interacción es el siguiente:

  1. ​Captura (Unity): El usuario pulsa un botón y habla. Unity graba un archivo de audio temporal (.wav o .ogg).
  2. ​Envío (Unity -> Node.js): Unity envía el archivo de audio al backend mediante una petición POST multipart/form-data.
  3. ​Transcripción (Node.js -> STT): El backend envía el audio a la API de Speech-to-Text. Se obtiene el texto de la pregunta.
  4. ​Procesamiento LLM (Node.js -> Gemini/OpenAI): El backend inyecta el "System Prompt" (personalidad de la mascota), adjunta el historial de la conversación reciente y envía la transcripción al LLM.
  5. ​Síntesis de Voz (Node.js -> TTS): La respuesta en texto del LLM se envía a la API de Text-to-Speech, generando un archivo de audio de respuesta.
  6. ​Retorno (Node.js -> Unity): El backend responde a Unity con un JSON que contiene el texto de la respuesta (para logs o subtítulos) y el enlace o buffer del audio generado.
  7. ​Acción (Unity): La mascota reproduce el audio, ejecuta la animación de hablar y vuelve a su estado de autonomía (Idle/Caminar).

​🔌 Estructura de la API (Node.js)

​La API RESTful expondrá los siguientes endpoints principales:

​POST /api/v1/interact

​El endpoint principal que orquesta todo el flujo (STT -> LLM -> TTS).

  • Request: multipart/form-data conteniendo el archivo de audio (audioblob) y un identificador de sesión (sessionId) para mantetener el contexto.
  • Response: JSON con el resultado.
{
   "success": true,
   "user_text": "¿Qué estás mirando?",
   "pet_response": "Solo vigilo que no haya fantasmas en tu habitación.",
   "audio_url": "/temp/response-1234.mp3",
   "emotion": "suspicious"
}

GET /api/v1/health

​Endpoint para que Unity verifique si el servidor está activo antes de intentar enviar comandos.

​DELETE /api/v1/session/:id

​Limpia el historial de memoria de una conversación específica.

​🛠️ Instalación y Uso Local

Backend

  1. ​Navega a la carpeta /backend.
  2. Instala las dependencias usando pnpm: pnpm install
  3. ​Crea un archivo .env basado en .env.example y añade tus API Keys.
  4. ​Levanta el servidor en modo desarrollo: pnpm run dev (o mediante Docker: docker-compose up).

Cliente AR (Unity)

  1. ​Abre el proyecto en Unity Hub.
  2. ​Asegúrate de tener instalado el paquete de Vuforia Engine.
  3. ​En la escena principal, configura la URL base del backend en el script NetworkManager.
  4. ​Compila para Android/iOS o prueba en el editor usando una Webcam.