Alicebot to control device

View: New views
20 Messages — Rating Filter:   Alert me  

Alicebot to control device

by Ariyo Nugroho :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello everyone!

I am an electronics engineering student from Indonesia. For my final
project, I have an idea to use Alicebot to control devices (using PLC
or microcontroller). I think this would be more fun, instead of
controlling them using 'conservative' switches.

I haven't developed the device yet. Because now I'm still learning
AIML, using Program D.

My questions are:
1. I see that Alice recognizes inactivity. But could Alice be
programmed to be 'proactive'? I mean, supposed we have thermal sensor,
with a critical temperature has been set. Whenever the temperature is
too hot, system sends a signal. Based on this signal, Alice will
shout, "Hey, your device is gonna blow! Do something!"
    Could this be possible?
2. I dont know whether this is do-able within my time frame, but I'm
also interested to implement speech-to-text and text-to-speech. I've
read AliceTalker from Cloud Garden, which says that it is suitable for
Program D. But it last release seems too old. Does anyone here have
any experience using AliceTalker? Or may be there is better/newer
solution for this?

Thank you very much for your help in advance!!!

Best regards,



Ariyo
_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Steve Prior :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ariyo Nugroho wrote:

> Hello everyone!
>
> I am an electronics engineering student from Indonesia. For my final
> project, I have an idea to use Alicebot to control devices (using PLC
> or microcontroller). I think this would be more fun, instead of
> controlling them using 'conservative' switches.
>
> I haven't developed the device yet. Because now I'm still learning
> AIML, using Program D.
>
> My questions are:
> 1. I see that Alice recognizes inactivity. But could Alice be
> programmed to be 'proactive'? I mean, supposed we have thermal sensor,
> with a critical temperature has been set. Whenever the temperature is
> too hot, system sends a signal. Based on this signal, Alice will
> shout, "Hey, your device is gonna blow! Do something!"
>     Could this be possible?
> 2. I dont know whether this is do-able within my time frame, but I'm
> also interested to implement speech-to-text and text-to-speech. I've
> read AliceTalker from Cloud Garden, which says that it is suitable for
> Program D. But it last release seems too old. Does anyone here have
> any experience using AliceTalker? Or may be there is better/newer
> solution for this?

I was thinking about the same sort of problem, then realized there was an easier
solution.  I've got a home automation system and wanted to be able to control it
using a chat style interface and thought Alicebot would be a great addition.

What I ended up doing was to write my own limited natural language interface
that was capable of handling queries and controls for the HA system (I wrote it
in SWI-Prolog), but if my own system couldn't parse the input I then passed it
to Alicebot through the HTTP interface for a response.  This is kind of a cheat,
but it provides a depth to the interface even though in effect Alicebot is only
providing cute error messages - some of the responses have surprised me at times.

So your device could send out that "device is gonna blow" message on its own and
Alicebot would only be involved when there was an input from the user.

Steve

_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Gary Dubuque :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

It's been awhile, but here goes the advertisement: try AIMLpad, AKA Program
N, if you can stand using the MS Windows environment.

Background inputs can be received through the local web server to update the
common store used by the predicates.  But also the regular bot inputs can
time out and force a given text input to the bot to check on the status of
the environment.

AIMLpad interfaces with the operating system, so any .exe can be used to
acquire the sensor data which can be read from plain text files by the
AIMLpad scripting commands into the AIML predicates. It can also post
requests to websites to acquire the data (such as the outside temperature
from a weather service website.)

The editor also has the MS Agent to express the warnings.  It can use
speech-to-text products as well as it already takes advantage of the MS
speech interfaces to produce text-to-speech output.  The speaking can be
either by demand of the scripting commands or by the response delivered
through the AIML processing.

Also, it can popup message boxes outside the conversation to provide special
dialogues about the operating environment.  Again these could be real-time
based upon the messages it received through the background web requests.

In other words, AIMLpad is not only a user interface; it is a server that
can coordinate operating system commands and sequencing of events using its
timeouts as heartbeats.

It's just another possibility for a small laptop controlling a robot.

Thanks,
  Gary Dubuque

-----Original Message-----
From: alicebot-developer-bounces@...
[mailto:alicebot-developer-bounces@...] On Behalf Of Steve
Prior
Sent: Sunday, May 25, 2008 6:43 AM
To: Alicebot Developer Discussion
Subject: Re: [alicebot-developer] Alicebot to control device

Ariyo Nugroho wrote:

