← Volver a proyectos

Un pipeline local que convierte una canción generada con IA en un lyric video sincronizado más un Short vertical y sube ambos, en 15 a 25 minutos por canción y sin servicios de pago.

Rol: Creador y desarrollador dirigiendo IA (proyecto personal) Periodo: 2026 Estado: production

RemotionReactTypeScriptPowerShellPython AI: Claude CodeAI: whisper.cppAI: WhisperXAI: RemotionAI: Suno
57

Canciones procesadas por el pipeline

Un solo comando procesa un lote completo, sin editor de video ni pasos manuales

Archivo de estado del proyecto, 2026-10-13

268/286 (94%) y 243/302 (80%)

Palabras de la letra ubicadas en el momento en que se cantan, dos corridas de muestra

La palabra resaltada sigue al canto sin que nadie fije los tiempos a mano

Corridas del pipeline, ago-sep 2026

15 a 25 min

Tiempo por canción, del archivo de audio al video y el Short subidos

Un video terminado en menos de media hora, sin costo de operación

Reportes del pipeline, 2026-10-13

Arquitectura

ARQUITECTURA / LYRIC-VIDEOS 01 mp3 de la canción letra en las etiquetas 02 Pasada burda whisper.cpp 03 Alineación forzada WhisperX, letra real 04 Video largo Remotion, 1920x1080 05 Hallar el coro ventana de 8 a 45 s 06 Short 1080x1920 07 Subida YouTube 08 Archivo resultado registra cada subida La letra ya es exacta, así que la alineación solo añade tiempos, nunca texto nuevo.
Pipeline de lyric videos: mp3, pasada rápida, alineación forzada, render, coro, Short y subida.

Contexto

Hago canciones con un generador de música con IA y quería que cada una se volviera un lyric video sin abrir un editor de video. El pipeline toma el mp3, encuentra la letra incrustada en sus metadatos, alinea cada palabra con el audio, renderiza un video de 1920 por 1080 con la palabra actual resaltada, renderiza un Short vertical de 1080 por 1920 con el estribillo y sube ambos. Todo corre en local en Windows, sin costo, y un solo comando procesa todo lo nuevo de la carpeta de descargas.

Mi rol

  • Decidí: las etapas del pipeline, el criterio de calidad de la alineación, qué muestra el Short, las reglas de idempotencia de las subidas y cuándo una corrida es aceptable.
  • Verifiqué: la proporción de alineación de cada corrida, la ventana del estribillo y el resultado subido, con un archivo de estado que actualizo a mano después de cada corrida importante.
  • Delegué a la IA: el código (scripts de PowerShell, scripts de Node y los componentes de Remotion), escrito por Claude Code bajo mi especificación y revisión.

Investigación

El problema central es el tiempo: la letra de una canción se conoce, pero cuándo se canta cada palabra no. Una transcripción rápida (whisper.cpp, modelo small) da tiempos aproximados pero lee mal el texto cantado. Después WhisperX hace alineación forzada con un modelo wav2vec2 contra la letra real, de modo que el texto es exacto y del audio solo salen los tiempos. Si el modelo small devuelve solo marcadores y menos de 20 palabras reales, el pipeline reintenta con el modelo medium. El archivo alineado se guarda de forma permanente por canción para poder regenerar un Short después sin alinear otra vez.

También revisé las métricas del canal con un script de solo lectura que cuesta unas tres unidades de cuota. Las impresiones y el CTR no se pueden leer por API, y la retención vive en otra API de analítica con su propio permiso, así que solo recolecto lo que la plataforma realmente expone.

Decisiones

DecisiónAlternativas descartadasPor qué
whisper.cpp para una transcripción aproximada, WhisperX para alinear a la fuerza contra la letra realUn solo modelo; transcribir la letra desde el audioLa letra ya es exacta. Transcribirla agregaría errores; alinearla solo agrega tiempos.
Estribillo detectado automáticamente (el primero con duración útil, acotado entre 8 y 45 segundos), con una ventana de respaldo al 35% de la canciónElegir el estribillo a mano cada vez; fallar si no hay estribilloUn Short nunca debe bloquear una corrida. El respaldo siempre produce algo razonable y queda registrado.
Script de analítica que solo leeAnalítica con permiso de escritura sobre el canalEl pipeline puede publicar; el análisis nunca debe poder cambiar nada.
Subidas rastreadas por canción en un archivo de resultadoRastrear por título o por el archivo de estadoUn título puede repetirse entre canciones y el archivo de estado es documentación, no estado. Un archivo de resultado junto al video sí es estado real.

Validación y QA

Cada corrida imprime la proporción de alineación. Las dos corridas de muestra registradas son 268 de 286 palabras (94%) y 243 de 302 (80%); las dos son sanas y ninguna necesitó el reintento. Se comprueba en las notas de la corrida que la ventana del estribillo sea real y no el respaldo.

El pipeline tiene protecciones que nacieron de fallos. Dos canciones distintas con el mismo título chocan en la misma carpeta, y una corrida forzada pisaría los archivos de la primera; un sufijo en el identificador las mantiene separadas. Las subidas son idempotentes, así que una corrida que falla a la mitad se puede reintentar sin reprocesar. Cuando la primera subida de un lote falló porque el token de autorización había vencido, los dos videos ya estaban renderizados, y reintentar solo la subida lo resolvió sin reprocesar nada.

Resultados

  • 57 canciones en el catálogo, cada una producida con el mismo comando.
  • De 15 a 25 minutos por canción, de extremo a extremo, y el script reporta el tiempo real de cada corrida.
  • Dos salidas por canción, un video largo y un Short, subidas sin pasos manuales.
  • Sin costo de operación del pipeline en sí: Remotion, whisper.cpp y WhisperX son gratis y locales.

Qué resuelve y dónde más sirve

Hacer un lyric video a mano exige marcar el tiempo de cada palabra en un editor. Este pipeline toma la canción y su letra, alinea cada palabra con el audio, renderiza un video horizontal y un Short vertical, y sube ambos. Si una corrida falla a la mitad, se puede reintentar sin rehacer el trabajo.

El mismo patrón aplica en otros lugares:

  • Subtítulos y captions: alinear un guion conocido con el audio en videos de capacitación, webinars o demos de producto.
  • Reutilización de contenido: convertir una grabación larga en varios formatos (horizontal, vertical, cortes) con un solo comando.
  • Equipos de medios con publicación recurrente: pipelines por lotes con reintentos seguros, para que un fallo no signifique empezar de cero.

Qué haría distinto

El proyecto de nube que guarda las credenciales de subida se quedó en modo de pruebas, lo que hace que el token venza cada siete días; lo pasaría a producción desde el primer día, para que un lote no dependa de que me acuerde de reautorizar. También agregaría un umbral automático de alineación: por debajo de cierta proporción la corrida debería detenerse y pedir revisión, en lugar de dejar ese juicio a que yo mire un número.

Evidencia

Versión completa: repositorio privado, disponible bajo solicitud.