<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le mer. 17 juin 2020 16 h 30, Attila <<a href="mailto:kocsisa01@gmail.com">kocsisa01@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I've been trying to create a pipeline for a voice chat application and would<br>
like to include echo cancellation.<br>
<br>
Since the example local loop pipeline does not work on Windows 10 (at least<br>
not on the computers I tried), I came up with this:<br>
<br>
wasapisrc low-latency=true ! queue max-size-time=400000000 ! audioconvert !<br>
audio/x-raw, format=S16LE ! webrtcdsp ! webrtcechoprobe ! audioconvert !<br>
wasapisink<br>
<br>
This seems to work but it is very fragile. Depending on the PC, I have to<br>
vary to queue size otherwise it will either not do any cancellation or if<br>
the queue is too small, it will not produce any sound at all. What can I do<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">The queue in this example should not be strictly needed, since you control the source buffer-time. Be aware that while webrtcdsp performs with up to 400ms delay, it won't perform consistently in these conditions. The default playback buffer-time in GStreamer is 200ms on the sink, you should reduce that to 2-3 time the latency-time.</div><div dir="auto"><br></div><div dir="auto">Another detail that helps letting webrtcdsp perform better is to avoid adding elements between your source and the DSP element. The queue in this case likely adds jitter and lower the speed of sync convergence. That's also why real-time integration inside system audio daemon always performs better. Though, after some tweaks, I did managed to get results as consistent as chrome and Firefox.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
to fix that (I know that this is a test loop only, but I'm hoping that<br>
understanding the problem here will help me with my actual problem).<br>
<br>
For my actual pipeline, I have not been able to make echo-cancellation work<br>
at all - the sound goes through and I get a very strong echo that does not<br>
die down at all. <br>
<br>
  wasapisrc low-latency=true ! queue max-size-time=400000000 ! audioconvert<br>
! audio/x-raw, format=S16LE ! </blockquote></div></div><div dir="auto"><br></div><div dir="auto">The DSP performs better in float, if that is an option on your platform.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">webrtcdsp^<br>
    ! opusenc audio-type=2048 bitrate=24000 inband-fec=true<br>
packet-loss-percentage=5 ! rtpopuspay ^<br>
    ! udpsink host=$FARENDIP port=7480 async=FALSE ^<br>
  udpsrc port=7480 caps="application/x-rtp, ssrc=(uint)1537893241,<br>
payload=(int)96, channels=1, clock-rate=48000" ^<br>
    ! rtpjitterbuffer latency=10 ! rtpopusdepay ! opusdec plc=true<br>
use-inband-fec=true ! webrtcechoprobe ^<br>
    ! audioconvert ! autoaudiosink<br>
<br>
Any ideas/help would be appreciated.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">I think replacing the autoaudiosink with wasapi and appropriate real-time configuration should help, I haven't tested much on Windows, as all my work happens on Linux.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Regards,<br>
Attila<br>
<br>
<br>
<br>
--<br>
Sent from: <a href="http://gstreamer-devel.966125.n4.nabble.com/" rel="noreferrer noreferrer" target="_blank">http://gstreamer-devel.966125.n4.nabble.com/</a><br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank" rel="noreferrer">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</blockquote></div></div></div>