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 "=============================================="