> Hello everyone!
>
> I am an electronics engineering student from Indonesia. For my final
> project, I have an idea to use Alicebot to control devices (using PLC
> or microcontroller). I think this would be more fun, instead of
> controlling them using 'conservative' switches.
>
> I haven't developed the device yet. Because now I'm still learning
> AIML, using Program D.
>
> My questions are:
> 1. I see that Alice recognizes inactivity. But could Alice be
> programmed to be 'proactive'? I mean, supposed we have thermal sensor,
> with a critical temperature has been set. Whenever the temperature is
> too hot, system sends a signal. Based on this signal, Alice will
> shout, "Hey, your device is gonna blow! Do something!"
>     Could this be possible?
> 2. I dont know whether this is do-able within my time frame, but I'm
> also interested to implement speech-to-text and text-to-speech. I've
> read AliceTalker from Cloud Garden, which says that it is suitable for
> Program D. But it last release seems too old. Does anyone here have
> any experience using AliceTalker? Or may be there is better/newer
> solution for this?

I was thinking about the same sort of problem, then realized there was an
easier
solution.  I've got a home automation system and wanted to be able to
control it
using a chat style interface and thought Alicebot would be a great addition.

What I ended up doing was to write my own limited natural language interface

that was capable of handling queries and controls for the HA system (I wrote
it
in SWI-Prolog), but if my own system couldn't parse the input I then passed
it
to Alicebot through the HTTP interface for a response.  This is kind of a
cheat,
but it provides a depth to the interface even though in effect Alicebot is
only
providing cute error messages - some of the responses have surprised me at
times.

So your device could send out that "device is gonna blow" message on its own
and
Alicebot would only be involved when there was an input from the user.

Steve

_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer


_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Ariyo Nugroho :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello Mr Steve

Glad that there is someone who is doing the same thing there :)

Your idea of 'cheating' ALICE was great. I just realized that actually
ALICE is not conscious, right? She is not truly 'understanding' what
she said. So it doesn't matter if the warning message sent while she
doesn't notice it. The more important thing here is: the user received
the warning message.

Mr Gary's idea for sending message to the bot on periodic time is also
interesting. But i think it would add a little load to the system.
Especially if the period is short.

That's just my opinion :)

Regards,


Ariyo



2008/5/25, Steve Prior <sprior@...>:

> I was thinking about the same sort of problem, then realized there was an
> easier
> solution.  I've got a home automation system and wanted to be able to
> control it
> using a chat style interface and thought Alicebot would be a great addition.
>
> What I ended up doing was to write my own limited natural language interface
> that was capable of handling queries and controls for the HA system (I wrote
> it
> in SWI-Prolog), but if my own system couldn't parse the input I then passed
> it
> to Alicebot through the HTTP interface for a response.  This is kind of a
> cheat,
> but it provides a depth to the interface even though in effect Alicebot is
> only
> providing cute error messages - some of the responses have surprised me at
> times.
>
> So your device could send out that "device is gonna blow" message on its own
> and
> Alicebot would only be involved when there was an input from the user.
>
> Steve
_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Ariyo Nugroho :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello Mr Gary

What do you mean by 'local' web server? Do you mean there is another
web server, e.g remote web server? I'm sorry that I'm still a newbie
here. There are still some terms i dont understand. I'll be learning
that :)

I tried to download AIMLpad last night, but apparently sourceforge was
undergoing maintenance. I'll try again later.

Thanks for your suggestion :)

Regards,


Ariyo

2008/5/27, Gary Dubuque <gdubuque@...>:
> Hi,
>
> It's been awhile, but here goes the advertisement: try AIMLpad, AKA Program
> N, if you can stand using the MS Windows environment.
>
_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Steve Prior :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message



Ariyo Nugroho wrote:
> Hello Mr Steve
>
> Glad that there is someone who is doing the same thing there :)
>
> Your idea of 'cheating' ALICE was great. I just realized that actually
> ALICE is not conscious, right? She is not truly 'understanding' what
> she said. So it doesn't matter if the warning message sent while she
> doesn't notice it. The more important thing here is: the user received
> the warning message.

