{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreif66ufcu7tv6fncsq5cr5tk5b5r7flfegbfj2katcjhl6jarms33m",
"uri": "at://did:plc:ql5nzcyoitey44ceaysoz6ez/app.bsky.feed.post/3mijtucn7qgb2"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreih6xigsbyevbdhf7rv7ngpc4k6us4qz7hgcxuyog7l3naehgiul34"
},
"mimeType": "image/png",
"size": 138772
},
"description": "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.\n\nFirst 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?”.\n\n\n #!/bin/shSINK_NAME=combined-sink...",
"path": "/user/3/posts/881",
"publishedAt": "2026-04-02T18:15:33.000Z",
"site": "https://nokoto.org",
"tags": [
"obs-studio",
"Pipewire",
"Helvum",
"linux",
"How to create a new pipewire virtual device that to combines an real input and output into a new input?"
],
"textContent": "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.\n\nFirst 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?”.\n\n\n #!/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\n\nThen 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.\n\nThen 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.\n\nI 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.",
"title": "Helvum has been helpful to use to map Pipewire inputs",
"updatedAt": "2026-04-02T18:34:16.000Z"
}