# Twitch Highlight Detector 🎮 Sistema avanzado de detección de highlights para streams de Twitch usando VLM (Vision Language Models) y análisis de contexto. ## 🎯 Características - **Detección de Gameplay Real**: Usa análisis visual para distinguir entre gameplay, selección de campeones y streamer hablando - **VLM Integration**: Compatible con Moondream, Video-LLaMA, Qwen2-VL - **Multi-Modal**: Combina Whisper (audio), Chat (texto), Video (visión) y Audio (picos) - **GPU Accelerated**: Optimizado para RTX 3050 (4GB) y RX 6800 XT (16GB) - **Pipeline Automatizado**: Descarga → Análisis → Generación de video en un solo comando ## 🚀 Uso Rápido ```bash # Detectar highlights en un stream python3 highlight_generator.py --video stream.mp4 --chat chat.json --output highlights.mp4 # O usar el sistema completo con VLM python3 scene_detector.py # Detecta segmentos de gameplay python3 extract_final.py # Extrae highlights python3 generate_video.py --video stream.mp4 --highlights final_highlights.json ``` ## 📁 Archivos Principales | Archivo | Descripción | |---------|-------------| | `highlight_generator.py` | Detector híbrido unificado (recomendado) | | `scene_detector.py` | Detección de cambios de escena con FFmpeg | | `gpu_detector.py` | Análisis de frames en GPU | | `vlm_analyzer.py` | Análisis con VLM (Moondream/LLaVA) | | `chat_sync.py` | Sincronización de chat con video | | `6800xt.md` | **Guía completa para RX 6800 XT** | ## 🎮 Hardware Soportado ### RTX 3050 (4GB VRAM) - Configuración Actual - Modelo: Moondream 2B - Procesamiento: Frame por frame - Tiempo: ~20 min para 2 horas de video ### RX 6800 XT (16GB VRAM) - Mejor Opción - Modelo: Video-LLaMA 7B o Qwen2-VL 7B - Procesamiento: Batch de frames - Tiempo: ~5-8 min para 2 horas de video - Ver: `6800xt.md` para instrucciones completas ## 📊 Pipeline de Trabajo ``` Video (2.3h) ↓ [Scene Detection] → Segmentos de 30s-5min ↓ [Clasificación] → GAMEPLAY / SELECT / TALKING / MENU ↓ [Filtrado] → Solo segmentos GAMEPLAY ↓ [Análisis Multi-Modal] - Whisper: Transcripción + Keywords - Chat: Picos de actividad - Audio: Detección de gritos - VLM: Confirmación visual ↓ [Extracción] → Mejores momentos de cada segmento ↓ [Generación] → Video final concatenado ``` ## 🔧 Instalación ### Requisitos - Python 3.10+ - CUDA/ROCm compatible - FFmpeg con CUDA ### Setup ```bash # Entorno Python python3 -m venv vlm_env source vlm_env/bin/activate # Dependencias base pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install transformers accelerate opencv-python pillow pip install openai-whisper scipy numpy # Para RTX 3050 (actual) ./install_vlm.sh # Para RX 6800 XT (próximo) # Ver 6800xt.md ``` ## 📝 Configuración ### Variables de Entorno ```bash export CUDA_VISIBLE_DEVICES=0 # Seleccionar GPU export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512 ``` ### Archivos de Configuración - `gameplay_scenes.json` - Segmentos de gameplay detectados - `highlights_*.json` - Timestamps de highlights - `transcripcion_*.json` - Transcripciones Whisper ## 🎬 Salidas El sistema genera: - `HIGHLIGHTS_FINAL.mp4` - Video de highlights (5-10 minutos) - `HIGHLIGHTS_FINAL.json` - Timestamps de clips - `gameplay_*.json` - Mapa de segmentos de gameplay ## 🔬 Metodología ### Detección de Gameplay Usa análisis multi-factor: 1. **Variación de color** - Gameplay tiene más movimiento 2. **Canal verde** - Mapa de LoL es predominantemente verde 3. **Detección de bordes** - UI de LoL tiene bordes definidos 4. **VLM** - Clasificación visual con modelo de lenguaje ### Detección de Highlights Combina 4 señales: 1. **Rage keywords** - "puta", "mierda", "me mataron" 2. **Picos de chat** - Mensajes/segundo 3. **Picos de audio** - Volumen/gritos 4. **Contexto temporal** - Extensión inteligente de clips ## 🛠️ Troubleshooting ### Out of Memory ```python # Reducir batch_size o usar quantization from transformers import BitsAndBytesConfig quantization_config = BitsAndBytesConfig(load_in_4bit=True) ``` ### Lento - Usar CUDA Graphs - Reducir resolución de frames (320x180 → 160x90) - Procesar en batches ### Precision baja - Aumentar umbral de detección - Usar modelo VLM más grande - Ajustar ponderaciones de scores ## 📚 Documentación Adicional - `6800xt.md` - Guía completa para RX 6800 XT - `contexto.md` - Contexto del proyecto - `GPU_ANALYSIS.md` - Análisis de rendimiento GPU ## 🤝 Contribuir 1. Fork del repositorio 2. Crear branch: `git checkout -b feature/nueva-funcionalidad` 3. Commit: `git commit -am 'Agregar funcionalidad X'` 4. Push: `git push origin feature/nueva-funcionalidad` 5. Crear Pull Request ## 📝 Licencia MIT License - Libre para uso personal y comercial. ## 👥 Autores - **IA Assistant** - Implementación inicial - **renato97** - Testing y requisitos --- **Nota**: Para configuración específica de RX 6800 XT, ver archivo `6800xt.md`