Not every pipeline needs a large stack. On a simple VPS, the challenge is loading the model once, limiting file size, exposing healthcheck and keeping deployment predictable.
transcricao
A FastAPI API for audio/video upload, transcription with faster-whisper and Docker Compose deployment with Traefik labels.
Technical reading
Quick case read
The API initializes the model on startup, receives files through `/transcribe`, defaults to `int8` on CPU and exposes `/health` with model, device and compute type.
FastAPI · faster-whisper · CTranslate2 · Docker
Open-source
Architecture
Fewer services, direct path to transcription
Deliberately lean project: request comes in, local engine processes and the API responds. The focus is CPU-only and simple deploy.
Technical flow
- Input
- Processing
- Storage
- Output
Step-by-step flow
Diagram source (Mermaid)
flowchart LR
file["Audio/video"]
api["FastAPI"]
model["Loaded model"]
engine["faster-whisper/CTranslate2"]
json["JSON/transcription"]
deploy["Docker/Traefik/Portainer"]
file --> api
api --> model
model --> engine
engine --> json
json --> deployStack and responsibilities
- FastAPI
Receives upload, validates parameters and returns the transcription.
- faster-whisper
Local transcription engine.
- CTranslate2
Optimized CPU execution.
- Docker Compose
Local/Portainer deploy with environment variables.
- Traefik
Routing labels in Swarm/Portainer environments.
Technical decisions
- CPU-first
Default config uses CPU device and int8 compute type for simple VPSs.
- Model loaded once
Avoids startup cost on every request.
Operations
- documentedHealthcheck
`/health` returns status, model, device and compute type.
- documentedEnvironment variables
PORT, WHISPER_MODEL, language, file limit, CPU threads.
- not publicPersistence
README does not document a database; response is direct through the API.
Status and next steps
- Add a queue if usage requires controlled concurrency.
- Document production limits by file size/duration.
Contact
Want something similar for your process?
If there is repeated input, a manual step and an expected output, there is probably a system to design.