Open-source speech-to-text built on Whisper that adds word-level timestamps via forced alignment and optional speaker diarization.
schibsted/WAAS
A self-hosted GUI and REST API for OpenAI Whisper speech-to-text, with a job queue, email or webhook callbacks, and SRT/VTT/text output.
- Stars
- 2,068
- Forks
- 114
- Open issues
- 39
- Last commit
- 7 days ago
What is it?
WaaS (Whisper as a Service) wraps OpenAI Whisper in a web GUI and an HTTP API so audio or video files can be transcribed without running the model by hand. Clients submit a file to the transcribe endpoint, which places the job on a Redis-backed queue processed by a separate worker. When a job finishes, the user is notified by email or by a signed webhook POST.
Results can be downloaded as JSON, SRT, WebVTT, plain text, or plain text with timecodes. The project also includes a browser-based editor that runs locally and lets users play individual segments and correct transcription errors before saving the result. Language detection and translation to English are available through the API.
The stack is Python with Flask for the API and RQ for the worker, deployed with docker-compose (redis, api, worker). A separate GPU Dockerfile enables NVIDIA CUDA acceleration. The smallest model, tiny, needs about 1GB of VRAM.
Key features
- 01Asynchronous transcription jobs processed by a Redis-backed queue and worker.
- 02Completion notifications via email or signed webhook callbacks.
- 03Export results as JSON, SRT, WebVTT, plain text, or timecoded text.
- 04Browser-based local editor for reviewing and correcting transcript segments.
- 05Language detection and transcribe-or-translate tasks through the API.
- 06docker-compose setup with optional NVIDIA CUDA support.
Use cases
- Transcribing recorded interviews or meetings on an internal server instead of a cloud service.
- Generating subtitle files (SRT or VTT) for video content in batches.
- Adding speech-to-text to an internal application through the HTTP API with webhook callbacks.
- Reviewing and correcting machine transcripts in the local browser editor.
Quick start
- 1
Create a Python virtual environment
python3 -mvenv .venv - 2
Activate the virtual environment
source .venv/bin/activate - 3
Install the Python requirements
pip install -r requirements.txt - 4
Create the .envrc file and allowed_webhooks.json as described in the README, then start all containers
docker-compose --env-file .envrc up
Things to know
- Needs a GPU with VRAM for larger Whisper models; the smallest model needs about 1GB.
- Requires Python 3.8-3.10 and a Redis instance, plus SMTP settings for email callbacks.
- Full setup via docker-compose requires configuring several environment variables and a webhook file.
In collections
Topics
FAQ
- What is WAAS?
- A self-hosted GUI and REST API for OpenAI Whisper speech-to-text, with a job queue, email or webhook callbacks, and SRT/VTT/text output. WaaS (Whisper as a Service) wraps OpenAI Whisper in a web GUI and an HTTP API so audio or video files can be transcribed without running the model by hand. Clients submit a file to the transcribe endpoint, which places the job on a Redis-backed queue processed by a separate worker. When a job finishes, the user is notified by email or by a signed webhook POST.
- Is WAAS free to use? What license does it have?
- WAAS is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is WAAS still maintained?
- Actively maintained. The last commit to WAAS was on Oct 30, 2026.
- What can I use WAAS for?
- Transcribing recorded interviews or meetings on an internal server instead of a cloud service. Generating subtitle files (SRT or VTT) for video content in batches. Adding speech-to-text to an internal application through the HTTP API with webhook callbacks. Reviewing and correcting machine transcripts in the local browser editor.
- How do I install WAAS?
- Create a Python virtual environment: python3 -mvenv .venv Activate the virtual environment: source .venv/bin/activate Install the Python requirements: pip install -r requirements.txt Create the .envrc file and allowed_webhooks.json as described in the README, then start all containers: docker-compose --env-file .envrc up
- Where can I get WAAS?
- The source code and installation instructions are on GitHub: https://github.com/schibsted/WAAS
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Desktop app that transcribes and translates audio and video offline on your computer, built on OpenAI's Whisper.
Desktop app that transcribes audio and video fully offline on your own device, using Whisper and other speech models.
Self-hosted tool that generates SRT or LRC subtitles from media files with OpenAI Whisper, integrated with Bazarr, Plex, Jellyfin, Emby and Tautulli.
CLI tool that transcribes local files or URLs with Whisper, supporting multiple backends and speaker-labeled output.
A Next.js web app that generates timed subtitles from uploaded videos or media links using Together AI's Whisper model.