Hi all!
I would like to write the code for a
software-based accoustic echo-canceller, to cancel out the accoustic echo that
occurs due to the speech coming out of the speakers and in to the
microphone of my PC. I would like to write this AEC in java. The application is
a VoIP-client. What I wonder is:
1) Is an ordinary PC-CPU(e.g. intel pentium)
powerful enough to handle this?
2) Which filter is best suited for this( e.g.
LMS,rls,gradient adaptive Lattice filter)?
3) Are there any Independent component
analysis(BSS)-methods that are fast enough?
4) What kind of additional components, besides
the adaptive filter, are required for best performance?
I will be happy for all the help I can get on
the subject.
best regards
Kurt
|
|
software based echo-cancelling
Started by ●August 9, 2001
Reply by ●August 9, 20012001-08-09
Kurt, If you would like I can send you a couple of documents based on some research I was apart of. One is a thesis you can reference and the other is an internal paper we generated which references that thesis in part. These may help answer question two. Let me know if you are interested. regards, Perry Howell Lead Design Engineer Vega Signaling Products Telex Communications, Inc 8601 East Cornhusker Hiway Lincoln NE, 68507-9702 402-465-6621 402-467-4003(fax)
I would like to write the code for a software-based accoustic echo-canceller, to cancel out the accoustic echo that occurs due to the speech coming out of the speakers and in to the microphone of my PC. I would like to write this AEC in java. The application is a VoIP-client. What I wonder is: 1) Is an ordinary PC-CPU(e.g. intel pentium) powerful enough to handle this? 2) Which filter is best suited for this( e.g. LMS,rls,gradient adaptive Lattice filter)? 3) Are there any Independent component analysis(BSS)-methods that are fast enough? 4) What kind of additional components, besides the adaptive filter, are required for best performance? I will be happy for all the help I can get on the subject. best regards Kurt _____________________________________ Note: If you do a simple "reply" with your email client, only the author of this message will receive your answer. You need to do a "reply all" if you want your answer to be distributed to the entire group. _____________________________________ About this discussion group: To Join: e...@yahoogroups.com To Post: e...@yahoogroups.com To Leave: e...@yahoogroups.com Archives: http://www.yahoogroups.com/group/echocancel Other DSP-Related Groups: http://www.dsprelated.com ">Yahoo! Terms of Service. |
Reply by ●August 10, 20012001-08-10
Hello Kurt,
Our firewall has problems at the moment, so this
email may not get through until you've received plenty of better
suggestions. :)
The following is off the top of my head, because
it's been a while since I worked on stuff like this.
1. Ordinary, modern PC CPUs are *very*
powerful in terms of their signal processing capabilities, and often outperform
commercial DSP processors despite these processors' specialized
features. In fact, modern PC CPUs tend to be *several times*
faster, and I'd imagine it's especially on long filters you'll
see the speed difference.
2. It probably depends on your environment what
kind of filter you need. If the speaker doesn't change position
frequently, such as not tending to turn his head fast while speaking, an LMS
filter is probably enough. (In fact, although many echo cancelers rely on
the LMS filter, I dare say they'd have been better off using filters with
faster convergence times.) If you need to have
fast convergence times, look for RLS-based filters, such as the GAL filter
you mention below. However, because echo canceling filters tend to
have long impulse responses, a "true" RLS filter is out of the question
because it has O(N squared) complexity. Look for "fast" versions
of RLS filters with O(N) complexity; the GAL belongs to this
category.
3. Um, I don't know.
4. Off-hand, I think the adaptive filter is all
you need for *good* performance, so focus on that to begin with. If you
want *best* performance, you'll probably have to watch very closely what
happens in your particular application so you can tweak it where it happens to
be necessary.
--Ole
|