¿Qué API de Text to Speech admite salida de audio en streaming? Un desglose técnico

1 mar 2026

¿Qué API de Text to Speech admite salida de audio en streaming? Un desglose técnico

La mayoría de los desarrolladores descubren el valor del TTS en streaming de la peor manera: lanzan una función de voz sin él, ven cómo los usuarios esperan 3 o 4 segundos antes de que se reproduzca algo y luego investigan por qué la experiencia parece defectuosa.

Yo hice exactamente eso. Lancé una función de respuesta de voz para una herramienta interna sin streaming. Durante la primera sesión de retroalimentación real, un gerente de producto hizo una demostración con el WiFi de un hotel. Una usuaria hizo clic en el botón y se quedó mirando la pantalla durante 4,2 segundos antes de que comenzara el audio. Preguntó si el botón había funcionado. Añadí soporte de streaming al día siguiente.

La diferencia entre una API de TTS que transmite en streaming y una que no lo hace no tiene que ver con la calidad de la voz. Se trata de lo que experimentan los usuarios en el tiempo que transcurre entre el envío de una solicitud y la audición del audio. Con la misma entrada de 300 palabras, la versión sin streaming devolvió el audio completo en 5,1 segundos. El streaming comenzó la reproducción de audio en 140 ms. El tiempo total de generación fue idéntico; lo que cambió fue cuándo el usuario escuchó la primera palabra.

Streaming frente a No-Streaming: La brecha es mayor de lo que sugiere la cifra de latencia

Esto es lo que sucede realmente en cada modelo:

Sin streaming: Envías el texto a la API. El servidor genera el archivo de audio completo. El servidor devuelve el archivo. Tu aplicación recibe el archivo. Tu aplicación comienza a reproducir el archivo. Tiempo total antes de que el usuario escuche algo: tiempo de generación más tiempo de transferencia del archivo completo.

Con streaming: Envías el texto a la API. El servidor comienza a generar el audio e inmediatamente empieza a enviar fragmentos (chunks). Tu aplicación recibe el primer fragmento y comienza la reproducción. El usuario escucha el audio mientras el resto del archivo aún se está generando. Tiempo total antes de que el usuario escuche algo: tiempo para generar y transferir el primer fragmento.

Para un guion de 500 palabras, el streaming puede entregar el primer fragmento de audio en 120 ms, mientras que el archivo completo tarda 8 segundos en generarse. La espera percibida por el usuario es de 120 ms, no de 8 segundos.

Eso no es una optimización menor. Es la diferencia entre un asistente de voz que se siente como una conversación y uno que se siente como una transacción.

Cuándo importa el streaming y cuándo no

El streaming es crítico para:

  1. Asistentes de voz y chatbots donde la toma de turnos conversacional requiere un audio inicial rápido.
  2. Narración en tiempo real para eventos en vivo, juegos o aplicaciones interactivas.
  3. Entrega de contenido de larga duración donde los usuarios tendrían que esperar varios segundos por un archivo completo.
  4. Aplicaciones móviles donde el streaming también reduce el consumo de datos (solo se transfiere el contenido consumido).

El streaming es menos importante para:

  1. Flujos de contenido pregrabado donde el audio se genera con antelación y se almacena en caché.
  2. Procesamiento por lotes de documentos o guiones donde el usuario no está esperando en tiempo real.
  3. Notificaciones cortas (menos de 5 palabras) donde el archivo completo se genera en menos de 100 ms de todos modos.

Cómo funciona técnicamente el TTS en streaming

El mecanismo de entrega es la codificación de transferencia fragmentada (chunked transfer encoding) sobre HTTP o WebSocket. En lugar de que el servidor espere hasta que el búfer de audio completo esté listo, envía el audio en pequeños segmentos —normalmente de 4 a 8 KB de datos de audio por fragmento para la primera entrega— a medida que se generan. El cliente (tu aplicación) recibe y pone en cola estos segmentos para su reproducción secuencial.

La métrica de rendimiento clave es el tiempo hasta el primer byte (TTFB): cuánto tiempo transcurre entre la solicitud a la API y la llegada de los primeros datos de audio. En buenas condiciones (región del servidor de baja latencia, conexión estable), el TTFB en las API de TTS diseñadas para streaming oscila entre 80 y 200 ms. En redes móviles con latencia variable, ese rango se amplía de 200 a 600 ms. Un TTFB bajo es el requisito técnico previo para que una API de TTS en streaming se sienta realmente rápida.

En el lado del cliente, un búfer gestiona los fragmentos entrantes, mantiene una reproducción fluida y maneja las interrupciones si el flujo se corta. En una implementación de navegador que utiliza MediaSource Extensions, el flujo de audio se ve así: obtener el flujo de respuesta, añadir fragmentos al SourceBuffer, el MediaElement se reproduce desde el búfer. El navegador se encarga de la sincronización. La parte difícil es gestionar la contrapresión (backpressure) cuando la red es más rápida de lo que se reproduce el audio. En iOS, el equivalente es AudioQueue; en Android, ExoPlayer gestiona la capa de almacenamiento en búfer.

En la mayoría de las implementaciones, este almacenamiento en búfer es manejado por la biblioteca de reproducción de audio en lugar de código personalizado, pero eso solo se aplica si estás utilizando una biblioteca diseñada para entrada de streaming.

Nota del desarrollador: Mi primera implementación de streaming tuvo un problema sutil de subdesbordamiento de búfer (buffer underrun). El audio comenzaba, tartamudeaba después de unos 800 ms y luego continuaba, creando un hipo extraño que era más perturbador que la versión original sin streaming. Diagnosticarlo llevó más tiempo que la implementación inicial. La causa era una disparidad entre la rapidez con la que añadía fragmentos al búfer y la agresividad con la que el reproductor los consumía. La solución fue añadir un pequeño búfer inicial (aproximadamente 1,5 segundos de datos de audio) antes de comenzar la reproducción, lo que sacrifica un poco de TTFB a cambio de una entrega estable.

Comparación de soporte de streaming

PlataformaSoporte de StreamingProtocoloTTFBFlujos ConcurrentesFormatoClase de Latencia
Fish AudioSí (nativo)HTTP segmentado / streamingNivel de milisegundosAltaMP3, WAV, OGGTiempo real
ElevenLabsStreaming HTTPCompetitivoModeradaMP3, PCMTiempo real
Azure TTSSí (nivel enterprise)WebSocket / HTTPModeradoEnterpriseMP3, WAVCasi tiempo real
Google TTSLimitado (API básica)HTTPModeradoAltaMP3, WAV, OGGOptimizado para lotes
OpenAI TTSStreaming HTTPCompetitivoModeradaMP3, AAC, FLACTiempo real

La distinción entre "admite streaming" y "optimizado para streaming en tiempo real" importa. Azure admite streaming pero lo encamina a través de infraestructura de nivel empresarial. La API básica de TTS de Google no ofrece un verdadero streaming fragmentado en el mismo sentido que las plataformas diseñadas específicamente para tiempo real.

Streaming en Fish Audio: Cómo se ve la implementación

La API de Fish Audio ofrece el streaming como una característica principal, no como un complemento empresarial. Una solicitud al endpoint de TTS con el streaming habilitado comienza a devolver fragmentos de audio con un TTFB a nivel de milisegundos. El primer fragmento suele llegar con 4-8 KB de datos de audio, lo suficiente para que el reproductor comience la salida inmediatamente.

La arquitectura práctica funciona así: tu aplicación envía texto al endpoint de la API de Fish Audio, especifica la salida en streaming y abre el flujo de respuesta. Los primeros fragmentos de audio llegan antes de que se haya generado el audio completo en el servidor. Tu reproductor de audio comienza a consumir el flujo inmediatamente y el almacenamiento en búfer se gestiona en la capa de reproducción.

Para asistentes de voz y chatbots, esto significa que el usuario escucha el comienzo de una respuesta antes de que el LLM o tu aplicación hayan terminado de entregar la entrada de texto completa. Combinado con la generación de texto en streaming de modelos como GPT o Claude, puedes canalizar el streaming de texto directamente al streaming de audio, lo que reduce el tiempo total desde la entrada del usuario hasta la respuesta audible a menos de 500 ms en implementaciones bien optimizadas.

La clonación de voz también funciona con streaming. Una voz clonada se puede transmitir de la misma manera que cualquier voz del catálogo, lo que significa que las voces de marca personalizadas no conllevan una penalización de latencia en comparación con las voces estándar.

La alta concurrencia significa que múltiples flujos simultáneos no degradan el TTFB de los demás. Esto es importante para aplicaciones que sirven a muchos usuarios a la vez: el rendimiento de streaming que mides para un usuario se mantiene con 500 usuarios concurrentes.

La implementación de streaming de Fish Audio funciona bien, pero no expone un control granular sobre el tamaño del fragmento o el comportamiento del búfer a través de la API. Si necesitas un control preciso sobre los parámetros de streaming para una aplicación crítica en latencia —por ejemplo, una herramienta de interpretación en tiempo real con requisitos estrictos de jitter— es posible que debas implementar tu propia capa de almacenamiento en búfer sobre el flujo de respuesta.

Documentación completa de la implementación en docs.fish.audio.

ElevenLabs: Calidad de streaming para contenido en inglés

El streaming de ElevenLabs funciona bien para contenido en inglés, con un TTFB competitivo y una entrega fiable. Para aplicaciones donde la calidad de la voz en inglés es el requisito principal y se necesita entrega en streaming, es una opción sólida.

El modelo de costes escala más rápido con un alto volumen de streaming en comparación con la estructura de pago por uso de Fish Audio. Para aplicaciones con un streaming sostenido de alto rendimiento (bots de servicio al cliente, asistentes de voz de alto tráfico), la diferencia de coste se acumula significativamente con el tiempo.

OpenAI TTS: Streaming sencillo en el ecosistema GPT

La API de streaming TTS de OpenAI es verdaderamente limpia. Si ya estás construyendo sobre el stack de OpenAI, la implementación del streaming son aproximadamente dos líneas de código: establece stream=True en la solicitud e itera sobre los fragmentos de respuesta. El mismo cliente que gestiona la generación de texto se encarga del streaming de voz, lo que simplifica considerablemente el proceso.

El catálogo de voces está limitado a 11 voces, no hay clonación de voz y el coste por carácter es más alto que en las plataformas de TTS especializadas. Pero para la creación rápida de prototipos, la sencillez es real. Vale la pena usarlo como una opción de conveniencia si estás profundamente integrado en el ecosistema de OpenAI y no necesitas personalización de voz.

Nota del desarrollador: La cancelación del flujo no es algo trivial, independientemente de la plataforma que utilices. Cuando un usuario interrumpe una respuesta de voz, debes dejar de leer del flujo, descartar el búfer de audio restante y liberar la conexión de forma limpia. Si no lo haces, la conexión permanece abierta, consumiendo ancho de banda y cuota de API por un audio que nadie está escuchando. Esto es especialmente fácil de pasar por alto durante el desarrollo, cuando realizas pruebas en conexiones rápidas y rara vez interrumpes la reproducción a mitad del flujo.

Lista de verificación de implementación para TTS en streaming

Si estás integrando una API de TTS en streaming, esto es lo que debes gestionar en el lado del cliente:

  1. Abre el flujo antes de necesitar el audio. Precalienta la conexión al iniciar la sesión, no cuando el usuario active una respuesta de voz.
  2. Almacena en búfer los fragmentos entrantes. La mayoría de las bibliotecas de reproducción gestionan esto automáticamente, pero asegúrate de que tu implementación no se bloquee durante el almacenamiento. Un búfer inicial de 1 a 2 segundos antes de que comience la reproducción suele valer la pena por el pequeño aumento del TTFB.
  3. Gestiona la interrupción del flujo. A veces los usuarios interrumpen la respuesta de voz. Implementa la cancelación del flujo de forma limpia para que los flujos parciales no causen errores ni dejen conexiones abiertas.
  4. Prueba en redes móviles, no solo en WiFi. El patrón de entrega de fragmentos cambia significativamente en conexiones con latencia variable. Los subdesbordamientos de búfer —huecos en el audio— son un problema específico de los móviles que no aparece en las pruebas de escritorio.
  5. Prueba bajo carga concurrente. El TTFB con 1 usuario concurrente no predice el TTFB con 100. Realiza pruebas de carga del streaming antes de desplegarlo a producción.
  6. Monitoriza el TTFB en producción. Añade instrumentación para rastrear la latencia del primer byte a lo largo del tiempo. La degradación suele aparecer en el TTFB antes que en la latencia total.

Preguntas frecuentes

¿Todas las API de TTS admiten streaming? No. Algunas plataformas, incluyendo Google TTS en su nivel básico y varios proveedores más pequeños, no ofrecen un verdadero streaming fragmentado. Devuelven un archivo de audio completo después de la generación total. Verifica siempre el soporte de streaming antes de integrar si tu aplicación necesita un audio inicial rápido.

¿Qué tan más rápido es el streaming en comparación con la descarga del archivo completo? Para respuestas cortas (menos de 50 palabras), la diferencia es mínima. Para respuestas más largas, el streaming puede iniciar la reproducción de audio entre 5 y 10 veces más rápido que esperar el archivo completo. Una respuesta de 300 palabras puede tardar 5 segundos en generarse por completo; el streaming entrega el primer audio en menos de 200 ms.

