Skip to content

Instantly share code, notes, and snippets.

@limcheekin
Created November 11, 2025 08:48
Show Gist options
  • Select an option

  • Save limcheekin/2082800be0c926e1145cc15643ae6b66 to your computer and use it in GitHub Desktop.

Select an option

Save limcheekin/2082800be0c926e1145cc15643ae6b66 to your computer and use it in GitHub Desktop.
Shell script to allow Voice Bot in Chrome participate (listen and speak) in the Zoom meeting
#!/usr/bin/env bash
set -euo pipefail
echo "Creating virtual sinks..."
# 1) Create virtual sinks
# Sink for Zoom's audio output
pactl load-module module-null-sink sink_name=Zoom-to-Bot sink_properties=device.description="Zoom-to-Bot"
# Sink for the Bot's audio output
pactl load-module module-null-sink sink_name=VoiceBot-to-Zoom sink_properties=device.description="VoiceBot-to-Zoom"
echo "Created virtual sinks. Wait 1s for PipeWire to register..."
sleep 1
# 2) Create Virtual Microphones
# This mic captures audio from the "Zoom-to-Bot" sink.
# Chrome (the bot) will listen to this mic.
pactl load-module module-remap-source \
source_name=zoom_to_bot_virtual_mic \
master=Zoom-to-Bot.monitor \
source_properties=device.description="Zoom-to-Bot Virtual Mic"
# This mic captures audio from the "VoiceBot-to-Zoom" sink.
# Zoom will listen to this mic.
pactl load-module module-remap-source \
source_name=bot_to_zoom_virtual_mic \
master=VoiceBot-to-Zoom.monitor \
source_properties=device.description="VoiceBot-to-Zoom Virtual Mic"
echo "Done."
echo "Virtual devices created."
echo "Please set your applications as follows:"
echo ""
echo "--- IN CHROME (Your Bot) ---"
echo " Microphone: Zoom-to-Bot Virtual Mic"
echo " Speaker: VoiceBot-to-Zoom"
echo ""
echo "--- IN ZOOM ---"
echo " Microphone: VoiceBot-to-Zoom Virtual Mic"
echo " Speaker: Zoom-to-Bot"
echo ""
echo "Run command to remove the settings above: systemctl --user restart pipewire"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment