multi_voice_system / Dockerfile
nexusbert's picture
push all
22c7ca5
FROM python:3.10-slim
ENV DEBIAN_FRONTEND=noninteractive \
PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
PIP_NO_CACHE_DIR=1 \
TOKENIZERS_PARALLELISM=false
WORKDIR /code
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
git \
curl \
wget \
libsndfile1 \
libportaudio2 \
libopenblas-dev \
libomp-dev \
ffmpeg \
libavcodec-extra \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
RUN pip install --no-cache-dir huggingface-hub accelerate
ARG HF_TOKEN=
ENV HUGGINGFACE_HUB_TOKEN=${HF_TOKEN}
ENV HF_TOKEN=${HF_TOKEN}
RUN pip install --no-cache-dir outetts uroman gdown
ENV HF_HOME=/tmp/huggingface
ENV TRANSFORMERS_CACHE=/tmp/huggingface
ENV HUGGINGFACE_HUB_CACHE=/tmp/huggingface
ENV HF_HUB_CACHE=/tmp/huggingface
ENV HOME=/tmp
RUN mkdir -p /tmp/huggingface && chmod -R 777 /tmp/huggingface && \
mkdir -p /code/models && \
chmod -R 777 /code && \
chmod -R 777 /code/models
RUN if [ -n "$HF_TOKEN" ]; then \
python -c "from huggingface_hub import login; import os; t=os.environ.get('HF_TOKEN');\nprint('Token present' if t else 'No token');\nlogin(token=t, add_to_git_credential=True)" && \
echo '✅ Hugging Face login complete'; \
else \
echo '⚠️ Hugging Face login skipped'; \
fi
RUN mkdir -p /code/models && \
wget -q -O /code/models/wavtokenizer_mediumdata_frame75_3s_nq1_code4096_dim512_kmeans200_attn.yaml \
https://huggingface.co/novateur/WavTokenizer-medium-speech-75token/resolve/main/wavtokenizer_mediumdata_frame75_3s_nq1_code4096_dim512_kmeans200_attn.yaml || true
COPY . .
RUN if [ -d "/code/yarngpt" ] && [ -f "/code/yarngpt/audiotokenizer.py" ]; then \
echo "Using vendored yarngpt from project"; \
else \
pip install --no-cache-dir git+https://github.com/saheedniyi02/yarngpt.git; \
fi
EXPOSE 7860
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860", "--lifespan", "off"]