voice-isolation-live / docs /step-4-deployment.md
TonyLikeDev's picture
initial commit
0f623ae
|
Raw
History Blame Contribute Delete
2.9 kB
# Step 4 β€” Deploy to Hugging Face Spaces
**Status: TODO**
## Goal
Get the full app live on a free public URL so anyone can upload audio and use it from their browser.
---
## What you need
- Free account at [huggingface.co](https://huggingface.co)
- Git installed
- The full project working locally (Steps 1–3 done)
---
## How to deploy
### 1. Create a new Space on Hugging Face
1. Go to huggingface.co β†’ New Space
2. Name it (e.g. `voice-isolation-live`)
3. Select **Docker** as the SDK
4. Set visibility to **Public**
### 2. Create a `Dockerfile` in the project root
```dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY backend/ ./backend/
COPY frontend/ ./frontend/
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
RUN mkdir -p backend/uploads separated
EXPOSE 7860
CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "7860"]
```
### 3. Create `requirements.txt`
```
fastapi
uvicorn
python-multipart
demucs
torchcodec
torch
torchaudio
```
### 4. Serve the frontend from FastAPI
Hugging Face Spaces only exposes one port, so FastAPI needs to serve the HTML files too. Add this to `backend/main.py`:
```python
from fastapi.staticfiles import StaticFiles
app.mount("/", StaticFiles(directory="frontend", html=True), name="frontend")
```
Also install:
```bash
pip install aiofiles
```
Add `aiofiles` to `requirements.txt` too.
### 5. Update the frontend API URL
In `frontend/app.js`, change `localhost:8000` to a relative path since frontend and backend are now on the same server:
```javascript
// Before
const response = await fetch('http://localhost:8000/upload', ...
// After
const response = await fetch('/upload', ...
```
And for the cleaned audio player:
```javascript
// Before
cleanedPlayer.src = `http://localhost:8000${data.download_url}`;
// After
cleanedPlayer.src = data.download_url;
```
### 6. Push to Hugging Face
```bash
git init
git add .
git commit -m "initial commit"
git remote add space https://huggingface.co/spaces/<your-username>/voice-isolation-live
git push space main
```
Hugging Face will build the Docker image and deploy automatically. Takes 3–5 minutes on first build.
---
## Verify it's live
1. Go to `https://huggingface.co/spaces/<your-username>/voice-isolation-live`
2. Upload an audio file
3. Wait for processing
4. Check both audio players work
---
## Notes
- Hugging Face free tier has **16GB RAM, 2 CPU cores** β€” enough for Demucs
- No persistent storage on free tier β€” uploaded files are lost on restart (fine for a demo)
- Cold start (first request after idle) can be slow β€” the Space sleeps after 48h of inactivity
- If the build fails, check the **Logs** tab on your Space page for the Docker error
- Model weights (~640MB) get downloaded on first run inside the container β€” add a `RUN` step in the Dockerfile to pre-download them if startup speed matters