webrtcdsp echo cancellation not working

nivanov 2centnik at gmail.com
Sun Jan 17 06:12:27 UTC 2021


Thank you! Buffer-time was definitely the key here. However, I had to set the
buffer-time to 20ms (20000) before I could get semi-acceptable results. And
it's still just a little bit too much - it catches a good chunk of the echo,
but I can still hear some parts. The size of the parts shrink down as the
delay goes down, but for some reason, if I set the buffer-time to something
less than 20000, my stream stops recording altogether. It doesn't crash, but
it does not record any sound whatsoever:

gst-launch-1.0 \
rtpbin name=rtpbin latency=100 \
udpsrc port=50000 caps="application/x-rtp, media=audio, encoding-name=OPUS,
clock-rate=48000" ! rtpbin.recv_rtp_sink_0 \
udpsrc port=50001 caps="application/x-rtcp" ! rtpbin.recv_rtcp_sink_0 \
rtpbin. ! rtpopusdepay ! queue ! opusdec ! audioresample !
audio/x-raw,format=S16LE,layout=interleaved,rate=16000,channels=1 !
webrtcechoprobe ! alsasink \
alsasrc device=plughw:0,0 buffer-time=20000 !
audio/x-raw,format=S16LE,layout=interleaved,rate=16000,channels=1 !
webrtcdsp noise-suppression-level=high echo-suppression-level=high ! volume
volume=10 ! volume volume=3 ! \
queue ! opusenc ! rtpopuspay ! udpsink host=127.0.0.1 port=8005

Note that I increased the echo-suppresion-level to high and also put the
volume amplification after the DSP - this allowed me to have the speaker at
the maximum volume while maintaining acceptable results. Do you know why
buffer-time cannot be set below 20000? I also tried enabling delay-agnostic,
but that made things a lot worse - I think I'm better off leaving that flag
off. Thank you for your help so far!



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/


More information about the gstreamer-devel mailing list