Texto a voz
Convertir texto escrito en audio que no suene como un GPS leyendo direcciones es más difícil de lo que parece, por eso la mayoría de los equipos lo tercerizan en vez de construirlo. Esta API de texto a voz recibe texto plano y devuelve audio con voz natural, listo para usarse en una app, un video o un menú telefónico automatizado.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
Por qué el texto solo ya no alcanza
El contenido escrito cada vez necesita más una versión en audio: un artículo leído en voz alta para quien va en transporte público, la descripción de un producto narrada dentro de una app por accesibilidad, una línea telefónica que saluda a quien llama por su nombre. La síntesis de voz temprana resolvía esto pegando fragmentos de palabras que sonaban cosidos entre sí; los modelos modernos generan habla continua y con ritmo natural, el estándar que persigue este endpoint: audio que alguien escucha sin notar que fue hecho por una máquina.
Cómo es la solicitud
Envía texto plano en el cuerpo de la solicitud y la tarea se pone en cola de forma asíncrona, devolviendo un task_id de inmediato. Como generar habla para pasajes largos toma tiempo real de procesamiento, el archivo de audio final llega después, mediante un webhook firmado, que es el camino recomendado para todo lo automatizado, o mediante un enlace firmado válido por 24 horas si prefiere consultarlo manualmente. No existe un modo síncrono de 'espera y recibe el audio de una vez'; la arquitectura está pensada para no bloquear su aplicación mientras se renderiza un archivo de voz.
Dónde se usa realmente la voz natural
La accesibilidad es el uso más directo, narración tipo lector de pantalla para quien prefiere o necesita audio en vez de texto, pero está lejos de ser el único. Equipos de producto la usan para guía por voz dentro de apps, plataformas de e-learning narran lecciones sin contratar locutores para cada actualización, y marketing genera voces en off rápidas para videos cortos sin reservar estudio. En todos los casos el atractivo es el mismo: el texto cambia rápido, y regrabar a un locutor humano por cada edición no escala.
Costo y confiabilidad
El precio es una tarifa base pequeña por solicitud más una tarifa por cada 1000 caracteres, así que una notificación corta cuesta una fracción de un artículo completo. Cada tarea recibe hasta tres reintentos automáticos antes de fallar, y una tarea fallida nunca se cobra; solo paga por el audio que realmente se generó. Esa previsibilidad importa cuando este endpoint se llama de forma programática, cientos de veces al día, como parte de un flujo de contenido y no como una solicitud aislada.
Acceso, entrega y manejo de datos
Como el resto de la API, este endpoint requiere saldo prepago; sin eso, las solicitudes devuelven HTTP 402 en vez de una respuesta gratuita degradada. El audio generado y el texto usado para crearlo se eliminan al terminar el período de retención y nunca se usan para entrenar ningún modelo; recibe el archivo por su webhook o por su enlace firmado, y nada permanece más allá de eso.
Qué puede hacer con ella
Narración accesible de artículos
Genera automáticamente una versión en audio de cada artículo publicado para que quien lee pueda escuchar en vez de leer.
Guía por voz dentro de una app
Convierte texto dinámico de interfaz o consejos de bienvenida en audio hablado sin pregrabar cada variante posible.
Saludos telefónicos e IVR
Genera mensajes de voz para un sistema telefónico a partir de texto que cambia seguido, como horarios de tienda o saldos de cuenta.
Voces en off rápidas para video
Convierte un guion en una pista hablada para videos cortos de marketing o redes sociales sin reservar estudio de grabación.
Preguntas frecuentes
¿Cómo funciona la api de texto a voz?
Envía texto plano, la tarea se pone en cola de forma asíncrona y devuelve un task_id, y el audio con voz generado se entrega después por webhook firmado o por un enlace firmado válido 24 horas.
¿Es gratuita la api de texto a voz?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cuánto cuesta la api de texto a voz?
Cuesta $0.005 por solicitud más $0.008 por cada 1000 caracteres del texto de entrada.
¿Qué formato de audio se devuelve?
Recibe un archivo de audio estándar apto para reproducirse en apps, sistemas IVR y editores de video, entregado por su webhook o enlace firmado.
¿Puedo controlar pausas o pronunciación?
Este endpoint recibe texto plano; si necesita control explícito sobre pausas, énfasis o pronunciación, use el endpoint de texto a voz con SSML.
¿Soporta español u otros idiomas?
Este endpoint maneja síntesis de voz natural general; para voces nativas en español específicamente, use el endpoint dedicado de texto a voz en español.
¿Por qué el texto a voz es asíncrono y no instantáneo?
Generar habla natural para textos largos toma tiempo real de procesamiento, así que los resultados se entregan por webhook o enlace firmado en lugar de devolverse en la misma solicitud.
¿Qué pasa si falla una tarea de texto a voz?
Se reintenta automáticamente hasta tres veces sin costo; si aun así falla, recibe un error claro y nunca se le cobra por ella.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/voice/tts \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hola, este es un mensaje de prueba."}'const res = await fetch("https://api.kit.forhosting.com/voice/tts", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hola, este es un mensaje de prueba."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/voice/tts",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hola, este es un mensaje de prueba."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/voice/tts", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hola, este es un mensaje de prueba."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hola, este es un mensaje de prueba."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/voice/tts", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "Hola, este es un mensaje de prueba."
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "voice.tts",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 200 |
max_minutes | 180 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |