File size: 5,751 Bytes
e7d37f3 | 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 | #!/bin/bash
# MuseTalk V1.5 Installation Script
# Tested on: RTX 4090, CUDA 12.x, Ubuntu
# Author: Dumont Talker Team
# Date: 2024-12-24
set -e
echo "=============================================="
echo " MuseTalk V1.5 Installation Script"
echo "=============================================="
# Variables
INSTALL_DIR="${INSTALL_DIR:-/workspace}"
MINICONDA_DIR="${MINICONDA_DIR:-/opt/miniconda}"
ENV_NAME="musetalk"
# Check if running as root or with sudo
if [ "$EUID" -ne 0 ]; then
echo "Please run as root or with sudo"
exit 1
fi
# Install system dependencies
echo ""
echo "=== Installing system dependencies ==="
apt-get update -qq
apt-get install -y -qq wget git ffmpeg espeak-ng libgl1-mesa-glx libglib2.0-0 > /dev/null
# Install Miniconda if not present
if [ ! -d "$MINICONDA_DIR" ]; then
echo ""
echo "=== Installing Miniconda ==="
wget -q -O /tmp/miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash /tmp/miniconda.sh -b -p "$MINICONDA_DIR"
rm /tmp/miniconda.sh
fi
# Source conda
source "$MINICONDA_DIR/bin/activate"
# Create conda environment
echo ""
echo "=== Creating conda environment: $ENV_NAME ==="
if conda env list | grep -q "^$ENV_NAME "; then
echo "Environment $ENV_NAME already exists, skipping creation"
else
conda create -n "$ENV_NAME" python=3.10 -y -q
fi
# Activate environment
conda activate "$ENV_NAME"
# Clone MuseTalk repository
echo ""
echo "=== Cloning MuseTalk repository ==="
cd "$INSTALL_DIR"
if [ -d "MuseTalk" ]; then
echo "MuseTalk directory already exists, pulling latest changes"
cd MuseTalk && git pull && cd ..
else
git clone --depth 1 https://github.com/TMElyralab/MuseTalk.git
fi
cd MuseTalk
# Install PyTorch with CUDA support
echo ""
echo "=== Installing PyTorch 2.1.0 with CUDA 12.1 ==="
pip install -q torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121
# Install OpenMMLab dependencies
echo ""
echo "=== Installing OpenMMLab dependencies ==="
pip install -q mmengine==0.10.4
pip install -q mmcv==2.1.0 -f https://download.openmmlab.com/mmcv/dist/cu121/torch2.1/index.html
pip install -q mmdet==3.3.0
pip install -q mmpose==1.3.1 --no-deps
# Install compatible versions of key dependencies
echo ""
echo "=== Installing compatible dependencies ==="
pip install -q 'numpy<2' 'numpy==1.26.4'
pip install -q 'transformers==4.42.0'
pip install -q 'diffusers==0.28.0'
pip install -q 'huggingface_hub==0.23.2'
pip install -q 'opencv-python==4.8.0.74'
# Install other requirements
echo ""
echo "=== Installing other requirements ==="
pip install -q omegaconf tqdm einops av librosa soundfile scikit-image
pip install -q ffmpeg-python accelerate safetensors
# Download models
echo ""
echo "=== Downloading models ==="
# Create model directories
mkdir -p models/dwpose models/sd-vae-ft-mse models/whisper
# Create symlink for sd-vae
ln -sf sd-vae-ft-mse models/sd-vae 2>/dev/null || true
# Download DWPose model
echo "Downloading DWPose model..."
if [ ! -f "models/dwpose/dw-ll_ucoco_384.pth" ]; then
wget -q --show-progress -O models/dwpose/dw-ll_ucoco_384.pth \
'https://huggingface.co/yzd-v/DWPose/resolve/main/dw-ll_ucoco_384.pth'
fi
# Download SD-VAE model
echo "Downloading SD-VAE model..."
if [ ! -f "models/sd-vae-ft-mse/config.json" ]; then
wget -q -O models/sd-vae-ft-mse/config.json \
'https://huggingface.co/stabilityai/sd-vae-ft-mse/resolve/main/config.json'
fi
if [ ! -f "models/sd-vae-ft-mse/diffusion_pytorch_model.bin" ]; then
wget -q --show-progress -O models/sd-vae-ft-mse/diffusion_pytorch_model.bin \
'https://huggingface.co/stabilityai/sd-vae-ft-mse/resolve/main/diffusion_pytorch_model.bin'
fi
# Download Whisper model from HuggingFace
echo "Downloading Whisper model..."
python3 -c "
from huggingface_hub import snapshot_download
snapshot_download(repo_id='openai/whisper-tiny', local_dir='models/whisper', local_dir_use_symlinks=False)
" 2>/dev/null
# Create config.json in musetalk folder
echo "Fixing config files..."
if [ -f "models/musetalk/musetalk.json" ] && [ ! -f "models/musetalk/config.json" ]; then
cp models/musetalk/musetalk.json models/musetalk/config.json
fi
# Download MuseTalk V1.5 weights if not present (using git lfs)
echo ""
echo "=== Downloading MuseTalk weights ==="
echo "Note: MuseTalk weights should be downloaded from HuggingFace:"
echo " https://huggingface.co/TMElyralab/MuseTalk"
echo ""
echo "If weights are not present, run:"
echo " cd $INSTALL_DIR/MuseTalk"
echo " git lfs install"
echo " git lfs pull"
# Verify installation
echo ""
echo "=== Verifying installation ==="
python3 -c "
import torch
print(f'PyTorch version: {torch.__version__}')
print(f'CUDA available: {torch.cuda.is_available()}')
if torch.cuda.is_available():
print(f'CUDA version: {torch.version.cuda}')
print(f'GPU: {torch.cuda.get_device_name(0)}')
"
echo ""
echo "=============================================="
echo " Installation Complete!"
echo "=============================================="
echo ""
echo "To run MuseTalk V1.5:"
echo " 1. Activate the environment:"
echo " source $MINICONDA_DIR/bin/activate $ENV_NAME"
echo ""
echo " 2. Go to MuseTalk directory:"
echo " cd $INSTALL_DIR/MuseTalk"
echo ""
echo " 3. Create inference config (configs/inference/test.yaml):"
echo " task_0:"
echo " video_path: \"data/video/your_avatar.mp4\""
echo " audio_path: \"path/to/your_audio.wav\""
echo ""
echo " 4. Run inference:"
echo " PYTHONPATH=. python3 scripts/inference.py --version v15 --inference_config configs/inference/test.yaml"
echo ""
echo "Output will be saved in ./results/v15/"
echo "=============================================="
|