Video files are heavy recording files, sometimes several hours long. Previously, recordings were naively submitted to the Whisper API without chunking, resulting in very large requests that could take a long time to process. Video files are much larger than audio-only files, which could cause performance issues during upload. Introduce an extra step to extract the audio component from MP4 files, producing a lighter audio-only file (to be confirmed). No re-encoding is done, just a minimal FFmpeg extraction based on community guidance, since I’m not an FFmpeg expert. This feature is experimental and may introduce regressions, especially if audio quality or sampling is impacted, which could reduce Whisper’s accuracy. Early tests with the ASR model worked, but it has not been tested on long recordings (e.g., 3-hour meetings), which some users have.
39 lines
913 B
Docker
39 lines
913 B
Docker
FROM python:3.13-slim AS base
|
|
|
|
|
|
# Install ffmpeg for audio/video processing (format conversion, extraction, compression)
|
|
# See summary/core/file_service.py for usage.
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends ffmpeg=7:7.1.3-* && \
|
|
apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
FROM base AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
COPY pyproject.toml .
|
|
|
|
RUN pip3 install --no-cache-dir .
|
|
|
|
FROM base AS development
|
|
WORKDIR /app
|
|
|
|
COPY . .
|
|
RUN pip3 install --no-cache-dir -e ".[dev]" || pip3 install --no-cache-dir -e .
|
|
|
|
CMD ["uvicorn", "summary.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
|
|
|
|
FROM base AS production
|
|
|
|
WORKDIR /app
|
|
|
|
# Un-privileged user running the application
|
|
ARG DOCKER_USER
|
|
USER ${DOCKER_USER}
|
|
|
|
COPY --from=builder /usr/local /usr/local
|
|
COPY ./summary /app/summary
|
|
|
|
CMD ["uvicorn", "summary.main:app", "--proxy-headers", "--host", "0.0.0.0", "--port", "8000"]
|