Descripción general
La integración de voz consta de tres componentes principales:- Token de Sala: Un JWT que otorga acceso a una sala de LiveKit
- Conexión LiveKit: Comunicación en tiempo real basada en WebRTC
- Agente de Voz: Procesa entrada de audio/texto y genera respuestas habladas
- 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
"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 opcionalmenteX-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.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: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:- Salida de audio: Voz sintetizada a través de una pista de audio
- Transcripción: Texto de lo que el agente está diciendo (para subtítulos)
- 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 elresponse_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 unresponse_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
Useprevious_response_id para encadenar una nueva sesión a la última respuesta, preservando el contexto de la conversación:
Continuar desde una conversación
Useconversation_id para continuar una conversación existente creada vía la API de Conversaciones:
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:
Códigos de error:
Errores de conexión
Próximos pasos
- Explore el endpoint de token de LiveKit en la referencia de API
- Aprenda sobre la API de Respuestas que impulsa el agente de voz
- Revise los endpoints de TTS y STT para casos de uso no en tiempo real