Videora

Actualizado 5 junio 2026 · 10 min de lectura

Subtítulos automáticos en videos con API: tutorial completo

El 85% de los videos en redes sociales se ven sin sonido. Si tu video no tiene subtítulos, estás perdiendo la mayoría de tu audiencia. Pero agregar subtítulos manualmente es tedioso: sincronizar tiempos, elegir tipografía, exportar con quemado.

Con la API de Videora, los subtítulos se generan automáticamente, sincronizados palabra por palabra con la narración. Solo envías el texto y recibes un MP4 con subtítulos integrados.

Por qué los subtítulos son obligatorios en 2026

Subtítulos manuales vs automáticos

MétodoTiempo por videoCostoPrecisión
Manual (CapCut/Premiere)15-30 minGratis pero lento100%
Servicio humano (Rev, GoTranscript)1-24 horas$1-3 USD/min99%
IA genérica (Whisper solo)1-5 minVariable90-95%
Videora (integrado)0 min extraIncluido100%

Con Videora los subtítulos tienen 100% de precisión porque se generan desde tu propio texto (no desde reconocimiento de audio). No hay errores de transcripción.

Cómo funcionan los subtítulos en Videora

  1. Tú envías el texto de cada escena en el JSON
  2. La API genera la narración con voz de IA
  3. Los subtítulos se sincronizan automáticamente con el audio
  4. Se queman en el video — no como archivo SRT separado, sino integrados
Ventaja clave: Los subtítulos quemados (hardcoded) se ven en todas las plataformas sin necesidad de que el usuario active subtítulos. Esto es crítico para TikTok e Instagram donde no hay opción de activar CC.

Tutorial: video con subtítulos automáticos

JSON de ejemplo

{
  "title": "5 hábitos de personas exitosas",
  "aspect_ratio": "9:16",
  "voice": "es-MX-Jorge",
  "music": "motivational",
  "scenes": [
    {
      "text": "Hábito uno: se levantan temprano. El 90 por ciento de los CEOs están despiertos antes de las 6 de la mañana.",
      "image_url": "https://images.pexels.com/photos/3771069/pexels-photo-3771069.jpeg",
      "duration": 7
    },
    {
      "text": "Hábito dos: hacen ejercicio. No para verse bien, sino para pensar mejor.",
      "image_url": "https://images.pexels.com/photos/3775566/pexels-photo-3775566.jpeg",
      "duration": 6
    },
    {
      "text": "Hábito tres: leen todos los días. Warren Buffett lee 5 horas diarias.",
      "image_url": "https://images.pexels.com/photos/159711/books-bookstore-book-reading-159711.jpeg",
      "duration": 5
    },
    {
      "text": "Hábito cuatro: dicen que no. Eliminan lo que no importa para enfocarse en lo que sí.",
      "image_url": "https://images.pexels.com/photos/3184292/pexels-photo-3184292.jpeg",
      "duration": 6
    },
    {
      "text": "Hábito cinco: reflexionan antes de dormir. Escriben lo que aprendieron hoy. Empieza esta noche.",
      "image_url": "https://images.pexels.com/photos/796602/pexels-photo-796602.jpeg",
      "duration": 7
    }
  ]
}

Python — generar y descargar

import requests, time

API = "https://videora.4l3.org"

payload = {
    "title": "5 hábitos de personas exitosas",
    "aspect_ratio": "9:16",
    "voice": "es-MX-Jorge",
    "music": "motivational",
    "scenes": [
        {"text": "Hábito uno: levantarse temprano. El 90% de CEOs madruga.", "duration": 6},
        {"text": "Hábito dos: ejercicio diario. No vanidad, claridad mental.", "duration": 5},
        {"text": "Hábito tres: leer cada día. Buffett lee 5 horas.", "duration": 5},
        {"text": "Hábito cuatro: decir que no. Foco en lo que importa.", "duration": 5},
        {"text": "Hábito cinco: reflexionar antes de dormir. Empieza hoy.", "duration": 5}
    ]
}

r = requests.post(f"{API}/v1/video/render", json=payload,
                   headers={"Authorization": "Bearer TU_API_KEY"})
job_id = r.json()["job_id"]

# El video resultante tendrá subtítulos sincronizados automáticamente
while True:
    s = requests.get(f"{API}/v1/jobs/{job_id}").json()
    if s["status"] == "done":
        print(f"Video con subtítulos listo: {API}{s['output_url']}")
        break
    time.sleep(3)

cURL

curl -X POST https://videora.4l3.org/v1/video/render \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer TU_API_KEY" \
  -d '{
    "title": "5 hábitos exitosos",
    "aspect_ratio": "9:16",
    "voice": "es-MX-Jorge",
    "scenes": [
      {"text": "Hábito uno: levantarse temprano.", "duration": 5},
      {"text": "Hábito dos: hacer ejercicio.", "duration": 5},
      {"text": "Hábito tres: leer cada día.", "duration": 5}
    ]
  }'

Mejores prácticas para subtítulos en video corto

Longitud por línea

Máximo 12 palabras por subtítulo. En móvil, líneas más largas se truncan o son ilegibles. Videora divide automáticamente textos largos en segmentos legibles.

Contraste y legibilidad

Los subtítulos de Videora usan fondo semi-transparente oscuro para garantizar legibilidad sobre cualquier imagen de fondo, sin importar si la escena es clara u oscura.

Posición

Los subtítulos se colocan en el tercio inferior del video, evitando tapar la acción principal. En formato 9:16, esto deja espacio para que el pulgar del espectador no los tape al scrollear.

Advertencia: Evita poner texto en la imagen Y subtítulos al mismo tiempo. Compiten por la atención. Si la imagen tiene texto, haz que la escena sea más corta y el subtítulo sea la narración complementaria.

Automatizar subtítulos en lote

Si tienes 20 guiones listos en un CSV, genera todos los videos con subtítulos en un solo script:

import csv, requests

API = "https://videora.4l3.org"
HEADERS = {"Authorization": "Bearer TU_API_KEY", "Content-Type": "application/json"}

with open("guiones.csv") as f:
    reader = csv.DictReader(f)  # columnas: titulo, escena1, escena2, escena3
    for row in reader:
        scenes = [
            {"text": row["escena1"], "duration": 5},
            {"text": row["escena2"], "duration": 5},
            {"text": row["escena3"], "duration": 5}
        ]
        payload = {
            "title": row["titulo"],
            "aspect_ratio": "9:16",
            "voice": "es-MX-Dalia",
            "scenes": scenes
        }
        r = requests.post(f"{API}/v1/video/render", json=payload, headers=HEADERS)
        print(f"✓ {row['titulo']}: {r.json()['job_id']}")

Cada video sale con subtítulos quemados automáticamente. Sin paso extra.

Videos con subtítulos automáticos, gratis

3 videos/mes. Subtítulos sincronizados incluidos. Probar Videora →

Preguntas frecuentes

¿Los subtítulos se queman o son archivo SRT?

Se queman directamente en el video (hardcoded). Esto garantiza visibilidad en cualquier plataforma sin que el usuario active nada.

¿Puedo personalizar la fuente?

Los planes Pro y Premium permiten ajustar fuente, tamaño, color y posición de los subtítulos.

¿Funcionan con diferentes acentos del español?

Sí. Los subtítulos se generan desde el texto que envías, no mediante reconocimiento de voz. Funcionan con cualquier acento.

¿Cuántas palabras por subtítulo es lo ideal?

Entre 5 y 12 palabras. Videora divide automáticamente textos más largos en fragmentos legibles.

Relacionados: Generar video desde texto con API · Video con narración IA · Automatizar TikTok y Reels