Voice mode intermittently returns 'no voice processed' on Linux (Pop\!_OS, PipeWire, USB mic)
Voice mode intermittently returns "no voice processed" on Linux (Pop!_OS)
Version: Claude Code 2.1.86
OS: Pop!_OS 22.04 (Ubuntu-based), Linux 6.17.9
Audio: PipeWire 1.0.3, ALSA via PipeWire plugin
Microphone: JOUNIVO USB (USB-Audio, card 1, full speed)
Auth: Claude.ai account (not API key)
Problem
Voice mode (/voice) enables successfully. When holding Space to record, it shows "processing" for 1-2 seconds, then displays "no voice processed." This happens intermittently- sometimes works fine on first try, fails on second, works again on third. No pattern to success/failure.
Diagnostic Data
Audio stack works perfectly:
rec(sox) captures successfully 10/10 times with and without concurrent streamsparecordcaptures successfully every time- File sizes consistent (311-360KB per 2-second capture, 73-74% non-zero bytes)
- PipeWire source shows RUNNING state
- USB device power/control: "on", runtime_status: "active"
Sox warning present on every capture (but captures succeed):
rec WARN alsa: can't encode 0-bit Unknown or not applicable
This warning appears on EVERY sox recording through PipeWire ALSA plugin but does not prevent successful audio capture. Possible that Claude Code interprets this warning as a failure.
Tested:
- PipeWire restart (
systemctl --user restart pipewire pipewire-pulse wireplumber): no change - Different USB ports: partial improvement (one port works better than others)
- PipeWire node suspension disabled (wireplumber config
session.suspend-timeout-seconds = 0): config didn't take effect, but backgroundpacat --recordstream keeps node RUNNING - With and without background pacat stream: sox succeeds both ways
- 5 rapid sequential recordings: all 5 succeed at OS level
Sox build:
AUDIO DEVICE DRIVERS: alsa
Sox compiled with ALSA driver only (no PulseAudio/PipeWire native driver). Routes through PipeWire's ALSA compatibility layer.
Expected Behavior
Voice mode should consistently process audio when Space is held and speech is detected.
Actual Behavior
Intermittent "no voice processed" despite OS-level audio capture working 100% of the time. The failure appears to be in Claude Code's processing pipeline, not in the audio capture itself.
Possible Causes
- Claude Code may interpret the sox
WARN alsa: can't encode 0-bitmessage as a capture failure - Cloud STT service (dictation API at
~/.config/dictate/) may intermittently timeout or return empty - Race condition in Claude Code's recording start/stop logic when PipeWire negotiates format on first capture
System Info
$ pipewire --version
Compiled with libpipewire 1.0.3
$ sox --version
sox: SoX v14.4.2
$ pactl list sources short | grep JOUNIVO
54 alsa_input.usb-0c76_JOUNIVO_MICROPHONE-00.mono-fallback PipeWire s16le 1ch 44100Hz RUNNING
$ cat /proc/asound/cards | grep JOUNIVO
1 [MICROPHONE ]: USB-Audio - JOUNIVO MICROPHONEThis issue has 3 comments on GitHub. Read the full discussion on GitHub ↗