dumont-talker / scripts /install_musetalk.sh
marcosremar2's picture
feat: Add complete microservices architecture for speech-to-speech avatar system
e7d37f3
Raw
History Blame
5.75 kB
#!/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 "=============================================="