Sintetizar Voz
Usa esta acción cuando tengas un texto y quieras un archivo de audio con ese texto hablado, guardado en el almacenamiento de tu empresa.
Ideal para
- Decir en voz alta una confirmación de pedido, un recordatorio de cita o un mensaje de IVR
- Producir una nota de voz para enviarla de vuelta por un canal
- Convertir el texto que produjo un paso anterior en un archivo de audio que puedas adjuntar o guardar
Usa otra cosa cuando
| Quieres | Usa |
|---|---|
| Una transcripción del habla, no habla a partir de texto | Transcribir Audio — va en el sentido contrario |
| Reconvertir un audio que ya tienes | Transformar Medios — esta acción solo crea audio nuevo a partir de texto |
| Decir un texto que viene de un LLM o de un campo de texto enriquecido | Preparar Texto Hablado primero, y después esta acción |
Campos principales
| Campo | Qué hace |
|---|---|
| Texto | El texto a decir, como máximo 4096 caracteres. Normalmente step(N).text de un paso anterior |
| Perfil de voz | Qué voz usar. Déjalo vacío para usar el predeterminado de tu empresa |
| Formatear | mp3 (el predeterminado) u opus |
| Propósito | Etiqueta opcional para lo que hace este paso, visible en los registros |
Solo Texto acepta una expresión. Perfil de voz, Formatear y Propósito se leen exactamente como los dejas, así que una expresión CEL escrita en uno de esos campos no se evalúa — se descarta, y obtienes en silencio la voz o el formato predeterminado. Elige esos valores en sus propios campos.
El audio ya está listo cuando el paso termina
A diferencia de Transcribir Audio y Transformar Medios, esta acción no encola un trabajo. Sintetiza el audio en el momento, así que no hay nada que consultar ni que esperar.
Cuando se ejecuta el paso siguiente, step(N).file ya apunta a un objeto de audio que existe de verdad. Puedes adjuntarlo, guardarlo o pasarlo directamente a otro paso de medios en la misma ejecución.
Qué pueden usar los pasos posteriores
| Valor | Qué es |
|---|---|
step(N).file | La referencia {bucket, fullPath} que produce toda acción de medios. Pásala a los adjuntos de Enviar Mensaje al Contacto, a un campo de archivo o a Inspeccionar Medios |
step(N).bucket | El bucket de almacenamiento donde se escribió el audio |
step(N).fullPath | La ruta completa del objeto de audio |
step(N).size | El tamaño del audio en bytes |
step(N).contentType | audio/mpeg para mp3, audio/ogg para opus |
step(N).format | El formato que se usó realmente |
step(N).cache | hit cuando se reutilizó una solicitud idéntica reciente, y miss en caso contrario |
step(N).billedMeter | tts_ms cuando la síntesis se facturó, audio_ms_byok cuando se ejecutó con tu propia clave de proveedor y no se facturó, o vacío en un hit de caché |
step(N).billedMs | Los milisegundos registrados en billedMeter, y 0 en un hit de caché |
Lee el resultado con step(N).billedMs, no con step(N).status — status está reservado para códigos de estado HTTP, y esta acción deliberadamente nunca lo escribe. Usa step_ok(N) para comprobar si el paso salió bien.
Voces
Un perfil de voz guarda la voz, el proveedor y los ajustes con los que se dice tu texto. Los perfiles se gestionan en la configuración de tu empresa, y uno de ellos puede marcarse como predeterminado.
Esta acción elige la voz en este orden:
- El Perfil de voz que indicaste en el paso
- El perfil predeterminado de tu empresa
- La voz de la plataforma ya incorporada, para que la síntesis funcione antes de configurar nada
Una voz fijada a un canal no se usa aquí. Esa fijación solo se aplica dentro de la aplicación, donde una conversación identifica su canal. Un flujo de trabajo no tiene una conversación que resolver, así que si quieres una voz concreta, indica el perfil en el paso.
Límites
| Límite | Valor |
|---|---|
| Longitud del texto | 4096 caracteres, unas 700 palabras o cinco minutos de habla |
| Solicitudes de voz | 60 por minuto, por empresa |
Los textos más largos se rechazan, no se dividen. No hay división automática en el servidor ni unión de audios, así que un texto por encima del límite falla en lugar de producir un archivo parcial. Si necesitas más, reparte el texto en varios pasos y acepta un archivo de audio por paso.
El techo de 60 por minuto se comparte con el modo de voz de la aplicación y con Preparar Texto Hablado, así que un par preparar-y-decir cuesta dos de esas solicitudes por ejecución. Un bucle apretado de síntesis puede agotar el margen e interrumpir a quien esté usando la voz en la aplicación al mismo tiempo — regula el ritmo del flujo si sintetiza en masa.
Coste
La síntesis se descuenta del uso de audio de tu plan, según la longitud del texto y no la duración del audio final. Las voces varían mucho de precio: algunas cuestan varias veces más por minuto que otras, así que el perfil de voz que elijas cambia la factura.
Los perfiles que usan tu propia clave de proveedor se registran pero AutoTalk no los factura — te cobra tu proveedor directamente. Consulta step(N).billedMeter antes de leer step(N).billedMs: con tu propia clave ese número es una estimación para tu control, no un cargo.
Decir el mismo texto otra vez poco después suele ser gratis. Repetir un texto idéntico con la misma voz y formato dentro de unos diez minutos reutiliza el audio anterior, no hace ninguna llamada al proveedor e informa cache: hit con billedMs: 0. Es una reutilización de mejor esfuerzo, no una garantía — un periodo de mucha carga o un reinicio pueden convertirla de nuevo en una llamada normal y facturada. El audio producido con tu propia clave de proveedor nunca se reutiliza así.
Un hit de caché sigue escribiendo un archivo nuevo. Cada llamada guarda su propio objeto de audio, así que un flujo que dice el mismo texto en un bucle sigue aumentando tu uso de almacenamiento aunque la síntesis en sí no cueste nada.
Cuando falla
| Código | Qué pasó |
|---|---|
speech_missing_text | La expresión de Texto no resolvió a nada |
speech_text_too_long | El texto supera los 4096 caracteres. Repártelo en varios pasos |
speech_format_invalid | Formatear tiene algo distinto de mp3 u opus |
voice_profile_not_found | El perfil indicado en el paso no existe |
voice_profile_id_invalid | Perfil de voz no contiene una referencia de perfil válida — a menudo una expresión que no se evaluó |
limits_reached | La cuota de audio de tu plan para el mes está agotada |
rate_limit_error | Más de 60 solicitudes de voz en el mismo minuto. Merece la pena reintentar en breve |
storage_quota_exceeded | El audio se produjo, pero tu almacenamiento está lleno y no se pudo guardar |
speech_synthesis_failed | No se pudo contactar con el proveedor de voz o rechazó la solicitud. Merece la pena reintentar |
storage_quota_exceeded es el que conviene vigilar: el audio se sintetizó y se contabilizó antes de intentar guardarlo, así que el consumo se gastó aunque no llegara ningún archivo. Libera espacio de almacenamiento antes de reintentar.
En otros sitios
La misma capacidad está disponible fuera de los flujos de trabajo como la herramienta MCP synthesize_speech y como POST /v1/speech en la API. Las tres producen el mismo audio y los mismos campos; solo cambia dónde se guarda el archivo.