Whisper-asr-CPU

Whisper-asr-CPU

Docker app from hernandito's Repository

Overview

CPU-ONLY Whisper ASR Webservice (no NVIDIA GPU required). Same faster-whisper HTTP API with word-level timestamps, but transcription runs on the CPU + system RAM. It WORKS but is MUCH slower than GPU - expect roughly 5-15x longer (a 50-min episode can take well over an hour). This uses the SAME image as the GPU template on purpose, so WhisperX and the SubSyncarr multilingual patch are guaranteed compatible; it simply never requests a GPU and sets ASR_DEVICE=cpu. (The image carries CUDA libraries it won't use - it still runs fine on a GPU-less box. Advanced users can swap the Repository tag to onerahmet/openai-whisper-asr-webservice:latest for a smaller CPU image, but then verify the patch files still match.) NOTE: WhisperX word-alignment on CPU is extremely slow, so SubSyncarr skips or down-scopes alignment on CPU-only setups. Leave the two "SubSyncarr patch" mappings empty if you do not use SubSyncarr.

Release Docker Pulls Build Licence

Whisper ASR Box

Whisper ASR Box is a general-purpose speech recognition toolkit. Whisper Models are trained on a large dataset of diverse audio and is also a multitask model that can perform multilingual speech recognition as well as speech translation and language identification.

🎉 Join our Discord Community! Connect with other users, get help, and stay updated on the latest features: https://discord.gg/4Q5YVrePzZ

Features

Current release (v1.10.0) supports following whisper models:

Quick Usage

CPU

docker run -d -p 9000:9000 \
  -e ASR_MODEL=base \
  -e ASR_ENGINE=openai_whisper \
  onerahmet/openai-whisper-asr-webservice:latest

GPU

docker run -d --gpus all -p 9000:9000 \
  -e ASR_MODEL=base \
  -e ASR_ENGINE=openai_whisper \
  onerahmet/openai-whisper-asr-webservice:latest-gpu

Cache

To reduce container startup time by avoiding repeated downloads, you can persist the cache directory:

docker run -d -p 9000:9000 \
  -v $PWD/cache:/root/.cache/ \
  onerahmet/openai-whisper-asr-webservice:latest

Key Features

  • Multiple ASR engines support (OpenAI Whisper, Faster Whisper, WhisperX)
  • Multiple output formats (text, JSON, VTT, SRT, TSV)
  • Word-level timestamps support
  • Voice activity detection (VAD) filtering
  • Speaker diarization (with WhisperX)
  • FFmpeg integration for broad audio/video format support
  • GPU acceleration support
  • Configurable model loading/unloading
  • REST API with Swagger documentation

Environment Variables

Key configuration options:

  • ASR_ENGINE: Engine selection (openai_whisper, faster_whisper, whisperx)
  • ASR_MODEL: Model selection (tiny, base, small, medium, large-v3, etc.)
  • ASR_MODEL_PATH: Custom path to store/load models
  • ASR_DEVICE: Device selection (cuda, cpu)
  • MODEL_IDLE_TIMEOUT: Timeout for model unloading

Documentation

For complete documentation, visit: https://ahmetoner.github.io/whisper-asr-webservice

Development

# Install poetry v2.X
pip3 install poetry

# Install dependencies for cpu
poetry install --extras cpu

# Install dependencies for cuda
poetry install --extras cuda

# Run service
poetry run whisper-asr-webservice --host 0.0.0.0 --port 9000

After starting the service, visit http://localhost:9000 or http://0.0.0.0:9000 in your browser to access the Swagger UI documentation and try out the API endpoints.

Credits

  • This software uses libraries from the FFmpeg project under the LGPLv2.1

Requirements

No GPU and no Nvidia Driver plugin needed. Give it plenty of RAM (large-v3 int8 on CPU wants ~6-10 GB; the --memory cap in Extra Parameters is a safety ceiling - adjust to taste). First start downloads the model (large-v3 ~3 GB) to the Models path below. If you also run the GPU container, change this one's host PORT (e.g. 9001) so they don't collide.

Download Statistics

2,502,184
Total Downloads
228,951
This Month
133,040
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Details

Repository
onerahmet/openai-whisper-asr-webservice:latest-gpu
Last Updated2026-08-09
First Seen2023-04-26

Runtime arguments

Web UI
http://[IP]:[PORT:9000]/docs
Network
bridge
Shell
bash
Privileged
false
Extra Params
--memory=12g

Template configuration

WebUI / API PortPorttcp

HTTP API + Swagger docs (http://host:9000/docs). Change the host port if a GPU Whisper container already uses 9000.

Target
9000
Default
9000
Value
9000
ASR_ENGINEVariable

Use faster_whisper (supports SubSyncarr's multilingual=true). Do NOT set to whisperx.

Default
faster_whisper
Value
faster_whisper
ASR_MODELVariable

Model: tiny, base, small, medium, large-v3. On a weak CPU, 'medium' or 'small' trade accuracy for a big speed-up.

Default
large-v3
Value
large-v3
ASR_QUANTIZATIONVariable

int8 = smallest + fastest on CPU. (float32/float16 are slower and heavier on CPU.)

Default
int8
Value
int8
ASR_MODEL_PATHVariable

Where models are stored INSIDE the container. Must match the Models host-path mapping below.

Default
/data/whisper
Value
/data/whisper
ASR_DEVICEVariable

cpu = run entirely on the processor + RAM. No GPU is requested.

Default
cpu
Value
cpu
ModelsPathrw

Host folder that persists downloaded models. Keeps the model OUT of the docker image.

Target
/data/whisper
Default
/mnt/cache/appdata/whisper-asr
Value
/mnt/cache/appdata/whisper-asr
OMP_NUM_THREADSVariable

CPU threads used for transcription. Set near your core count for best speed.

Default
8
Value
8
MODEL_IDLE_TIMEOUTVariable

Seconds of inactivity before the model is unloaded from RAM (0 = keep loaded). Set e.g. 300 to free RAM between jobs at the cost of a reload delay.

Default
0
Value
0
SubSyncarr patch: webservice.pyPathro

SubSyncarr multilingual patch - bind-mounts the patched file over the image's copy. Survives image upgrades. Leave EMPTY if you do not use SubSyncarr.

Target
/app/app/webservice.py
Default
/mnt/user/appdata/subsync-build/wasr-multilingual-patch/webservice.py
Value
/mnt/user/appdata/subsync-build/wasr-multilingual-patch/webservice.py
SubSyncarr patch: faster_whisper_engine.pyPathro

SubSyncarr multilingual patch - bind-mounts the patched file over the image's copy. Survives image upgrades. Leave EMPTY if you do not use SubSyncarr.

Target
/app/app/asr_models/faster_whisper_engine.py
Default
/mnt/user/appdata/subsync-build/wasr-multilingual-patch/faster_whisper_engine.py
Value
/mnt/user/appdata/subsync-build/wasr-multilingual-patch/faster_whisper_engine.py