My system as a bunch of layers and services.  Some requests wait for a response
(like chat input), but most are asynch notifications or commands (avoids
deadlock).  My system has a bunch of different interfaces - web page based
"chat" style where each input from the user gets one  response, and other
interfaces which are asynchronous (including voice synthesis through Microsoft
agents on Windows boxes as well as via text to speech on a Linux based PBX
system).  Inputs to the system include natural language for chat as well as
canned queries in response to device events.  For inputs which require actions
in my system or queries of real time data the Prolog engine handles the
response.  For inputs for static information the AliceBot engine can provide the
answer.  Another trick I use is to carry context in the Prolog engine - for
example if you ask for a light to be turned on I keep the location of that light
as the current context.  So then if you ask to see a picture and don't specify a
location it assumes the location of the last action you took.  For example:

"what's the forecast?"

<today's forecast>

"how about tomorrow?"

<tomorrow's forecast>

"Wednesday?"

<wednesdays forecast>

"is it raining?"

<response gathered from rain gauge on roof>

"show me"

<shows a picture from outside - where the weather is>

"turn off the living room lights"

<the living room lights are now off.>

"show me"

<shows a picture of the living room>



But when the front door is opened and the "brain" gets notification of that
event, it sends an asynch message to the living room computer to tell the MS
Agent character to say "front door open!"



Steve

_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Ariyo Nugroho :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Wow... Your home must be very sophisticated, Steve! I'm imagining that
it's like of Richie Rich's home :)

By the way, I dont understand when you said "Another trick I use is to
carry context in the Prolog engine".

What do you mean by "context" here? It is a kind of using <topic> tag?

Regards,


Ariyo
_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by 8pla.net :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ariyo Nugroho

Well the voice synthesis of SAPI5 or SAPI4 text-to-speech
is far less than production quality.  In short, it sounds very
disappointing.  Maybe it is good for learning the basics, but
don't stop there.

There is one SAPI5 VB sample code that uses pre-recorded
words, that is quite limited, but at least sounds excellent.


Ariyo Nugroho wrote:
Hello everyone!

I am an electronics engineering student from Indonesia. For my final
project, I have an idea to use Alicebot to control devices (using PLC
or microcontroller). I think this would be more fun, instead of
controlling them using 'conservative' switches.

I haven't developed the device yet. Because now I'm still learning
AIML, using Program D.

My questions are:
1. I see that Alice recognizes inactivity. But could Alice be
programmed to be 'proactive'? I mean, supposed we have thermal sensor,
with a critical temperature has been set. Whenever the temperature is
too hot, system sends a signal. Based on this signal, Alice will
shout, "Hey, your device is gonna blow! Do something!"
    Could this be possible?
2. I dont know whether this is do-able within my time frame, but I'm
also interested to implement speech-to-text and text-to-speech. I've
read AliceTalker from Cloud Garden, which says that it is suitable for
Program D. But it last release seems too old. Does anyone here have
any experience using AliceTalker? Or may be there is better/newer
solution for this?

Thank you very much for your help in advance!!!

Best regards,



Ariyo
_______________________________________________
alicebot-developer mailing list
alicebot-developer@list.alicebot.org
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Steve Prior :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ariyo Nugroho wrote:
> Wow... Your home must be very sophisticated, Steve! I'm imagining that
> it's like of Richie Rich's home :)

I'm having fun.  Actually just moved into a new house 2 months ago so now I'm
planning how to do it all over again.

>
> By the way, I dont understand when you said "Another trick I use is to
> carry context in the Prolog engine".

This is why I'm maybe getting a little off topic for an alicebot mailing list.
My system isn't controlled by alicebot, but simply uses it as part of a larger
system.  When you type an input sentence into the chat interface it is submitted
to the central "brain" I wrote in the Prolog language (SWI Prolog to be exact).
   The brain has a small natural language parser which is sufficient to handle
input sentences which are specific to queries and actions possible for the rest
of my system.  "turn on the living room lights." is an action that can be
performed through my X10 device interface which I've written for Prolog.  Only
if my Prolog code can't parse an input sentence itself does it pass it through
to alicebot and then return that response.  The context which I was referring to
is entirely in Prolog and is handled by an assert() and can be queried by future
handlers.  For example if I say "turn on the outside lights" the Prolog engine
will understand "outside" as a location, then discover the X10 devices which are
outside from the SQL database, then turn them on, but it will also
assert(current_location(outside)).  Then if I follow up with simply "show me",
the Prolog handler for that will query current_location(Location) and then use
that Location to determine which computer controls the camera for that location,
ask that computer for a frame grab, then return it.  BTW, in case you picked
that up, my system is fully distributed using CORBA between VB6, Java and C++
code (the C++ code provides a 2 way interface with Prolog).  Part of the VB6
code serves up a Microsoft Agent so for example the Prolog engine can request
that any of the Windows boxes use their MS Agents to speak something, or
otherwise control the agent (show, hide, move, whatever).  I got bored one night
a few years ago and had Peedy on 3 different computers saying/singing "row row
row your boat" in a round all controlled from the Prolog engine - only took
about 15 minutes to write on top of what was there.  Since everything can talk
to any of the CORBA services, I can mix and match and use multiple user
interfaces - the web based chat uses exactly the same chat interface to Prolog
that the VB6 chat interface uses.  And when I give a voice command through the
PBX system, the Java code which I've got controlling the call also uses that
same core natural language engine via the CORBA service.

