Saltar al contenido principal
La API MKA1 proporciona una interfaz de voz en tiempo real a través de LiveKit. Esta guía cubre cómo obtener un token de sala, conectarse a una sesión de voz, enviar audio y texto como entrada, y capturar las respuestas del agente.

Descripción general

La integración de voz consta de tres componentes principales:
  1. Token de Sala: Un JWT que otorga acceso a una sala de LiveKit
  2. Conexión LiveKit: Comunicación en tiempo real basada en WebRTC
  3. Agente de Voz: Procesa entrada de audio/texto y genera respuestas habladas
El flujo del agente funciona de la siguiente manera:
  • STT (Reconocimiento de Voz a Texto): El audio se transmite vía WebSocket a 16kHz y se transcribe
  • LLM: El texto transcrito es procesado por la API de Respuestas MKA1
  • TTS (Texto a Voz): La salida del LLM se sintetiza a audio a 24kHz
Cada solicitud que el agente de voz envía a la API de Respuestas incluye automáticamente "voice_mode": "true" en el metadata de la solicitud. Esto le permite distinguir respuestas originadas por voz de las basadas en texto al revisar el uso o el historial de respuestas.

Obtener un token de sala

Para iniciar una sesión de voz, primero solicite un token de sala a la API MKA1. El endpoint de token requiere una clave de API y acepta opcionalmente X-On-Behalf-Of para identificar usuarios finales. Consulte Autenticación para más detalles.

Parámetros

El cuerpo de la solicitud tiene dos objetos de nivel superior:

llm — Configuración de LLM (requerido)

El objeto llm acepta los mismos campos que el cuerpo de la solicitud de la API de Respuestas, menos los campos gestionados por el agente de voz (input, stream, store, background). No puede especificar ambos previous_response_id y conversation.
Los metadatos del token se incrustan en un JWT, que se pasa como encabezado HTTP. Mantenga el payload total de llm por debajo de ~8 KB — los arrays grandes de tools pueden necesitar ser recortados.
Para sesiones de voz, desactive el razonamiento configurando "reasoning": { "effort": "none" }. El razonamiento añade tiempo de pensamiento antes de que el modelo responda, lo que incrementa la latencia y crea pausas notables en la conversación. Desactivarlo mantiene las respuestas rápidas y naturales.

stt — Configuración de reconocimiento de voz (opcional)

Controla la detección de actividad de voz (VAD) y el comportamiento de finalización en el servidor.

Configuración avanzada

Puede pasar herramientas, instrucciones personalizadas y ajuste de STT en una sola solicitud de token:

Respuesta

El token incluye metadatos que el agente de voz utiliza para configurar la sesión.

Continuar una sesión

Para continuar desde una respuesta anterior:
Para continuar una conversación existente:
Al continuar una sesión, la clave de API y el encabezado X-On-Behalf-Of (si se usa) deben coincidir con la sesión original. El agente de voz cifra ambos en el token de sala y los pasa a todos los servicios MKA1 aguas abajo. Si no coinciden, el agente no tendrá acceso al contexto anterior.

Conectarse a una sala

Una vez que tenga un token, use el SDK de LiveKit para conectarse a la sala.

Enviar entrada de audio

El agente acepta entrada de audio a través de la pista de audio de la sala de LiveKit. El audio se procesa a una frecuencia de muestreo de 16kHz.

Comportamiento del audio

  • Detección de Actividad de Voz (VAD): El VAD se maneja en el servidor por el agente MKA1, no localmente. El agente detecta automáticamente cuando deja de hablar y comienza el procesamiento.
  • Frecuencia de muestreo: El audio se transmite a 16kHz al servicio de STT.
  • Finalización: El agente utiliza finalización en el servidor para determinar cuándo termina el habla. No hay retraso de finalización local.

Enviar entrada de texto

También puede enviar mensajes de texto directamente al agente sin hablar.

Recibir respuestas del agente

El agente responde de tres maneras:
  1. Salida de audio: Voz sintetizada a través de una pista de audio
  2. Transcripción: Texto de lo que el agente está diciendo (para subtítulos)
  3. Metadatos de respuesta: ID de respuesta e ID de conversación a través del canal de datos

Suscribirse a la salida de audio

Recibir transcripciones

El agente publica transcripciones de su discurso. Puede usarlas para subtítulos o registros.

Recibir metadatos de respuesta

El agente publica el response_id y conversation_id (si aplica) cuando comienza a generar una respuesta. Guarde el response_id para encadenar futuras sesiones usando previous_response_id.

Continuidad de la conversación

El agente soporta conversaciones de varios turnos con memoria persistente. Cada respuesta recibe automáticamente un response_id, mientras que las conversaciones deben ser creadas y gestionadas explícitamente a través de la API de Conversaciones. Hay dos formas de continuar una conversación: llm.previous_response_id encadena una nueva sesión a una respuesta específica. El agente recibe el contexto de esa respuesta y todas las respuestas previas en la cadena. Use esto cuando:
  • Desea continuar desde un punto específico en una conversación
  • Está construyendo un flujo de conversación lineal
  • Desea ramificar desde una respuesta específica
llm.conversation referencia una conversación creada vía la API de Conversaciones. Use esto cuando:
  • Necesita gestionar metadatos de la conversación (títulos, etiquetas, etc.)
  • Desea listar o buscar conversaciones pasadas
  • Está construyendo una interfaz de chat con historial persistente de conversación
  • Múltiples clientes necesitan acceder a la misma conversación

Iniciar una nueva sesión

Continuar desde una respuesta anterior

Use previous_response_id para encadenar una nueva sesión a la última respuesta, preservando el contexto de la conversación:

Continuar desde una conversación

Use conversation_id para continuar una conversación existente creada vía la API de Conversaciones:
Al continuar una conversación, la clave de API y el encabezado X-On-Behalf-Of (si se usa) deben coincidir con la sesión original. El contexto está limitado a la identidad autenticada.

Manejo de desconexión

Los tokens expiran después de 5 minutos. Si necesita sesiones más largas, implemente lógica de reconexión:

Ejemplo completo

Aquí tiene un ejemplo completo que lo reúne todo:

Manejo de errores

Errores del endpoint de token

Estos se devuelven como respuestas HTTP al solicitar un token de sala:

Errores en sesión

Durante una sesión de voz activa, el agente publica errores a través del canal de datos de LiveKit. Escúchelos junto con los metadatos de respuesta:
La estructura del payload de error:
Códigos de error:

Errores de conexión

Próximos pasos