Skip to content

Audio capture goes through PortAudio only: no PipeWire path, no system-audio source #751

Description

@kacperpaczos

Same origin as the portal issue I just filed: I was going through what each Voca client uses from its OS.

Capture is PyAudio/PortAudio. PipeWire appears in src/ only as device names to skip — recognition_manager.py:236 filters "pipewire" and the pipewire: prefixes out of the device list, because those pseudo-devices record silence or crash (#53, #444).

Two things follow from having no native PipeWire client.

No system-audio capture. Every input is a microphone. Reading a monitor source is a pw-record-shaped stream away, and it is the precondition for transcribing anything that is not the user's own voice.

Echo cancellation. #248 was closed on the basis that Silero VAD handles this better now. VAD decides when to transcribe; it does not remove speaker output from the microphone signal, which is what module-echo-cancel does. If someone dictates while audio plays through speakers, VAD gates the segment correctly and the model still receives the mixed signal. I have not reproduced this carefully, so I am flagging it as a distinction rather than filing a regression.

Not urgent. I am filing it because the same hole exists on Windows (cpal, no WASAPI loopback) and macOS (AudioEngine.swift is AVAudioEngine microphone capture), which makes it a family-level limit rather than a Linux quirk.

Same gap on the sibling clients: VocaHQ/vocawin#38 (WASAPI loopback) and VocaHQ/vocamac#243 (Core Audio process taps).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions