IA de voz en Cloudflare: cómo diagnosticar latencia y silencios
Usa turnmetrics de Cloudflare para localizar la latencia, explicar turnos silenciosos y saber qué etapa de tu agente de voz con IA debes corregir.

Ahora puedes demostrar en qué punto se detuvo un turno lento o silencioso de una IA de voz en Cloudflare, antes de cambiar de modelo, reescribir prompts o pagar por una voz más rápida. @cloudflare/voice 0.4.0 asigna a cada turno de voz o texto un resultado tipado y los tiempos de cada etapa. Así, la primera pregunta al depurar deja de ser «¿qué proveedor deberíamos sustituir?» y pasa a ser «¿en qué etapa falló?».
Respuesta rápida
Instala @cloudflare/voice@^0.4.0 junto con agents@^0.22.0, escucha el evento turnmetrics y agrupa cada turno por turnId, source, outcome y los campos de tiempo que estén presentes. La versión del 11 de septiembre de Cloudflare contempla turnos de voz completados, turnos de texto, respuestas vacías, límites del modelo, filtrado de contenido, errores del modelo, errores al generar voz y turnos cancelados.
Es un cambio importante respecto de la guía actual de Voice, actualizada por última vez el 16 de junio, que todavía muestra cuatro métricas de compatibilidad: llm_ms, tts_ms, first_audio_ms y total_ms. Esas cuatro métricas describen turnos de voz completados con éxito y con contenido. No explican por qué un turno de texto, una respuesta vacía, una interrupción o un turno fallido terminó sin audio.
La vista anterior se parece a un comprobante de entrega: indica cuánto tardó en llegar un paquete entregado correctamente. VoiceTurnMetrics, en cambio, ofrece el historial de seguimiento completo. Un mismo identificador acompaña el paquete desde la recepción y la clasificación hasta el despacho y el cierre, incluido el punto exacto en el que se detuvo si algo falló.
client.addEventListener("turnmetrics", (turn) => {
console.log(turn.outcome, turn.turnTotalMs);
});El mismo resumen más reciente está disponible mediante VoiceClient, useVoiceAgent() y useVoiceInput(). Este último solo convierte voz a texto, por lo que únicamente expone las mediciones de voz y transcripción que puede realizar.

Qué revela cada métrica de una IA de voz
La unidad útil es un turno. turnId sirve para correlacionarlo, source indica si la entrada fue de voz o texto y outcome explica cómo terminó. Los demás campos expresan duraciones en milisegundos.
No sumes estos valores. Cloudflare indica que los tiempos usan un mismo reloj del servidor y pueden superponerse. La división por oraciones es el ejemplo más claro: el modelo puede seguir transmitiendo mientras las oraciones ya completadas se convierten en voz. Sumar las duraciones del modelo y del TTS contabilizaría dos veces parte del tiempo real.
Que una métrica no aparezca también aporta información: significa que el ciclo de vida no alcanzó ese hito. Un turno de texto no debería incluir campos de conversión de voz a texto. Si el resultado es no_output, no tiene sentido optimizar el TTS, porque el modelo no produjo nada que pudiera llegar a esa etapa. Y si falta ttsToFirstAudioMs, el TTS nunca alcanzó el primer envío de audio desde el servidor.
Hay un límite importante: la reproducción en el navegador no forma parte de VoiceTurnMetrics. Cloudflare la excluye porque el Worker y el navegador utilizan relojes independientes. Si el servidor registra un primer envío de audio rápido, pero la persona que llama percibe una pausa, la investigación debe pasar al transporte, la decodificación, el enrutamiento del dispositivo o la reproducción en el cliente.
Ejecuta tres pruebas controladas antes de tocar producción
Estas son observaciones de pruebas controladas del SDK, no mediciones de latencia en producción. Sirven para comprobar que la instrumentación clasifica correctamente rutas conocidas antes de confiar en ella durante llamadas reales. Usa prompts neutros y no guardes el contenido de las conversaciones en los logs.
Prueba 1: un turno de voz completado
Inicia una llamada, pronuncia una frase breve y fija, y deja que el agente termine su respuesta sin interrumpirlo. En la prueba de Cloudflare para esta ruta se reciben source: "speech", outcome: "completed", un turnId, mediciones de transcripción, consumo del stream del modelo, trabajo de TTS y la duración total del turno.
La comprobación debe ser estructural, no una competencia de velocidad. Confirma que el mismo turnId aparece en el resumen final y que están presentes los campos de cada etapa esperada. No publiques esos milisegundos como prueba de rendimiento a partir de una sola ejecución local.
Prueba 2: un turno de texto completado
Envía un mensaje fijo con sendText(). De este modo se omite la conversión de voz a texto y se pasa directamente a onTurn(). La prueba controlada de Cloudflare recibe source: "text", outcome: "completed" y los tiempos del stream del modelo. No recibe speechStartToFirstInterimMs, speechStartToFinalMs ni afterTranscribeMs.
Por eso el texto funciona bien como control. Si los turnos de voz se sienten lentos, pero turnos de texto equivalentes llegan rápido al primer texto del modelo, es menos probable que el modelo sea el responsable que la transcripción, la detección del turno o la entrega a onTurn().
Prueba 3: una respuesta vacía controlada
En una rama exclusiva para pruebas, haz que onTurn() devuelva un stream vacío ante una entrada conocida. La prueba de Cloudflare clasifica ese turno de voz como no_output. No genera eventos de transcripción del asistente, ningún mensaje con métricas de compatibilidad ni el estado speaking.
Es la demostración más clara de que el silencio no implica necesariamente un problema de TTS. El turno nunca produjo texto de respuesta que pudiera sintetizarse. Elimina la rama de prueba después de la aserción y no la actives nunca a partir de texto de conversación controlado por el usuario.

