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