Introducción
El campo de los sistemas de diálogo basados en LLM ha evolucionado rápidamente en el último año, si antes el enfoque estaba en los fundamentos del diálogo por voz con IA generativa, hoy vemos una transición hacia aplicaciones prácticas, especialmente en el ámbito empresarial.
En este contexto, exploramos la construcción de un “diálogo robot” con simultaneidad y co-presencia física utilizando:
- iPhone 12 como dispositivo principal
- Swift como lenguaje de programación
- OpenAI Realtime API como motor conversacional
- Apple DockKit para seguimiento facial
El objetivo es demostrar que es posible crear un sistema robótico interactivo funcional con una inversión mínima.

Arquitectura del sistema y capacidades de la Realtime API
La API en tiempo real permite:
- Conversación multimodal (texto y audio)
- Baja latencia
- Gestión automática de interrupciones
- Soporte de llamadas a funciones
- Comunicación vía WebSocket en formato JSON
Procesamiento de audio: remuestreo y envío
El audio capturado por el micrófono requiere adaptación antes de enviarlo
Requisitos de la API:
- Frecuencia de muestreo: 24,000 Hz
- Tamaño de fragmento aproximado: 2400 samples (~0.1 segundos)
- Formato PCM 16-bit
- Codificación en Base64

Por lo tanto, es necesario:
- Remuestrear el audio
- Ajustar tamaño de fragmentos
- Convertir formato si es necesario
- Comprimir en Base64
Este paso es clave para asegurar estabilidad y evitar comportamientos erráticos como respuestas incorrectas o silencios inesperados.
Reproducción de audio, animación y cancelación de eco
La reproducción del audio recibido desde la API requiere:
- Decodificar Base64
- Convertir formato
- Gestionar una cola de reproducción
- Monitorear estado del altavoz
Cancelación de eco
Un problema común en sistemas robóticos es que el micrófono capture el sonido del altavoz.
En este prototipo, se resolvió mediante:
- Desactivar temporalmente el micrófono durante la reproducción
- Enviar audio con ceros cuando el micrófono está deshabilitado
Aunque no es una solución avanzada de cancelación de eco, permite evitar que el robot inicie conversaciones consigo mismo.

Seguimiento facial con DockKit
DockKit es un soporte motorizado compatible con seguimiento facial del iPhone.
Curiosamente, no fue necesario usar directamente la librería DockKit.
Bastó con:
- Activar la cámara frontal
- Mostrar el preview de forma transparente
- Permitir que el sistema nativo de cámara gestionara el seguimiento
Esto sugiere que el seguimiento puede estar integrado a nivel del sistema operativo.
El resultado es un robot que:
- Mantiene contacto visual
- Reacciona con animación facial
- Responde en tiempo real

Recomendaciones
- Ajustar cuidadosamente turn_detection para evitar silencios no detectados.
- Implementar remuestreo preciso a 24kHz para garantizar estabilidad.
- Considerar integrar cancelación de eco basada en ML para sistemas comerciales.
- Usar cálculo RMS en tiempo real si se busca sincronización labial avanzada.
- Evaluar la viabilidad de dividir STT, LLM y TTS si se requiere mayor control en producción.
Conclusiones
- El desarrollo de sistemas de diálogo robóticos ha alcanzado un punto donde su implementación práctica es viable, especialmente en entornos empresariales.
- Utilizando un iPhone, Swift y la OpenAI Realtime API, es posible construir un robot interactivo funcional con una inversión significativamente menor que los robots tradicionales
- Aunque aún existen desafíos técnicos, como cancelación de eco, robustez del reconocimiento de voz y estabilidad en ambientes ruidosos, el costo-beneficio de esta aproximación es altamente atractivo.
- La combinación de dispositivos de consumo con IA generativa avanzada podría acelerar la implementación social de robots en los próximos años.
Glosario
- Realtime API: Interfaz que permite interacción multimodal de baja latencia mediante WebSocket
- Remuestreo: Proceso de adaptar la frecuencia de muestreo de una señal de audio.
- RMS (Root Mean Square): Método para calcular la intensidad promedio de una señal de audio
- Turn Detection: Sistema que detecta cuándo un interlocutor ha terminado de hablar.
- Cancelación de eco: Técnica que evita que el micrófono capture el sonido emitido por el propio altavoz.