Siete resultados, siete diagnósticos distintos
El resultado funciona como etiqueta de enrutamiento. Tratar cada turno silencioso como un mismo fallo genérico elimina la principal ventaja de esta versión.
La diferencia entre no_output, output_limit, content_filtered y model_error importa porque, para quien llama, los cuatro casos pueden sonar igual: «el agente no dijo nada». Solo uno conduce primero a revisar el prompt o la lógica de streams vacíos. Ninguno justifica empezar por comprar una voz más rápida.
Dónde aporta valor primero
Los mejores casos de uso son aquellos en los que un diagnóstico equivocado genera trabajo repetido o empuja al equipo a cambiar de proveedor sin necesidad.
1. Agentes de atención al cliente con turnos silenciosos
Un equipo de ingeniería de soporte puede guardar resúmenes de turno sin contenido junto a un identificador de caso, agrupar los silencios por resultado y dirigir cada grupo al responsable del modelo, la seguridad, el TTS o la conexión. Así se reducen los traspasos basados en conjeturas. Un grupo de no_output se asigna a la lógica de respuesta; uno de tts_error, a la ruta de voz.
2. Agentes para citas y reservas
El equipo que automatiza una clínica o un restaurante puede probar un flujo fijo de reservas, correlacionar cada turno y comparar dónde aparecen los retrasos antes y después de una versión. El valor para el negocio no está en un gráfico de latencia más atractivo, sino en saber si la espera ocurrió durante la transcripción, la respuesta del modelo, la generación de voz o la reproducción local antes de cambiar el flujo que genera ingresos.
3. Pruebas de regresión para agentes de voz
Un equipo de producto puede mantener una pequeña batería de casos conocidos de voz, texto, salida vacía e interrupción. En cada compilación puede comprobar el resultado final y la presencia de campos, y luego comparar la distribución por etapas entre versiones. Así se detecta un cambio en una ruta de error antes de que una puntuación general de extremo a extremo lo oculte.
4. Comparar proveedores sin culpar a la capa equivocada
Un equipo que evalúa proveedores de voz puede mantener constantes el prompt y el modelo, y comparar ttsToFirstAudioMs y el trabajo de TTS en ejecuciones controladas. Si el retraso ocurre antes de que aparezca el texto del modelo, la comparación de TTS es irrelevante. Si la medición confirma que el cuello de botella está en TTS, la comparativa de API de TTS de baja latencia resulta útil en lugar de prematura.
5. Ajustar la transcripción multilingüe
Un servicio multilingüe puede ejecutar la misma tarea con frases conocidas en cada idioma compatible y analizar por separado el tiempo hasta la transcripción parcial y final, sin mezclarlo con el tiempo del modelo. Así puede salir a la luz un problema de transcripción o detección de turnos que quedaría oculto en una única cifra para todo el turno. La precisión requiere una evaluación propia, porque una transcripción rápida también puede ser incorrecta.
6. Interfaces que combinan texto y voz
Una aplicación de servicio en campo puede comparar un turno de control escrito con otro hablado a través de la misma lógica del agente. Como el texto evita el STT, la diferencia entre ambas rutas acota la búsqueda a la captura de voz y el cierre del turno. Los campos compartidos turnId, source y outcome permiten usar un único esquema de diagnóstico para los dos canales.
7. Flujos telefónicos con muchas interrupciones
El equipo que sustituye un IVR puede interrumpir deliberadamente respuestas largas y confirmar que el resultado sea aborted, en lugar de contar esos turnos como fallos inexplicables. El beneficio es un reporte de fallos más limpio y una gestión de cancelaciones más segura. Eso no demuestra que la experiencia de interrupción haya gustado a quienes llaman, así que siguen siendo necesarias la revisión del audio y las pruebas con usuarios.
La decisión presupuestaria que cambia
El nuevo evento puede cubrir un primer diagnóstico por etapas dentro de una aplicación de prueba de Cloudflare. No sustituye a una plataforma completa de control de calidad para voz.
La diferencia importa porque los productos especializados actuales cobran por resolver un problema mucho más amplio. Coval indica un plan Starter de $100 al mes y un plan Growth de $500 al mes, con funciones de simulación, monitoreo, conservación de trazas y evaluación. Roark indica $50 de crédito inicial, un nivel Team de $500 al mes que se consume según el uso y precios Enterprise desde $4,000 al mes.
Si el problema inmediato es «¿qué etapa hizo que este turno de Cloudflare fuera lento o silencioso?», instrumenta turnmetrics antes de comprar una plataforma más amplia. Si necesitas llamadas sintéticas, puntuaciones, alertas, trazas a largo plazo, revisión humana, flujos de cumplimiento normativo o comparaciones entre plataformas, el evento del SDK es solo la materia prima. La división presupuestaria más honesta es usar instrumentación para diagnosticar y un producto de QA como sistema operativo alrededor de ese diagnóstico.
Tres productos que vale la pena construir
1. Una consola de diagnóstico de turnos nativa para Cloudflare
Es la oportunidad más sólida. El producto recibiría VoiceTurnMetrics sin contenido, agruparía resultados, mostraría distribuciones por etapa y conectaría eventos relacionados mediante turnId. Quienes compran agentes de voz tienen un valor comercial alto: DataForSEO registra 6,600 búsquedas mensuales en Estados Unidos para ai voice agent, con intención comercial y un CPC de $51.22. La frase más específica voice agent latency apenas alcanza 10 búsquedas al mes, lo que indica que se trata de un punto de entrada especializado, no de un producto de consumo masivo.
La versión comercial más pequeña necesita un recolector de eventos, controles de retención, filtros por origen y resultado, comparaciones entre versiones y el enrutamiento de decisiones que aparece en la tabla final. La presión de precios se aprecia en el mercado actual: Coval parte de $100 al mes, mientras que los niveles más amplios para equipos de Coval y Roark se sitúan en $500 al mes.
El riesgo es la concentración en una sola plataforma. Cloudflare puede ampliar su propia interfaz, y la reproducción en el navegador queda fuera del resumen estable del turno. La ventaja defensiva debe convertirse en workflow: comparaciones entre versiones, pruebas de regresión, controles de privacidad y una ruta rápida desde un grupo problemático hasta la persona responsable.
2. Una barrera de regresión de latencia para pull requests
Este producto ejecutaría casos fijos de voz, texto, salida vacía e interrupción contra un despliegue de vista previa. Después impediría la versión si aparece un resultado incorrecto o si una etapa medida empeora respecto de la línea base del propio equipo. DataForSEO registra 880 búsquedas mensuales en Estados Unidos para voice ai agent, con un CPC de $36.64. La búsqueda más específica low latency voice agent solo llega a 10 al mes, pero tiene un CPC de $29.34: otra señal pequeña con clics costosos.
El MVP consiste en un ejecutor de pruebas, un almacén de líneas base, aserciones de resultados, comparaciones de percentiles y un informe de CI conciso. Debe comparar casos equivalentes y nunca sumar tiempos que se superponen.
El riesgo está en la fidelidad de las pruebas. Una ruta de micrófono sintética no reproduce todas las redes, acentos, navegadores, dispositivos ni saltos de telefonía de las personas que llaman. Debe venderse como protección para los lanzamientos, no como prueba de la experiencia en producción.
3. Un laboratorio de benchmarks de proveedores consciente de cada etapa
Este producto permitiría mantener constante la mayor parte del pipeline, cambiar un proveedor a la vez y comparar la etapa en la que ese proveedor puede influir. DataForSEO registra 40 búsquedas mensuales en Estados Unidos para voice agent platform, con intención comercial y un CPC de $44.12. El volumen es modesto, pero el precio del clic sugiere que los proveedores compiten por un grupo pequeño de compradores serios.
El MVP necesita prompts y archivos de audio repetibles, configuración de proveedores, resúmenes por etapa, tasas de resultados y un informe exportable para tomar decisiones. Su valor consiste en evitar que un proveedor de TTS rápido se lleve el mérito de una mejora del modelo o la culpa de un retraso en la transcripción.
El riesgo está en la atribución. VoiceTurnMetrics mide hitos del ciclo de vida del SDK, no una traza completa del proveedor. La ubicación de red, la reproducción en el navegador, la calidad de entrada y las colas del proveedor aún requieren pruebas separadas.
Lo que estas métricas no resuelven
Las métricas de turno indican dónde investigar. No dicen si la transcripción fue correcta, la respuesta resultó útil, la voz sonó natural, la persona completó su objetivo ni la reproducción en el cliente se sintió fluida.
El flujo de diagnóstico de la consola del navegador puede ayudar en local porque combina eventos del ciclo de vida del servidor con eventos del micrófono, la conexión, el primer audio y la reproducción. Úsalo solo como apoyo temporal de depuración. Cloudflare señala que está desactivado de forma predeterminada y que los nombres y campos de sus eventos pueden cambiar, por lo que no constituye un contrato estable de analítica.
El resumen estable se diseñó para no contener información de la conversación, pero tus propios mensajes pueden anular esa protección. Cloudflare elimina campos de contenido conocidos y no inspecciona cuerpos arbitrarios de proveedores. Evita incluir transcripciones, prompts, argumentos de herramientas, identificadores de clientes y cualquier otro contenido de conversación en los strings de error personalizados.
Por último, la guía de Voice todavía lleva la etiqueta Beta. Considera los pines de versión, una batería de pruebas controladas y la revisión de cada nueva versión como parte de la implementación, no como tareas administrativas para después.
Preguntas frecuentes sobre este tema
¿Qué son los Cloudflare Realtime Agents?
Cloudflare Realtime Agents es un runtime anterior para voz en tiempo real basado en WebRTC, orquestación del pipeline y componentes configurables de voz y modelo. El paquete @cloudflare/voice que se analiza aquí es la ruta de voz del Agents SDK sobre WebSocket. Son ofertas de voz relacionadas de Cloudflare, pero la versión de métricas de turno del 11 de septiembre corresponde específicamente a @cloudflare/voice.
¿Cómo funcionan los agentes de voz en tiempo real?
Un turno típico captura la voz, la convierte en texto, procesa ese texto con la lógica de la aplicación y del modelo, sintetiza la respuesta como voz y reproduce el audio para quien llama. El paquete de Cloudflare transmite el audio del micrófono por WebSocket, ejecuta onTurn(), divide por oraciones el texto transmitido por el modelo y devuelve el audio de voz.
¿Cloudflare ofrece agentes de IA?
Sí. El Agents SDK de Cloudflare ofrece agentes con estado basados en Durable Objects, y @cloudflare/voice incorpora rutas completas de voz y entrada hablada. Según la guía actual, el paquete de voz sigue en Beta.
¿Dónde está el repositorio de Cloudflare Agents en GitHub?
El repositorio oficial es cloudflare/agents en GitHub. Sus tipos y pruebas de voz muestran el esquema estable de los turnos y el comportamiento controlado de los resultados que sustentan esta versión.
La tarea del lunes: enrutar la evidencia
La próxima semana, añade el listener del evento a una compilación de prueba y ejecuta las tres rutas controladas anteriores. Conserva únicamente resúmenes sin contenido. Luego usa esta tabla en lugar de cambiar de modelo por intuición.
Si quieres un sistema de soporte por voz con este ciclo de diagnóstico integrado, puedo ayudarte a diseñarlo y lanzarlo.
- Última actualización
- 12 sept 2026
- Categoría
- Build







