Spaces:
Sleeping
Sleeping
| # βββ TTS API β Hugging Face Spaces Dockerfile (GPU) βββββββββββββββββββββββββ | |
| # SDK: Docker | Port: 7860 | |
| # Uses standalone Piper binary (no Python piper-tts dependency issues) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 | |
| ENV DEBIAN_FRONTEND=noninteractive | |
| # System dependencies | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| python3 \ | |
| python3-pip \ | |
| python3-dev \ | |
| wget \ | |
| && ln -s /usr/bin/python3 /usr/bin/python \ | |
| && rm -rf /var/lib/apt/lists/* | |
| WORKDIR /app | |
| # Install Python dependencies (only FastAPI β no piper-tts needed) | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # Download Piper standalone binary (Linux AMD64) | |
| # This bundles onnxruntime, espeak-ng, piper_phonemize β zero Python conflicts | |
| RUN wget -q -O piper_linux.tar.gz \ | |
| "https://github.com/rhasspy/piper/releases/download/2023.11.14-2/piper_linux_x86_64.tar.gz" && \ | |
| tar -xzf piper_linux.tar.gz && \ | |
| rm piper_linux.tar.gz && \ | |
| chmod +x /app/piper/piper && \ | |
| echo "Piper binary installed successfully." | |
| # Download voice models | |
| RUN mkdir -p /app/models && \ | |
| # English Male β Lessac | |
| wget -q -O /app/models/en_US-lessac-medium.onnx \ | |
| "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/medium/en_US-lessac-medium.onnx" && \ | |
| wget -q -O /app/models/en_US-lessac-medium.onnx.json \ | |
| "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/lessac/medium/en_US-lessac-medium.onnx.json" && \ | |
| # English Female β Amy | |
| wget -q -O /app/models/en_US-amy-medium.onnx \ | |
| "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/amy/medium/en_US-amy-medium.onnx" && \ | |
| wget -q -O /app/models/en_US-amy-medium.onnx.json \ | |
| "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/amy/medium/en_US-amy-medium.onnx.json" && \ | |
| # Arabic Male β Kareem | |
| wget -q -O /app/models/ar_JO-kareem-low.onnx \ | |
| "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ar/ar_JO/kareem/low/ar_JO-kareem-low.onnx" && \ | |
| wget -q -O /app/models/ar_JO-kareem-low.onnx.json \ | |
| "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/ar/ar_JO/kareem/low/ar_JO-kareem-low.onnx.json" && \ | |
| echo "All models downloaded successfully." | |
| # Copy application code | |
| COPY main.py . | |
| # Environment variables | |
| ENV MODELS_DIR=/app/models | |
| ENV PIPER_BIN=/app/piper/piper | |
| ENV PYTHONUNBUFFERED=1 | |
| # Expose HF Spaces port | |
| EXPOSE 7860 | |
| CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860", "--workers", "1"] | |