Mascota AR
Steven Silva2 min de lectura
🔄 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:
- Captura (Unity): El usuario pulsa un botón y habla. Unity graba un archivo de audio temporal (.wav o .ogg).
- Envío (Unity -> Node.js): Unity envía el archivo de audio al backend mediante una petición POST multipart/form-data.
- 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.
- 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.
- 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.
- 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.
- 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
- Navega a la carpeta /backend.
- Instala las dependencias usando pnpm: pnpm install
- Crea un archivo
.envbasado en.env.exampley añade tus API Keys. - Levanta el servidor en modo desarrollo: pnpm run dev (o mediante Docker: docker-compose up).
Cliente AR (Unity)
- Abre el proyecto en Unity Hub.
- Asegúrate de tener instalado el paquete de Vuforia Engine.
- En la escena principal, configura la URL base del backend en el script NetworkManager.
- Compila para Android/iOS o prueba en el editor usando una Webcam.