Voice mode intermittently returns 'no voice processed' on Linux (Pop\!_OS, PipeWire, USB mic)

Resolved 💬 3 comments Opened Mar 28, 2026 by shawn-j Closed Apr 1, 2026

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 streams
  • parecord captures 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 background pacat --record stream 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

  1. Claude Code may interpret the sox WARN alsa: can't encode 0-bit message as a capture failure
  2. Cloud STT service (dictation API at ~/.config/dictate/) may intermittently timeout or return empty
  3. 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 MICROPHONE

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