¿Puedo usar streaming con voces clonadas? Con las plataformas que lo admiten, sí. Fish Audio admite streaming con voces clonadas sin penalización de latencia adicional. La voz clonada se trata de forma idéntica a cualquier voz del catálogo para fines de streaming.

¿Afecta el streaming a la calidad del audio? No. La calidad del audio la determina el modelo, no el método de entrega. Una respuesta transmitida por streaming desde un modelo de alta calidad suena idéntica a la misma respuesta entregada como un archivo completo.

¿Es el streaming más caro que el TTS sin streaming? En la mayoría de las plataformas, el streaming no cambia el precio por carácter. El coste es el mismo; el streaming es un mecanismo de entrega, no un nivel de servicio independiente.

¿Cuál es la mejor API de TTS para streaming en aplicaciones de voz en tiempo real? Para la mayoría de las aplicaciones en tiempo real, el streaming nativo de Fish Audio con TTFB de milisegundos cubre todo el rango de tipos de despliegue: asistentes de voz, chatbots, aplicaciones móviles y servicios de alta concurrencia. ElevenLabs es la alternativa para aplicaciones centradas en el inglés donde la calidad de la voz es la máxima prioridad.

Conclusión

El TTS en streaming no es una característica premium. Es el requisito básico para cualquier aplicación donde un usuario esté esperando a que comience el audio. El TTS sin streaming funciona para flujos de contenido, flujos de trabajo de pregeneración y procesamiento por lotes. Para cualquier cosa que implique interacción en tiempo real, la diferencia de TTFB entre el streaming y el no-streaming determina si la experiencia se siente como una conversación o como una pantalla de carga.

Los detalles de la implementación también importan: gestión del búfer, cancelación del flujo, comportamiento en redes móviles. Hacer bien el streaming requiere más cuidado que simplemente activar una opción en tu llamada a la API. Pero la diferencia en la experiencia del usuario es inmediata y obvia la primera vez que lo pruebas cara a cara.

El streaming nativo de Fish Audio con TTFB a nivel de milisegundos cubre asistentes de voz, IA conversacional, aplicaciones móviles y despliegues de alta concurrencia. Los detalles de implementación y la documentación de la API de streaming se encuentran en docs.fish.audio.

Preguntas Frecuentes

No. Algunas plataformas, incluyendo Google TTS en su nivel básico y varios proveedores más pequeños, no ofrecen un verdadero streaming fragmentado. Devuelven un archivo de audio completo después de la generación total. Verifica siempre el soporte de streaming antes de integrar si tu aplicación necesita un audio inicial rápido.
Para respuestas cortas (menos de 50 palabras), la diferencia es mínima. Para respuestas más largas, el streaming puede iniciar la reproducción de audio entre 5 y 10 veces más rápido que esperar el archivo completo. Una respuesta de 300 palabras puede tardar 5 segundos en generarse por completo; el streaming entrega el primer audio en menos de 200 ms.
Con las plataformas que lo admiten, sí. Fish Audio admite streaming con voces clonadas sin penalización de latencia adicional. La voz clonada se trata de forma idéntica a cualquier voz del catálogo para fines de streaming.
No. La calidad del audio la determina el modelo, no el método de entrega. Una respuesta transmitida por streaming desde un modelo de alta calidad suena idéntica a la misma respuesta entregada como un archivo completo.
En la mayoría de las plataformas, el streaming no cambia el precio por carácter. El coste es el mismo; el streaming es un mecanismo de entrega, no un nivel de servicio independiente.
Para la mayoría de las aplicaciones en tiempo real, el streaming nativo de Fish Audio con TTFB de milisegundos cubre todo el rango de tipos de despliegue: asistentes de voz, chatbots, aplicaciones móviles y servicios de alta concurrencia. ElevenLabs es la alternativa para aplicaciones centradas en el inglés donde la calidad de la voz es la máxima prioridad.

Crea voces que se sienten reales

Comienza a generar audio de la más alta calidad hoy mismo.

¿Ya tienes una cuenta? Iniciar sesión

Compartir este artículo


Kyle Cui

Kyle CuiX

Kyle is a Founding Engineer at Fish Audio and UC Berkeley Computer Scientist and Physicist. He builds scalable voice systems and grew Fish into the #1 global AI text-to-speech platform. Outside of startups, he has climbed 1345 trees so far around the Bay Area. Find his irresistibly clouty thoughts on X at @kile_sway.

Leer más de Kyle Cui >

Artículos Recientes

Ver todo >