Record Signal (or other) video calls on Linux with both system audio and microphone, using PulseAudio echo cancellation to prevent feedback.
- Linux with PulseAudio
- ffmpeg
- PulseAudio echo cancellation module (
module-echo-cancel)
Edit record-call.sh and update these variables to match your hardware:
MONITOR="alsa_output.pci-0000_c6_00.6.analog-stereo.monitor"
MIC="alsa_input.usb-EMEET_HD_Webcam_eMeet_C950_A230803002402311-02.analog-stereo"To find your device names:
# List audio sources (microphones and monitors)
pactl list short sources
# List audio sinks (speakers/headphones)
pactl list short sinks# Record with default name (call-TIMESTAMP.m4a)
./record-call.sh
# Record with custom name (meeting-TIMESTAMP.m4a)
./record-call.sh meetingPress q or Ctrl+C to stop recording.
The script:
- Loads PulseAudio's WebRTC echo cancellation module
- Captures system audio (what you hear) via the monitor source
- Captures microphone input via the echo-cancelled source
- Mixes both into a single AAC audio file
The experiments/ folder contains alternative approaches tried for echo reduction:
| Script | Approach |
|---|---|
| v1-volume | Reduce mic volume |
| v2-amerge | Use amerge instead of amix |
| v3-highpass | Highpass filter at 80Hz |
| v4-echocancel | PulseAudio WebRTC echo cancellation ✓ |
| v5-gate | Noise gate on mic |
| v6-combo | Combined approach |
See experiments/ECHO-EXPERIMENTS.md for details.