* Skip skill update on startup if recent
Skills aren't updated on startup if the last update was less than 12
hours ago.
- msm adds a .msm file in the skills directory with a timestamp and a
list of the skills installed by default
- the UPDATING screen message is moved to the SkillManger when direct
update is scheduled.
- On internet connection the skill update time is scheduled
- Skills (other than priority skills) are not loaded until
- The timeout for when direct update is necessary is settable in the
config.
internet connection has been verified (message on messagebus)
* Add support for deepspeech_server
deepspeech_server is a server running deepspeech (obviously). It's quite
easy to install and run (package available in pip and then a config file
pointing to the model)
This pr adds the DeepSpeechServerTTS class, a STT interface allowing
mycroft to use one of these servers.
config needed:
"stt": {
"module": "deepspeech_server",
"deepspeech_server": {
"uri": "http://IP-ADDRESS:PORT/stt"
}
}
* Add deepspeech_server example to mycroft.conf
Add Python 2/3 compatibility
==== Tech Notes ====
This allows the main bus, skills and cli to be run in both python 2.7 and
3.5+.
Mainly trivial changes
- syntax for exceptions
- logic for importing correct Queue module
- .iteritems -> future.utils.iteritems when accessing dicts key value
pairs
* Allow audio service to be run in python 3
* Make speech client work with python 3
* Importing of Queue version dependent
* Exception syntax corrected
* Creating sound buffer is version dependant
- Adapt context use range from builtins
- Use compatible next() instead of .next() when walking the skill
directory
* Make CLI Python 3 Compatible
- Use compatible BytesIO instead of StringsIO
- Open files as text instead of binary
- Make sure integer divisions are used
* Make messagebus send compatible
* Fix failing travis
Re-add future 0.16.0
* Make string checks compatible
* basestring doesn't exist in python 3 so it's imported from the "past"
* Fix latest compatibility issues in speech client
- handle urllib
- handle encoding before calling md5
* Make Api.build_json() python 2/3 compatible
==== Tech Notes ====
Before the refactoring of the configuration system the
ConfigurationManager allowed loading config files directly from strings.
This commit restores that functionality
Several attempts to connect to the backend fail before pairing has
been completed, which was producing errors that prevented the
messagebus and audio services from starting up.
Now the DeviceApi().is_subscriber property returns False if the
check fails, assuming unpaired == not subscribed.
Also stopped logging the call stack on the HTTPError exception, it
made an expected situation look like a major crash.
==== Tech Notes ====
- removed old main.py
- replace reference to ConfigurationManager in api tests
- reset configuration after use in configuration test
- Pep-8 issue
This commit officially switches the mycroft-core repository from
GPLv3.0 licensing to Apache 2.0. All dependencies on GPL'ed code
have been removed and we have contacted all previous contributors
with still-existing code in the repository to agree to this change.
Going forward, all contributors will sign a Contributor License
Agreement (CLA) by visiting https://mycroft.ai/cla, then they will
be included in the Mycroft Project's overall Contributor list,
found at: https://github.com/MycroftAI/contributors. This cleanly
protects the project, the contributor and all who use the technology
to build upon.
Futher discussion can be found at this blog post:
https://mycroft.ai/blog/right-license/
This commit also removes all __author__="" from the code. These
lines are painful to maintain and the etiquette surrounding their
maintainence is unclear. Do you remove a name from the list if the
last line of code the wrote gets replaced? Etc. Now all
contributors are publicly acknowledged in the aforementioned repo,
and actual authorship is maintained by Github in a much more
effective and elegant way!
Finally, a few references to "Mycroft AI" were changed to the correct
legal entity name "Mycroft AI Inc."
==== Fixed Issues ====
#403 Update License.md and file headers to Apache 2.0
#400 Update LICENSE.md
==== Documentation Notes ====
Deprecated the ScheduledSkill and ScheduledCRUDSkill classes.
These capabilities have been superceded by the more flexible MycroftSkill
class methods schedule_event(), schedule_repeating_event(), update_event(),
and cancel_event().
* Add automatic uploading of wake words and learning option in enclosure client
* Spawn new thread and remove ping
Spawning a new thread eliminates the need to ping and eliminates additional latency. In addition, the return code of scp is now used to determine whether to delete the wake word
* Increment enclosure version number
==== Tech Notes ====
Allow cached config to be updated from messagebus, from a skill or other connected software. Listens for configuration.patch signal and updates loaded config.
==== Protocol Notes ====
new messagebus signal configuration.patch
when the audio configuration option "pulseaudio" is set to mute running
audio streams will be muted while mycroft is speaking and while mycroft
is listening.
NOTE: this doesn't check for disk space and doesn't clean up
file stored in /tmp/ called mycroft_wake_sucess<time>.wav
TODO: some cleanup should be considered.
Signed-off-by: Art McGee <amcgee7@jaguarlandrover.com>
There are several issues with the changes recently made to break out
Skills from mycroft-core.
* The subdirectory mycroft/skills/intent/ is left behind when you do
a pull, so the change to core.py that tries to
"import mycroft.skills.intent" gets confused. I renamed the file
intent.py to intent_service.py
* Added a bunch of comments
* Made a bunch of functions "private", using the leading _
* The MSM install was failing. Still working on that, but we should
probably make msm.sh a part of mycroft-core instead of its own
repo.
* Restored some mycroft.conf values that I noticed got lost during
an automatic merge.
This addresses this in several ways:
* Created mechanism to load 'commented' JSON (using '//' or '#' comments on a single line)
* Embedded comments into the mycroft.conf, indicating use, legal values, and where they get overridden
* Create ConfigurationManager.instance() static method to replace ConfigurationManager.get(). This produces more readable code like:
ConfigurationManager.instance().get("value") instead of ConfigurationManager.get().get("value")
* Made _ConfigurationListener 'private'
* docstring'ed things
This adds several refinements to the listening sound mechanism added by:
* Added a default sound file
* Allowing various ways to override "resource files" for customization
* Moved the sound configuration path from "confirm_ding" to
"sounds" > "start_listening"
* Also added "sounds" > "end_listening" configuration for the future
This submission adds the new mycroft.util.resolve_resource_file(res_name)
method. This method takes a name such as "snd/start_listening.wav" and
looks (in order):
* For an absolute path <res_name>
* For ~/.mycroft/<res_name>
* For /opt/mycroft/<res_name>
* For mycroft/res/<res_name> within the source package
This adds several refinements to the listening sound mechanism added by:
* Added a default sound file
* Allowing various ways to override "resource files" for customization
* Moved the sound configuration path from "confirm_ding" to
"sounds" > "start_listening"
* Also added "sounds" > "end_listening" configuration for the future
This submission adds the new mycroft.util.resolve_resource_file(res_name)
method. This method takes a name such as "snd/start_listening.wav" and
looks (in order):
* For an absolute path <res_name>
* For ~/.mycroft/<res_name>
* For /opt/mycroft/<res_name>
* For mycroft/res/<res_name> within the source package
* Listen confirmation
If enabled, will play a wave file to confirm that Mycroft is listening
* Listen confirmation ding config options
* Rename config option
* Update mycroft.conf
* Type: Rename config option
* Missing imports
Whoops, forgot them (was copying edits since I didn't have my dev environment set up)
* Removing unnecessary import functions
- Adding proxy flag to be used in WA and OWM skill
- Integrating Tartarus login session
- Refactoring OWM to use Tartarus api and removing owm repackaging
- Fixing WA data response
* working on a client for wi-fi setup
* added refactored code, ready to integrate
* client is running, now to handle the rest
* Staring touble in the face
* saved
* added config settings for wifi setup
* add an entry point for wifisetup to mycroft-base-setup.py
* moved SSID sorting into LinkUtils
* I'm now using the new SanAp class throughout
* Cleaning up code. All bash executions use bashThreadHandling class, mycroft's LOGGER
* removed legacy configuration parser
* funneling effort into cleanup
* fixed pep8, see if she builds
* changed entry point for init script
* changed import path to full path
* changed import path to full path for all files
* change ws port to 8080 for now
* pep8 in wifi.py fixed
* fixed a few more pep8 errors
* strange import stuff goign on
* strange import stuff goign on
* renamed wifi.py to prevent import conflict
* freeze pip requirement versions
* changed import path in LinkUtils
* changed import path again
* trying to fix wifi import.. something is wrong
* consumer and producer queues now working
* Consumer & producer API's are coming alogn
* Refactor: developing an API
* add ap up/down procedure to api
* looking googd
* removed some older code, api is nearly written
* success
* Sending conection status to browser is now working
* Fixed pep8 errors again
* removed blank line from file
* fixed entrypoint name
* added shutdown and save upon connect; reducing verbosity
* now disabling and flushing network on connection fail
* fix start.sh
* Corrected amount of arguments passed to wpa_cli_disable_network
* added iface to disable network
* added shutdown on success; restart wpa_supplicant upon ap up
* turning powersave mode off for wlan0
* removed wpa_cli flush
* fix some file restore and exit issues
* re enabled flush networks on fail
* powersave mode was logged but not executed
* stop and start dhcpcd withh ap up
* changed hostapd channel; bring links up and down after successful pair
* removed double quotes from the wpa_supplicant template
* Multiple files combined into util.py
* clean up some comments, added license headers
* what is up
* Ap mode event fires on enclosure event
* added logic for open network
* Changed empty passphrase from bool to empty string
* enclosure version bump
* changed ap down method in WiFiConsumer
* I'm now pulling all configuration from mycroft.ini and grabbing the mac address for ap ssid
* REFACTOR: removed util.py, as it was a bit messy
* REFACTOR: remove pep8 errors again, you would think that I would do this each time
* chagned some logic for open net
* open networks now function properly
* Reboot on success
* changed network save method
* Issues 356 - Setup wifi connection
- Removing tornado dependency
- Merging WS reader with Wifi process
* Issues 356 - Refactoring
- Using PyRIC and WIFI libs
* Issues 356 - Refactoring bash command
* Issues 356 - Refactoring FileUtils
* Issues 356 - WebClient refactoring
* Issues 356 - create password and loading pages
* Issues 356 - connecting
* Issues 356 - parsing data on ws
* Issues 356 - removing fake function on wifisetup
* Issues 356 - connecting on public network
* Issues 356 - show loading page on backbutton
* Issues 356 - sort networks by quality
* Issues 356 - Fixing message type variable
* Issues 356 - Adding more logs to wifi setup
* Issues 356 - network sort by quality
* Issues 356 - Fixing cell ssid param and using correct interface for scheme
* Issues 356 - Ensuring to save scheme before activating
* Issues 356 - Logging bash command
* Issues 356 - Refactoring wifi to P2P
* Issues 356 - Simplifying cli usage and getting results from wpa_cli
* Issues 356 - Parsing ssid and pass
* Issues 356 - Saving wpa configuration
* Issues 356 - Removing postfix in favor of wpa_supplicant config
* Issues 356 - Setting host to 0.0.0.0
* Issues 356 - Fixing parsing for wpa_cli output
* Issues 356 - Ensuring to save wpa config after connected
* Issues 356 - Setting interface for save config
* Issues 356 - Ensuring interfaces in all wpa cli
* Issues 356 - Creating, staring and stopping wifi web server
* Issues 356 - Adding logs to web server
* Issues 356 - create succes page and merge connect page on list page
* Issues 356 - Config.js server addr
* Issues 356 - Adding wifi status and connected control
* Issues 356 - lock margin top wifisetup
* Issues 356 - waiting connection
* Issues 356 - Moving dnsmasq backup logic to main.py
* Issues 356 - Cleaning imports
* Changed the base manifest to reflect new file locations
* fixed indent for pep8
* changed the mycroft-base-setup.py to reference the proper entry point for wifisetup
* Enclosure version bump
* Added the wifi index.html to the base manifest, as it doesn't seem to catch it recursively
* Issues 356 - Updating first setup flag after running the first time
* Issues 356 - Ensure to stop server only if it exists
* Issues 356 - Ensuring to set first setup to false when connected
* Issues 356 - Closing web server after shutdown
* Issues 356 - Running web server as daemon
* Issues 356 - Creating server connection only once at initialization
* Issues 356 - Disconnecting network before connecting and fixing get status
* Issues 356 - Starting web server only once after AP is up
* Issues 356 - Returning empty status if not able to parse
* Issues 356 - Creating web server loop control
* Issues 356 - Performing final request call in order to unblock server
* Issues 356 - Adding GET method to server request
* Issues 356 - Requesting web server to stop on main thread
* Added mic test to enclosure
* Added system.test enclosure commands
This also improves the audio test method; it now uses its own voice to make the test faster to perform
* Added set function to mycroft configuration
This allows setting config values to a particular section in the user config
* Added upload and test on first boot features
* Added mute test to enclosure
* Added new listener config options
* Fixed audio unit tests
This adds a cleareraudio file for the wakeup test and changesto the new LocalRecognizer constructor
* Added .dict files to .gitignore
This is because they are now auto-generated on startup rather than stored permanently
* Fixed audio accuracy test for new LocalRecognizer constructor
* Added support for spaces in wake word config
In the phonemes a new word is indicated by a period character. The separating of the words actually changes the way pocketsphinx interprets the sound of it and in this case improves it
* Fixed unit test
* #131 added if for situations where the host is empty
* #132 modified mycroft.ini file and added exception.
* #132 modified mycroft.ini file and added exception.
* #132 removed comment
* #131 changed to ValueError, and added checks for ssl, port, host and path
* #131 changed to ValueError, and added checks for ssl, port, host and path
* #131 reverted utils - went another route
* #131 added empty string for ssl detection
* #131 created validate_param
* #131 pep8
* #131 oops missed route
Tested with new alarm, it sounded distorted. Looked at implementation of other sounds (news skill), and decided to try with MP3. Changed to using MP3 instead. Everything works properly now, tested on multiple devices.
The 1980s birthed a new form of interaction between computers and users. For the first time computers became capable of understanding the most basic form of human communication - pointing and grunting. The mouse and the GUI revolutionized computing and made computers accessible to the masses.
We have now entered a third era. We are rapidly approaching a time when computer systems will understand human language and respond using the most natural form of human communication – speech.
This is an important development. Some might even call it revolutionary.
Despite its importance, however, the technologies that will underpin this new method of interaction are the property of major tech firms who don't necessarily have the public's best interests at heart.
Not anymore.
Meet Mycroft – the worlds first open source natural language platform. Mycroft understands human language and responds with speech. It is being designed to run on anything from a phone to an automobile and will change the way we interact with open source technologies in profound ways.
Our goal here at Mycroft is to improve this technology to the point that when you interact with the software it is impossible to tell if you are talking to a human or a machine.
This initial release of the Mycroft software represents a significant effort by the Mycroft community to give the open source world access to this important technology. We are all hoping that the software will be useful to the public and will help to usher in a new era of human machine interaction.
Our community welcomes everyone to use Mycroft, improve the software and contribute back to the project. With your help and support we can truly make Mycroft an AI for everyone.
Joshua W Montgomery – May 17, 2016