Captions and Subtitles
La mayoría del vídeo social se ve sin sonido. Los subtítulos son parte de la edición, no un extra.
1. Transcribir
# openai-whisper (pip install openai-whisper)
whisper audio.mp3 --model small --language en --output_format srt --output_dir captions/
# faster-whisper (pip install faster-whisper): más rápido, menor memoria, marcas de tiempo por palabra
python - <<'PY'
from faster_whisper import WhisperModel
model = WhisperModel("small", compute_type="int8")
segments, info = model.transcribe("audio.mp3", word_timestamps=True, vad_filter=True)
for s in segments:
for w in s.words:
print(f"{w.start:.2f}\t{w.end:.2f}\t{w.word}")
PY
Extrae primero el audio limpio para mejores resultados:
ffmpeg -i video.mp4 -vn -ac 1 -ar 16000 audio.wav
El tamaño del modelo intercambia precisión por velocidad: base < small < medium < large. Usa small o medium para inglés, large para acentos difíciles u otros idiomas.
Si el guion ya existe (generaste la locución a partir de él), no confíes en el texto de la transcripción. Usa el texto del guion y emplea Whisper solo para la sincronización (alineación forzada). Esto mantiene exactos los nombres y números.
2. Corregir el texto
Revisa nombres propios, nombres de productos, números. Whisper a menudo los interpreta mal. Pide al usuario un glosario cuando el tema sea técnico.
3. Escribir archivos de subtítulos
SRT:
1
00:00:00,000 --> 00:00:02,400
La mayoría de los builds fallan en viernes.
2
00:00:02,400 --> 00:00:05,100
Aquí está el porqué.
Reglas de legibilidad:
- Máximo 2 líneas, aproximadamente 42 caracteres por línea (unas 20 para vídeo vertical).
- Velocidad de lectura inferior a 17 caracteres por segundo; duración mínima de la pista 1 segundo.
- Cortar al final de una frase, no en medio. Nunca dividir un nombre entre pistas.
- Las pistas no deben solaparse. Mantén un espacio de 2 fotogramas o ninguno.
4. Quemar (Burn in)
# Estilo suave mediante force_style (SRT)
ffmpeg -i in.mp4 -vf "subtitles=captions.srt:force_style='FontName=Arial,FontSize=22,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=2,Alignment=2,MarginV=60'" -c:a copy out/captioned.mp4
# ASS ofrece control total (karaoke, resaltado de palabras, posiciones, animación)
ffmpeg -i in.mp4 -vf "ass=captions.ass" -c:a copy out/captioned.mp4
Problema con rutas en Windows: en los filtros, escapa el dos puntos de la unidad y usa barras inclinadas (subtitles='C\:/work/captions.srt'), o ejecuta FFmpeg desde la carpeta que contiene el archivo y usa una ruta relativa.
5. Estilo con resaltado de palabras para formato corto
Genera un archivo ASS con un evento por grupo de palabras (2 a 4 palabras), y usa la etiqueta karaoke \k o la sobrescritura de color por palabra para que la palabra activa cambie de color. Aspecto típico: sans-serif en negrita, texto blanco, contorno negro de 3 a 4 px, palabra activa en un color de acento de la marca, colocada en el tercio inferior medio, no en la parte inferior (la interfaz de la plataforma la cubre).
Encabezado ASS mínimo para empezar:
[Script Info]
ScriptType: v4.00+
PlayResX: 1080
PlayResY: 1920
[V4+ Styles]
Format: Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,OutlineColour,BackColour,Bold,Italic,Underline,StrikeOut,ScaleX,ScaleY,Spacing,Angle,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,Encoding
Style: Default,Arial,72,&H00FFFFFF,&H0000D7FF,&H00000000,&H64000000,-1,0,0,0,100,100,0,0,1,4,0,2,60,60,520,1
[Events]
Format: Layer,Start,End,Style,Name,MarginL,MarginR,MarginV,Effect,Text
Dialogue: 0,0:00:00.00,0:00:01.20,Default,,0,0,0,,{\k30}La {\k40}mayoría {\k30}falla
Los colores en ASS son &HAABBGGRR (orden azul-verde-rojo, alfa primero).
6. Entregar
- Versión quemada para plataformas sociales.
- Un archivo
.srto.vttindependiente para YouTube, LinkedIn y reproductores web (los espectadores pueden activar/desactivar y traducir). - Pista de subtítulos suave en MP4:
-i captions.srt -c copy -c:s mov_text.
Traducir
Traduce el texto de las pistas, no la temporización. Mantén los límites de línea por idioma (el alemán y el finlandés son más largos, por lo que hay que reajustar). Haz que un hablante nativo lo revise cuando el vídeo sea público.