--- title: ReelsX emoji: 🎬 colorFrom: blue colorTo: purple sdk: docker pinned: false --- # ReelsX - Generador de Videos con Wav2Lip Esta aplicación permite generar videos sincronizando el audio con los labios de una persona utilizando la tecnología Wav2Lip. ## Características - Generación de videos con sincronización labial - Soporte para múltiples formatos de entrada de audio y video - Interfaz web intuitiva - Procesamiento asíncrono de videos ## Uso 1. Sube un video con un rostro claro 2. Sube o genera un archivo de audio 3. Espera mientras se procesa el video 4. Descarga el resultado final ## Tecnologías - Python - Flask - Wav2Lip - FFmpeg - OpenCV ## Créditos Este proyecto utiliza [Wav2Lip](https://github.com/Rudrabha/Wav2Lip) para la sincronización labial. # Generador de Videos de Reacción Este proyecto es una aplicación web que permite crear videos de reacción combinando videos de YouTube con animaciones faciales generadas mediante inteligencia artificial. ## Propósito La aplicación permite a los usuarios: 1. Seleccionar un video de YouTube como base 2. Generar una reacción de audio mediante texto a voz (TTS) 3. Animar una imagen facial para sincronizarla con el audio 4. Combinar todo en un video final de reacción ## Estructura del Proyecto ``` reels/ ├── app.py # Aplicación principal Flask ├── inference.py # Script de inferencia Wav2Lip ├── requirements.txt # Dependencias del proyecto ├── static/ # Archivos estáticos │ ├── animations/ # Animaciones generadas │ ├── female.png # Avatar femenino predeterminado │ └── male.png # Avatar masculino predeterminado ├── templates/ │ └── index.html # Interfaz de usuario ├── face_detection/ # Módulo de detección facial │ ├── api.py # API de detección facial │ └── detection/ │ └── sfd/ # Detector SFD │ ├── net_s3fd.py # Arquitectura de red │ ├── s3fd.py # Implementación del modelo │ ├── sfd_detector.py # Clase detector │ └── s3fd.pth # Pesos del modelo ├── utils/ │ ├── tts_processing.py # Procesamiento de texto a voz │ └── video_processing.py # Procesamiento de video ├── checkpoints/ # Modelos pre-entrenados │ └── wav2lip_gan.pth # Modelo Wav2Lip └── temp_audio/ # Archivos temporales de audio ``` ## Flujo de Datos 1. **Entrada de Video** - El usuario proporciona una URL de YouTube - `video_processing.py` descarga y procesa el video - Se permite seleccionar un segmento específico 2. **Generación de Audio** - El usuario escribe texto y selecciona una voz - `tts_processing.py` genera el audio usando Edge TTS - El audio se guarda temporalmente en `temp_audio/` 3. **Animación Facial** - El usuario selecciona/sube una imagen facial - `face_detection/` detecta y procesa el rostro - `inference.py` genera la animación usando Wav2Lip - La animación se guarda en `static/animations/` 4. **Combinación Final** - Se combina el video base con la animación - El resultado se guarda y se ofrece para descarga ## Módulos Principales ### face_detection/ - **api.py**: Interfaz principal de detección facial - `FaceAlignment`: Clase para alineación y detección facial - `download_sfd_model()`: Descarga el modelo SFD si no existe ### utils/ - **tts_processing.py** - `generate_tts_with_fallback()`: Genera audio desde texto - **video_processing.py** - `download_video_with_fallback()`: Descarga videos de YouTube - `inference_preview()`: Genera preview del video - `wav2lip_animate()`: Genera animación facial - `cleanup_old_files()`: Limpia archivos temporales ### Modelos - **SFD (S³FD)** - Detector facial usado para preprocesamiento - Archivos: `net_s3fd.py`, `sfd_detector.py` - **Wav2Lip** - Modelo principal para sincronización labial - Checkpoint: `wav2lip_gan.pth` ## Interfaz de Usuario La interfaz web (`templates/index.html`) está dividida en tres secciones: 1. **Video Base** - Campo para URL de YouTube - Visualización de thumbnail y título - Selector de segmento de video - Preview del video seleccionado 2. **Reacción** - Editor de texto para la reacción - Selector de voz TTS - Preview del audio generado - Selector de imagen facial - Preview de la animación generada 3. **Generación Final** - Botón para combinar videos - Barra de progreso - Opciones de descarga ## Dependencias Principales - Flask: Servidor web - PyTorch: Modelos de IA - OpenCV: Procesamiento de imagen - Edge-TTS: Generación de voz - yt-dlp: Descarga de videos - ffmpeg: Procesamiento de video ## Manejo de Errores El sistema incluye: - Verificación de archivos generados - Limpieza automática de temporales - Fallbacks para descargas y procesamiento - Logging detallado de operaciones ## Notas de Desarrollo - La aplicación usa CUDA si está disponible - Los archivos temporales se limpian cada 24 horas - Los modelos se descargan automáticamente - Se incluye soporte para formatos WebM con alpha ## Problemas Conocidos y Soluciones 1. **Error de Detección Facial** - Causa: Modelo SFD no cargado correctamente - Solución: Verificar `s3fd.pth` en `face_detection/detection/sfd/` 2. **Error de Audio** - Causa: Edge TTS no disponible - Solución: Verificar conexión a internet 3. **Error de Video** - Causa: URL de YouTube inválida - Solución: Usar fallback de descarga