Agentes de voz GPT-Live-1: sesiones, modos de delegación y costos reales de línea telefónica.
Un recorrido práctico por el modelo de voz full-duplex de OpenAI: cómo se desarrolla una sesión, respuestas frente a la delegación del cliente, una estimación de costos detallada y las trampas en la documentación.
Fuentes: How to Use GPT-Live-1: Build a Voice Agent That Listens While It Talks
Cualquiera que haya llamado a un restaurante y llegado a un bot de voz conoce ese momento. Dices algo, hay una pausa, y luego el bot comienza a responder a la pregunta que hiciste cinco segundos antes, justo cuando intentas corregirte. La mayoría de las personas terminan presionando 0 para hablar con un humano.
Ese ritmo incómodo está integrado en el diseño habitual. Un bot de voz clásico espera a que dejes de hablar, convierte el audio en texto, piensa, convierte la respuesta de vuelta a voz y la reproduce. Nadie puede hablar por encima del otro.
GPT-Live-1 es el intento de OpenAI por adoptar un enfoque diferente. Es el modelo detrás de ChatGPT Voice, ofrecido a través de la API, y escucha mientras habla. Esta página explica qué lo diferencia, cómo funciona una sesión, cómo transfiere preguntas complejas a un modelo backend y cuánto costaría una línea telefónica pequeña.
Qué es GPT-Live-1
Es un modelo de voz full-duplex. Full-duplex significa que ambas partes pueden hablar al mismo tiempo, como en una llamada telefónica normal. Si quien llama interrumpe diciendo “en realidad, que sean cuatro personas”, el modelo se detiene, hace los ajustes necesarios y continúa.
El modelo también deja las tareas de procesamiento complejo a otra entidad. Cada vez que se requiere un esfuerzo real, ya sea una búsqueda, una consulta en el sistema de reservas o un razonamiento cuidadoso, la tarea se transfiere a un modelo backend separado. El material de lanzamiento de OpenAI indica un retraso en el turno de aproximadamente 0.8 segundos, frente a los unos 1.4 segundos del modelo de voz anterior. Considérelo una cifra proporcionada por el proveedor.
La consecuencia práctica es que la voz y el procesamiento intelectual se convierten en tareas separadas. La voz se encarga de la conversación, mientras que el backend se ocupa del razonamiento y las herramientas.
Delegación: una voz que habla y un cerebro que piensa
Lo que OpenAI denomina “transferencia” es en realidad delegación. Constantemente, en fracciones de segundo, el modelo de voz decide si debe permanecer en silencio escuchando, detenerse, hablar o transferir una tarea al servidor posterior. La llamada nunca se congela mientras se ejecuta esa tarea, ya que la voz puede decir rápidamente “Déjame verificar” y continuar con la conversación.
Imagínese a una persona que llama para preguntar en la fila de un restaurante si hay una mesa para cuatro disponible a las 7:30 de la tarde del viernes. El modelo responde “Déjame comprobarlo”, envía la consulta de disponibilidad al servidor posterior y le informa al cliente el resultado una vez recibe la respuesta.
Esta separación también resuelve un problema relacionado con la información actualizada. Según su página del modelo, los conocimientos del modelo de voz finalizan el 31 de julio de 2025, por lo que cualquier información reciente debe provenir del servidor posterior de todos modos.
Inicio de una sesión de voz
Las opciones de conexión son WebRTC para aplicaciones de navegador, WebSockets para audio desde un servidor y telefonía SIP para números de teléfono reales. Sea cual sea la opción que elija, los eventos son similares, por lo que los pasos a continuación se aplican a todos ellos.
Paso 1: guardar la clave API en un servidor
Mantenga la clave alejada de los navegadores. Su propio servidor de confianza creará la sesión, mientras que el navegador solo se encargará del micrófono y el altavoz. Se necesita una cuenta de pago, ya que no se admite la versión gratuita, y los límites de uso contabilizan las sesiones en vivo simultáneas y aumentan según su nivel de uso.
Paso 2: iniciar la sesión
Una vez conectado, envíe un único evento session.start que contenga sus configuraciones.
{
"type": "session.start",
"session": {
"model": "gpt-live-1",
"instructions": "Be concise and ask before taking an external action.",
"audio": { "output": { "voice": "marin" } },
"delegation": { "type": "client" }
}
}
Ese evento elige el modelo, proporciona instrucciones, selecciona una voz y determina quién se encarga del trabajo en segundo plano. Espera a que se devuelva session.started antes de hablar. El modelo, las instrucciones y la voz quedan fijos una vez que comienza la sesión, por lo que las reglas posteriores se aplican a través de session.instructions.append en lugar de reemplazar el texto original.
Paso 3: transmitir audio en ambas direcciones
Con WebRTC, el navegador se encarga del audio. A través de WebSockets, se envían pequeños fragmentos mediante los eventos session.input_audio.append. El formato es estricto: PCM mono en bruto de 16 bits, codificado en base64, sin encabezado WAV, a la tasa de muestreo configurada al iniciar (24 kHz es el valor predeterminado). La voz del modelo se devuelve de la misma manera, a través de los eventos session.output_audio.delta. Si el audio de origen utiliza una tasa diferente, resámelo usted mismo, ya que cambiar la configuración de formato no convierte los bytes.
Paso 4: leer las transcripciones
El texto en tiempo real de ambas partes llega a través de los eventos session.input_transcript.delta y session.output_transcript.delta. No existe un evento de “finalización de turno”, ya que ambas partes pueden hablar simultáneamente. Si su aplicación necesita turnos organizados para los registros, agrupe los fragmentos en su lado.
Paso 5: cerrar de forma ordenada
Envíe session.close y continúe leyendo hasta que aparezca session.closed. Ese último evento contiene las cifras de uso según las cuales se le facturará. Si la conexión se interrumpe antes de que llegue, no se obtiene un registro confirmado del uso, lo cual es importante al conciliar una factura.
El paso que la gente olvida con más frecuencia es el cuarto: crear transcripciones legibles a partir de fragmentos de audio.
Entrega del trabajo al backend
Aquí GPT-Live-1 deja de ser una voz agradable para convertirse en un agente útil. Se elige uno de los dos modos de delegación al iniciar la sesión, y no se puede cambiar a mitad de proceso. Para cambiar, debe iniciarse una nueva sesión.
Opción A: Delegación de respuestas
Usted indica el modelo de respuestas al que debe recurrir la voz y las herramientas que puede utilizar. La configuración se encuentra en el objeto de sesión junto con el nombre del modelo.
"delegation": {
"type": "responses",
"responses": {
"model": "gpt-5.5",
"instructions": "Use tools when current information is required.",
"tools": [{ "type": "web_search" }],
"tool_choice": "auto"
}
}
A partir de entonces, las preguntas de los usuarios que requieren una búsqueda son manejadas por el backend, y el resultado se integra en la conversación en curso. Las funciones personalizadas son diferentes: una función como check_table no es ejecutada por el backend. Tu aplicación recibe la llamada, la ejecuta, devuelve el resultado y luego indica al backend que continúe.
Imagina que un usuario pregunta si lloverá el viernes por la tarde, ya que el grupo podría sentarse afuera. El backend realiza una búsqueda en la web; la voz indica que se espera lluvia ligera después de las seis, por lo que estar adentro podría ser más seguro, y el usuario no tiene que soportar un largo silencio.
Opción B: delegación al cliente
Aquí tu propia aplicación actúa como backend. Cuando el modelo necesita ayuda, recibes un evento session.delegation.created que contiene un ID. Realizas el trabajo como desees y envías la respuesta junto con ese mismo ID.
{
"type": "session.commentary.append",
"delegation_id": "item_delegation_123",
"content": "Table for 4 is confirmed at 7:30 pm Friday."
}
Un mensaje de comentario significa que el modelo debe leer el texto en voz alta. Si el modelo debe conocer algo en silencio, session.thinking.append se encarga de eso en su lugar. Cada mensaje puede contener hasta unos 500 tokens. En principio, un manejador de clientes podría pasar la tarea a un framework de agentes de su elección, aunque esa combinación requiere pruebas propias antes de poder confiar en ella.
Una opción sensata es comenzar con la delegación de respuestas gestionadas y pasar a la delegación en el cliente una vez que se necesite un mayor control sobre los permisos, las confirmaciones o el propio flujo de trabajo.
Costo
La capa de voz cuesta 0,05 dólares por minuto, facturándose por segundo. Eso equivale a 3 dólares por hora o 72 dólares al día para una línea que permanece activa las 24 horas. Los modelos y herramientas de backend se facturan por separado, por lo que el costo total real depende de la frecuencia con la que las llamadas necesitan asistencia.
Un ejemplo práctico, utilizando cifras estimadas:
- Supongamos que la línea de un restaurante recibe 2,000 llamadas al mes, cada una de aproximadamente 3 minutos. Eso suma 6,000 minutos, por lo que solo la comunicación por voz representa 6,000 veces $0.05, es decir, $300.
- A continuación, supongamos que hay dos transferencias por llamada, cada una con unos 3,000 tokens de entrada y 300 tokens de salida, en un servicio en la nube cuyo costo es $10 por millón de tokens de entrada y $50 por millón de tokens de salida. Una sola transferencia cuesta $0.03 más $0.015, es decir, $0.045. Dos transferencias suman $0.09 por llamada, por lo que 2,000 llamadas representan un costo adicional de $180.
- El total asciende a aproximadamente $480 al mes, o unos 24 centavos por llamada.
Las cantidades de tokens y las tarifas del servicio en la nube son estimaciones para un flujo de reserva simple, así que mida su propio tráfico antes de confiar en ellas. La parte relacionada con la voz es predecible, mientras que la parte del servicio en la nube es la que debe vigilarse atentamente.
Detalles que los artículos de lanzamiento omiten
Interrumpir no cancela el trabajo
Según la documentación, interrumpir el discurso del asistente no detiene automáticamente el trabajo en el backend. Una persona que diga “no importa” aún puede recibir el resultado de la búsqueda o la reserva, a menos que su aplicación lo detenga. Esto no supone un problema para una consulta meteorológica, pero sí lo es en el caso de una solicitud de reserva seguida de “espera, no”.
Lo recibido no se escucha
Añadir un resultado genera una confirmación, pero eso no indica que el modelo realmente lo haya pronunciado ni que alguien que escuche lo haya oído. Finalizar una respuesta en el backend es un evento, y que la persona que llama la escuche es otro. Para cualquier cosa que necesite ser confirmada, como la hora de la reserva, busque el texto en la transcripción de salida.
Los números de referencia varían según la fuente
Las puntuaciones de las pruebas publicadas para el modelo en tareas de servicio al cliente difieren entre los artículos propios de OpenAI y las coberturas de prensa. En cualquier caso, el aumento reportado con respecto al modelo anterior es significativo, pero se trata de resultados proporcionados por el proveedor y las pruebas independientes son escasas. Las historias de clientes, como la de una empresa de aprendizaje de idiomas que informa de muchas menos interrupciones durante las pausas de reflexión de los estudiantes, son anécdotas y no estudios científicos.
El contexto tranquilo no es un lugar seguro para los secretos
Lo que sea que se ingrese a través de session.thinking.append aún puede influir en el habla posterior. Mantenga fuera de esto los números de cuenta y las notas privadas.
Cuándo funciona y cuándo no
Es adecuado para:
- Líneas telefónicas para reservas, pedidos y soporte básico
- Aplicaciones de aprendizaje, donde los usuarios se detienen a pensar entre oraciones
- Equipos que desean reemplazar un sistema compuesto por tres modelos separados
Considere dos veces lo siguiente:
- Llamadas en las que una acción incorrecta tiene consecuencias graves, como los pagos
- Productos que necesitan voces personalizadas con marca propia de inmediato, ya que estas pasan por un proceso de aprobación separado
- Cualquier cosa que requiera entrada de imagen o video, algo que el modelo no acepta
Un patrón arriesgado es permitir que el backend confirme la reserva en el instante en que el llamante dice “suena bien”, sin verificar lo que dijo posteriormente. Un enfoque más seguro consiste en leer la confirmación de nuevo, esperar una respuesta clara de afirmación y hacer que su aplicación cancele los trabajos pendientes si el llamante cambia de opinión. La voz puede ser excelente, pero su aplicación sigue siendo responsable de las verificaciones de seguridad.
Puntos clave
- Los llamantes pueden interrumpir o cambiar de tema a mitad de frase, ya que el modelo sigue escuchando mientras hablan.
- Las tareas sustantivas se envían a un modelo en el backend, ya sea que lo gestione OpenAI o su propia aplicación.
- Cada sesión sigue cinco pasos: inicio, espera a que se active
session.started, transmisión de audio, compilación de los turnos a partir de fragmentos de transcripción y cierre ordenado. - El costo por minuto de voz es de $0.05, lo que significa que una línea de reservas con 2,000 llamadas costaría aproximadamente $480 al mes, bajo las suposiciones anteriores y con un backend ligero.
- La interrupción de un llamante hace que el trabajo del backend continúe, por lo que tu aplicación debe manejar por sí misma el caso de “espera, no”.