So back to the question, the context currently stays in the Prolog engine and
doesn't get down to alicebot, but if I wanted to give it a bit more of a clue
I'd simply pass all input to alicebot even if the Prolog engine gave the actual
response - that way alicebot would still be able to gather any context it could
from the conversation.

Steve

>
> What do you mean by "context" here? It is a kind of using <topic> tag?
>
> Regards,
>
>
> Ariyo

_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Henrique Borges-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I´ve seen similar implementations using the alicebot as the NL (natural language) parser.
 
In this implementation, all input is sent to the bot, which in turns send "commands" (maybe normalized sentences, after applying srai s and substitutions) to a "processing core". Have you considered this alternative, Ariyo? If so (and I believe you did consider) why you prefered to use a prolog parser?
 
On Tue, Jun 3, 2008 at 12:43 AM, Steve Prior <sprior@...> wrote:
Ariyo Nugroho wrote:
> Wow... Your home must be very sophisticated, Steve! I'm imagining that
> it's like of Richie Rich's home :)

I'm having fun.  Actually just moved into a new house 2 months ago so now I'm
planning how to do it all over again.

>
> By the way, I dont understand when you said "Another trick I use is to
> carry context in the Prolog engine".

This is why I'm maybe getting a little off topic for an alicebot mailing list.
My system isn't controlled by alicebot, but simply uses it as part of a larger
system.  When you type an input sentence into the chat interface it is submitted
to the central "brain" I wrote in the Prolog language (SWI Prolog to be exact).
  The brain has a small natural language parser which is sufficient to handle
input sentences which are specific to queries and actions possible for the rest
of my system.  "turn on the living room lights." is an action that can be
performed through my X10 device interface which I've written for Prolog.  Only
if my Prolog code can't parse an input sentence itself does it pass it through
to alicebot and then return that response.  The context which I was referring to
is entirely in Prolog and is handled by an assert() and can be queried by future
handlers.  For example if I say "turn on the outside lights" the Prolog engine
will understand "outside" as a location, then discover the X10 devices which are
outside from the SQL database, then turn them on, but it will also
assert(current_location(outside)).  Then if I follow up with simply "show me",
the Prolog handler for that will query current_location(Location) and then use
that Location to determine which computer controls the camera for that location,
ask that computer for a frame grab, then return it.  BTW, in case you picked
that up, my system is fully distributed using CORBA between VB6, Java and C++
code (the C++ code provides a 2 way interface with Prolog).  Part of the VB6
code serves up a Microsoft Agent so for example the Prolog engine can request
that any of the Windows boxes use their MS Agents to speak something, or
otherwise control the agent (show, hide, move, whatever).  I got bored one night
a few years ago and had Peedy on 3 different computers saying/singing "row row
row your boat" in a round all controlled from the Prolog engine - only took
about 15 minutes to write on top of what was there.  Since everything can talk
to any of the CORBA services, I can mix and match and use multiple user
interfaces - the web based chat uses exactly the same chat interface to Prolog
that the VB6 chat interface uses.  And when I give a voice command through the
PBX system, the Java code which I've got controlling the call also uses that
same core natural language engine via the CORBA service.

So back to the question, the context currently stays in the Prolog engine and
doesn't get down to alicebot, but if I wanted to give it a bit more of a clue
I'd simply pass all input to alicebot even if the Prolog engine gave the actual
response - that way alicebot would still be able to gather any context it could
from the conversation.

Steve

>
> What do you mean by "context" here? It is a kind of using <topic> tag?
>
> Regards,
>
>
> Ariyo

_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer



--
Henrique Borges
FAST - Soluções Tecnológicas
www.fastsolucoes.com.br
_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Henrique Borges-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Sorry. I wrote "Ariyo". I should have written "Steve".

On Tue, Jun 3, 2008 at 1:25 PM, Henrique Borges <henriqueborges@...> wrote:
I´ve seen similar implementations using the alicebot as the NL (natural language) parser.
 
In this implementation, all input is sent to the bot, which in turns send "commands" (maybe normalized sentences, after applying srai s and substitutions) to a "processing core". Have you considered this alternative, Ariyo? If so (and I believe you did consider) why you prefered to use a prolog parser?
 
On Tue, Jun 3, 2008 at 12:43 AM, Steve Prior <sprior@...> wrote:
Ariyo Nugroho wrote:
> Wow... Your home must be very sophisticated, Steve! I'm imagining that
> it's like of Richie Rich's home :)

I'm having fun.  Actually just moved into a new house 2 months ago so now I'm
planning how to do it all over again.

>
> By the way, I dont understand when you said "Another trick I use is to
> carry context in the Prolog engine".

This is why I'm maybe getting a little off topic for an alicebot mailing list.
My system isn't controlled by alicebot, but simply uses it as part of a larger
system.  When you type an input sentence into the chat interface it is submitted
to the central "brain" I wrote in the Prolog language (SWI Prolog to be exact).
  The brain has a small natural language parser which is sufficient to handle
input sentences which are specific to queries and actions possible for the rest
of my system.  "turn on the living room lights." is an action that can be
performed through my X10 device interface which I've written for Prolog.  Only
if my Prolog code can't parse an input sentence itself does it pass it through
to alicebot and then return that response.  The context which I was referring to
is entirely in Prolog and is handled by an assert() and can be queried by future
handlers.  For example if I say "turn on the outside lights" the Prolog engine
will understand "outside" as a location, then discover the X10 devices which are
outside from the SQL database, then turn them on, but it will also
assert(current_location(outside)).  Then if I follow up with simply "show me",
the Prolog handler for that will query current_location(Location) and then use
that Location to determine which computer controls the camera for that location,
ask that computer for a frame grab, then return it.  BTW, in case you picked
that up, my system is fully distributed using CORBA between VB6, Java and C++
code (the C++ code provides a 2 way interface with Prolog).  Part of the VB6
code serves up a Microsoft Agent so for example the Prolog engine can request
that any of the Windows boxes use their MS Agents to speak something, or
otherwise control the agent (show, hide, move, whatever).  I got bored one night
a few years ago and had Peedy on 3 different computers saying/singing "row row
row your boat" in a round all controlled from the Prolog engine - only took
about 15 minutes to write on top of what was there.  Since everything can talk
to any of the CORBA services, I can mix and match and use multiple user
interfaces - the web based chat uses exactly the same chat interface to Prolog
that the VB6 chat interface uses.  And when I give a voice command through the
PBX system, the Java code which I've got controlling the call also uses that
same core natural language engine via the CORBA service.

So back to the question, the context currently stays in the Prolog engine and
doesn't get down to alicebot, but if I wanted to give it a bit more of a clue
I'd simply pass all input to alicebot even if the Prolog engine gave the actual
response - that way alicebot would still be able to gather any context it could
from the conversation.

Steve

>
> What do you mean by "context" here? It is a kind of using <topic> tag?
>
> Regards,
>
>
> Ariyo

_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer



--
Henrique Borges
FAST - Soluções Tecnológicas
www.fastsolucoes.com.br



--
Henrique Borges
FAST - Soluções Tecnológicas
www.fastsolucoes.com.br
_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Steve Prior :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Quoting Henrique Borges <henriqueborges@...>:

> > I´ve seen similar implementations using the alicebot as the NL (natural
> > language) parser.
> >
> > In this implementation, all input is sent to the bot, which in turns send
> > "commands" (maybe normalized sentences, after applying srai s and
> > substitutions) to a "processing core". Have you considered this
> alternative,
> > Ariyo? If so (and I believe you did consider) why you prefered to use a
> > prolog parser?


My initial goal didn't start with natural language processing at all, it was
designing an "intelligent" central control system for a home automation system.
 That Prolog engine doesn't just handle the natural language inputs to the
