File size: 6,810 Bytes
2457274 |
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 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
#!/bin/bash
# ZenVision AI Subtitle Generator - Installation Script
# Instala todas las dependencias y modelos necesarios
set -e
echo "🚀 Instalando ZenVision AI Subtitle Generator..."
echo "=================================================="
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Function to print colored output
print_status() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# Check Python version
print_status "Verificando versión de Python..."
python_version=$(python3 --version 2>&1 | awk '{print $2}' | cut -d. -f1,2)
required_version="3.8"
if [ "$(printf '%s\n' "$required_version" "$python_version" | sort -V | head -n1)" = "$required_version" ]; then
print_success "Python $python_version encontrado"
else
print_error "Python $required_version o superior requerido. Encontrado: $python_version"
exit 1
fi
# Check if running on supported OS
print_status "Detectando sistema operativo..."
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
OS="linux"
print_success "Sistema Linux detectado"
elif [[ "$OSTYPE" == "darwin"* ]]; then
OS="macos"
print_success "Sistema macOS detectado"
elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "cygwin" ]]; then
OS="windows"
print_success "Sistema Windows detectado"
else
print_warning "Sistema operativo no reconocido: $OSTYPE"
OS="unknown"
fi
# Install system dependencies
print_status "Instalando dependencias del sistema..."
if [[ "$OS" == "linux" ]]; then
if command -v apt-get &> /dev/null; then
sudo apt-get update
sudo apt-get install -y ffmpeg python3-dev python3-pip build-essential
print_success "Dependencias de Ubuntu/Debian instaladas"
elif command -v yum &> /dev/null; then
sudo yum install -y ffmpeg python3-devel python3-pip gcc gcc-c++
print_success "Dependencias de CentOS/RHEL instaladas"
elif command -v pacman &> /dev/null; then
sudo pacman -S --noconfirm ffmpeg python python-pip base-devel
print_success "Dependencias de Arch Linux instaladas"
else
print_warning "Gestor de paquetes no reconocido. Instala manualmente: ffmpeg, python3-dev"
fi
elif [[ "$OS" == "macos" ]]; then
if command -v brew &> /dev/null; then
brew install ffmpeg
print_success "FFmpeg instalado via Homebrew"
else
print_warning "Homebrew no encontrado. Instala FFmpeg manualmente"
fi
fi
# Create virtual environment
print_status "Creando entorno virtual..."
if [ ! -d "venv" ]; then
python3 -m venv venv
print_success "Entorno virtual creado"
else
print_warning "Entorno virtual ya existe"
fi
# Activate virtual environment
print_status "Activando entorno virtual..."
source venv/bin/activate
print_success "Entorno virtual activado"
# Upgrade pip
print_status "Actualizando pip..."
pip install --upgrade pip setuptools wheel
# Install PyTorch with CUDA support if available
print_status "Detectando soporte CUDA..."
if command -v nvidia-smi &> /dev/null; then
print_success "NVIDIA GPU detectada, instalando PyTorch con CUDA"
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu118
else
print_warning "No se detectó GPU NVIDIA, instalando PyTorch CPU"
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cpu
fi
# Install Python dependencies
print_status "Instalando dependencias de Python..."
pip install -r requirements.txt
print_success "Dependencias de Python instaladas"
# Download spaCy models
print_status "Descargando modelos de spaCy..."
python -m spacy download en_core_web_sm
python -m spacy download es_core_news_sm
# Try to download additional language models
for lang in fr de it pt; do
print_status "Intentando descargar modelo de spaCy para $lang..."
python -m spacy download ${lang}_core_news_sm || print_warning "Modelo $lang no disponible"
done
print_success "Modelos de spaCy descargados"
# Download NLTK data
print_status "Descargando datos de NLTK..."
python -c "
import nltk
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('vader_lexicon')
print('Datos de NLTK descargados')
"
# Create necessary directories
print_status "Creando directorios necesarios..."
mkdir -p ~/.zenvision/cache
mkdir -p ~/.zenvision/models
mkdir -p /tmp/zenvision
print_success "Directorios creados"
# Test installation
print_status "Probando instalación..."
python -c "
import torch
import whisper
import transformers
import gradio
import moviepy
import librosa
import cv2
import spacy
print('✅ Todas las librerías principales importadas correctamente')
# Test CUDA availability
if torch.cuda.is_available():
print(f'✅ CUDA disponible: {torch.cuda.get_device_name(0)}')
else:
print('⚠️ CUDA no disponible, usando CPU')
# Test Whisper
try:
model = whisper.load_model('tiny')
print('✅ Whisper cargado correctamente')
except Exception as e:
print(f'❌ Error cargando Whisper: {e}')
"
# Create launcher script
print_status "Creando script de lanzamiento..."
cat > run_zenvision.sh << 'EOF'
#!/bin/bash
cd "$(dirname "$0")"
source venv/bin/activate
python app.py
EOF
chmod +x run_zenvision.sh
print_success "Script de lanzamiento creado: ./run_zenvision.sh"
# Display system information
print_status "Información del sistema:"
echo " - Python: $(python --version)"
echo " - PyTorch: $(python -c 'import torch; print(torch.__version__)')"
echo " - CUDA disponible: $(python -c 'import torch; print(torch.cuda.is_available())')"
echo " - Dispositivos CUDA: $(python -c 'import torch; print(torch.cuda.device_count())')"
# Calculate approximate model size
print_status "Calculando tamaño aproximado de modelos..."
echo " - Whisper large-v2: ~1.5 GB"
echo " - BERT multilingual: ~400 MB"
echo " - RoBERTa sentiment: ~200 MB"
echo " - DistilRoBERTa emotion: ~300 MB"
echo " - Modelos de traducción: ~500 MB"
echo " - Otros modelos: ~300 MB"
echo " - TOTAL APROXIMADO: ~3.2 GB"
print_success "¡Instalación completada!"
echo ""
echo "=================================================="
echo "🎬 ZenVision AI Subtitle Generator está listo!"
echo "=================================================="
echo ""
echo "Para ejecutar la aplicación:"
echo " 1. Activar entorno virtual: source venv/bin/activate"
echo " 2. Ejecutar aplicación: python app.py"
echo " 3. O usar el script: ./run_zenvision.sh"
echo ""
echo "La aplicación estará disponible en: http://localhost:7860"
echo ""
echo "Para más información, consulta el README.md"
echo ""
print_success "¡Disfruta usando ZenVision! 🚀" |