fix: add gcc/build-essential for webrtcvad, drop silero-vad pip install

resemblyzer depends on webrtcvad which compiles C extensions — gcc and
build-essential are required in slim containers. silero-vad pip package
has a broken native .so in python:3.12-slim; VAD model is now loaded at
runtime via torch.hub.load() which downloads on first use.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-28 13:17:32 -05:00
parent b087de8c85
commit 8aa42e6fcb
2 changed files with 10 additions and 6 deletions
+3 -1
View File
@@ -1,10 +1,12 @@
FROM python:3.12-slim FROM python:3.12-slim
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
libsndfile1 && rm -rf /var/lib/apt/lists/* libsndfile1 gcc build-essential && rm -rf /var/lib/apt/lists/*
WORKDIR /app WORKDIR /app
COPY pyproject.toml . COPY pyproject.toml .
# Install torch CPU-only, resemblyzer, and cron deps
# silero-vad pip package excluded — not needed in cron (no VAD processing)
RUN pip install --no-cache-dir torch --index-url https://download.pytorch.org/whl/cpu && \ RUN pip install --no-cache-dir torch --index-url https://download.pytorch.org/whl/cpu && \
pip install --no-cache-dir resemblyzer scipy numpy httpx pydantic-settings pip install --no-cache-dir resemblyzer scipy numpy httpx pydantic-settings
+7 -5
View File
@@ -1,20 +1,22 @@
FROM python:3.12-slim FROM python:3.12-slim
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
ffmpeg libsndfile1 && rm -rf /var/lib/apt/lists/* ffmpeg libsndfile1 gcc build-essential && rm -rf /var/lib/apt/lists/*
WORKDIR /app WORKDIR /app
COPY pyproject.toml . COPY pyproject.toml .
# Install torch CPU-only first (avoids pulling GPU variant), then rest of deps
# silero-vad pip package excluded — runtime uses torch.hub.load instead
RUN pip install --no-cache-dir torch --index-url https://download.pytorch.org/whl/cpu && \ RUN pip install --no-cache-dir torch --index-url https://download.pytorch.org/whl/cpu && \
pip install --no-cache-dir resemblyzer silero-vad scipy numpy && \ pip install --no-cache-dir resemblyzer scipy numpy && \
pip install --no-cache-dir fastapi uvicorn[standard] pydantic-settings httpx websockets livekit-api pip install --no-cache-dir fastapi uvicorn[standard] pydantic-settings httpx websockets livekit-api
COPY app/ app/ COPY app/ app/
# Pre-download VAD and resemblyzer models into the image # Pre-download resemblyzer model (VoiceEncoder downloads ~25MB pretrained weights)
RUN python -c "import torch; torch.hub.load('snakers4/silero-vad', 'silero_vad', trust_repo=True)" && \ RUN python -c "from resemblyzer import VoiceEncoder; VoiceEncoder()"
python -c "from resemblyzer import VoiceEncoder; VoiceEncoder()" # Note: silero-vad model downloads lazily at first container startup via torch.hub
ENV PYTHONUNBUFFERED=1 ENV PYTHONUNBUFFERED=1
CMD ["python", "-m", "uvicorn", "app.pipeline.main:app", "--host", "0.0.0.0", "--port", "8300"] CMD ["python", "-m", "uvicorn", "app.pipeline.main:app", "--host", "0.0.0.0", "--port", "8300"]