- You need to run the sender and receiver in the same pipeline. It should just be a matter of combining the two gst-launch strings on each side.
- Only
webrtcdspshould be linked to thealsasrc, and onlywebrtcechoprobeto thealsasink.
The rationale is that webrtcechoprobe is feeding the playback stream to the canceller (so it knows what to look for in the captured audio), and webrtcdsp is trying to remove the audio you just played from the captured stream. If these are separate processes like you have them now, the capture side has no idea about what is being played back and can do no cancellation.