ℹ️ This is a machine-translated document. In case of discrepancies, refer to the original document.
12/31/’25 6:25 PM Wed
Summary and the to-do list for the future:
Documentation: Attempt “Unified Audio Input” (Mic + Desktop)¶
Status: Paused (Proof of Concept exists, but not stable/performant).
Experiences / Findings:
Routing: PipeWire/PulseAudio tend to reset the Python stream (ALSA bridge) to the standard physical microphone (stream restore logic).
Performance: The processing of RMS, VAD and Vosk in a tight loop, combined with external
pactlcalls, leads to high CPU load (fan rotation).Signal: Despite the correct device index, there was often only a RMS level of ~1.7, which indicates a wrong mapping between ALSA and PipeWire.
To-Do List (Future Sprint)¶
[ ] WirePlumber Integration: Exploring native PipeWire rules (
scripts) to permanently bind the stream withoutpactlhooks.[ ] Performance Optimization: Relieve the audio loop (e.g. perform RMS checks less often or optimize VAD parameters).
[ ] Native Mono Sink: Ensure that the virtual sink is fixed at 16kHz Mono system-wide to avoid resampling load.
[ ] Robust Device Mapping: Finding a more stable method to address the virtual monitor sink in
sounddeviceby name.
Update config/settings.py¶
# config/settings.py
# AUDIO_INPUT_DEVICE = None
# PLANNED: UNIFIED_AUDIO_INPUT (Mic + Desktop Sound)
# Current status: Experimental. Requires stable PipeWire routing and CPU optimization.
# AUDIO_INPUT_DEVICE = 'UNIFIED_AUDIO_INPUT'
** [EN] Summary:**
Attempted to merge Mic and Desktop audio using a virtual null-sink. Routing was unstable due to PipeWire’s stream-restore. High CPU load was observed. Logic is now documented for a future iteration.
I am curious whether we will succeed in a later attempt with a more performant solution (perhaps directly via PipeWire interfaces)! Done for today.