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).
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:236filters"pipewire"and thepipewire: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-canceldoes. 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.swiftis 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).