Skip to content

Repository files navigation

🎬 Pipeline Autónomo de Generación de Videos Verticales (Shorts / Reels / TikTok) 100% Local

Versión Actual: 0.1.0 | Consulta el historial completo en VERSIONS.md
Este repositorio contiene la arquitectura completa, el código fuente y la documentación técnica de un sistema autónomo e interactivo para la creación de videos verticales en formato 9:16 (1080x1920) ejecutado 100% en local, sin costes de APIs externas ni dependencias en la nube, optimizado específicamente para hardware NVIDIA de última generación (RTX 5080 con aceleración NVENC).


📑 Tabla de Contenidos

  1. Visión General y Objetivos
  2. Especificaciones del Hardware y Entorno
  3. Arquitectura Secuencial y Gestión de VRAM
  4. Estructura del Proyecto y Directorios
  5. Desglose Técnico de las 6 Fases
  6. Mecanismo de Auto-Reinvocación de Entorno Virtual
  7. Guía de Instalación y Configuración
  8. Script de Arranque y Modos de Ejecución
  9. Parámetros de Configuración (.env)
  10. Control de Versiones y Changelog

🎯 Visión General y Objetivos

El objetivo de este proyecto es automatizar por completo el flujo de creación de contenido audiovisual en formato vertical (YouTube Shorts, Instagram Reels, TikTok) manteniendo el control total del proceso:

  • 0% Dependencia de la Nube: Toda la inferencia de lenguaje, síntesis de voz, reconocimiento acústico, generación visual y renderizado se realiza localmente.
  • Producciones Completas de 150 a 300 Segundos (2.5 a 5 Minutos): Historias virales con tensión creciente, misterios o noticias y crónicas científicas explicadas en profundidad.
  • Entre 15 y 20 Escenas por Video (10 a 15 Segundos por Escena): Cada producción cuenta con entre 15 y 20 escenas visuales independientes, dinámicas y sincronizadas al ritmo de la narración.
  • Guiones Estructurados Escena por Escena: Generación de guion modular con desglose narrativo y prompt visual individual para cada escena, garantizando coherencia argumental de inicio a fin.
  • Subtítulos Virales Dinámicos: Subtítulos palabra por palabra estilo Alex Hormozi quemados directamente sobre el video con tipografía Impact, borde negro de 5px, resaltado amarillo chillón y animación pop.
  • Rendimiento Extremo: Renderizado acelerado por hardware gracias al codificador NVENC de la RTX 5080.
  • Limpieza Automática de Temporales: Purga inteligente de archivos intermedios en temp/ al finalizar la producción.

🖥️ Especificaciones del Hardware y Entorno

Componente Especificación Técnica
GPU NVIDIA GeForce RTX 5080 (16 GB GDDR7 VRAM, núcleos Tensor 5ª gen, arquitectura Blackwell)
Drivers GPU NVIDIA Driver 580.173.02 con soporte para CUDA 13.0
Aceleración Hardware Codificadores NVENC dedicados: h264_nvenc, hevc_nvenc, av1_nvenc
Memoria RAM 64 GB DDR5 del sistema
Sistema Operativo Linux (Ubuntu 24.04 / 22.04 LTS de 64 bits)
Python Python 3.12.3 en entorno virtual aislado (./venv)
FFmpeg FFmpeg 6.1.1 compilado con --enable-libass y soporte de NVENC
LLM Server Ollama local en http://localhost:11434 con modelo cuantizado qwen2.5:7b
Diffusion Server ComfyUI local en http://127.0.0.1:8188 (Wan 2.2 TI2V-5B Text-to-Video)

⚡ Arquitectura Secuencial y Gestión de VRAM

Para garantizar que los 16 GB de VRAM de la RTX 5080 nunca se saturen ni sufran fragmentación de memoria (OOM), el pipeline opera bajo un patrón de ejecución estrictamente secuencial.

graph TD
    subgraph FASE 1: LLM
        A["Ollama: Qwen 2.5 (7B/14B)"] -->|Genera Guion 15-20 Escenas| B["Descarga Ollama (keep_alive: 0)"]
    end

    subgraph LIMPIEZA 1
        B --> C["gc.collect() + torch.cuda.empty_cache() (0.0 MiB VRAM)"]
    end

    subgraph FASE 2: TTS
        C --> D["Kokoro-82M TTS (CUDA)"]
        D -->|Genera Audio 24kHz .wav| E["del pipeline"]
    end

    subgraph LIMPIEZA 2
        E --> F["gc.collect() + torch.cuda.empty_cache() (10.0 MiB VRAM)"]
    end

    subgraph FASE 3: STT
        F --> G["Whisper-Timestamped (CUDA)"]
        G -->|Alinea palabras -> Subtítulos ASS| H["del model"]
    end

    subgraph LIMPIEZA 3
        H --> I["gc.collect() + torch.cuda.empty_cache() (10.0 MiB VRAM)"]
    end

    subgraph FASE 4: VISUAL
        I --> J["ComfyUI Wan 2.2 / Stock / Motor Cinemático"]
        J -->|Genera 15-20 clips MP4 9:16| K["POST /free en ComfyUI"]
    end

    subgraph LIMPIEZA 4
        K --> L["gc.collect() + torch.cuda.empty_cache() (10.0 MiB VRAM)"]
    end

    subgraph FASE 5: RENDER
        L --> M["FFmpeg con h264_nvenc (NVENC Hardware)"]
        M -->|Ensambla Video + Audio + BGM + ASS| N["Exporta Video a ./generated/"]
    end

    subgraph FASE 6: PUBLICACIÓN & LIMPIEZA
        N --> O["Manual Pipeline: Archivo, Metadatos SEO o Drive"]
        O --> P["cleanup_temp_directory(): Purga temp/"]
    end
Loading

📁 Estructura del Proyecto y Directorios

/home/sajitario/pipeline_ia/
├── start                     # Script ejecutable de arranque y monitorización de servicios
├── auto_pipeline.py          # Script principal no asistido / modo por lotes
├── manual_pipeline.py        # Asistente interactivo guiado paso a paso por consola
├── test.py                   # Suite de pruebas automatizadas integrales (8 fases)
├── VERSIONS.md               # Registro oficial de versiones y especificaciones
├── GUIDE_USE.md              # Guía práctica de uso paso a paso
├── GUIDE_FUNCION.md          # Guía técnica de arquitectura interna y funcionamiento
├── .env.example              # Plantilla de configuración con variables de entorno
├── README.md                 # Documentación y contexto integral del sistema
├── venv/                     # Entorno virtual de Python con todas las dependencias
├── ComfyUI/                  # Repositorio y servidor local de ComfyUI (Wan 2.2)
├── assets/                   # Recursos y multimedia
│   ├── music/                # Pistas de música de fondo (.mp3, .wav)
│   └── stock/                # Clips de video locales predescargados (.mp4)
├── temp/                     # Archivos temporales (purgados automáticamente al terminar)
├── generated/                # Salida de videos finales renderizados (.mp4)
└── published/                # Carpeta de videos aprobados con metadatos SEO (.txt)

🧩 Desglose Técnico de las 6 Fases

Fase 1: Generación de Guion por Escenas

  • Motor: Ollama con el modelo qwen2.5:7b (o 14b).
  • Estructura Escena por Escena: El generador divide la historia en 15 a 20 escenas consecutivas. Cada escena contiene:
    • ESCENA X:
    • NARRACIÓN: Párrafo de 28 a 38 palabras en español conversacional (10 a 15 segundos por escena).
    • VISUAL: Prompt descriptivo en inglés cinematográfico 9:16 para la generación visual de esa escena específica.
  • Duración Total: 150 a 300 segundos (~350 a 690 palabras narradas).
  • Liberación de Memoria: Llama a /api/generate con keep_alive: 0 para descargar inmediatamente el LLM de la VRAM tras la inferencia.

Fase 2: Síntesis de Voz Neural

  • Motor: hexgrad/Kokoro-82M ejecutado sobre PyTorch CUDA.
  • Formato: Audio sin compresión en formato .wav a frecuencia de muestreo de 24.000 Hz.
  • Calibración Dinámica: Ajuste automático de la velocidad de locución (tts_speed) para alcanzar la duración exacta pedida.
  • Voces Soportadas: ef_dora, em_alex, em_santa, af_bella, am_adam.

Fase 3: Transcripción y Subtítulos Dinámicos Hormozi

  • Motor: whisper_timestamped (modelo base en GPU).
  • Alineación Temporal: Extrae marcas de tiempo exactas por palabra con start y end en milisegundos.
  • Generación de Subtítulos ASS:
    • Tipografía: Fuente Impact en tamaño 75px, con contorno negro de 5px (Outline=5) y sombra suave (Shadow=2).
    • Efecto Hormozi con resaltado amarillo chillón (&H0000FFFF) y animación pop.

