Reply by gal1264 December 21, 20052005-12-21
>Andrew, > >I thought about it but most of the ones I saw were in the $70+ range.
Since
>my software is free, I'm trying to make entry into it as cheap as
possible.
>I'm finding out that only a handful of my users are willing to spend
more
>than around $15. If you know of anything, please let me know. > >Thanks, >Robert >
How much does the robot run? Might be worth the extra $$ to not have it beat you up. On another note I did a similar project speech enabling some segway soccer robots for the last robocup. We had great success by tuning the key words/phrases based on testing in noisy environments, and my experience in Speech Reco is that the quality of the prompts and grammars is as valuable as ANY technology you can put in there. -Tom
Reply by NS May 2, 20052005-05-02
Your best bet for a great Acoustic Echo Canceler is probably at:
http://www.Compandent.com/products_echokiller.htm
http://www.Compandent.com/EchoKillerFactSheet.pdf


Robert Oschler wrote:
> Hello, > > I am the lead programmer for the SourceForge based Robosapien Dance Machine > project, released under the GPL license: > > http://sourceforge.net/projects/robodance > > I just added voice recognition capability to the program using another > SourceForge open source project, the Sphinx 3.5 speech recognition engine: > > http://sourceforge.net/projects/cmusphinx > > The Robosapien robot is a very loud robot which, using the average speech > detection/silence detection algorithms, will trigger a lot of "false" > recognition activity on the microphone; even on a decent headset microphone. > At about 3 feet away he still pumps out healthy 60+ decibels of sound which > left unchecked, triggers the microphone frequently and subsequently > generating false recognition results. > > I managed to do a very effective job at eliminating the problem using some > tricky volume thresholding, but in the future I'd like to go a step further > and use echo cancellation techniques to remove the robot's "voice". > > It would be very simple for me to record everything the robot says, each to > separate audio file. Since my program is controlling the robot, I always > know exactly what he is saying. Therefore, I should be able to take the > appropriate pre-recorded audio file of his voice and remove it from the > incoming microphone signal using spectral subtraction techniques. > > But since I am not a DSP expert (that's an understatement), I'd be far > better off finding some open source code that I could include in the project > to perform the spectral subtraction. > > I'd need the module to be able to take a pre-recorded file and create a > filter that would remove the audio in that file, from an audio signal in > real-time (live microphone input). I would need that filter to be able to > adapt to differences between the audio contained in the pre-recorded file, > and the way that audio will sound coming in on a different microphone than > the one the audio was originally recorded with, and at a different distance > from the microphone as the original (pre-recorded file versus actual audio > coming in from a new microphone). > > Does anyone know of something I could use? I am a veteran, C/C++/Object > Pascal programmer and can even handle some assembler if needed. > > Thank you if you have read this far, I know it's a long message. :) > > Thanks, >
Reply by Robert Oschler April 1, 20052005-04-01
"Richard Owlett" <rowlett@atlascomm.net> wrote in message
news:114qb4pk0hi8g6e@corp.supernews.com...
> > Discussion indicates noise/echo cancellation is impractical in the > general case. > > However the problem includes only two known "speakers". > On the surface it would appear that a speaker identification routine > gating the voice recognition function might work. > > I'm guessing that the robot's voice is "very robotic". I found pictures > of the robot but no sound files. > > I know little DSP and less speaker recognition. >
Richard, Yes I considered that. It's one of the things I'm experimenting with now. Thanks, Robert
Reply by Robert Oschler April 1, 20052005-04-01
"Jitendra Rayala" <jrayala@hotmail.com> wrote in message
news:1112379164.057139.11400@f14g2000cwb.googlegroups.com...
> Hi Robert, > > The following site contains code and an application note on > implementation of an EC. You could probably put together one for your > application based on this. > >
http://www.isip.msstate.edu/projects/speech/software/legacy/fir_echo_canceller/
> > Jitendra >
Jitendra, Thanks! I'll take a look. Robert
Reply by Jitendra Rayala April 1, 20052005-04-01
Hi Robert,

The following site contains code and an application note on
implementation of an EC. You could probably put together one for your
application based on this.

http://www.isip.msstate.edu/projects/speech/software/legacy/fir_echo_canceller/

Jitendra

Reply by Richard Owlett April 1, 20052005-04-01
Robert Oschler wrote:
 > [snip]
 >
 > The Robosapien robot is a very loud robot which, using the average
 > speech detection/silence detection algorithms, will trigger a lot of
 > "false" recognition activity on the microphone; even on a decent
 > headset microphone. At about 3 feet away he still pumps out healthy
 > 60+ decibels of sound which left unchecked, triggers the microphone
 > frequently and subsequently generating false recognition results.
 >
 > I managed to do a very effective job at eliminating the problem using
 > some tricky volume thresholding, but in the future I'd like to go a
 > step further and use echo cancellation techniques to remove the
 > robot's "voice".
 > [snip]

Discussion indicates noise/echo cancellation is impractical in the 
general case.

However the problem includes only two known "speakers".
On the surface it would appear that a speaker identification routine 
gating the voice recognition function might work.

I'm guessing that the robot's voice is "very robotic". I found pictures 
of the robot but no sound files.

I know little DSP and less speaker recognition.



