QuentinFuxa /WhisperLiveKit

Real-time, local speech-to-text with streaming ASR, speaker diarization, translation, and OpenAI/Deepgram-compatible APIs.

★ 11,210⑂ 1,159👁 59⑃ 96● 232▤ 33
PythonCreated 2024-12-19
11,210
stars
+0+6+85
1,159
forks
59
watchers
96
prs
232
issues
33
releases
–
discussions

README

WLK: Ultra-low-latency, self-hosted speech-to-text pipeline












  









 Powered by Leading Research:

- Simul-Whisper/Streaming (SOTA 2025) - Ultra-low latency transcription using AlignAtt policy. 
- NLLW (2025), based on distilled NLLB (2022, 2024) - Simulatenous translation from & to 200 languages.
- WhisperStreaming (SOTA 2023) - Low latency transcription using LocalAgreement policy
- Streaming Sortformer (SOTA 2025) - Advanced real-time speaker diarization
- Qwen3-ASR-causal (2026) - Causal streaming audio encoder for Qwen3-ASR: each audio block is encoded exactly once, constant compute per audio second, append-only transcripts.
- AlignAtt4LLM (IWSLT 2026) - Simultaneous translation with decoder-only LLMs: attention-gated commits, append-only output.


 Why not just run a simple Whisper model on every audio batch? Whisper is designed for complete utterances, not real-time chunks. Processing small segments loses context, cuts off words mid-syllable, and produces poor transcription. WhisperLiveKit uses state-of-the-art simultaneous speech research for intelligent buffering and incremental processing.


 Architecture



The backend supports multiple concurrent users. Voice Activity Detection reduces overhead when no voice is detected.

 Installation & Quick Start

bash
pip install whisperlivekit


 Quick Start

bash

 Start the server — open http://localhost:8000 and start talking
wlk --model base --language en


 Auto-pull model and start server
wlk run whisper:tiny

 Transcribe a file (no server needed)
wlk transcribe meeting.wav

 Generate subtitles
wlk transcribe --format srt podcast.mp3 -o podcast.srt

 Manage models
wlk models                              See what's installed
wlk pull large-v3                       Download a model
wlk rm large-v3                         Delete a model

 Benchmark speed and accuracy
wlk bench


 API Compatibility

WhisperLiveKit exposes compatibility-oriented subsets of popular APIs:

bash
 OpenAI-compatible REST API
curl http://localhost:8000/v1/audio/transcriptions -F [email protected]

 Works with the OpenAI Python SDK
client = OpenAI(base_url="http://localhost:8000/v1", api_key="unused")

 Deepgram-compatible WebSocket
 See docs/API.md for supported options and current SDK setup

 Native WebSocket for real-time streaming
ws://localhost:8000/asr


Per-session WebSocket query parameters:

| param | example | effect |
|---|---|---|
| language | ?language=fr | transcription language for this session (one shared engine serves mixed-language sessions) |
| target_language | ?target_language=de | translation target for this session (server must run with --target-language) |
| context | ?context=WhisperLiveKit%2C+Qwen3-ASR | terminology, names, or phrase-list text used to condition this session; supported by Whisper-family and SimulStreaming backends |
| mode | ?mode=diff | incremental snapshot/diff protocol instead of resending the full state (experimental, for integrators building their own client,

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON