Spaces:
Runtime error
Runtime error
File size: 5,905 Bytes
73dba3e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
---
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 |