github OHF-Voice/wyoming-faster-whisper v3.6.0

7 hours ago
  • 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-prompt is kept at the front
    • Add --hass-api, --hass-refresh-seconds, --hass-prompt-max-tokens, and --hass-prompt-timeout
  • Add support for Qwen3-ASR via --stt-library qwen3-asr (extra: qwen3_asr), defaulting to rhasspy/qwen3-asr-0.6b-onnx-int4-merged

    • --initial-prompt now 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 (auto never 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.onnx is present; model directories with decoder_init/decoder_step keep 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-int4 for the split export, which stays published
  • --vad-clip now takes optional speech-to-text libraries, so clipping can be enabled only where it pays off: --vad-clip qwen3-asr clips for that backend alone, while a bare --vad-clip still 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-asr and hass extras

Don't miss a new wyoming-faster-whisper release

NewReleases is sending notifications on new releases.