Fase 4: Motor de Clips de Video Cinemáticos e IA

  • Formato: Generación de 15 a 20 clips de video MP4 reales en resolución vertical 9:16 (1080x1920 @ 30 FPS) con duración individual de 10 a 15 segundos.
  • Prioridad de Sourcing:
    1. ComfyUI API (Wan 2.2 TI2V-5B): Workflow nativo de 11 nodos conectado a la API de ComfyUI.
    2. Clips de Stock Locales: Si existen archivos .mp4 en ./assets/stock/.
    3. Motor Cinemático Procedural: Genera arte visual en alta resolución con gradientes y movimiento continuo multicapa (zoompan, viñeteado, corrección de color).

Fase 5: Ensamblaje y Renderizado por Hardware

  • Motor: FFmpeg con aceleración NVIDIA NVENC (h264_nvenc).
  • Presets de Calidad: Preset p6, bitrate de 8 Mbps, bitrate máximo de 12 Mbps, espacio de color yuv420p.
  • Filtros Integrados: Quemado directo de subtítulos ASS y atenuación de música de fondo (BGM ducking a 0.12).

Fase 6: Gestión, Metadatos SEO, Publicación y Limpieza

  • Salida Principal: ./generated/short_YYYYMMDD_HHMMSS_Titulo.mp4.
  • Módulo de Publicación: Mueve a ./published/ y genera _metadata.txt con título viral, descripción y hasta 12 hashtags optimizados.
  • Limpieza de Temporales: cleanup_temp_directory() purga archivos intermedios dejando ./temp/ limpio.

🚀 Script de Arranque y Modos de Ejecución

0. Arranque de Servicios Automatizado (./start)

Inicia y monitoriza en terminales independientes el servicio de Ollama y el servidor de ComfyUI:

cd ~/pipeline_ia
./start

1. Modo Automático / Lotes (auto_pipeline.py)

# Video de 180 segundos (3 minutos, 15 escenas de 12s cada una):
python auto_pipeline.py --topic "Los misterios sin resolver del triángulo de las Bermudas" --duration 180

# Video de 4 minutos (240 segundos, 18-20 escenas) con voz narrativa:
python auto_pipeline.py --topic "La historia secreta de la carrera espacial" --duration 240 --voice em_santa

# Video con música de fondo y nombre personalizado:
python auto_pipeline.py \
  --topic "El descubrimiento del continente perdido de Zelanda" \
  --duration 200 \
  --bgm "./assets/music/epic.mp3" \
  --output "zelandia_documental.mp4"

2. Modo Manual e Interactivo (manual_pipeline.py)

python manual_pipeline.py

3. Suite de Pruebas Automatizadas (test.py)

Ejecuta los 8 tests de integración para comprobar GPU, Ollama, Kokoro TTS, Whisper STT, ComfyUI Wan 2.2, Motor Procedural, FFmpeg NVENC y Limpieza de temporales:

python test.py

⚙️ Parámetros de Configuración (.env)

Variable Valor por Defecto Descripción
TARGET_DURATION_SEC 180 Duración objetivo en segundos (150-300)
MIN_SCENES 15 Mínimo de escenas requeridas por video (15-20)
USE_COMFYUI true Habilitar generación de video IA con Wan 2.2
COMFYUI_TIMEOUT 600 Timeout por escena en ComfyUI (segundos)
CLEAN_TEMP true Limpieza automática de la carpeta temp/ tras renderizar
TTS_VOICE ef_dora Voz de síntesis Kokoro
VIDEO_CODEC h264_nvenc Codificador acelerado por GPU
NVENC_PRESET p6 Preset de calidad NVENC
VIDEO_BITRATE 8M Tasa de bits promedio de video
BGM_VOLUME 0.12 Atenuación de música de fondo

📌 Control de Versiones y Changelog

El registro detallado de versiones se mantiene en VERSIONS.md:

  • v0.1.0 (Actual): Soporte completo para Wan 2.2 TI2V-5B, 15-20 escenas (150-300s), guiones estructurados, calibración dinámica de duración, script start y test.py.
  • v0.1.1 (Planificada): Arquitectura Image-to-Video (I2V) con contexto global de historia y optimización de framerate.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages