Releases: QuentinFuxa/WhisperLiveKit
Releases · QuentinFuxa/WhisperLiveKit
Release list
v0.2.25
A FunASR backend, and diarization unbroken for qwen3.
Added
- FunASR SenseVoiceSmall backend (
--backend funasr): auto, Mandarin, Cantonese, English, Japanese and Korean on the LocalAgreement policy, with fail-closed timestamp validation and per-session language overrides. Install with thefunasrextra. (#385, thanks @LauraGPT) - Published Docker images now carry SBOM attestations, and the provenance mode is pinned explicitly. (#390, thanks @kobihikri)
Fixed
- qwen3 backends with
--diarizationsilently stopped emitting updates as soon as the first line was diarized: the qwen3 package's own token type lacked the helpers the alignment needs. Tokens are now normalized to WhisperLiveKit'sASRTokenat the factory boundary. (#389, thanks @OookTheLibrarian) - Diarization span corruption in
concatenate_diar_segments. --language yue --buffer-trimming sentencecrashed on a bare assert even though the sentence tokenizer supports Cantonese. (#392)- Invalid per-session parameters (such as an unsupported
?language=) now produce a structured error and close code 4400 on the WebSocket endpoints, and HTTP 400 on the REST endpoint, instead of an unexplained handshake failure. (#393) wlk pull funasrandwlk rm funasrexplain that funasr manages its own model cache instead of exiting 1 silently. (#394)
v0.2.24
Streaming LLM translation, refreshed benchmarks and loud failures.
Added
- AlignAtt translation backend (
--translation-backend alignatt): streaming LLM translation through an Alignatt4LLM sidecar. The model drafts ahead over the unstable ASR tail and commits only target words whose attention lands on committed source words, so translations are append-only and released the instant the ASR commits. See docs/translation-alignatt.md. - Benchmark figures re-measured on an H100 with the current backends (the README scatter plots dated from March and misrepresented the qwen3 backends). Raw results in
benchmarks/h100_scatter/.
Fixed
- mlx-whisper produced empty captions with torch >= 2.13 (#383, thanks @RobertBartelds-FleetEnergies).
- The server now fails loudly when the ASR backend produces nothing: warmup errors abort startup with the cause, and a watchdog logs an explicit error if audio flows but no text is ever produced.
v0.2.23
Qwen3-ASR backends, latency work and bug fixes.
Added
- Qwen3-ASR backends:
qwen3-streaming(PyTorch, CUDA/MPS/CPU),qwen3-vllm(CUDA),qwen3-vllm-metal(Apple Silicon), via the new qwen3-asr-causal package. The causal streaming mode uses 3x less compute, at constant cost per audio second (English only). - Prebuilt Docker images on GHCR:
ghcr.io/quentinfuxa/whisperlivekit. - Optional API token auth (
--api-token). - Per-session language and translation target via WebSocket query params.
Fixed
mode=fullsessions no longer lose early lines after 5 minutes (#372).- REST transcription of long files no longer times out silently (#374).
- qwen3-vllm word timestamps and CJK spacing (#375, thanks @samx81).
- Sortformer memory growth on long sessions (#349).
- Local Sortformer weights:
--sortformer-model-path(#378, thanks @felixmr1).
v0.2.22
Core
- NLLW language aliases : Normalize Whisper Chinese language codes at the NLLW boundary (
zh->zh-CN) for transcription and translation configs - VAD event handling : Preserve short silence boundaries and avoid cumulative timestamp drift in VAC/VAD chunk processing
- CUDA cache cleanup : Keep per-step decoder cleanup lightweight; CUDA cache release stays on coarse segment boundaries
v0.2.20
Core
- Qwen3-ASR Beta : New backend with ForcedAligner word-level timestamps, auto language detection, and Whisper-style model aliases
- DiffTracker : Opt-in snapshot-then-diff WebSocket protocol (
?mode=diff) for bandwidth efficiency - SessionASRProxy : Thread-safe per-session language override
0.2.19
Voxtral backend & benchmarks
New: Voxtral backend
- voxtral-mlx: Native MLX backend for Apple Silicon. Runs at 0.18-0.32x real-time, handles 100+ languages with automatic language detection. No extra dependencies needed on macOS.
- voxtral (HF): HuggingFace transformers backend for Linux/GPU. Requires
pip install transformers torch.
Benchmarks
New offline benchmark harness (test_backend_offline.py --benchmark) that runs all installed backends and computes WER, RTF, and timestamp accuracy against ground truth transcripts. Results exportable as JSON.
Full benchmark report in BENCHMARK.md with tables, charts, and recommendations for every backend/policy/model combination.
Bug fixes
- Fixed silence double-counting in the audio processor
- Fixed median calculation for even-length lists in timestamp accuracy
- Fixed RTF inflation in metrics collector (was using wall-clock time instead of ASR processing time)
0.2.18
Bug Fixes
- Fix SimulStreaming VRAM leak : cross-attention tensors were accumulating unboundedly during the decoding loop (up to env 5GB on repetition loops). Now capped to a rolling window (#283, #275)
- Fix
--direct-english-translationnot working with LocalAgreement backends :task="translate"was never propagated to the ASR backend'stranscribe_kargs, so whisper always ran in transcribe mode regardless of the flag. (#306) - Fix
model_cache_dirignored in SimulStreaming : download path was hardcoded toNone. Also fixedtaskbeing passed as a boolean instead of a string ("translate"/"transcribe"). (#310) - Fix
NoneTypeconcatenation inadd_translation: crash whents.textwasNoneduring translation overlay. (#296) - Fix
Segment().from_tokens()bad classmethod call : was incorrectly called on an instance instead of the class. (#331) - Fix
token.has_endedtype narrowing : replacedtoken.is_silence()(non-existent method) with properisinstance(token, Silence)check. (#329)
Improvements
- Add
probabilityfield toASRTokenFasterWhisperASR now passes word-level probabilities through (#330, #313) - Add
insert_audio_chunktoDiartDiarization, brings the interface in line withSortformerDiarization(#332) - Initialize
OpenaiApiASR.task: was previously referenced but never set, causing potentialAttributeError.
0.2.17.post1
Improvements
- Fixes #323
- Refine diarization timing by @Anton_Jacobson
- Fixes KV cache cleanup and potentiel thread conflicts by @eschmidbauer
0.2.17
Improvements
- Native MLX AlignAtt for faster decoding (previously mixed MLX/PyTorch).
- One shared ONNX Silero VAD model instance across sessions for better multi-speaker support.
Bug fixes
0.2.16
Core
- SimulStreaming / AlignAtt policy: a single Whisper decoder can now be shared across sessions/users (the encoder was already shared). This removes several scalability bottlenecks. Co authored with @eschmidbauer. Therefore,
--preload-model-countparameter is now useless and has been removed.