system, it decides how to respond to ALL events the system encounters - motion
detected, X10 events, door sensors, whatever.  I thought a rule based language
like Prolog would be a pretty natural fit for this type of project, and I'm
happy with the results.  Natural language ended up being one of the user
interfaces, but certainly not the only one.  Simply opening the front door of
the house became part of the user interface - if it was dark outside the system
would turn on the outside lights for you.  If there was motion detected at the
garage, the Prolog engine would request a snapshot from the computer
controlling that camera, hand that image off to a storage database for review,
send that image to another computer which would use it as the new desktop
background, and then request that a MS Agent would announce "Garage Motion!" -
BTW, that last part backfired on me a little when my 2 year old son started
imitating the MS Agent - not good when Peedy teaches you how to talk :-)

Steve

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Ariyo Nugroho :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

You are right, that is the same with what I had in mind.

I created some categories like these:

<category>
<pattern>DEVICEON</pattern>
<template><system>deviceon.exe</system> I'm up and running now
</template></category>

<category>
<pattern>_ TURN ON DEVICE</pattern>
<template><srai>DEVICEON</srai>
</template></category>

<category>
<pattern>TURN * ON</pattern>
<template><srai>DEVICEON</srai>
</template></category>

<category>
<pattern>START DEVICE</pattern>
<template><srai>DEVICEON</srai>
</template></category>

and so on... So, it would be possible to control devices using
(relatively) flexible commands.


2008/6/3, Henrique Borges <henriqueborges@...>:
> I´ve seen similar implementations using the alicebot as the NL (natural
> language) parser.
>
> In this implementation, all input is sent to the bot, which in turns send
> "commands" (maybe normalized sentences, after applying srai s and
> substitutions) to a "processing core". Have you considered this alternative,
> Ariyo? If so (and I believe you did consider) why you prefered to use a
> prolog parser?
>
_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Ariyo Nugroho :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ah... apparently Henrique's email is for you, Steve. I'm sorry I took
your place :D

2008/6/4, Steve Prior <sprior@...>:
> Quoting Henrique Borges <henriqueborges@...>:
>
>> > I´ve seen similar implementations using the alicebot as the NL (natural
>> > language) parser.
>> >
>
>
...
>
> Steve
>
_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Steve Prior :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ariyo Nugroho wrote:
> Ah... apparently Henrique's email is for you, Steve. I'm sorry I took
> your place :D

That's OK, your answer is more on the alicebot topic anyway.  I'm curious to see
where this goes.

Steve

_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Josip Almasi :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ariyo Nugroho wrote:
>
> My questions are:
> 1. I see that Alice recognizes inactivity. But could Alice be
> programmed to be 'proactive'? I mean, supposed we have thermal sensor,
> with a critical temperature has been set. Whenever the temperature is
> too hot, system sends a signal. Based on this signal, Alice will
> shout, "Hey, your device is gonna blow! Do something!"
>     Could this be possible?

Sure.
You just need some piece of code to send some singal to your bot.
Say, endless loop that reads the device and sends 'TEMPERATURE
something' to the bot, then implement TEMPERATURE tag in AIML.
Details depend on what AIML interpreter you use.

> 2. I dont know whether this is do-able within my time frame, but I'm
> also interested to implement speech-to-text and text-to-speech. I've
> read AliceTalker from Cloud Garden, which says that it is suitable for
> Program D. But it last release seems too old. Does anyone here have
> any experience using AliceTalker? Or may be there is better/newer
> solution for this?

Well I didn't use AliceTalker but did integrate CloudGarden's JSAPI with
ProgramD a while ago. Like, 5 years ago, so anything I say may be badly
obsolete:)
In short - text to speech worked just well, and speech to text was
disaster. However, it is possible, in fact it's rather easy, to make a
few commands that ALICE understands without trouble. Though it may take
a while to ensure commands sound distinct. I.e. DEVICE ON and DEVICE OFF
may sound simillar depending on tons of factor including your microphone
and your way of pronouncement:) Well anyway, to achieve this you will
need a grammar file. Here's one attached, HTH. As you may see, that's
rather complex syntax, and I don't remember it anymore... but I do
remember I made ALICE respond to laughter;)

Regards...

/**

AliceBot speech grammar.
Based on examples provided with CloudGarden Speech API, http://www.cloudgarden.com/

*/

#JSGF V1.0;

grammar org.vrspace.alice;

