Skip to content

Taws-Espol/EmotiPlay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EmotiPlay

Sistema inteligente de reconocimiento de emociones faciales en tiempo real con integración a Spotify.

Descripción del Proyecto

EmotiPlay es una aplicación web que utiliza inteligencia artificial para detectar emociones faciales en tiempo real y adaptar automáticamente la reproducción de música en Spotify según el estado emocional del usuario. El sistema combina visión por computadora con MediaPipe, procesamiento de características faciales, y una interfaz web moderna construida con Next.js.

Características Principales

  • Detección de Emociones en Tiempo Real: Identifica 6 emociones diferentes (feliz, triste, neutral, enojado, sorprendido, amor)
  • Integración con Spotify: Cambia automáticamente la música según la emoción detectada
  • Visualización de Datos: Gráficos interactivos del historial emocional
  • Interfaz Moderna: Diseño responsivo con animaciones fluidas
  • Procesamiento Local: Análisis de video en el navegador para mayor privacidad
  • Historial de Emociones: Registro temporal de las emociones detectadas

Arquitectura del Sistema

EmotiPlay/
├── backend/                 # Sistema de procesamiento de emociones (Python)
│   ├── emotion_processor/   # Módulos de procesamiento
│   │   ├── face_mesh/       # Detección de malla facial
│   │   ├── data_processing/ # Procesamiento de características
│   │   ├── emotions_recognition/ # Reconocimiento de emociones
│   │   └── emotions_visualizations/ # Visualización de resultados
│   ├── examples/            # Ejemplos de uso
│   └── docs/                # Documentación del backend
│
└── frontend/                # Aplicación web (Next.js + React)
    ├── app/                 # Páginas de la aplicación
    ├── components/          # Componentes React
    │   ├── emotion-recognition.tsx
    │   ├── emotion-chart.tsx
    │   ├── emotion-history.tsx
    │   └── spotify-player.tsx
    └── hooks/               # Custom hooks

Tecnologías Utilizadas

Backend

  • Python 3.10+
  • MediaPipe 0.10.14: Detección de puntos faciales
  • OpenCV 4.10.0: Procesamiento de imágenes y video
  • NumPy 2.0.0: Operaciones numéricas y álgebra lineal
  • Matplotlib: Visualización de datos

Frontend

  • Next.js 15.2.4: Framework React con SSR
  • React 19: Biblioteca de UI
  • TypeScript 5: Tipado estático
  • Tailwind CSS 4.1.9: Estilos
  • Recharts: Gráficos interactivos
  • Radix UI: Componentes accesibles
  • Lucide React: Iconos

Requisitos Previos

Backend

  • Python 3.10 o superior
  • pip (gestor de paquetes de Python)
  • Cámara web

Frontend

  • Node.js 18+ y npm/pnpm
  • Navegador moderno con soporte para WebRTC

Instalación

1. Clonar el Repositorio

git clone https://github.com/tu-usuario/EmotiPlay.git
cd EmotiPlay

2. Configurar el Backend

cd backend

# Crear entorno virtual (recomendado)
python -m venv venv
source venv/bin/activate  # En Windows: venv\Scripts\activate

# Instalar dependencias
pip install -r requirements.txt

3. Configurar el Frontend

cd frontend

# Instalar dependencias
npm install
# o con pnpm
pnpm install

Uso

Ejecutar Ejemplos del Backend

cd backend

# Ejemplo con cámara en tiempo real
python examples/camera.py

# Ejemplo con video pregrabado
python examples/video_stream.py

Ejecutar la Aplicación Web

cd frontend

# Modo desarrollo
npm run dev
# o
pnpm dev

# La aplicación estará disponible en http://localhost:3000

Construir para Producción

cd frontend

# Generar build de producción
npm run build

# Ejecutar build
npm start

Funcionalidades Detalladas

Sistema de Reconocimiento de Emociones

El backend procesa las imágenes de la cámara siguiendo estos pasos:

  1. Detección de Rostro: MediaPipe identifica 468 puntos de referencia faciales
  2. Extracción de Características: Se analizan características específicas de:
    • Ojos (apertura, posición)
    • Cejas (elevación, ángulo)
    • Boca (apertura, forma)
    • Nariz (posición relativa)
  3. Clasificación de Emociones: Sistema basado en pesos que determina la emoción
  4. Visualización: Resultados superpuestos en el video en tiempo real

