Overview
WhisperLiveKit (WLK) is a self-hosted speech-to-text pipeline built for live audio rather than finished recordings. Running Whisper on short chunks of a stream loses context and cuts words mid-syllable, because the model was trained on complete utterances; WLK instead applies simultaneous-speech research — LocalAgreement from WhisperStreaming and the AlignAtt policy from Simul-Whisper/SimulStreaming — to buffer intelligently and commit text incrementally as the speaker talks.
The project ships as a server plus a bundled web UI. One backend serves multiple concurrent users, voice-activity detection keeps it idle when nobody is speaking, and each WebSocket session can set its own language, translation target and terminology hints. On top of transcription it does streaming speaker diarization via Sortformer, and simultaneous translation across 200 languages through the maintainer's NLLW work.
Backends are pluggable: Whisper family models, Mistral's Voxtral Mini, FunASR SenseVoiceSmall, NVIDIA Canary, and a causal streaming encoder for Qwen3-ASR. For clients, WLK exposes a native WebSocket stream, an OpenAI-compatible `/v1/audio/transcriptions` REST endpoint and a Deepgram-compatible WebSocket, so existing SDK code can point at a local server instead of a paid API. A SwiftUI macOS client and a Chrome extension for capturing page audio are included in the repository.
What it does
- Streaming transcription using LocalAgreement and AlignAtt policies, so partial output is committed as the speaker talks instead of after each chunk
- Real-time speaker diarization with Streaming Sortformer, plus simultaneous translation to and from 200 languages
- One server, many concurrent sessions, with per-session language, translation target and terminology context set as WebSocket query parameters
- OpenAI-compatible REST endpoint and Deepgram-compatible WebSocket alongside the native `ws://.../asr` stream
- Swappable backends — Whisper, MLX Whisper on Apple Silicon, Voxtral, FunASR SenseVoiceSmall, Canary and Qwen3-ASR
- A `wlk` CLI that also transcribes files offline and generates subtitles without running a server
Getting started
Install the package, start the server, and open the bundled web UI. Optional extras pull in the heavier backends — several conflict with one another by design and must live in separate environments; the authoritative list is `[tool.uv].conflicts` in the project's pyproject.toml.
Install
The base install covers the Whisper backends on CPU.
pip install whisperlivekitStart the server
Then open http://localhost:8000 and start talking. Models are pulled on demand.
wlk --model base --language en
# or let it pull the model for you
wlk run whisper:tinyUse it without a server
The same CLI transcribes files and writes subtitles directly.
wlk transcribe meeting.wav
wlk transcribe --format srt podcast.mp3 -o podcast.srt
wlk models
wlk benchPoint existing client code at it
The OpenAI-compatible route means an SDK client only needs a new base URL.
curl http://localhost:8000/v1/audio/transcriptions -F file=@audio.wav
# Python
client = OpenAI(base_url="http://localhost:8000/v1", api_key="unused")Add diarization or a different backend
Install the matching extra, then select the backend at launch. Sortformer is the diarization option that works on Python 3.13.
uv sync --extra cu129 --extra diarization-sortformer
# Apple Silicon, Voxtral backend
pip install -e ".[voxtral-mlx]"
wlk --backend voxtral-mlxCommands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Add live captions to a meeting, stream or call without sending audio to a third-party transcription API
- Replace a paid Deepgram or OpenAI transcription endpoint in an existing app by changing only the base URL
- Transcribe multilingual conversations and translate them as they happen, with per-session language settings
- Produce diarized transcripts that attribute each line to a speaker in real time
How WhisperLiveKit compares
WhisperLiveKit alongside other open-source audio, music & voice tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| Whisper | ★ 109k | OpenAI's speech recognition model that transcribes and translates audio across many languages. |
| GPT-SoVITS | ★ 61.8k | An open-source WebUI that clones a voice from a short audio sample and turns text into speech, with zero-shot and few-shot fine-tuning. |
| Voicebox | ★ 54.4k | Local-first voice studio that clones a voice from a short sample, generates speech across seven TTS engines and 23 languages, handles system-wide dictation, and speaks for agents over MCP. |
| VibeVoice | ★ 54.4k | Microsoft's text-to-speech model for generating long, expressive multi-speaker audio like podcasts. |
| whisper.cpp | ★ 53.7k | A dependency-free C/C++ port of Whisper built on ggml, running speech recognition on CPU, Metal, CUDA, Vulkan and NPUs from phones to servers. |
| Coqui TTS | ★ 46k | A library of text-to-speech models including the multilingual XTTS voice-cloning model. |
| ChatTTS | ★ 39.8k | ChatTTS is an open-source text-to-speech model tuned for dialogue, with multi-speaker support and fine-grained control over laughter, pauses, and prosody. |
| WhisperLiveKit | ★ 11k | Self-hosted, ultra-low-latency speech-to-text with live diarization |