Helvum has been helpful to use to map Pipewire inputs
It isn’t the greatest application, but Helvum has been helpful to me recently in order to setup a combine audio input from output and input. This allows me to use OBS Studio to live caption both my own microphone input and audio output. It is a little awkward to use, and I have not been able to delete edges, but it works.
First I make sure I have a null audio sink and source created using a script that I stole from, of course , not the accepted answer on “How to create a new pipewire virtual device that to combines an real input and output into a new input?”.
#!/bin/shSINK_NAME=combined-sinkINPUT_NAME=combine-input# Unload null sink, if loaded.pactl unload-module module-null-sink || true# Make new sink.pactl load-module module-null-sink media.class=Audio/Sink sink_name=$SINK_NAME channel_map=stereo >> /dev/nullpactl load-module module-null-sink media.class=Audio/Source/Virtual sink_name=$INPUT_NAME channel_map=front-left,front-right >> /dev/null
Then I open Helvum and applications so that I can drag the audio input and output from the applications nodes into the “combined-input Audio/Source/Virtual sink” node. I do this because I found if I am using my web browser on a call, then I would want to map Firefox’s audio input and output rather than all audio output and input via the device. This allows my mic input to be mutable so I don’t send keyboard and mouse clicks and clacks.
Then I open OBS, confirm that my audio capture is using “combined-input Audio/Source/Virtual sink”, ensure that the Cloud Closed Captions plugin settings is capturing output from that audio capture source, and I’m pretty much done. I do lack any ability to segment audio and check individual audio levels, but with more inputs into the combined-sink.
I know I could probably do this with pw-link but that is kind of confusing and I never know what’s what until I have to go look it up. So the graphical representation has been helpful as a casual user.
Discussion in the ATmosphere