Project

General

Profile

DesignAEC » History » Version 11

Adrian Georgescu, 06/28/2009 08:15 PM

1 2 Adrian Georgescu
= Echo cancellation =
2 1 Adrian Georgescu
3
[[TOC(Design*, depth=1)]]
4
5
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
7
For more information see http://sipsimpleclient.com
8
9
== Background ==
10
11
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
13
[[Image(http://www.pjsip.org/images/media-flow.jpg)]]
14
15
16
== Project goal ==
17
18 5 Adrian Georgescu
Replace the existing AEC from Pjmedia library (what is displayed as echo.h in the above diagram) with a better solution to provide a high quality speakerphone user experience.
19 1 Adrian Georgescu
20
The developed software will be released under an open source licence and distributed with SIP SIMPLE client library.
21
22 11 Adrian Georgescu
The deliverable is C written program that can be applied to the pjsip  cvs trunk 1.0 with the '''patch''' command.
23
24 1 Adrian Georgescu
== Resources ==
25
26 7 Adrian Georgescu
General
27 1 Adrian Georgescu
28 7 Adrian Georgescu
 * Digital Signal Processing http://www.dsptutor.freeuk.com/
29
 * Graduation thesis about AEC  http://innovexpo.itee.uq.edu.au/2003/exhibits/s365914/
30 9 Adrian Georgescu
 * DSP concepts: http://www.bores.com/courses/intro/basics/index.htm
31 7 Adrian Georgescu
32
PJSIP media library
33
34 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 
35
 * Media flow - http://trac.pjsip.org/repos/wiki/media-flow
36 6 Adrian Georgescu
37
Speex AEC
38
39 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
40 6 Adrian Georgescu
 * http://speex.org/docs/api/speex-api-reference/group__SpeexEchoState.html
41 1 Adrian Georgescu
42
Andree Adrian AEC
43
44 10 Adrian Georgescu
 * Draft AEC http://www.andreadrian.de/echo_cancel/draft-aec-03.txt
45 1 Adrian Georgescu
 * http://www.andreadrian.de/intercom/ implements AEC based on NLMS algorithm (not tested yet)
46
 * Kphone AEC implemented using above AEC http://www.andreadrian.de/echo_cancel/ (not tested)