add: absorb soprano_to_rvc as regular subdirectory
Voice conversion pipeline (Soprano TTS → RVC) with Docker support. Previously tracked as bare gitlink; removed .git/ directories and absorbed into main repo for unified tracking. Includes: Soprano TTS, RVC WebUI integration, Docker configs, WebSocket API, and benchmark scripts. Updated .gitignore to exclude large model weights (*.pth, *.pt, *.onnx, *.index). 287 files (3.1GB of ML weights properly excluded via gitignore).
This commit is contained in:
91
soprano_to_rvc/Dockerfile.rvc
Normal file
91
soprano_to_rvc/Dockerfile.rvc
Normal file
@@ -0,0 +1,91 @@
|
||||
# Dockerfile.rvc - Multi-stage build for RVC API Server using host ROCm
|
||||
# Final image size target: <20GB (down from 85GB)
|
||||
# Python: 3.10.x | pip: 24.0 | PyTorch: 2.5.1+rocm6.2
|
||||
|
||||
# ============================================================
|
||||
# STAGE 1: BUILD - Install all dependencies and compile extensions
|
||||
# ============================================================
|
||||
FROM ubuntu:22.04 AS builder
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=UTC
|
||||
|
||||
# Install system dependencies and Python 3.10
|
||||
RUN apt-get update && apt-get install -y \
|
||||
python3.10 \
|
||||
python3.10-dev \
|
||||
python3-pip \
|
||||
git \
|
||||
wget \
|
||||
build-essential \
|
||||
libsndfile1-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Make python3.10 the default
|
||||
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1 && \
|
||||
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy requirements files
|
||||
COPY requirements-rvc.txt /app/
|
||||
|
||||
# Install pip and Python dependencies
|
||||
# Install PyTorch 2.5.1+rocm6.2 from official wheel (supports gfx1030/RX 6800)
|
||||
RUN pip install --no-cache-dir pip==24.0 && \
|
||||
pip install --no-cache-dir torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/rocm6.2 && \
|
||||
pip install --no-cache-dir -r requirements-rvc.txt && \
|
||||
pip uninstall -y apex || true && \
|
||||
pip install --no-cache-dir numpy==1.23.5 scipy==1.15.3 numba==0.56.4
|
||||
|
||||
# Copy RVC WebUI (models and code)
|
||||
COPY Retrieval-based-Voice-Conversion-WebUI/ /app/Retrieval-based-Voice-Conversion-WebUI/
|
||||
|
||||
# Copy application files
|
||||
COPY soprano_rvc_api.py /app/
|
||||
COPY soprano_rvc_config.json /app/
|
||||
COPY rvc_config.json /app/
|
||||
COPY rvc_torch_patch.py /app/
|
||||
|
||||
# ============================================================
|
||||
# STAGE 2: RUNTIME - Minimal runtime with only necessary files
|
||||
# ============================================================
|
||||
FROM ubuntu:22.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=UTC
|
||||
|
||||
# Install only runtime dependencies (no build tools)
|
||||
RUN apt-get update && apt-get install -y \
|
||||
python3.10 \
|
||||
python3-pip \
|
||||
libsndfile1 \
|
||||
ffmpeg \
|
||||
curl \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& apt-get clean
|
||||
|
||||
# Make python3.10 the default
|
||||
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1 && \
|
||||
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy installed Python packages from builder
|
||||
COPY --from=builder /usr/local/lib/python3.10 /usr/local/lib/python3.10
|
||||
|
||||
# Copy application and models
|
||||
COPY --from=builder /app /app
|
||||
|
||||
# Expose HTTP API port
|
||||
EXPOSE 8765
|
||||
|
||||
# Health check
|
||||
HEALTHCHECK --interval=30s --timeout=10s --start-period=120s --retries=3 \
|
||||
CMD curl -f http://localhost:8765/health || exit 1
|
||||
|
||||
# Environment variable for Soprano server connection
|
||||
ENV SOPRANO_SERVER=tcp://soprano:5555
|
||||
|
||||
# Run RVC API server
|
||||
CMD ["python", "soprano_rvc_api.py"]
|
||||
Reference in New Issue
Block a user