|
|
|
|
|
|
|
|
FROM python:3.10-slim |
|
|
|
|
|
|
|
|
LABEL maintainer="opq007" |
|
|
LABEL description="VD - 视频处理服务" |
|
|
LABEL version="3.0.0" |
|
|
|
|
|
|
|
|
WORKDIR /app |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENV PYTHONUNBUFFERED=1 \ |
|
|
DEBIAN_FRONTEND=noninteractive \ |
|
|
PYTHONDONTWRITEBYTECODE=1 \ |
|
|
PIP_NO_CACHE_DIR=1 \ |
|
|
PIP_DISABLE_PIP_VERSION_CHECK=1 \ |
|
|
PORT=7860 \ |
|
|
HOST=0.0.0.0 \ |
|
|
ENABLE_GRADIO_UI=true \ |
|
|
FW_MODEL=small \ |
|
|
FW_DEVICE=cpu \ |
|
|
FW_COMPUTE=int8 \ |
|
|
VOX_ONNX_DEVICE=cpu \ |
|
|
VOX_ONNX_OPTIMIZE=1 \ |
|
|
VOX_ONNX_DTYPE=fp32 \ |
|
|
LOG_LEVEL=INFO \ |
|
|
MODELSCOPE_CACHE=/app/models/modelscope_cache |
|
|
|
|
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \ |
|
|
ffmpeg \ |
|
|
aria2 \ |
|
|
p7zip-full \ |
|
|
git \ |
|
|
curl \ |
|
|
ca-certificates \ |
|
|
&& rm -rf /var/lib/apt/lists/* \ |
|
|
&& apt-get clean |
|
|
|
|
|
|
|
|
ARG REPO_URL=https://github.com/opq007/vd.git |
|
|
ARG REPO_BRANCH=main |
|
|
|
|
|
|
|
|
RUN pip install --no-cache-dir --upgrade pip setuptools wheel && \ |
|
|
pip install --no-cache-dir --default-timeout=100 \ |
|
|
"faster-whisper" \ |
|
|
"fastapi" \ |
|
|
"uvicorn[standard]" \ |
|
|
"python-multipart" \ |
|
|
"aiofiles" \ |
|
|
"PyJWT" \ |
|
|
"gradio" \ |
|
|
"requests" && \ |
|
|
pip install --no-cache-dir --default-timeout=100 \ |
|
|
"playwright>=1.40.0" \ |
|
|
"opencv-python-headless" \ |
|
|
"numpy" \ |
|
|
"torch" \ |
|
|
"Pillow>=10.0.0" \ |
|
|
"soundfile" \ |
|
|
"transformers>=4.30.0" \ |
|
|
"onnxruntime" \ |
|
|
"modelscope" && \ |
|
|
pip install --no-cache-dir --default-timeout=100 \ |
|
|
"sentencepiece" \ |
|
|
"protobuf" \ |
|
|
"accelerate" \ |
|
|
"einops" \ |
|
|
"omegaconf" \ |
|
|
"scipy" \ |
|
|
"librosa" |
|
|
|
|
|
|
|
|
RUN echo "Cloning project from ${REPO_URL} (branch: ${REPO_BRANCH})..." && \ |
|
|
git clone --depth 1 --branch ${REPO_BRANCH} ${REPO_URL} /tmp/vd && \ |
|
|
cp -r /tmp/vd/* . && \ |
|
|
cp -r /tmp/vd/.* . 2>/dev/null || true && \ |
|
|
rm -rf /tmp/vd && \ |
|
|
echo "Project cloned successfully" |
|
|
|
|
|
|
|
|
RUN mkdir -p models uploads output debug logs && \ |
|
|
chmod -R 755 models uploads output debug logs |
|
|
|
|
|
|
|
|
|
|
|
RUN echo "Downloading RMBG-1.4 model..." && \ |
|
|
aria2c -x 16 -s 16 --max-tries=5 --retry-wait=5 \ |
|
|
-d models/ -o rmbg-1.4.onnx \ |
|
|
https://modelscope.cn/models/AI-ModelScope/RMBG-1.4/resolve/master/onnx/model.onnx || \ |
|
|
(echo "RMBG-1.4 download failed, retrying..." && \ |
|
|
aria2c -x 16 -s 16 --max-tries=10 --retry-wait=10 \ |
|
|
-d models/ -o rmbg-1.4.onnx \ |
|
|
https://modelscope.cn/models/AI-ModelScope/RMBG-1.4/resolve/master/onnx/model.onnx) |
|
|
|
|
|
|
|
|
RUN echo "Downloading faster-whisper-small model..." && \ |
|
|
modelscope download --model angelala00/faster-whisper-small --local_dir ./models/small --revision master || \ |
|
|
(echo "faster-whisper download failed, retrying..." && \ |
|
|
modelscope download --model angelala00/faster-whisper-small --local_dir ./models/small --revision master) |
|
|
|
|
|
|
|
|
RUN echo "Downloading VoxCPM ONNX model..." && \ |
|
|
aria2c -x 16 -s 16 --max-tries=5 --retry-wait=5 \ |
|
|
-d models/ -o onnx_models_v15.zip \ |
|
|
https://modelscope.cn/models/opqtest007/vox/resolve/master/onnx_models_v15.zip.ckpt || \ |
|
|
(echo "VoxCPM download failed, retrying..." && \ |
|
|
aria2c -x 16 -s 16 --max-tries=10 --retry-wait=10 \ |
|
|
-d models/ -o onnx_models_v15.zip \ |
|
|
https://modelscope.cn/models/opqtest007/vox/resolve/master/onnx_models_v15.zip.ckpt) && \ |
|
|
cd models/ && \ |
|
|
7z x onnx_models_v15.zip -p -y && \ |
|
|
rm onnx_models_v15.zip && \ |
|
|
cd .. |
|
|
|
|
|
|
|
|
RUN echo "Downloading VoxCPM reference database..." && \ |
|
|
aria2c -x 16 -s 16 --max-tries=5 --retry-wait=5 \ |
|
|
-d models/ -o voxcpm_ref.db \ |
|
|
https://modelscope.cn/models/opqtest007/vox/resolve/master/voxcpm_ref.db || \ |
|
|
(echo "VoxCPM reference database download failed, retrying..." && \ |
|
|
aria2c -x 16 -s 16 --max-tries=10 --retry-wait=10 \ |
|
|
-d models/ -o voxcpm_ref.db \ |
|
|
https://modelscope.cn/models/opqtest007/vox/resolve/master/voxcpm_ref.db) |
|
|
|
|
|
|
|
|
RUN echo "Verifying model files..." && \ |
|
|
ls -lh models/ && \ |
|
|
ls -lh models/small/ 2>/dev/null || echo "small model not found" && \ |
|
|
ls -lh models/onnx_models_v15/ 2>/dev/null || echo "onnx_models_v15 not found" && \ |
|
|
ls -lh models/voxcpm_ref.db 2>/dev/null || echo "voxcpm_ref.db not found" |
|
|
|
|
|
|
|
|
RUN rm -rf /tmp/* /root/.cache/pip /root/.local/share/pip |
|
|
|
|
|
|
|
|
EXPOSE 7860 |
|
|
|
|
|
|
|
|
RUN useradd -m -u 1000 appuser && \ |
|
|
chown -R appuser:appuser /app |
|
|
|
|
|
|
|
|
USER appuser |
|
|
|
|
|
|
|
|
|
|
|
CMD ["uvicorn", "app:app", \ |
|
|
"--host", "0.0.0.0", \ |
|
|
"--port", "7860", \ |
|
|
"--workers", "1", \ |
|
|
"--log-level", "info", \ |
|
|
"--access-log", \ |
|
|
"--no-use-colors", \ |
|
|
"--timeout-keep-alive", "300"] |