echo cancellation for known sound sources (java + linux)
I'm trying to make a speech recognition "ignore" it's own output (using a text-to-speech-system) and therefore wanna use an echo canceller. I actually "know" the tts-output and I can even store it as wave file (or pcm or whatever), so the whole "estimation thingie" used with echo cancellation for unknown input is not necessary. However I don't really know how to start. I read, that "speex" was useful for this purpose but according to its documentation it does not work with 2 independen开发者_StackOverflow中文版t sound cards. To make it short: any ideas? here are my current settings:
got a mic for input and speakers for output. The mic is pretty close to the output and needs to remain there. the mic is plugged using a usb-soundcard, the speakers are attached to the normal onboard-sound-device.
OS is fedora (12), application is to be written in Java...
any help is appreciated ;)
Ive attempted to do the same thing. I have used speex unsuccessfully. I actually just wrote my own acoustic echo cancellation algorithm that worked fairly well. It was not that complicated and allowed me to tweak it to my own specifcation. Echo cancellation is one of those problems in digital signal processing that comes up time and time again so there are many sources of info.
I have attached the two papers that even include source examples. They are written in C, but could be used in Java via JNI or converting it to Java code.
Paper 1
1) Echo cancelation Thesis is the one implemented. Look into section 3.3.2 Normalized Least Mean Square (NLMS) Algorithm. That is the code implemented
Paper 2
2) Acoustic Echo paper has the same thing with the code in the appendix. But it is slightly differing from what is already there
精彩评论