Reply by Jon Harris March 31, 20052005-03-31
"Robert Oschler" <no-mail-please@nospam.com> wrote in message 
news:H7OdnQRFQPPpNtHfRVn-3A@adelphia.com...
> > "Jon Harris" <goldentully@hotmail.com> wrote in message > news:3b35buF6dtkm0U1@individual.net... >> "Jon Harris" <goldentully@hotmail.com> wrote in message >> news:3b354nF6edbojU1@individual.net... >> >> I should add, a better commercial example of what you want to do are the > echo >> canceling systems used commonly in teleconferencing. They solve the > problem you >> have, and do it in software (often with dedicated DSPs). However, even > with >> these, usually at least the loudspeakers are fixed and often the > microphones are >> fixed as well. But I would think a good fast-adapting echo canceller > might be >> able to give you at least some attenuation of the robot's voice. > > Jon, > > Got any sources for any open source code I could try? I'm more than > willing to bang away at it. If not code, perhaps a really simplified > article with pseudo-code?
Sorry, I don't know of any source code. But there are many articles out there on the subject that a Google search should turn up. Here's an introductory one: http://www.spiritdsp.com/pdf/article_4.pdf There are various algorithms for AEC, including time and frequency domain. Once you get your brain around the different algorithms, maybe then you can try to find some more specifics.
Reply by Robert Oschler March 31, 20052005-03-31
"Andrew Reilly" <andrew-newspost@areilly.bpc-users.org> wrote in message
news:pan.2005.03.31.05.29.14.618874@areilly.bpc-users.org...
> On Wed, 30 Mar 2005 23:27:19 -0500, Robert Oschler wrote: > > > > > "Andrew Reilly" <andrew-newspost@areilly.bpc-users.org> wrote in message > > news:pan.2005.03.31.02.50.46.240286@areilly.bpc-users.org... > > > You almost certainly won't be able to do echo cancellation of the sort > that you're after with software on a PC: the minimum A/D + > buffer/compute + D/A latency is such that you can't even think about > generating an anti-signal in time for it to cancel the original, even if > you could nail down the movement and other physics-related problems. > You'll find that most echo cancellation systems (headphones, microphones) > of the sort that you've mentioned are analog, mainly for this reason. > It's possible to do echo cancellation in the digital domain (provided you > can make the physics nice) if you can make the acceptable lag from the > output, and the acoustic echo path length significantly longer than that > minimum processing latency. It's not clear from what you've described of > your system that this can be done, but I don't know for sure. Perhaps my > mental image of what you're trying to achieve isn't right... > > Cheers, > > -- > Andrew >
Andrew, I would think I have the computing resources to pull it off, but remember, I'm a DSP ultra-novice. Although the signal is in real-time in that it is the user talking into a microphone, the "listener" is a speech recogntion engine not another person. I can therefore buffer as much audio signal as I like for analysis purposes before sending it to the speech recognition engine. Obviously I'd like to keep it down to about 1/3 to 1/2 a second of additional buffering. Otherwise the response time of the "speech to recognized text" cycle will start feeling sluggish to the user. Thanks, Robert
Reply by Robert Oschler March 31, 20052005-03-31
"Jon Harris" <goldentully@hotmail.com> wrote in message
news:3b35buF6dtkm0U1@individual.net...
> "Jon Harris" <goldentully@hotmail.com> wrote in message > news:3b354nF6edbojU1@individual.net... > > I should add, a better commercial example of what you want to do are the
echo
> canceling systems used commonly in teleconferencing. They solve the
problem you
> have, and do it in software (often with dedicated DSPs). However, even
with
> these, usually at least the loudspeakers are fixed and often the
microphones are
> fixed as well. But I would think a good fast-adapting echo canceller
might be
> able to give you at least some attenuation of the robot's voice. > >
Jon, Got any sources for any open source code I could try? I'm more than willing to bang away at it. If not code, perhaps a really simplified article with pseudo-code? Thanks, Robert
Reply by Andrew Reilly March 31, 20052005-03-31
On Thu, 31 Mar 2005 12:38:26 -0800, Jon Harris wrote:

> "Jon Harris" <goldentully@hotmail.com> wrote in message > news:3b354nF6edbojU1@individual.net... >> "Robert Oschler" <no-mail-please@nospam.com> wrote in message >> news:gtWdnRzZFt9wxdbfRVn-jQ@adelphia.com... >> > >> > "Jerry Avins" <jya@ieee.org> wrote in message >> > news:5r2dnSKXY6nKrdbfRVn-pw@rcn.net... >> > > >> > > What makes you think it's easy? Imagine a robot swimmer in a pool. Since >> > > you programmed it, you know its every move. In theory, you could >> > > generate antiwaves that would create calm water wherever you want it. Of >> > > course, you would need to account for reflection and diffraction from >> > > the sides and objects in the pool. >> > > >> > >> > After seeing so many noise cancelling microphones advertised, and headphones >> > like those that kill in-flight noise for airline passengers, If figured >> > wrongly that it had become a known art. >> >> As others have pointed out, those 2 examples are much different (and simpler) >> than the problem you are trying to tackle, plus they are generally implemented >> in (often analog) hardware, not software. > > I should add, a better commercial example of what you want to do are the echo > canceling systems used commonly in teleconferencing. They solve the problem you > have, and do it in software (often with dedicated DSPs). However, even with > these, usually at least the loudspeakers are fixed and often the microphones are > fixed as well. But I would think a good fast-adapting echo canceller might be > able to give you at least some attenuation of the robot's voice.
Actually, I really recommend that anyone who's interested just go ahead and build one. It's a very simple exercise if you've got a microphone and a DSP evaluation board of just about any sort. You get a really cool "chirping" sort of sound as you move the microphone through the sound field, and the echo response fails to line up with real life. Quite captivating and musical, the time I tried it. (That was with a simple, sample-at-a-time LMS update algorithm, rather than a faster, block-update scheme. I suspect that a block-update adapter might work better as a canceler, but not sound as nice. By keeping the in-out delay low, and gating the impulse response carefully, you can get some very odd effects, too. Like canceling the body reverb. out of a piano or guitar recording. Plunk. Neat :-) Cheers, -- Andrew