# 使用官方 PyTorch FROM pytorch/pytorch:2.3.1-cuda11.8-cudnn8-runtime # 切换到 root 用户以安装系统依赖 USER root # 设置环境变量 ENV PYTHONUNBUFFERED=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 \ PIP_PREFER_BINARY=1 \ NUMBA_CACHE_DIR=/tmp/numba_cache # 设置工作目录 WORKDIR /app # 安装系统依赖 # --- 在这里添加了 wget --- RUN apt-get update && \ apt-get install -y --no-install-recommends \ wget ffmpeg libsox-dev git \ build-essential cmake ninja-build pkg-config && \ rm -rf /var/lib/apt/lists/* && \ mkdir -p /tmp/numba_cache && chmod -R 777 /tmp/numba_cache # [双重 RUN mkdir -p /nltk_data && chmod 777 /nltk_data # 克隆 GPT-SoVITS 仓库 RUN git clone --depth 1 https://github.com/RVC-Boss/GPT-SoVITS.git /app # 安装 Python 依赖 RUN pip install --upgrade pip && \ pip install --no-cache-dir -r /app/requirements.txt && \ pip install --no-cache-dir --force-reinstall numpy==1.23.5 librosa==0.9.2 numba==0.56.4 && \ pip install --no-cache-dir fastapi uvicorn soundfile huggingface_hub ffmpeg-python # [双重保障-步骤2 / 关键修复] # 在构建镜像时,预先下载好 NLTK 所需的所有数据包,包括新发现的 "averaged_perceptron_tagger_eng" RUN python -c "import nltk; nltk.download('punkt', quiet=True, download_dir='/nltk_data'); nltk.download('averaged_perceptron_tagger', quiet=True, download_dir='/nltk_data'); nltk.download('averaged_perceptron_tagger_eng', quiet=True, download_dir='/nltk_data')" # 预下载依赖模型 COPY download_support_models.py /app/download_support_models.py RUN python /app/download_support_models.py || true # --- START OF ADDED SECTION --- # --- 从 Hugging Face Spaces 下载您自己的模型权重 --- # 1. 定义权重文件的 URL ARG GPT_URL="https://huggingface.co/spaces/snsbhg/1111/resolve/main/weights/shantianliang_proplus_e32.ckpt" ARG SOVITS_URL="https://huggingface.co/spaces/snsbhg/1111/resolve/main/weights/shantianliang_proplus_e8_s192.pth" # 2. 创建目标目录 (您原来的Dockerfile中已经有COPY指令隐式创建了父目录,这里确保一下) RUN mkdir -p /app/pretrained_models/shantianliang # 3. 下载文件到指定目录 RUN echo "--- Downloading model weights ---" && \ wget -nv "$GPT_URL" -O /app/pretrained_models/shantianliang/shantianliang_proplus_e32.ckpt && \ wget -nv "$SOVITS_URL" -O /app/pretrained_models/shantianliang/shantianliang_proplus_e8_s192.pth && \ echo "--- Model weights downloaded successfully ---" # --- END OF ADDED SECTION --- # 复制您自己的权重文件和参考音频 # --- 将原来的 COPY weights 指令注释掉或删除 --- # COPY weights/ /app/pretrained_models/shantianliang/ COPY reference_audio/ /app/reference_audio/ # 更改 /app 目录所有权,赋予运行时? RUN chown -R 1000:1000 /app # 暴露 API 端口 EXPOSE 7860 # 容器启动命令 CMD ["python", "api_v2.py", "-a", "0.0.0.0", "-p", "7860", "-c", "GPT_SoVITS/configs/tts_infer.yaml"]