What's changed
New: continuous recording mode
A new "continuous" recording mode that listens indefinitely and auto-transcribes whenever a pause in speech is detected.
Transcriptions are injected in real time as you speak, without pressing any key.
Enable via config or hyprwhspr setup:
Experimental. See the configuration docs for silence threshold and floor-finding options.
Fix: language auto-detection on pywhispercpp backend (#160)
When "language" was null (the documented default for auto-detect), the pywhispercpp backend was silently falling back to whisper.cpp's compiled-in default of "en", causing non-English speech to be transcribed as garbled English. The backend now calls auto_detect_language() explicitly when no language is set.
Users who pinned a language code (e.g. "language": "fr") were unaffected.
Feat: beam search decoding on pywhispercpp and faster-whisper backends (#159)
Both local backends now default to beam search with beam_size: 5, matching whisper-cli behavior. Previously, pywhispercpp used greedy decoding with no way to change it. The difference is most noticeable on non-English audio and noisier input.
Two new config keys:
{
"sampling_strategy": "beam_search", // "beam_search" (default) or "greedy"
"beam_size": 5
}faster-whisper's previously hardcoded beam_size: 5 also now respects the beam_size config key.
Note: Changing
sampling_strategyrequires a service restart on the pywhispercpp backend.
Fix: audio ducking timing
Audio ducking now activates after the stream is confirmed open rather than before, preventing a race where the duck fired before audio capture was ready.
Fix: audio stream startup reliability
Improved retry logic on stream open to handle transient PortAudio errors (-9987 paTimedOut, -9999 PulseAudio "No such entity") that could occur during service startup before the audio server had fully settled.
Full Changelog: v1.26.0...v1.26.1
{ "recording_mode": "continuous" }