Speech-to-text using whisper.cpp via pywhispercpp. CPU-only, no PyTorch — ideal for low-resource hosts (Intel N100 mini-PCs, ARM boards) where a full transformers stack is too heavy.
For local development:
uv sync --extra whispercppFor Docker, no extra setup is needed — plugins referenced in models.yaml are loaded automatically from pre-built wheels via Ray's runtime_env.
models:
- name: whisper
model: base.en
usecase: transcription
loader: custom
plugin: whispercpp
num_gpus: 0
num_cpus: 1
plugin_config:
n_threads: 2| Option | Type | Default | Description |
|---|---|---|---|
models_dir |
string | <plugins_dir>/whispercpp |
Directory to store/load ggml model files |
n_threads |
int | pywhispercpp default | CPU threads for inference |
Models are specified by their whisper.cpp short name and downloaded automatically on first use. Pick the smallest model that meets your accuracy needs:
| Model | Size | Notes |
|---|---|---|
tiny.en / tiny |
~75 MB | Fastest, lowest accuracy |
base.en / base |
~150 MB | Recommended for English on a mini-PC |
small.en / small |
~500 MB | Better accuracy, ~2× slower than base |
medium.en / medium |
~1.5 GB | High accuracy, significant CPU load |
large-v3 |
~3 GB | Best accuracy, not recommended for CPU-only boxes |
.en variants are English-only and noticeably faster. Drop the suffix for multilingual support.
curl http://localhost:8000/v1/audio/transcriptions \
-H "Content-Type: multipart/form-data" \
-F file=@audio.wav \
-F model=whisperAlso supports /v1/audio/translations — sets translate: true to produce English output from non-English audio.