>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
> 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.
>
>
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