hongbinz / imsdroid

Automatically exported from code.google.com/p/imsdroid
0 stars 0 forks source link

Echo cancellation does not work in the new version 2.0.431 #261

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
a) Before posting your issue you MUST answer to the questions otherwise it
will be rejected (invalid status) by us
b) Please check the issue tacker to avoid duplication
c) Please provide network capture (wireshark) or Android log (DDMS output)
if you want quick response

What steps will reproduce the problem?
1. Attach external speaker to Android tablet (headset jack)
2. Enable Anti echo 
3. Make a voice call from the device a a SIP phone or any other SIP client.

What is the expected output? What do you see instead?

Acoustic echo cancellation (echo suppression ) on Android side. Instead heavy 
delayed high volume echo may be heard on the other side. New advertized anti 
echo feature has no effect at all comparing to the previous versions.

What version of the product are you using? On what operating system?
Version 2.0.431 on Android 2.2

Please provide any additional information below.

Beside that inbound voice is heavily delayed but that can probably be adjusted 
by changing buffer factor variable in the code (I did that in the previous 
version)

Original issue reported on code.google.com by tayurs...@gmail.com on 14 Jul 2011 at 5:40

GoogleCodeExporter commented 9 years ago
We have already done many tests (with and without anti echo) between IMSDroid 
v2.0.431 and iDoubs using Galaxy S and iPhone4 with very good result (low or no 
echo).
For sure the echo cancellation will not work if the audio delay is very high on 
your device. You should try to set higher value for the echo tail.
Are you using two IMSDroid clients?

Original comment by boss...@yahoo.fr on 14 Jul 2011 at 5:50

GoogleCodeExporter commented 9 years ago
Thank you for the fast reply. I did not use two IMSDroid clients (but will
try it today). I called from a hardware SIP phone to/from my test Android
tablets (Android 2.2).  Usually it gives a best result. Outbound delay on
the tablet is almost nonexistent while inbound it is still unacceptable. I
will download the latest source today and try to reduce incoming audio
buffer size and also play with the echo tail value. But isn't tail suppose
to adjust automatically? At least it is so in some algorithms.
Thank you again. Very need library. Good job.

Original comment by tayurs...@gmail.com on 14 Jul 2011 at 1:18

GoogleCodeExporter commented 9 years ago

Original comment by boss...@yahoo.fr on 23 Jul 2011 at 4:59

GoogleCodeExporter commented 9 years ago
hello i am facing similar problem i am using imsdroid 2.0 with open IMS 
core...voice quality is very good , but there is repetition or echo of voice 
which sound very bad...so what to do???? 

Original comment by abidkhan...@gmail.com on 27 Jul 2011 at 7:37

GoogleCodeExporter commented 9 years ago
Could you please try "v2.0.442-webrtc"?

Original comment by boss...@yahoo.fr on 1 Aug 2011 at 5:52

GoogleCodeExporter commented 9 years ago

Original comment by boss...@yahoo.fr on 1 Aug 2011 at 5:53

GoogleCodeExporter commented 9 years ago
Fixed by revision 448

Original comment by boss...@yahoo.fr on 7 Aug 2011 at 4:16

GoogleCodeExporter commented 9 years ago
Revision 448 did not fix it for me but I was able to get echo cancellation to 
work on my Arm5 (WM8650) processor. Below are the steps I took.

1. I wrapped Speex with JNI and called echo processing routines before sending 
PCM frames to doubango. No echo was canceled no matter what Speex settings I 
tried.

2. Because Speex is very sensitive to delay between playback and echo frames I 
implemented a queue and queued all packets sent to AudioTrack. The size of the 
queue should be roughly equal to the size of internal AudioTrack buffer. This 
way packet were sent to echo_playback roughly at the time when AudioTrack send 
packets to the sound card from its internal buffer. The delay was removed with 
this approach but echo was still not cancelled

3. I wrapped WebRtc echo cancellation parts with JNI and called its methods 
before sending packets to doubango. The echo was still present but the library 
obviously was trying to cancel it.

4. I applied the buffer technique described in P2 and it finally started to 
work. The delay needs to be adjusted for each device though. Note also that 
WebRtc has mobile and full version of echo cancellation. The full version 
substantially slows the processor and should probably be run on ARM7 only. The 
mobile version works but with lower quality

I hope this will help someone.

Original comment by tayurs...@gmail.com on 19 Aug 2011 at 4:55

GoogleCodeExporter commented 9 years ago
WebRTC echo cancellation is only enabled on ARMv7 devices so if you are using 
an ARMv5 device then it's normal that it won't work for you. WebRTC AEC is 
disabled on ARMv5 devices because of CPU overhead. WebRTC AECM (Mobile version) 
is also supported by Doubango but not used because it gives poor results. Here 
is the line to change if you want to use AECM on Android: 
http://code.google.com/p/doubango/source/browse/branches/2.0/doubango/tinyDAV/in
clude/tinydav/audio/tdav_webrtc_denoise.h#39

When using Doubango built-in WebRTC AEC/M you don't need to queue the packets 
because there is already an adaptive jitter buffer and the echo tail is at the 
maximum.

What is the CPU usage on your ARMv5 device? What are your device's 
specifications?
We made our tests on HTC Hero and the CPU was at 80%.

What is the value of the echo tail and skew?
If all is working good for you and you are happy then we can add WebRTC AEC to 
tinyWRAP with all required jni functions :)

Original comment by boss...@yahoo.fr on 19 Aug 2011 at 6:18

GoogleCodeExporter commented 9 years ago
I use android 4.1 on ARMv7 and webrtc demo code 
but just aecm is work , aec is not work

Original comment by archibal...@gmail.com on 4 Jun 2013 at 8:30

GoogleCodeExporter commented 9 years ago
what is the right Echo_Tail() value in android.

Original comment by ajaytiwa...@gmail.com on 4 Dec 2014 at 8:05

GoogleCodeExporter commented 9 years ago
@ajaytiwari33
Use 2.573.1196 or later. Don't worry about echoTail() it's adaptive.
You have to build it by yourself as google code no longer allows adding files 
to the Downloads section.

Original comment by boss...@yahoo.fr on 4 Dec 2014 at 8:10

GoogleCodeExporter commented 9 years ago
 #12 boss...@yahoo.fr
thanks a lot..
but I am facing the problem in video call voice is not clear and facing a noise 
problme ...in nexus 4.

Original comment by ajaytiwa...@gmail.com on 4 Dec 2014 at 12:56