mirror of
https://github.com/bellingcat/whisperbox-transcribe.git
synced 2026-06-08 03:28:35 +03:00
feat: allow multiple models to be installed in docker container
This commit is contained in:
@@ -5,7 +5,7 @@ x-app-variables: &app-variables
|
||||
DATABASE_URI: sqlite:///./whisperbox.sqlite
|
||||
ENVIRONMENT: development
|
||||
BROKER_URL: redis://redis:6379/0
|
||||
WHISPER_MODEL: small
|
||||
WHISPER_MODELS: small
|
||||
|
||||
services:
|
||||
redis:
|
||||
@@ -41,7 +41,7 @@ services:
|
||||
context: ../../
|
||||
dockerfile: docker/dev/worker.Dockerfile
|
||||
args:
|
||||
WHISPER_MODEL: small
|
||||
WHISPER_MODELS: small
|
||||
container_name: whisperbox_worker_dev
|
||||
volumes:
|
||||
- ../../:/code
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
FROM python:3.10
|
||||
|
||||
ARG WHISPER_MODEL
|
||||
ARG WHISPER_MODELS
|
||||
|
||||
WORKDIR /code
|
||||
|
||||
@@ -13,7 +13,7 @@ COPY --from=mwader/static-ffmpeg:5.1.2 /ffprobe /usr/local/bin/
|
||||
COPY pyproject.toml .
|
||||
RUN pip install --no-cache-dir --user .[worker,worker_dev]
|
||||
|
||||
COPY scripts/download_model.py .
|
||||
RUN chmod +x download_model.py && python download_model.py ${WHISPER_MODEL}
|
||||
COPY scripts/download_models.py .
|
||||
RUN python download_models.py ${WHISPER_MODELS}
|
||||
|
||||
ENTRYPOINT ["watchmedo", "auto-restart", "-d" , "app/worker", "-p", "*.py", "--recursive", "celery", "--", "--app=app.worker.main.celery", "worker", "--loglevel=info", "--concurrency=1"]
|
||||
CMD watchmedo auto-restart -d app/worker -p *.py --recursive celery -- --app=app.worker.main.celery worker --loglevel=info --concurrency=1
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
API_SECRET="change_me"
|
||||
WHISPER_MODEL="small"
|
||||
WHISPER_MODELS="small"
|
||||
|
||||
@@ -10,7 +10,7 @@ RUN python -m venv /opt/venv && \
|
||||
|
||||
FROM python:3.10 as python-deploy
|
||||
|
||||
ARG WHISPER_MODEL
|
||||
ARG WHISPER_MODELS
|
||||
|
||||
WORKDIR /etc/whisperbox
|
||||
|
||||
@@ -24,7 +24,7 @@ COPY app ./app
|
||||
ENV VIRTUAL_ENV /opt/venv
|
||||
ENV PATH /opt/venv/bin:$PATH
|
||||
|
||||
COPY scripts/download_model.py .
|
||||
RUN chmod +x download_model.py && python download_model.py ${WHISPER_MODEL:-small}
|
||||
COPY scripts/download_models.py .
|
||||
RUN python download_models.py ${WHISPER_MODELS}
|
||||
|
||||
CMD celery --app=app.worker.main.celery worker --loglevel=info --concurrency=1
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
import sys
|
||||
from whisper import _download, _MODELS # type: ignore
|
||||
|
||||
if __name__ == "__main__":
|
||||
model_name = sys.argv[1]
|
||||
_download(_MODELS[model_name], "/models/", False)
|
||||
if model_name != "large":
|
||||
_download(_MODELS[f"{model_name}.en"], "/models/", False)
|
||||
8
scripts/download_models.py
Normal file
8
scripts/download_models.py
Normal file
@@ -0,0 +1,8 @@
|
||||
import os
|
||||
from whisper import _download, _MODELS # type: ignore
|
||||
|
||||
if __name__ == "__main__":
|
||||
for name in os.environ["WHISPER_MODELS"].split(","):
|
||||
_download(_MODELS[name], "/models/", False)
|
||||
if name != "large":
|
||||
_download(_MODELS[f"{name}.en"], "/models/", False)
|
||||
Reference in New Issue
Block a user