Hi Riza, With the Information in #1954 I could successfully build webrtc aec (SVN trunk rev 5435). The results were a lot better as with SPEEX aec. But only if I wait for about 20 seconds. (Because of wrong tail-length I think) But I still have some trouble to find the correct tail-length value. I enabled the printing of the log line with the median (set SHOW_DELAY_METRICS 250 and disabled PJMEDIA_WEBRTC_AEC_USE_MOBILE). But still get the same results (about 20 seconds of waiting with echo) if I adjust the EC tail value to the median value of 4 (strange value?) i got from log. Do I miss something? Kind Regards, Severin Config: EpConfig ep_cfg; ep_cfg.medConfig.noVad=true; ep_cfg.medConfig.ecTailLen=25; ep_cfg.medConfig.ecOptions=PJMEDIA_ECHO_WEBRTC|PJMEDIA_ECHO_USE_NOISE_SUPPRESSOR|PJMEDIA_ECHO_AGGRESSIVENESS_AGGRESSIVE; ep.libInit( ep_cfg ); Log output: 03:38:48.615 pjsua_call.c ..Answering call 0: code=200 03:38:48.616 pjsua_media.c .....Call 0: updating media.. 03:38:48.617 pjsua_media.c ......Audio updated, stream #0: (inactive) 03:38:48.617 pjsua_aud.c ......Audio channel update.. 03:38:48.619 strm0x74e1452c .......Encoder stream started 03:38:48.620 strm0x74e1452c .......Decoder stream started 03:38:48.620 pjsua_media.c ......Audio updated, stream #1: G722 (sendrecv) !*** Recording device is: sysdefault:CARD=imxsgtl5000 With ID: -1 !*** Playback device is: sysdefault:CARD=imxsgtl5000 With ID: -2 03:38:48.623 pjsua_aud.c .....Conf connect: 2 --> 0 03:38:48.623 pjsua_aud.c ......Set sound device: capture=-1, playback=-2 03:38:48.624 pjsua_aud.c .......Opening sound device (speaker + mic) PCM@16000/1/20ms 03:38:48.656 echo_webrtc.c ........WebRTC AEC successfully created with options 899 03:38:48.657 ec0x74e1bf50 ........WebRTC AEC created, clock_rate=16000, channel=1, samples per frame=320, tail length=25 ms, latency=100 ms 03:38:48.659 conference.c ......Port 2 (sip:202@192.168.139.152;user=phone) transmitting to port 0 (sysdefault:CARD=imxsgtl5000) 03:38:48.660 pjsua_aud.c .....Conf connect: 0 --> 2 03:38:48.661 conference.c ......Port 0 (sysdefault:CARD=imxsgtl5000) transmitting to port 2 (sip:202@192.168.139.152;user=phone) ***** 03:38:48.687 Master/sound !Underflow, buf_cnt=0, will generate 1 frame 03:38:48.690 Master/sound Underflow, buf_cnt=0, will generate 1 frame 03:38:48.696 Master/sound Underflow, buf_cnt=0, will generate 1 frame 03:38:48.697 Master/sound Underflow, buf_cnt=0, will generate 1 frame 03:38:48.701 Master/sound Underflow, buf_cnt=0, will generate 1 frame 03:38:48.705 Master/sound Underflow, buf_cnt=0, will generate 1 frame 03:38:48.708 Master/sound Underflow, buf_cnt=0, will generate 1 frame 03:38:48.924 stream.c !G722 codec used, remote samples per frame detected = 80 03:38:53.695 echo_webrtc.c !WebRTC delay metrics: --> median=-28, std=48, fraction of poor delays=1.000000 03:38:58.587 ec0x74e1bf50 !Buffer size adjusted from 960 to 513 (eff_cnt=635) 03:38:58.695 echo_webrtc.c !WebRTC delay metrics: --> median=-28, std=0, fraction of poor delays=1.000000 03:39:03.695 echo_webrtc.c WebRTC delay metrics: --> median=-28, std=0, fraction of poor delays=1.000000 03:39:08.695 echo_webrtc.c WebRTC delay metrics: --> median=-24, std=4, fraction of poor delays=0.919200 03:39:13.695 echo_webrtc.c WebRTC delay metrics: --> median=4, std=0, fraction of poor delays=0.000000 03:39:18.694 echo_webrtc.c WebRTC delay metrics: --> median=4, std=0, fraction of poor delays=0.000000 03:39:23.694 echo_webrtc.c WebRTC delay metrics: --> median=4, std=0, fraction of poor delays=0.000000 03:39:28.694 echo_webrtc.c WebRTC delay metrics: --> median=4, std=0, fraction of poor delays=0.000000 ----- Ursprüngliche Mail ----- Von: "Riza Sulistyo" <riza@xxxxxxxxx> An: "pjsip" <pjsip@xxxxxxxxxxxxxxx> Gesendet: Dienstag, 30. August 2016 11:08:45 Betreff: Re: AEC echo cancelling Hi Severin, We have added webrtc aec on #1954 . Maybe you can try that. For tweaking purposes, the information on #1888 is still relevant. Best Regards, Riza On Tue, Aug 30, 2016 at 3:02 PM, Severin Birrer < severin.birrer@xxxxxxx > wrote: I'm trying to get some better Results with the AEC. (pjproject Version 2.5.5) I tried SPEEX AEC but the echo cancelling doesn't work as hoped for. The cancelling works, but you still get a little echo and after some time (one minute or so) the background noise gets louder and I think the cancelling gets also worse. Do I have to set some more parameters than the ecTailLen and ecOptions? The other Thing i tried is to integrate WebRTC AEC (Mostly described in Ticket #1888). But no luck there to compile it in, because of a missing full-howto. Steps done so far with WebRTC: 1. Get the depot_tools 2. Get/Build webrtc: mkdir webrtc-checkout cd webrtc-checkout fetch --nohooks webrtc gclient sync gn gen out/Release ninja -C out/Release 3. Configure pjsip: ./configure --with-webrtc=~/webrtc-checkout Log output of configure: Using webrtc prefix... /home/yocto/webrtc-checkout checking for WebRtcAec_Process in -laudio_processing... no I think the webrtc aec libraries (audio_processing, common_audio, system_wrappers) doesn't get built. Is it due to the compatibility issue described in the ticket? Which Version do I have to get, or more, how do I get it? My setup: Buildsystem Ubuntu Target Yocto Linux on a i.MX6 (ARM) Loudspeaker & MIC SGTL5000 Audiocodec Latency: about 200ms (measured with pjsystest Latency Test) My initialisation routine of EC is: EpConfig ep_cfg; ep_cfg.medConfig.noVad=true; ep_cfg.medConfig.ecTailLen=300; ep_cfg.medConfig.ecOptions=PJMEDIA_ECHO_SPEEX|PJMEDIA_ECHO_USE_NOISE_SUPPRESSOR|PJMEDIA_ECHO_USE_SW_ECHO|PJMEDIA_ECHO_AGGRESSIVENESS_AGGRESSIVE; ep.libInit( ep_cfg ); Log output of SPEEX AEC: 10:37:54.669 pjsua_call.c ..Answering call 0: code=200 10:37:54.670 pjsua_media.c .....Call 0: updating media.. 10:37:54.671 pjsua_media.c ......Audio updated, stream #0: (inactive) 10:37:54.672 pjsua_aud.c ......Audio channel update.. 10:37:54.674 strm0x74d1452c .......Encoder stream started 10:37:54.674 strm0x74d1452c .......Decoder stream started 10:37:54.675 pjsua_media.c ......Audio updated, stream #1: G722 (sendrecv) !*** Recording device is: sysdefault:CARD=imxsgtl5000 With ID: -1 !*** Playback device is: sysdefault:CARD=imxsgtl5000 With ID: -2 10:37:54.678 pjsua_aud.c .....Conf connect: 2 --> 0 10:37:54.678 pjsua_aud.c ......Set sound device: capture=-1, playback=-2 10:37:54.678 pjsua_aud.c .......Opening sound device (speaker + mic) PCM@16000/1/20ms 10:37:54.713 ec0x74d1bf50 ........AEC created, clock_rate=16000, channel=1, samples per frame=320, tail length=300 ms, latency=0 ms 10:37:54.715 conference.c ......Port 2 ( sip:203@192.168.139.152 ;user=phone) transmitting to port 0 (sysdefault:CARD=imxsgtl5000) 10:37:54.716 pjsua_aud.c .....Conf connect: 0 --> 2 10:37:54.717 conference.c ......Port 0 (sysdefault:CARD=imxsgtl5000) transmitting to port 2 ( sip:203@192.168.139.152 ;user=phone) ----------------------------------------------------------------------------------- Severin Birrer FELA Management AG Phone : +41 52 646 46 37 Basadingerstrasse 18 Fax : +41 52 646 46 96 CH-8253 Diessenhofen Mail : mailto: severin.birrer@xxxxxxx http://www.fela.ch/ _______________________________________________ Visit our blog: http://blog.pjsip.org pjsip mailing list pjsip@xxxxxxxxxxxxxxx http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org _______________________________________________ Visit our blog: http://blog.pjsip.org pjsip mailing list pjsip@xxxxxxxxxxxxxxx http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org _______________________________________________ Visit our blog: http://blog.pjsip.org pjsip mailing list pjsip@xxxxxxxxxxxxxxx http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org