//Demonstrate gating - when <gate> is <NULL>, it is ignored in sequence,
//but when <gate> is <VOID> it voids whole sequence.
/*
<gate> = <NULL>;
public <test1> = hello <gate> there;

<gate> = <VOID>;
public <test2> = hello <gate> there;

//Equivalent to <test3> = [hello | there];
public <test3> = hello | <NULL> | there;

//<VOID> ignored in RuleAlternate
public <test4> = good morning (hello | <VOID> | there);

//Right-recursion, equivalent to <test5> = there*;
//though saved internally as <test5> = [there <test5>];
//ViaVoice engine doesn't accept this rule, but Microsoft engine does.
//public <test5> = <NULL> | there <test5>;

public <test6> = twenty {2} (<NULL> {0} | one {1}) bananas;
public <test7> = twenty {2} (<NULL> {0} | one {1});

*/

//This rule should throw an error
//public <test8> = twenty {2} (<NULL> {0} | one {1} | <NULL> {error}) bananas;

/**
// this allways produces recursive error on my box (JOE)
<units> = one | two | three | four | five | six | seven | eight | nine;
<teens> = eleven | twelve | thirteen | fourteen | fifteen |
        sixteen | seventeen | eighteen | nineteen;
<tens> = ten | twenty | thirty | forty | fifty | sixty | seventy |
        eighty | ninety;
<hundreds> = <units> hundred;

public <number> = <hundreds> | <tens> | <teens> | <units> |
        (<hundreds> [and] <tens>) |
        (<hundreds> [and] <teens>) |
        (<hundreds> [and] <units>) |
        (<tens> [and] <units>) |
        (<hundreds> [and] <tens> [and] <units>);

*/
 
//eg "start and pause and resume and finish"
public <recursive_command> = <action1> ( and <action1>)*;
        <action1> = stop | start | pause | resume | finish;

/*
Note that any command which references itself, such as ...

public <recursive_command> = <action1> | (<action1> and <recursive_command>);

...won't work for ViaVoice engines, and instead you should use the form above...

public <recursive_command> = <action1> ( and <action1>)*;

*/

//"I'd like twenty five carrots some bananas and two hundred and five oranges"
//Also demonstrates use of tags.
/* and also no work cuz numbers no work
public <shopping> = I'd like {LIKE} <list>;
        <amount> = [some] {SOME} | <number> {NUMBER};
        <list> = <produce> (and {AND} <produce>)*;
        <produce> = <amount> (carrots {CAR} | oranges {ORA} | bananas {BAN});

*/

//this may not work for SAPI4 engines
public <getname> = hello my name is <DICTATION>;

//public <greeting> = <hello> <name>* | top of the morning to you;
public <greeting> = <hello> <name>;

//public <spacetest> = test {tag with spaces};

<hello> = (hi|hello [there]) | ([good] (morning|evening|day) [to you]);

<name> = John {JON} | Sally {SAL} | Sam {SAM} | Joan {JOAN} |
         Joe {JOE} | Rob {ROB} | Eddie {EDDIE} |
         Alice {ALICE} | James {JAMES} | Tomcat {TOMCAT};

//eg "please close the window" or "open the bottle please"
/*
public <request> = [<polite>] <action2> <object> [<polite>];
        <action2> = open {OP} | close {CL} | move {MV};
    <object> = <this_that_etc> (window | door | <DICTATION>);
        <this_that_etc> = this | that | the | a ;
    <polite> = please | kindly;
*/

public <polite> = please | kindly | would you please;

public <request> = [<allow>|<polite>] <command> [<polite>] [<timeoption>];
  <allow> = you (can|may);
  <command> = follow me {FOLLOW} | stop {STOP} |
              [move|turn] left {LEFT} | [move|turn] right {RIGHT} | [move|turn] back {BACK} |
              [move|go] north {NORTH} | [move|go] south {SOUTH} | [move|go] east {EAST} | [move|go] west {WEST} |
              zoom (in|out) {ZOOM} | (shutup|silence) {SHUTUP} | (talk|speak) {TALK};
  <timeoption> = now|again;
 
public <sequence_test> = (how | what) (are) (we | you) [doing | feeling] [today];

public <laughter> = <laugh> <laugh> (<laugh>)*;
  <laugh> = har | ho | hoo | hee | he | ha;

public <whatisthis> = what is (it|this|that) [ place | space | software | VRObject | User | Gate | Client | Transform ];

public <help> = [<polite>] [can you|I need] help [me] [<polite>];

public <goodbye> = ([good] bye) | (so long) | ((see|talk to) you later);

public <test> = [this is [just] [a]]test;

public <pasmater> = yebemtee [mother] | pasmater | eed u [kuratz|keetu];

public <goodgirl> = [very] (good [girl]| nice | allright | cool);

_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Ariyo Nugroho :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello Josip

