Skip to content

Instantly share code, notes, and snippets.

@xenogenesi
Last active February 19, 2025 16:13
Show Gist options
  • Save xenogenesi/e62d3d13dadbc164124c830e9c453668 to your computer and use it in GitHub Desktop.
Save xenogenesi/e62d3d13dadbc164124c830e9c453668 to your computer and use it in GitHub Desktop.
Docker file for Wav2Lip
# Ignore everything
**
# Allow files and directories
!/audio.py
!/Dockerfile
!/hparams.py
!/preprocess.py
!/checkpoints/
!/evaluation/
!/hq_wav2lip_train.py
!/README.md
!/temp/
!/color_syncnet_train.py
!/face_detection/
!/inference.py
!/requirements.txt
!/filelists/
!/models/
!/results/
!/wav2lip_train.py
# Ignore unnecessary files inside allowed directories
# This should go after the allowed directories
**/*~
**/*.log
**/.DS_Store
**/Thumbs.db
# 1. install a version of docker with gpu support (docker-ce >= 19.03)
# 2. enter the project directory and build the wav2lip image:
# docker build -t wav2lip .
# 3. allow root user to connect to the display
# xhost +local:root
# 4. instantiate the container
# docker run --rm --gpus all -v /tmp/.X11-unix:/tmp/.X11-unix -v $PWD:/workspace/src -e DISPLAY=$DISPLAY --device /dev/dri -ti wav2lip bash
# NOTES:
# export CUDA_VISIBLE_DEVICES="" ## force cpu only
# Based on https://github.com/1adrianb/face-alignment/blob/master/Dockerfile
FROM nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04
RUN export DEBIAN_FRONTEND=noninteractive RUNLEVEL=1 ; \
apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake git curl ca-certificates \
vim \
python3-pip python3-dev python3-wheel \
libglib2.0-0 libxrender1 python3-soundfile \
ffmpeg && \
rm -rf /var/lib/apt/lists/* && \
pip3 install --upgrade setuptools
# RUN curl -o ~/miniconda.sh -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
# chmod +x ~/miniconda.sh && \
# ~/miniconda.sh -b -p /opt/conda && \
# rm ~/miniconda.sh
# ENV PATH /opt/conda/bin:$PATH
# RUN conda config --set always_yes yes --set changeps1 no && conda update -q conda
# RUN conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
# # Install Wav2Lip package
# # NOTE we use the git clone to install the requirements only once
# # (if we use COPY it will invalidate the cache and reinstall the dependencies for every change in the sources)
WORKDIR /workspace
RUN chmod -R a+w /workspace
RUN git clone https://github.com/Rudrabha/Wav2Lip
WORKDIR /workspace/Wav2Lip
RUN pip3 install -r requirements.txt
RUN mkdir -p /root/.cache/torch/checkpoints && \
curl -SL -o /root/.cache/torch/checkpoints/s3fd-619a316812.pth "https://www.adrianbulat.com/downloads/python-fan/s3fd-619a316812.pth"
# !!! NOTE !!! nvidia-driver version must match the version installed on the host(/docker server)
RUN export DEBIAN_FRONTEND=noninteractive RUNLEVEL=1 ; \
apt-get update && apt-get install -y --no-install-recommends \
nvidia-driver-450 mesa-utils && \
rm -rf /var/lib/apt/lists/*
# create the working directory, to be mounted with the bind option
RUN mkdir /workspace/src
WORKDIR /workspace/src
@vido89
Copy link

vido89 commented Feb 19, 2025

@xenogenesi Aha OK

# but apparently opencv-contrib-python isn't even used, try remove it from requirements.txt and skip next step

So should I run pip install -r requirements.txt ?

@xenogenesi
Copy link
Author

xenogenesi commented Feb 19, 2025

# but apparently opencv-contrib-python isn't even used, try remove it from requirements.txt and skip next step

So should I run pip install -r requirements.txt ?

I would make a try, edit requirements.txt and remove opencv-contrib-python and then run pip install -r requirements.txt, then skip my step that remove all opencv stuff and reinstall only the one package. But if that doesn't work keep the requirements as it were and follow all the steps.

Note: I just encoded one video and I had no problems, but I don't know if using different models or training Wav2Lip are gonna break because opencv-contrib-python is missing.

edit: I removed opencv-contrib-python because there was some version conflict with the opencv package, if you can pip install the requirements without errors.. even better.

@vido89
Copy link

vido89 commented Feb 19, 2025

@xenogenesi I installed cuda but I got this error
RuntimeError: Image too big to run face detection on GPU
how do I force it to run on CPU ?

@xenogenesi
Copy link
Author

@xenogenesi I installed cuda but I got this error RuntimeError: Image too big to run face detection on GPU how do I force it to run on CPU ?

Don't know, look in the Wav2Lip repository (the closed issues also), perhaps some env variable. I guess using the cpu will be very slow, and I think I saw somewhere on Wav2Lip repo that it is trained on small sizes.

@vido89
Copy link

vido89 commented Feb 19, 2025

@xenogenesi

It works, I cant believe this ! You are the men! Thank you @xenogenesi

Edit: is it due to ffmpeg to getting "pixelated" video ?

@xenogenesi
Copy link
Author

@vido89 Cool, I'm glad you made it work, sorry but I can't tell you why it's pixelated, I've only used it briefly

@vido89
Copy link

vido89 commented Feb 19, 2025

@xenogenesi OK Thank you once again !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment