v 1.32.0
Thanks to @calebdw for the reports that led to a series of solid improvements.
Highlights
- Improved microphone handling when using the system default input device.
- Fixed ONNX-ASR VAD routing so short dictations avoid unnecessary VAD trimming.
- Added a configurable ONNX-ASR VAD duration threshold.
Configuration
New setting:
This is the minimum recording duration, in seconds, before ONNX-ASR routes audio through Silero VAD. Set it lower to use VAD more often, or higher to keep more recordings on direct recognition.
Audio Device Management
- hyprwhspr now re-checks the current PulseAudio/PipeWire default microphone right before opening a recording stream when no explicit audio device is configured.
- Changing the system default microphone no longer requires restarting hyprwhspr for the next recording to use the new input.
- Stream startup retries now refresh the default input once before retrying, helping recover from transient PulseAudio/PipeWire host errors after a device change.
- The keepalive stream now moves to the refreshed default microphone when the default input changes.
- Explicitly configured audio devices remain sticky. If
audio_device_idoraudio_device_nameis configured, hyprwhspr does not silently convert the setup into "follow system default" mode after a fallback. - Device validation now rejects output-only devices when resolving defaults.
- Sounddevice default input updates now preserve the output device instead of overwriting the whole default device tuple.
Hotplug Handling
- Audio hotplug events are now queued and dispatched serially through a worker thread.
- This keeps callback ordering predictable during noisy USB plug/unplug sequences.
- Device monitor startup failure now cleans up observer and worker state more completely.
- Device monitor shutdown now stops the dispatch worker cleanly.
ONNX-ASR / Parakeet
- ONNX-ASR now keeps the direct model and VAD-wrapped model separate.
- Short recordings use direct recognition by default, avoiding aggressive speech-boundary trimming on normal dictation.
- Long recordings still use Silero VAD when
onnx_asr_use_vadis enabled. - Added
onnx_asr_vad_min_duration, defaulting to30seconds, to control when ONNX-ASR switches from direct recognition to VAD-assisted recognition. - Invalid VAD duration values fall back to
30seconds, and negative values clamp to0. - Model unload now clears the cached ONNX-ASR VAD model as well as the direct model.
{ "onnx_asr_vad_min_duration": 30 }