You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Linux: silent audio discard on low mic volume without diagnostic feedback #782
Ubuntu 24.04 LTS, PipeWire 1.0.5 with WirePlumber, USB Audio (Logitech Webcam C170).
What happened?
When the system recording volume in PipeWire / ALSA is low (in our case 39% / 0.39 on the USB mic), spoken audio is silently discarded by VAD:
INFO hex::dictation: discarded dictation without detected speech level_dbfs=-47.203460693359375 audio_ms=8127 vad_ms=19
Running hex dictation stop --print exits with code 4:
hex: no speech was recorded; nothing to print
Nothing in the UI or CLI indicates that input gain is too low to trigger speech detection. To a user, Hex appears completely unresponsive. Raising the input volume to 75% (wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 0.75) resolved it immediately.
Steps to reproduce
Set the default recording source volume low (e.g. wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 0.35).
Run hex dictation start, speak a sentence at normal volume, then run hex dictation stop --print.
Hex exits with code 4, discarding the recording without explaining that input levels fell below the VAD threshold.
Proposed solutions
Warn in hex devices or hex status when the active input source volume in PipeWire/PulseAudio is set low (e.g. below 50%).
Show an input sensitivity indicator or add a diagnostic command (e.g. hex devices test or hex doctor) to help users verify live microphone levels against the VAD threshold.
a quiet source can sink the speech detector: pipewire's volume slider is cubic, so 35% is only about 4% of full signal, and the silero check (threshold 0.4, 160 ms minimum) then finds no speech and the capture is dropped. what helps today is the live level bars on general's microphone row (linux included), which show the peak hex actually receives, so speaking while general is open tells you right away if the input is too quiet.
reading the source volume is linux-only (pactl/wpctl) and doesn't cover mic gain or quiet hardware, so a percentage threshold like 50% would misfire.
the detector's score doesn't follow loudness in a simple way, so any "too quiet" cutoff would have to be measured, not guessed.
linux and windows skip the practice step, so the "no sound, pick another mic" hint never shows there.
at 35-39%, did general's level bars move much when you spoke, or did they stay near rest?
would a line like "input was very quiet" on the no-speech message be enough, or do you specifically want a hex devices/status warning?
yeah dropping it with no sign at all was bad. pipewire's slider is cubic, so 39% is a lot quieter than it looks
fixed in #783 (next dev build). when hex throws a dictation away for being too quiet or having no speech it now plays the error sound, shows "too quiet, check your mic level" next to the hud, logs the level and peak against the threshold, and settings keeps a "last dictation discarded" line until one goes through. works the same on linux, windows and mac
thanks for the logs and the wpctl repro, that made it easy
Activity
thdxr commentedon Nov 1, 2026
a quiet source can sink the speech detector: pipewire's volume slider is cubic, so 35% is only about 4% of full signal, and the silero check (threshold 0.4, 160 ms minimum) then finds no speech and the capture is dropped. what helps today is the live level bars on general's microphone row (linux included), which show the peak hex actually receives, so speaking while general is open tells you right away if the input is too quiet.
reading the source volume is linux-only (pactl/wpctl) and doesn't cover mic gain or quiet hardware, so a percentage threshold like 50% would misfire.
the detector's score doesn't follow loudness in a simple way, so any "too quiet" cutoff would have to be measured, not guessed.
linux and windows skip the practice step, so the "no sound, pick another mic" hint never shows there.
at 35-39%, did general's level bars move much when you spoke, or did they stay near rest?
would a line like "input was very quiet" on the no-speech message be enough, or do you specifically want a
hex devices/status warning?— from 𝕺𝖕𝖊𝖓𝕮𝖔𝖉𝖊
AGENTS: silent discards are announced (#782)
Never discard a quiet dictation silently (#782) (#783)
thdxr commentedon Nov 1, 2026
yeah dropping it with no sign at all was bad. pipewire's slider is cubic, so 39% is a lot quieter than it looks
fixed in #783 (next dev build). when hex throws a dictation away for being too quiet or having no speech it now plays the error sound, shows "too quiet, check your mic level" next to the hud, logs the level and peak against the threshold, and settings keeps a "last dictation discarded" line until one goes through. works the same on linux, windows and mac
thanks for the logs and the wpctl repro, that made it easy
— from 𝕺𝖕𝖊𝖓𝕮𝖔𝖉𝖊