Inicio rápido de Speech Engine
Añade voz a tu agente de chat con el SDK de ElevenLabs.
Esta guía te explica cómo crear un agente con voz usando Speech Engine. Configurarás un servidor que conecta tu LLM con ElevenLabs y, después, un cliente de navegador para que usuarios puedan tener conversaciones por voz con tu agente.
Usa la skill de ElevenLabs Speech Engine para añadir voz a tu agente de chat:
Cómo funciona Speech Engine
Speech Engine conecta tu LLM con ElevenLabs para que usuarios puedan hablar con tu agente y escuchar sus respuestas. ElevenLabs se encarga de la conversión de voz a texto y de texto a voz; tu servidor proporciona la lógica del LLM.
Cada conexión WebSocket representa una conversación. Cuando el usuario habla, ElevenLabs transcribe el audio y envía la transcripción a tu servidor. Tu servidor la pasa a tu LLM y, después, transmite la respuesta de vuelta. ElevenLabs convierte el texto en voz y lo reproduce en el navegador. El SDK gestiona las conexiones, los turnos de conversación y la detección de interrupciones.
Requisitos previos
Este tutorial usa la API de OpenAI para el LLM. Necesitas una clave de API de OpenAI configurada en la variable de entorno OPENAI_API_KEY.
Configuración del servidor
Crea una clave de API
Crea una clave de API en el panel aquí, que usarás para acceder a la API de forma segura.
Guarda la clave como un secreto gestionado y pásala a los SDK como variable de entorno mediante un archivo .env o directamente en la configuración de tu app, según prefieras.
Expón el servidor
Speech Engine necesita una URL accesible públicamente. Usa ngrok para exponer tu servidor local. El servidor aún no está creado, pero ngrok debe estar ejecutándose primero para que tengas la URL para el siguiente paso.
Copia la URL de reenvío (por ejemplo, https://abc123.ngrok.io).
Crea una instancia de Speech Engine
Usa el SDK para crear una instancia de Speech Engine y pasa tu URL de ngrok con la ruta /ws añadida como URL de WebSocket.
Ejecuta este script y copia el ID de Speech Engine (por ejemplo, seng_8k3m9xr4hjnfg983brhmhkd98n6) para el siguiente paso.
Crea el servidor
Crea un archivo llamado server.py o server.mts con el siguiente contenido. Esto configura un servidor, conecta Speech Engine en la ruta /ws y usa OpenAI para generar respuestas.
La función de callback onTranscript / on_transcript recibe el historial completo de la conversación y la sesión actual. El SDK de TypeScript también proporciona una AbortSignal que se activa si el usuario interrumpe durante una respuesta. Al pasar signal a la llamada de OpenAI, la solicitud de LLM se cancela automáticamente cuando se produce una interrupción.
sendResponse() / send_response() acepta una cadena, un iterable asíncrono o una transmisión de OpenAI, Anthropic o Google Gemini. El SDK extrae automáticamente el contenido de texto.
En el ejemplo anterior, la transcripción completa del usuario se pasa al LLM. En un entorno de producción debes añadir medidas de seguridad para evitar intentos de inyección o manipulación de prompts.
Configuración del cliente
Crea una ruta de token
Añade una ruta del lado del servidor que genere un token de conversación. Así mantienes tu clave de API fuera del navegador y usas WebRTC para obtener la mejor calidad de audio.
Crea la interfaz de conversación
Obtén el token de conversación de tu servidor y úsalo para iniciar una sesión.
React
JavaScript
Pruébalo
Asegúrate de que haya tres procesos ejecutándose:
- ngrok - reenviando al puerto 3001
- Tu servidor de Speech Engine -
python server.pyonpx tsx server.mts - El servidor de tokens -
npx tsx token-server.mtsopython token_server.py
Abre tu aplicación cliente en el navegador y haz clic en Iniciar conversación. Concede acceso al micrófono cuando se te solicite y, después, habla. Deberías escuchar la respuesta del agente a través de los altavoces.
Si tienes debug: true activado en el servidor, verás las transcripciones entrantes y las respuestas salientes registradas en la consola.
Eventos de sesión
Configurar el primer mensaje del agente
De forma predeterminada, el agente espera a que el usuario hable primero. Para que el agente salude al usuario al iniciar la conversación, configura un primer mensaje en la opción overrides del cliente al iniciar la sesión.
El agente pronuncia el primer mensaje en cuanto se establece la conexión. No activa la función de callback onTranscript en tu servidor, ya que se gestiona por completo en ElevenLabs.
Configurar la duración máxima de la conversación
De forma predeterminada, una conversación termina después de 600 segundos (10 minutos). Speech Engine admite conversaciones de hasta 7200 segundos (2 horas). Para permitir conversaciones más largas, actualiza el recurso de Speech Engine con un valor de max_duration_seconds mayor:
También puedes configurarlo en el panel: abre tu Speech Engine, ve a la pestaña Avanzado y establece la Duración máxima de la conversación en Comportamiento conversacional.