seraf / lisa Goto Github PK
View Code? Open in Web Editor NEWL.I.S.A is an intelligent system to help you in your daily life and a framework to connect objects between them.
Home Page: www.lisa-project.net
License: MIT License
L.I.S.A is an intelligent system to help you in your daily life and a framework to connect objects between them.
Home Page: www.lisa-project.net
License: MIT License
Server should be able to send command to clients.
I will use the "type" field and a value "command", then in the body, I will put the command.
Plugins (and other clients) will be able to ask clients to stop speaking.
It will allow to send other command like entering a context mode, ask a question to the user and waiting for an answer without waiting for the triggers, etc ...
It seems there's a problem with long text length.
I should try to split the text in multiple part and execute them when the sound is played.
Should find a way to have a continuous speech.
seraf : quand on emploie le "é" pour éteint et non le eteint erreur :
exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 10: ordinal not in range(128)
!! on pouvait employer des accents .. avant ..
put a server versionning in the black banner at the top of all page (LISA Dashboard, Speech, plugins, intents .... lisa).
Django 1.7 add lot of features but broken a lot of things in LISA with AppLoader.
LISA should be able to list her plugins enabled and list her methods (description of method should be included in plugins json for this) to help the user to know what to do.
We need a design for the web interface
As a python application, LISA should be installable with a "pip install lisa-server".
I'm a little confused about the twisted packaging and init.d service creation. Creating a distutils setup with twisted seems to be complicated and some rewriting may be donc on the current files.
LISA should have a CLI script to do easily some tasks. The manage.py from django will be used.
We need to create a face for LISA (then animate it) to include it in the LISA Web interface and the android app.
The create function should check if a plugin already exist in pypi
A version file will allow application to read the version and let setup.py read the same data. A unique file to manage the version number
To let other softwares use the speak ability of LISA, ChatterBot should provide a method exposed by the API.
The method should take in argument a list of zones who will vocalize the text.
LISA should read the configuration of each plugin when starting to update local modifications of the configuration to the database.
LISA should be able to create a timer or add a cron by voice.
Example : "Turn off the tv in 30 minutes"
LISA will add the intent it in the scheduler and will not call the plugin directly.
problème intermittent de micro : marche sur recherche google. sur lisa on voit le point rouge de chrome dans l'onglet qui dit que le micro est activé .*
impossible de cliquer sur l'icone de micro de lisa , reste blanc
comme inactif !!!
copie ecran : http://picpaste.com/Capture_du_2014-12-09_15_36_55-w62GCbQy.png
l "allowed domains" des settings de wit-ai n'a pas changé
et marchait
The websocket part should be done with sockjs : https://github.com/DesertBus/sockjs-twisted/
for JSON input, zone should be renamed in "sender zone" to be more explicit
for JSON output, clients_zone should be renamed in target_zones to be more explicit, an in plural because there could be a list of zone to target for the answer. I have not read the code, but sending "sender" as a parameter of the JSON output don't give the system the exact target and there should be a way to select later the right target, why not just put here the room name received in the input ?
Actually there's a crappy import and global to use the same instance of TaskScheduler.
As it can be used from anywhere and I need to use the same instance, it will be great to have a clean singleton.
On the line https://github.com/Seraf/LISA/blob/master/lisa/server/plugins/PluginManager.py#L115 the json is removed during the plugin install.
It is not a problem on production, but during plugin development it's annoying.
The CLI should take an optionnal argument to know it is a development context and do not delete this json file.
This development argument should also be used to install/uninstall easily the plugin without removing the directory, and playing with pip.
A rule should have multiple conditions :
{ "name": "Rule Name", "order": 999, "conditions": [ { "name": " Condition1 name", "if": "plugin", "operator": "=", "compare": "chat" }, { "name": " Condition2 name", "if": "jsonData['zone']", "operator": "=", "compare": "2" } ] "then": "python code", "end": True }
How to manage complexe rules with AND and OR conditions ?
When I remove a plugin, the cron task is kept in memory.
It should be removed, I need to think about a task reload or delete directly the entry (should be gettable by the name, and removable directly from the list)
The code is ugly in some files because I can't get the configuration file well managed.
I decided to create a class to set the configuration file, or get the default one.
The web interface should provide :
For the plugin submission, I want something which remains opensource and easy to submit.
Actually, I tested something which dynamically loads the plugin list.
There's two problems : it's slow and github have a rate limit on api call.
The solution I found is to generate a file each 5 minutes from my server in a cron (with authenticated account) which will contain the json metadata of all plugins. So it will need only one get from the browser to get the metadata of plugins. The README foreach plugin will be load by the http way so there won't be any rate limit on this.
Should change the way LISA do connection to mongodb to enable the mongodb replication.
It will allow LISA to have failover and support the loss of data.
If an action take some time to be executed, plugins should be able to let the user know that the method is currently running
You could use google speech streaming api for speech recognition. As soon as level of sound incrises above some particular level you could start streaming voice to google, which will do speech recognition for you. Or you could use google streaming api only for longer texts. Example is on my gist https://gist.github.com/offlinehacker/5780124
There's actually a problem with https://github.com/Seraf/LISA/blob/master/LISA-Client/android/android.py
The method isSpeaking() doesn't seems to wait before loop for a new sound.
It should works like this :
If there's the word LISA in the sentence matched :
LISA use tts and says "I listen" (this should be internationalized)
Then it records the sentence and send it to LISA engine.
It should be great to disable the sound of the recording (the annoying beep) of the first LISA match.
I have also an annoying bug, after some recognition, it throws me exception java null lang etc etc. After restarting the app it works correctly again for 1 o 2 recognition.
Here the question I asked on the google groups but without any answer : https://groups.google.com/forum/#!topic/android-scripting/PFwzUdNb6jA
Questions to resolve :
Should we code it natively in java ?
Should we suggest new features on the SL4A by patching the speech2text java interface ?
The plugin system need to be improved :
There is actually a short documentation written for the old LISA Engine. As everything has changed, it should be great to update the documentation and to make it translatable on transifex.
You could use celery for running background tasks and for scheduling. It works perfectly.
If intent is sent with the json, we know that the client already contacted wit. There's no need to contact it again, and lisa should use the intent given.
It will also help grammar client (like microsoft) to give all instructions needed to the rules engine
Picotts library provide very good voices. I need to make an API for using it in the same way of the google tts proxy.
A plugin should be able to send notifications to a client without any user action.
Ex : "Lisa, tell me to do the dishes in 1 hour".
The ToDo plugin then add a cron task, and is called back one hour later, and sends to the client a message through the TSS engine : "Master, don't forget to do the dishes"
Many other use cases, like reacting from an external event : temperature sensor, a google calendar event, an incoming phone call...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.