Thank you for your suggestions. But now I'm working with AIMLpad as
suggested by Gary Dubuque.

You're right that speech-to-text was 'disaster'. I'm using Dragon
Naturally Speaking. But I have to tell the truth: the problem is not
merely about the software. It is my accent! :D It doesn't recognize
when I say DEVICE ON, DEVICE OFF, READ TEMPERATURE, etc. The only
think it understands well is GO TO SLEEP :( <sniff>

Some suggest that I should by a better microphone. I'll find one
later. For the next days I'll be focusing on the device.

By the way, nice to hear that you made ALICE respond to laughter :)


2008/7/1, Josip Almasi <joe@...>:

>
> Sure.
> You just need some piece of code to send some singal to your bot.
> Say, endless loop that reads the device and sends 'TEMPERATURE
> something' to the bot, then implement TEMPERATURE tag in AIML.
> Details depend on what AIML interpreter you use.
>
>
> Well I didn't use AliceTalker but did integrate CloudGarden's JSAPI with
> ProgramD a while ago. Like, 5 years ago, so anything I say may be badly
> obsolete:)
> In short - text to speech worked just well, and speech to text was
> disaster. However, it is possible, in fact it's rather easy, to make a
> few commands that ALICE understands without trouble. Though it may take
> a while to ensure commands sound distinct. I.e. DEVICE ON and DEVICE OFF
> may sound simillar depending on tons of factor including your microphone
> and your way of pronouncement:) Well anyway, to achieve this you will
> need a grammar file. Here's one attached, HTH. As you may see, that's
> rather complex syntax, and I don't remember it anymore... but I do
> remember I made ALICE respond to laughter;)
>
> Regards...
>
_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Josip Almasi :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ariyo Nugroho wrote:
>
> You're right that speech-to-text was 'disaster'. I'm using Dragon
> Naturally Speaking. But I have to tell the truth: the problem is not
> merely about the software. It is my accent! :D

:))

FTR I used M$ built-in speech thing.
I found it suitable for only one purpose - learning proper (us) english
accent:)

As for your accent, again, try using different commands, maybe 'begin
measurement' instead of 'device on' etc.

> Some suggest that I should by a better microphone. I'll find one
> later. For the next days I'll be focusing on the device.

Once I found out audio input had some inherent noise; no matter what mic
I used I couldn't get good result.

Regards...
_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Steve Prior :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Voice recognition systems are split into two main groups.  One group requires a
very good signal (close talking mic and little background noise), typically
require training to a given user, but allow arbitrary speech (dictation).  The
other group is designed for noisy environments, doesn't require training to a
specific user, but has a set vocabulary and grammar that it will recognize at a
time.  The second type is used for call centers and is better for home
automation, but isn't typically available on desktop systems and is usually
expensive.

There is a cheap way to pull off getting the second type for a house or small
installation.  Lumenvox is one company which makes the second type, and they've
got integration with the open source Asterisk PBX system and better yet they
have a starter kit for $50 for one channel.  In my case I've got FreePBX (a
distro which includes Linux and Asterisk) installed on a system acting as a PBX
for the house and I've also got Lumenvox installed on that machine.  With custom
code installed on that platform I can recognize speech from the house phones and
even call into the system from the hands free Bluetooth function of my car into
the house via VOIP connection.  Then my code on the Asterisk box gathers the
speech to text and can submit it to my smarthome system which could then submit
it to Alicebot.

It's a round about way to get input to Alicebot, but it works very well with
call center quality voice recognition and besides the PBX function is generally
useful.  I don't know of any other way to get this kind of voice recognition
cheaply.

Steve

Josip Almasi wrote:

>
>> Some suggest that I should by a better microphone. I'll find one
>> later. For the next days I'll be focusing on the device.
>
> Once I found out audio input had some inherent noise; no matter what mic
> I used I couldn't get good result.

_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer

Re: Alicebot to control device

by Steve Prior :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Oops, minor correction, PBX In a Flash is the Linux/Asterisk distro I use.
FreePBX is the web based management interface included in that distro.

Steve

Steve Prior wrote:
> have a starter kit for $50 for one channel.  In my case I've got FreePBX (a
> distro which includes Linux and Asterisk) installed on a system acting as a PBX
> for the house and I've also got Lumenvox installed on that machine.  With custom

_______________________________________________
alicebot-developer mailing list
alicebot-developer@...
http://list.alicebot.org/mailman/listinfo/alicebot-developer