CI Report:
N/A
LinuxServer Changes:
Full Changelog: gpu-v3.5.0-ls58...gpu-v3.6.0-ls59
Remote Changes:
-
Add
--hass-token(extra:hass) to bias transcription toward the names in Home Assistant: conversation-exposed entity names and aliases, plus area and floor names, read over the websocket API and passed to the model as a prompt (fixes e.g. "What's the temperature of the incubi?" → "What's the temperature of the Ecobee?")- Names are refreshed in the background starting at
AudioStart, so the fetch finishes while the speaker is still talking and adds no latency; a slow or unreachable Home Assistant falls back to the previous names and never fails a transcript - Names are added to the prompt in priority order (areas, floors, entity names, aliases) up to
--hass-prompt-max-tokens(default 200, Whisper's hard cap is 223);--initial-promptis kept at the front - Add
--hass-api,--hass-refresh-seconds,--hass-prompt-max-tokens, and--hass-prompt-timeout
- Names are refreshed in the background starting at
-
Add support for Qwen3-ASR via
--stt-library qwen3-asr(extra:qwen3_asr), defaulting torhasspy/qwen3-asr-0.6b-onnx-int4-merged--initial-promptnow also biases the Qwen3-ASR backend: it is passed as the model's context prompt, which corrects entity names (e.g.Vocabulary: Ecobee.turns "incubator" into "Ecobee")- Qwen3-ASR is opt-in only (
autonever selects it): the model is 785 MB and needs ~1.6 GB of RAM, and it is slower than the per-language defaults
-
Qwen3-ASR: support a merged decoder export (
decoder_merged.int4.onnx) that takes a KV cache and a dynamic sequence length, so the biasing prompt's KV is computed once and reused instead of being re-prefilled every utterance. On a Pi 5 with a 50-name prompt, a 3.2s command goes from 3.42s to 2.20s (1.56x), peak RSS from 2.25 GB to 1.55 GB, and the package from 1407 MB to 785 MB- The merged layout is selected automatically when
decoder_merged.int4.onnxis present; model directories withdecoder_init/decoder_stepkeep working unchanged - The speedup applies to short commands. Long-form audio sees ~1.04x, since the cached prompt is a small share of the work — but the memory saving grows with length (4.16 GB → 2.87 GB on a 30s clip)
- The default Qwen3-ASR model is now the merged export. On LibriSpeech test-other (n=200) it transcribes byte-identically to the split export with no prompt (5.35% WER for both), and scores 5.33% vs 5.43% with a 50-name prompt — a difference well inside sampling noise. Pass
--model rhasspy/qwen3-asr-0.6b-onnx-int4for the split export, which stays published
- The merged layout is selected automatically when
-
--vad-clipnow takes optional speech-to-text libraries, so clipping can be enabled only where it pays off:--vad-clip qwen3-asrclips for that backend alone, while a bare--vad-clipstill applies to every library. Qwen3-ASR costs ~235 ms per second of audio on a Pi 5 (encoder, prefill, and per-token decode all scale with input length), so trimming silence off a typical command saves ~20%; faster-whisper pads to 30s internally and gains nothing -
The Docker image now includes the
qwen3-asrandhassextras