DesignAEC » History » Version 20
Adrian Georgescu, 02/19/2011 11:55 AM
1 | 18 | Adrian Georgescu | = Acoustic 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 | 18 | Adrian Georgescu | For more information see http://sipsimpleclient.com. The project is maintained by AG Projects that can provide help to the developer to integrate its AEC implementation. |
8 | 16 | Adrian Georgescu | |
9 | 1 | Adrian Georgescu | == Background == |
10 | |||
11 | 18 | Adrian Georgescu | The present implementation of the Acoustic Echo Canceller from PJSIP media library is not performing to the desired level of quality. Practically, the speakerphone function is not performing satisfactory. The result is that the software phone cannot be used without a head-set, which make people use proprietary applications like Skype or Google Talk. |
12 | 1 | Adrian Georgescu | |
13 | [[Image(http://www.pjsip.org/images/media-flow.jpg)]] |
||
14 | |||
15 | == Project goal == |
||
16 | |||
17 | Replace the existing AEC from Pjmedia library (what is displayed as echo.h in the above diagram whihc employes the AEC of the speex project) with an alternative to be developed solution that provides a high quality speakerphone user experience. The acoustic echo cancelation should perform comparable with any other proven VoIP commercial solution like Skype or iChat making the need of a headset un-necessary. |
||
18 | |||
19 | 18 | Adrian Georgescu | The developed software will be released under an Open Source licence and distributed with SIP SIMPLE client library. The deliverable is C written program that can be applied to the pjsip cvs trunk 1.0 with the '''patch''' command. |
20 | 11 | Adrian Georgescu | |
21 | 1 | Adrian Georgescu | == Resources == |
22 | |||
23 | General |
||
24 | |||
25 | 7 | Adrian Georgescu | * Digital Signal Processing http://www.dsptutor.freeuk.com/ |
26 | 1 | Adrian Georgescu | * Graduation thesis about AEC http://innovexpo.itee.uq.edu.au/2003/exhibits/s365914/ |
27 | 7 | Adrian Georgescu | * DSP concepts: http://www.bores.com/courses/intro/basics/index.htm |
28 | |||
29 | 18 | Adrian Georgescu | == PJMEDIA == |
30 | 1 | Adrian Georgescu | |
31 | 18 | Adrian Georgescu | This is the actual audio library used by SIP SIMPLE client. It is part of PJSIP, a complete framework for building SIP clients, having an open source license. |
32 | |||
33 | 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 |
34 | * Media flow - http://trac.pjsip.org/repos/wiki/media-flow |
||
35 | 12 | Adrian Georgescu | * PJSIP AEC API http://www.pjsip.org/pjmedia/docs/html/group__PJMEDIA__Echo__Cancel.htm |
36 | 1 | Adrian Georgescu | |
37 | === Speex AEC === |
||
38 | |||
39 | 18 | Adrian Georgescu | This is the AEC algorithm used by PJMEDIA that needs to be replaced by a better solution. The actual code is maintained by http://speex.org project. |
40 | 15 | Adrian Georgescu | |
41 | 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 |
42 | 6 | Adrian Georgescu | * http://speex.org/docs/api/speex-api-reference/group__SpeexEchoState.html |
43 | 1 | Adrian Georgescu | |
44 | === Andree Adrian AEC === |
||
45 | |||
46 | 20 | Adrian Georgescu | Pulse audio contain this echo canceler re-written in C in latest git repository |