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 \ && 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=/models/huggingface ENV TRANSFORMERS_CACHE=/models/huggingface ENV HUGGINGFACE_HUB_CACHE=/models/huggingface ENV HF_HUB_CACHE=/models/huggingface ENV HOME=/tmp RUN mkdir -p /models/huggingface && \ mkdir -p /code/models && \ chmod -R 777 /models/huggingface && \ 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 python - <<'PY' import os from huggingface_hub import snapshot_download token = os.environ.get('HF_TOKEN') repos = [ 'NCAIR1/Hausa-ASR', 'NCAIR1/Yoruba-ASR', 'NCAIR1/Igbo-ASR', 'NCAIR1/NigerianAccentedEnglish', ] for repo in repos: try: print(f'Pre-downloading {repo}...') snapshot_download(repo_id=repo, token=token, local_dir=None) except Exception as e: print(f'Warning: failed to pre-download {repo}: {e}') PY 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"]