GUÍA

Añade una locución con IA a un vídeo con FFmpeg

FFmpeg pone cualquier audio sobre cualquier vídeo, pero no crea voz natural: su filtro opcional flite suena a robot y la mayoría de las compilaciones no lo incluyen. El camino práctico tiene dos pasos: generar el guion con un motor de texto a voz y dejar que FFmpeg coloque ese audio en el vídeo.

Esta guía hace el primer paso sin conexión con el motor gratuito de SuperClonica y da los comandos de FFmpeg para el segundo. Probamos cada comando con un vídeo de prueba: mantienen el vídeo intacto con -c:v copy, así que terminan en segundos incluso con clips largos.

Genera el guion

Instala el motor una vez con python -m pip install superclonica-cpu; descarga su modelo en el primer arranque y luego funciona sin conexión. Guarda la narración en un archivo de texto y genérala:

superclonica --text-file script.txt --voice M3 --lang es --normalize --output voice.wav

Elige antes la voz en su página del catálogo, donde una frase de 30 a 100 caracteres se genera gratis y sin cuenta. Cada voz habla 31 idiomas; cambia --lang para generar el mismo guion en inglés, alemán o japonés. El chino aún no está disponible.

Sustituye la pista de audio

Para una grabación de pantalla o un clip sin sonido, toma la imagen del vídeo y el sonido de la locución:

ffmpeg -i video.mp4 -i voice.wav -map 0:v -map 1:a -c:v copy -c:a aac voiced.mp4

El vídeo mantiene su duración completa; si la voz es más corta, el resto queda en silencio. No uses -shortest aquí: con copia de flujo puede bloquearse o cortar la imagen a la duración de la voz.

Pon la voz sobre la música

Para conservar el sonido original o la música bajo la narración, bájalos y mezcla ambos:

ffmpeg -i video.mp4 -i voice.wav -filter_complex "[0:a]volume=0.25[music];[music][1:a]amix=inputs=2:duration=first:normalize=0[a]" -map 0:v -map "[a]" -c:v copy -c:a aac voiced.mp4

volume=0.25 deja la música a un cuarto, duration=first mantiene la duración del vídeo y normalize=0 evita que amix reduzca la voz a la mitad.

Baja la música solo mientras habla la voz

Un compresor sidechain baja la música cuando suena la voz y la sube en las pausas, como haría un editor:

ffmpeg -i video.mp4 -i voice.wav -filter_complex "[1:a]asplit=2[v][key];[0:a][key]sidechaincompress=threshold=0.02:ratio=10:attack=20:release=400[music];[music][v]amix=inputs=2:duration=first:normalize=0[a]" -map 0:v -map "[a]" -c:v copy -c:a aac voiced.mp4

Sube ratio para una bajada más profunda y alarga release si la música vuelve demasiado rápido.

Coloca varias líneas en momentos exactos

Genera cada línea en su propio archivo, retrasa cada una hasta su momento en milisegundos y mézclalas todas:

ffmpeg -i video.mp4 -i line1.wav -i line2.wav -filter_complex "[1:a]adelay=500:all=1[l1];[2:a]adelay=4000:all=1[l2];[0:a]volume=0.25[music];[music][l1][l2]amix=inputs=3:duration=first:normalize=0[a]" -map 0:v -map "[a]" -c:v copy -c:a aac voiced.mp4

Aquí la primera línea empieza a los 0,5 s y la segunda a los 4 s. Como cada línea es un archivo aparte, un cambio en el guion significa regenerar una línea, no toda la pista. Si ya tienes subtítulos, nuestra guía de SRT a voz construye la pista con tiempos por ti.