DesignAEC

Version 4 (Adrian Georgescu, 06/24/2009 09:02 pm)

1 2 Adrian Georgescu
= Echo cancellation =
2 1 Adrian Georgescu
3 1 Adrian Georgescu
[[TOC(Design*, depth=1)]]
4 1 Adrian Georgescu
5 1 Adrian Georgescu
SIP SIMPLE client is a Python software library that allows for easy development of Internet communications end-points based on SIP and related protocols for voice, rich presence, session based instant messaging (IM), file transfers and desktop sharing. Other media types can be easily added by using an extensible high-level API. SIP SIMPLE client uses [http://www.pjsip.org/pjmedia/docs/html/index.htm PJSIP media library] for audio processing (sound card abstraction, audio codec and acoustic echo cancellation).
6 1 Adrian Georgescu
7 1 Adrian Georgescu
For more information see http://sipsimpleclient.com
8 1 Adrian Georgescu
9 1 Adrian Georgescu
== Background ==
10 1 Adrian Georgescu
11 1 Adrian Georgescu
The present implementation of the echo canceller from PJSIP media library is not performing to the desired level of quality. Practically, the speaker phone function of SIP SIMPLE client is not reliable and not performing satisfactory unless a headset is used.
12 1 Adrian Georgescu
13 1 Adrian Georgescu
[[Image(http://www.pjsip.org/images/media-flow.jpg)]]
14 1 Adrian Georgescu
15 1 Adrian Georgescu
16 1 Adrian Georgescu
== Project goal ==
17 1 Adrian Georgescu
18 3 Adrian Georgescu
Develop or replace the existing AEC from Pjmedia library (what is displayed as echo.h in the above diagram) to provide the best user hand-free experience when using the software phone, that is the usage of the speakerphone function in small to medium rooms should not be audibly affected by the acoustic echo reflected by the walls. 
19 1 Adrian Georgescu
20 1 Adrian Georgescu
The developed software will be released under an open source licence and distributed with SIP SIMPLE client library.
21 1 Adrian Georgescu
22 1 Adrian Georgescu
== Resources ==
23 1 Adrian Georgescu
24 1 Adrian Georgescu
The following resources relates to open source AEC implementations:
25 1 Adrian Georgescu
26 1 Adrian Georgescu
 * PJSIP media library http://pjsip.org, used by this project, AEC is implemented based on the Speex library, the code in pjsip/pjmedia/src/pjmedia/echo_speex.c 
27 1 Adrian Georgescu
 * Media flow - http://trac.pjsip.org/repos/wiki/media-flow
28 1 Adrian Georgescu
 * Speex project http://speex.org, the echo canceller implements AEC based on the MDF algorithm, see speex/libspeex/mdf.c. A test client is available in speex/speexclient, this has been used for developing pjmedia equivalent
29 1 Adrian Georgescu
 * http://www.andreadrian.de/intercom/ implements AEC based on NLMS algorithm (not tested yet)
30 4 Adrian Georgescu
 * http://speex.org/docs/api/speex-api-reference/group__SpeexEchoState.html
31 1 Adrian Georgescu
 * Kphone AEC implemented using above AEC http://www.andreadrian.de/echo_cancel/ (not tested)
32 1 Adrian Georgescu
 * Graduation thesis about AEC  http://innovexpo.itee.uq.edu.au/2003/exhibits/s365914/
33 1 Adrian Georgescu
34 1 Adrian Georgescu
== Job description ==
35 1 Adrian Georgescu
36 1 Adrian Georgescu
Project based, result oriented, works must be performed from remote.