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