Skip to content

bug: transcription stops when macOS system volume is set to zero #4121

@devin-ai-integration

Description

@devin-ai-integration

Description

A user reported that transcription stops working when the macOS system volume is set to zero. It works correctly when volume is at 1 or above.

Reproduction: Set the Mac speaker volume to zero while a transcription session is active. Transcription stops producing output.

Analysis

The macOS speaker capture uses CAProcessTap (via cidre) in crates/audio/src/speaker/macos.rs. It creates a global audio tap via TapDesc::with_mono_global_tap_excluding_processes that should capture process audio before system volume is applied.

The app already plays a silent audio stream (AudioOutput::silence() in crates/audio/src/lib.rs) to keep the audio device active, stored as _silence_stream_tx in the SourceState.

Despite this, transcription stops at volume=0. The likely cause is a macOS-level power/processing optimization that stops the tap from receiving data when output volume is zero, even though the API is documented to capture pre-volume audio.

The VadMask (crates/vad-ext/src/masking.rs) only applies to the mic channel, not the speaker channel, so that is not the cause.

Potential Fixes

  • Set tap_auto_start to true (currently false in macos.rs:69) — might help keep the tap active when no audio is flowing
  • Detect when system volume is 0 and show a warning/notification to the user
  • Investigate ScreenCaptureKit as an alternative capture path that is volume-independent

Relevant Files

  • crates/audio/src/speaker/macos.rs — macOS speaker capture via CAProcessTap
  • crates/audio/src/lib.rsAudioOutput::silence() workaround
  • plugins/listener/src/actors/source/mod.rs_silence_stream_tx usage
  • plugins/listener/src/actors/source/stream.rs — speaker stream setup

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions