v0.2.25
fixie-ai/ultravoxv0.2.25Aug 1, 2026by QuentinFuxa
AI Summary
This release introduces a new FunASR backend and fixes critical issues with qwen3 diarization. It also improves Docker image security through SBOM attestations and enhances error reporting for invalid parameters.
Key Highlights
- Added FunASR SenseVoiceSmall backend supporting Mandarin, Cantonese, English, Japanese, and Korean.
- Fixed qwen3 diarization issues where updates stopped after the first line due to token alignment problems.
- Docker images now include SBOM attestations and pinned provenance mode.
- Invalid parameters now return structured errors (WebSocket 4400/HTTP 400) instead of handshake failures.
New Features
- FunASR SenseVoiceSmall backend with support for multiple languages.
- SBOM attestations on published Docker images.
Full Release Notes
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)