Skip to content

Releases: QuentinFuxa/WhisperLiveKit

v0.2.25

Choose a tag to compare

@QuentinFuxa QuentinFuxa released this 01 Aug 16:41

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 the funasr extra. (#385, thanks @LauraGPT)
  • Published Docker images now carry SBOM attestations, and the provenance mode is pinned explicitly. (#390, thanks @kobihikri)

Fixed

  • qwen3 backends with --diarization silently 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's ASRToken at the factory boundary. (#389, thanks @OookTheLibrarian)
  • Diarization span corruption in concatenate_diar_segments.
  • --language yue --buffer-trimming sentence crashed 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 funasr and wlk rm funasr explain that funasr manages its own model cache instead of exiting 1 silently. (#394)

v0.2.24

Choose a tag to compare

@QuentinFuxa QuentinFuxa released this 11 Jul 21:49

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

Choose a tag to compare

@QuentinFuxa QuentinFuxa released this 09 Jul 08:02
6ea5e4c

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=full sessions 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

Choose a tag to compare

@QuentinFuxa QuentinFuxa released this 04 Jun 17:55

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

Choose a tag to compare

@QuentinFuxa QuentinFuxa released this 12 Mar 16:13

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

Choose a tag to compare

@QuentinFuxa QuentinFuxa released this 23 Feb 09:38
8fedeb9

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

Choose a tag to compare

@QuentinFuxa QuentinFuxa released this 13 Feb 18:34

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-translation not working with LocalAgreement backends : task="translate" was never propagated to the ASR backend's transcribe_kargs, so whisper always ran in transcribe mode regardless of the flag. (#306)
  • Fix model_cache_dir ignored in SimulStreaming : download path was hardcoded to None. Also fixed task being passed as a boolean instead of a string ("translate"/"transcribe"). (#310)
  • Fix NoneType concatenation in add_translation : crash when ts.text was None during translation overlay. (#296)
  • Fix Segment().from_tokens() bad classmethod call : was incorrectly called on an instance instead of the class. (#331)
  • Fix token.has_ended type narrowing : replaced token.is_silence() (non-existent method) with proper isinstance(token, Silence) check. (#329)

Improvements

  • Add probability field to ASRToken FasterWhisperASR now passes word-level probabilities through (#330, #313)
  • Add insert_audio_chunk to DiartDiarization, brings the interface in line with SortformerDiarization (#332)
  • Initialize OpenaiApiASR.task : was previously referenced but never set, causing potential AttributeError.

0.2.17.post1

Choose a tag to compare

@QuentinFuxa QuentinFuxa released this 16 Jan 09:44

Improvements

  • Fixes #323
  • Refine diarization timing by @Anton_Jacobson
  • Fixes KV cache cleanup and potentiel thread conflicts by @eschmidbauer

0.2.17

Choose a tag to compare

@QuentinFuxa QuentinFuxa released this 09 Dec 10:47

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

  • Fix translation instructions when using Docker container (#307)
  • Correct Chrome extension path (#274)
  • Fix TypeError when translating (#301)
  • Fix custom MLX path handling (#299)
  • Fix LocalAgreement issue (#308)

0.2.16

Choose a tag to compare

@QuentinFuxa QuentinFuxa released this 25 Nov 22:55

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-count parameter is now useless and has been removed.

Bug fixes

  • Correct silence handling when language is set to auto but not yet detected
  • Fix silence detected but never reported by Silero VAD
  • Add troubleshooting docs for #271, #276, #284, #286