-
Notifications
You must be signed in to change notification settings - Fork 539
Description
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_starttotrue(currentlyfalseinmacos.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 CAProcessTapcrates/audio/src/lib.rs—AudioOutput::silence()workaroundplugins/listener/src/actors/source/mod.rs—_silence_stream_txusageplugins/listener/src/actors/source/stream.rs— speaker stream setup
Metadata
Metadata
Assignees
Labels
Type
Projects
Status