
Construyendo un Agente de Voz efectivo para nuestra propia documentación
Resolviendo con éxito >80% de las consultas de usuarios
La latencia es lo que diferencia una buena aplicación de Conversational AI de una excelente
En la mayoría de aplicaciones, la latencia no es un gran problema. Sin embargo, en Conversational AI, la latencia es lo que separa las buenas aplicaciones de las realmente excelentes.
Para empezar, el objetivo de Conversational AI es bastante ambicioso: ofrecer la misma sensación, ritmo y voz que una conversación humana, superando incluso la inteligencia de una persona. Para lograrlo, la aplicación debe conversar sin pausas largas en silencio; si no, se pierde el realismo.
El reto de la latencia en Conversational AI se complica por su naturaleza fragmentada. Conversational AI es una cadena de procesos intermedios, todos ellos punteros en sus respectivos campos. Cada uno de estos procesos añade latencia.
Como empresa especializada en generación de voz, llevamos mucho tiempo estudiando cómo reducir la latencia en Conversational AI. Hoy queremos compartir lo que hemos aprendido, esperando que sea útil para quienes quieran crear aplicaciones de Conversational AI.
Toda aplicación de Conversational AI implica al menos cuatro pasos: speech-to-text, turn-taking, procesamiento de texto (por ejemplo, LLMs) y texto a voz. Aunque estos pasos se ejecutan en paralelo, cada uno sigue sumando algo de latencia.
La ecuación de la latencia en Conversational AI es especial. Muchos problemas de latencia en procesos se reducen a un único cuello de botella. Por ejemplo, cuando una web hace una consulta a la base de datos, la latencia de red suele ser la que manda, y la del backend apenas influye. Pero en Conversational AI, los componentes de latencia no varían tanto. Son desiguales, pero cada uno aporta una parte similar. Por eso, la latencia total es la suma de todas las partes.
El “oído” del sistema
El reconocimiento automático de voz (ASR), a veces llamado speech-to-text (STT), es el proceso de convertir audio hablado en texto escrito.
La latencia de ASR no es el tiempo que tarda en generar el texto, ya que el proceso de speech-to-text funciona en segundo plano mientras el usuario habla. En realidad, la latencia es el tiempo entre el final del discurso y el final de la generación del texto.
.webp&w=3840&q=95)
Por eso, intervalos de habla cortos o largos pueden tener una latencia similar en ASR. La latencia puede variar según la implementación (en algunos casos, no hay latencia de red porque el modelo está integrado en el navegador, como en Chrome/Chromium). El modelo estándar de código abierto, Whisper, añade más de 300 ms de latencia. Nuestra implementación personalizada añade menos de 100 ms.
El “instinto” del sistema
Turn-taking / Interrupción (TTI) es un proceso intermedio que determina cuándo el usuario ha terminado de hablar. El modelo que lo gestiona se llama Voice Activity Detector (o VAD).
El turn-taking implica un conjunto complejo de reglas. Un breve sonido (por ejemplo, “ajá”) no debería activar un turno; si no, las conversaciones serían demasiado cortadas. El sistema debe detectar cuándo el usuario realmente quiere llamar la atención del modelo y cuándo ha terminado de expresar sus ideas.
Un buen VAD no debe señalar un nuevo turno cada vez que detecta silencio. Hay silencios entre palabras y frases, y el modelo debe estar seguro de que el usuario ha terminado de hablar. Para lograrlo, busca un umbral de silencio (o más bien, ausencia de voz). Este proceso introduce un pequeño retraso, que suma a la latencia total que percibe el usuario.
.webp&w=3840&q=95)
Técnicamente, si todos los demás componentes de Conversational AI tuvieran cero latencia, la latencia de TTI sería positiva. Los humanos hacen una pausa antes de responder. Si la máquina también lo hace, la interacción resulta más realista. Pero como los otros componentes ya suman latencia, lo ideal es que la de TTI sea mínima.
El cerebro del sistema
Después, el sistema necesita generar una respuesta. Hoy en día, esto suele hacerse con un Large Language Model (LLM), como GPT-4 o Gemini Flash 1.5.
La elección del modelo de lenguaje marca una gran diferencia. Modelos como Gemini Flash 1.5 son rapidísimos y generan respuestas en menos de 350 ms. Otros más potentes, capaces de gestionar consultas complejas —como variantes de GPT-4 o Claude— pueden tardar entre 700 y 1000 ms.Elegir el modelo adecuado suele ser la forma más sencilla de reducir la latencia al optimizar un proceso de Conversational AI.
Sin embargo, la latencia del LLM es el tiempo que tarda en empezar a generar tokens. Estos tokens pueden enviarse directamente al siguiente proceso de texto a voz . Como texto a voz va al ritmo natural de una voz humana, el LLM siempre va más rápido; lo más importante es la latencia del primer token (es decir, el tiempo hasta el primer byte).
.webp&w=3840&q=95)
Hay otros factores que influyen en la latencia de un LLM además del modelo elegido. Por ejemplo, la longitud del prompt y el tamaño de la base de conocimiento. Cuanto más grandes sean, mayor será la latencia. En resumen: cuanto más tenga que considerar el LLM, más tarda. Por eso, hay que encontrar un equilibrio entre dar suficiente contexto y no sobrecargar el modelo.
La boca del sistema
El último componente de Conversational AI es texto a voz (TTS). La latencia de texto a voz es el tiempo que tarda en empezar a hablar tras recibir los tokens del procesamiento de texto. Eso es todo: como los tokens siguientes llegan más rápido que el habla humana, la latencia de texto a voz es solo el tiempo hasta el primer byte.
.webp&w=3840&q=95)
Antes, texto a voz era especialmente lento, llegando a tardar 2-3 segundos en generar voz. Pero modelos punteros como nuestro motor Turbo generan voz con solo 300 ms de latencia y el nuevo motor Flash TTS es aún más rápido. Flash tiene un tiempo de modelo de 75 ms y puede alcanzar una latencia de audio e2e de 135 ms hasta el primer byte, el mejor resultado del sector (¡tenemos que presumir un poco!).
Además de los cuatro componentes, hay otros factores que pueden aumentar la latencia total en Conversational AI.
Siempre habrá algo de latencia al enviar datos de un sitio a otro. En algunas aplicaciones de Conversational AI, lo ideal es que los procesos de ASR, TTI, LLM y TTS estén en el mismo lugar, así que la única latencia de red relevante es la que hay entre el usuario y el sistema.Esto nos da ventaja en latencia porque ahorramos dos llamadas a servidores al tener nuestro propio TTS y una solución interna de transcripción.
.webp&w=3840&q=95)
Muchas aplicaciones de Conversational AI existen para invocar funciones (es decir, interactuar con herramientas y servicios). Por ejemplo, puedes pedirle a la IA que consulte el tiempo. Esto requiere llamadas adicionales a la API en la capa de procesamiento de texto, lo que puede añadir bastante latencia según la necesidad.
Por ejemplo, si quiero pedir una pizza por voz, puede que haya varias llamadas a la API necesarias, algunas con bastante retraso (por ejemplo, al procesar una tarjeta de crédito).
.webp&w=3840&q=95)
Sin embargo, un sistema de Conversational AI puede reducir estos retrasos pidiendo al LLM que responda al usuario antes de que termine la llamada a la función (por ejemplo, “Déjame consultar el tiempo para ti”). Así se imita una conversación real y el usuario no se queda esperando sin interacción.
.webp&w=3840&q=95)
Estos patrones asíncronos suelen implementarse usando webhooks para evitar peticiones largas.
Otra función habitual en plataformas de Conversational AI es permitir que el usuario llame por teléfono (o, en algunos casos, que la IA llame en su nombre). La telefonía añade latencia extra, y esta puede variar mucho según la ubicación.
.webp&w=3840&q=95)
Como base, la telefonía suma unos 200 ms de latencia si es dentro de la misma región. Para llamadas globales (por ejemplo, Asia → EE. UU.), el tiempo de viaje puede aumentar mucho, llegando a unos 500 ms. Esto es habitual si los usuarios tienen números de teléfono fuera de su región, lo que obliga a saltar a la red telefónica de su país.
Esperamos que este repaso a los agentes de IA conversacional te haya resultado interesante. En resumen, las aplicaciones deberían buscar una latencia inferior a un segundo. Esto suele conseguirse eligiendo el LLM adecuado para cada tarea. Además, deberían interactuar con el usuario siempre que haya procesos complejos en segundo plano, para evitar pausas largas.
Al final, el objetivo es crear realismo. El usuario debe sentir la naturalidad de hablar con una persona, pero con las ventajas de un programa. Afinando cada subproceso, esto ya es posible.
En ElevenLabs estamos optimizando cada parte de un sistema de agentes de voz IA conversacionales con nuestros modelos punteros de STT y TTS. Mejorando cada parte del proceso, conseguimos conversaciones fluidas. Esta visión global de la orquestación nos permite reducir la latencia —aunque sea solo 1 ms— en cada paso.

Resolviendo con éxito >80% de las consultas de usuarios

Nuestra plataforma todo en uno para crear agentes de voz personalizables e interactivos