Emociones Detectadas

Emoción Características Clave
Feliz Boca sonriente, ojos ligeramente cerrados
Triste Comisuras de boca hacia abajo, cejas internas levantadas
Enojado Cejas fruncidas, boca tensa
Sorprendido Ojos y boca bien abiertos, cejas elevadas
Neutral Rostro relajado sin expresión marcada
Amor Sonrisa suave, mirada cálida

Integración con Spotify (Frontend)

El componente SpotifyPlayer adapta la música según la emoción:

  • Feliz: Música energética y optimista
  • Triste: Música melancólica y calmada
  • Enojado: Música intensa o relajante
  • Sorprendido: Música dinámica y variada
  • Neutral: Mix balanceado
  • Amor: Música romántica

Documentación Adicional

Estructura de Componentes (Frontend)

EmotionRecognition (Componente principal)
  ├── Video Feed (Captura de cámara)
  ├── EmotionChart (Gráfico de emociones)
  ├── EmotionHistory (Historial temporal)
  ├── SpotifyPlayer (Reproductor de música)
  └── Emotion Display (Emoción actual)

Configuración Avanzada

Variables de Entorno (Frontend)

Crear archivo .env.local en el directorio frontend:

NEXT_PUBLIC_API_URL=http://localhost:8000
NEXT_PUBLIC_SPOTIFY_CLIENT_ID=tu_client_id
NEXT_PUBLIC_SPOTIFY_REDIRECT_URI=http://localhost:3000/callback

Solución de Problemas

Backend

Error: No se detecta la cámara

# Verificar permisos de cámara en el sistema operativo
# En Linux, puede requerir añadir usuario al grupo video
sudo usermod -a -G video $USER

Error: MediaPipe no se instala correctamente

# Actualizar pip y reinstalar
pip install --upgrade pip
pip install --force-reinstall mediapipe==0.10.14

Frontend

Error: Cannot access camera

  • Verificar que el navegador tenga permisos de cámara
  • Asegurarse de usar HTTPS o localhost
  • Comprobar que no haya otra aplicación usando la cámara

Error de compilación TypeScript

# Limpiar cache y reinstalar
rm -rf node_modules .next
npm install

Rendimiento y Optimización

  • Backend: Procesamiento optimizado ~30 FPS en hardware moderno
  • Frontend: Detección cada 2 segundos para balance entre precisión y rendimiento
  • Memoria: ~200MB para backend, ~150MB para frontend

Contribuir

Las contribuciones son bienvenidas. Por favor:

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

Roadmap

  • API REST para comunicación backend-frontend
  • Autenticación real con Spotify API
  • Almacenamiento persistente de historial
  • Soporte para múltiples rostros
  • Modelo de ML personalizado
  • Aplicación móvil

Licencia

Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.

Créditos

Backend - Sistema de Reconocimiento Emocional

El sistema de reconocimiento de emociones del backend (directorio /backend) fue desarrollado por Santiago Sánchez del canal de YouTube Aprende e Ingenia.

Recursos originales:

El código del backend incluye:

  • Sistema de detección facial con MediaPipe
  • Procesadores de características faciales (ojos, cejas, boca, nariz)
  • Algoritmos de clasificación de emociones
  • Sistema de visualización de resultados

Agradecimiento especial a Santiago Sánchez por crear y compartir este excelente sistema de reconocimiento de emociones que sirve como base para el procesamiento en EmotiPlay.

Frontend y Otros Componentes

  • MediaPipe: Google - Framework de ML para detección facial
  • shadcn/ui: Componentes de UI accesibles para React
  • Recharts: Biblioteca de gráficos para visualización de datos
  • Next.js: Equipo de Vercel por el excelente framework
  • Radix UI: Primitivas de UI accesibles

Contacto

Para preguntas o sugerencias, por favor abre un issue en el repositorio.

Agradecimientos

  • Santiago Sánchez (Aprende e Ingenia) por el sistema de reconocimiento emocional
  • Comunidad de MediaPipe por la documentación y ejemplos
  • Equipo de Next.js por el excelente framework
  • Todos los contribuidores del proyecto

Desarrollado para entender y responder a las emociones humanas

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors