Commit Graph

1229 Commits (2bcfd9fde9c2c54dc58b54d549a819124ec84446)

Author SHA1 Message Date
Åke Forslund 1e74dd3ebe Restore reconnect timer on ws on connect
====  Tech Notes ====
The retry timer doubles on each failed connect attempt but was never
restored to the original time causing an unncessary long wait time. This
restores the timer on each sucessful connection.
2017-09-14 14:22:06 -05:00
Åke Forslund cc3a33aa77 Remove debug prints 2017-09-14 14:29:40 +02:00
Åke Forslund 0d4a841d4e Make test_api slightly more robust 2017-09-14 11:01:32 +02:00
Åke Forslund d750935fe3 Allow any bitrate of audio to the MycroftSTT
====  Tech Notes ====
Setting the convert_rate enforces the output bitrate of the FLAC audio.

This requires update of speechrecognition (3.7.1) and PyAudio (0.2.11)

==== Environment Notes ====
PyAudio => 0.2.11
speechrecognition => 3.7.1
2017-09-13 14:31:36 -05:00
Åke Forslund a33c07621b Reduce configuration loading in module scope
====  Tech Notes ====
Autoloading configuration in submodules is bad for testing purposes and
should be reduced. It takes time and adds the possibility of altering
the base conditions for the tests

- mycroft/skills/core: global configuration moved to main.py
- mycroft/messagebus/client/ws.py global config moved to __init__ of
Websocket
- client/speech/mic.py global config moved to ResponsiveRecognizer
__init__() method
- client/enclosure/display_manager.py
 - get_ipc_directory() called in methods where used
2017-09-13 12:51:48 -05:00
Åke Forslund 14f931e046 Fix send pairing utterance before loading skills
====  Tech Notes ====
Add a wait until skills have been loaded once before checking for
internet connection. If not an "I'm sorry I didn't catch that" may be
emitted since the pairing skill isn't loaded.
2017-09-13 12:49:31 -05:00
Åke Forslund 31701fc05d Add more safety around the context manager
====  Tech Notes ====
- Sanity check Message in handle_add_context(), 'word' needs to be a
string before calling into the context manager.
- Sanity check Message in handle_remove_context(), make sure a context
keyword was received before trying to remove.
- Docstrings
- Suppress exceptions while injecting context
2017-09-13 12:44:35 -05:00
Åke Forslund 64baa7d420 Enclosure mutes the mic and should unmute it
====  Tech Notes ====
Listens for 'mycroft.paired' and will unmute the mic when this occurs.
This was handled by the pairing skill but for clarity it should be
unmuted at the same place.
2017-09-13 12:02:27 -05:00
Åke Forslund e9f8d85040 Make mic mute counting instead of boolean
====  Tech Notes ====
Mute was previously a simple boolean meaning that if two parts of the
code wanted to mute it it would unmute the mic as soon as the first of
the two pieces of code wanted to unmute.

For example tts output will mute the mic and unmute it when the audio
output is complete. During first start up of a mark-1 the enclosure
mutes the mic and expects it to be muted until the pairing is complete.
This doesn't work. The mic get's unmuted as soon as the first sentence
has been spoken.

This counts the number of times mute is called and will not unmute until
as many unmute calls has been made.
2017-09-13 12:02:27 -05:00
Åke Forslund 65fa735a3a Fix isSpeaking
====  Tech Notes  ====
isSpeaking was lowered as soon a the tts had synthesized the audio and
not when the output finished. This commit moves the signal
raising/lowering to the tts instead of the 'mycroft.speak' handler.
2017-09-13 12:02:27 -05:00
esoleyman c8c5afdeaf Change instance of ConfigurationManager().get to ConfigurationManager.get 2017-09-13 10:41:02 -05:00
Åke Forslund 5ddf1250ab Fix issues discovered by codacity. 2017-09-12 15:07:20 -05:00
Åke Forslund df8fe650c8 Update docstrings after PR feedback 2017-09-12 15:07:20 -05:00
Åke Forslund f1c6912d43 Add event scheduler
====  Tech Notes ====
A single thread handling scheduled events. The skills interact with this
using the self.schedule_event() self.schedule_repeating_event
self.update_event() and self.remove_event().

This is an improvement over scheduledSkill since each skill creates
their own Thread and has to handle storing/restoring scheduled events
between starts.

All pending events are stored in a json file at shutdown for future
sessions.

====  Documentation Notes ====
Needs to be documented

==== Protocol Notes ====
new messagebus event handlers:
- mycroft.scheduler.schedule_event
- mycroft.scheduler.remove_event
- mycroft.scheduler.update_event
2017-09-12 15:07:20 -05:00
Åke Forslund 72a318cd92 make skill id hash of skill directory
====  Tech Notes ====
To ensure that the skills have the same id when loading the id was
replaced with a hash of the skill directory. (as long the skill isn't
 renamed). This is useful for things like the event_scheduler where
skills are referenced using the skill id and has info being persistent
over restarts
2017-09-11 19:43:02 -05:00
Michael Nguyen eb6340265b Merge pull request #1060 from forslund/feature/ignore-enclosure-mouth-update-messages
Ignore enclosure.mouth.display message by default
2017-09-08 10:38:40 -05:00
Åke Forslund 0c8aaa2664 Ignore enclosure.mouth.display message by default
====  Tech Notes ====
Add 'enclosure.mouth.display' to ignore_logs default configuration since
it will get called alot and spam the skills log.
2017-09-07 15:59:34 +02:00
Matthew D. Scholefield 9efcc01ce0 Update padatious 2017-09-06 19:22:33 -05:00
Brian Hopkins c2aa2ebb97 fixing typo (#1052)
* fixing typo

fixing color function
2017-09-04 00:49:08 +02:00
Åke 27dba0c786 Merge branch 'dev' into make_message_optional 2017-09-01 21:29:16 +02:00
jarbasai b6e89f02b0 pep8 2017-09-01 12:28:37 -05:00
Jarbas c05590bc7c save utterances 2017-09-01 12:28:37 -05:00
Åke Forslund c7c25cc01b Fix errors during shutdown
====  Tech Notes ====
Skills weren't cleanly shutdown. This ensures that skills are shutdown more cleanly and that shutdown procedure will not be interrupted by broken shutdown methods.

Shutdown of reload thread fixed

Unused globals removed
2017-09-01 10:53:22 -05:00
Åke Forslund 2881b1842f Setting storage is no longer forced at shutdown
Risk of corruption if the skill service was terminated while settings
were written was determined to be greater than any benefit from this.
2017-09-01 10:45:05 -05:00
Åke Forslund 0782064819 Write settings dict to disk more frequently
====  Tech Notes ====
After an intent has been handled the settings will be stored if any changes are detected.

A force option was added to the .store method of the settings class which always writes the dict to disk even if no changes has been made. This is used during shutdown.
2017-09-01 10:45:05 -05:00
Michael Nguyen 995d67e612 Merge pull request #1018 from forslund/bugfix/issue-1014
Bugfix/issue 1014
2017-08-31 15:59:32 -05:00
Michael Nguyen 2dc6e47bea Merge pull request #1020 from forslund/bugfix/issue-1019
Fix expect response for speak_dialog
2017-08-31 15:58:54 -05:00
Michael Nguyen e7775d26d0 Merge pull request #1026 from forslund/bugfix/issue-1022
Fix failure when using one_of in intents
2017-08-31 15:58:38 -05:00
Michael Nguyen 2dab08f483 Merge pull request #1035 from forslund/bugfix/localization
Bugfix/localization
2017-08-31 15:58:02 -05:00
Åke Forslund 144e9c016c Automatically find skill directory in __init__
====  Tech Notes ====
Previously the _dir parameter was poplated from the skill loader between calling __init__() and initialize(). The skill path can however be gleaned from with in the __init__() of MycroftSkill.

Doing this makes the settings accessable from __init__() as well and will allow a more straight forward usage.
2017-08-31 15:54:46 -05:00
Åke Forslund d746a87e34 Added docstring for update_context
Including note about not working on one_of keywords.
2017-08-31 21:34:30 +02:00
Åke 14254893cf Merge pull request #1023 from MatthewScholefield/feature/module-imports
====  Tech Notes ==== 
Adds the most commonly used methods and classes in more convenient location

Changing from mycroft.skills.core import MycroftSkill to simply from mycroft import MycroftSkill

====  Documentation Notes ==== 
The skill tutorial should be updated to use these shorter import paths.
2017-08-31 14:13:00 +02:00
Steve Penrod ae2583662f Correcting CLI handling of main() for issue #1036
The idiom for handling main() was incorrect to allow the CLI
to be invoked by the mycroft-cli-clent script.

==== Fixed Issues ====
2017-08-30 22:45:16 -05:00
Steve Penrod f9702157a6 Minor CLI fixes and enhancements
Several changes to CLI behavior, all minor:
* Inverted the behavior or PgUp/PgDn.  I think it was just wrong
* Added "oldest" and "newest" indicators to the log listing to
  simplify finding your way inside the logs
* Added support for _not_ scrolling when in the middle of the log
  output.  It will now only auto-scroll when already at the front
  of the log so you keep seeing new messages automatically.
* Added a heading for the mic output level
* Limited the mic output level to just the size of the bottom
  area (previously it was proportional to the screen height)
* FIX: Changed the default filter string for viseme
* FIX: The saving of settings was broken
* Ran autopep8 which added a few bits of whitespace here and there
2017-08-30 22:45:16 -05:00
Åke Forslund 9a6d282435 Warn when pocket sphinx model file is missing
====  Tech Notes ====
When a pocket sphinx model is missing an error is logged and the default
(us english) model is tried.
2017-08-31 00:19:00 +02:00
Åke Forslund de8dff6320 defaulting to TimeRulesEnUs now works
====  Tech Notes ====
Wheb a language without time rules were defaulted back to us-english
time rules the class was instanciated prematurely. Now the default
returns a class and not an object.
2017-08-31 00:18:43 +02:00
Åke Forslund ab44f24c22 Use io.open instead of open to load utf-8 dialog
==== Fixed Issues ====
#1027

====  Tech Notes ====
io.open is the default implementation of open for python3 and handles
encodings in a better way defaulting to utf8
2017-08-31 00:18:25 +02:00
Matthew D. Scholefield 789b452e5e Add useful imports to mycroft and mycroft.util modules 2017-08-29 11:09:12 -05:00
Åke Forslund 7022239456 Fix failure when using one_of in intents
==== Fixed Issues ====
#1022

====  Tech Notes ====
When a one_of intent is hit the intent returned by adapt doesn't look like normal require/optional intent parameters. This PR adds a check for entities before trying to accessing them when trying to update context.

This is a temporary workaround while it's determined if the adapt behaviour is correct or should be modified to conform to the normal format. (See issue 66 in the adapt repo), but in any case it's a good sanity check
2017-08-29 09:05:29 +02:00
Åke Forslund b44b2914af Fix expect response for speak_dialog
==== Fixed Issues ====
the expect_response pararmeter is now correctly passed along to
self.speak()

====  Tech Notes ====
NONE - explain new algorithms in detail, tool changes, etc.

====  Documentation Notes ====
NONE - description of a new feature or notes on behavior changes

==== Localization Notes ====
NONE - point to new strings, language specific functions, etc.

==== Environment Notes ====
NONE - new package requirements, new files being written to disk, etc.

==== Protocol Notes ====
NONE - message types added or changed, new signals, APIs, etc.
2017-08-25 14:26:33 +02:00
Åke Forslund 34a527b130 Add warning if skill isn't properly removed 2017-08-25 11:15:50 +02:00
Åke Forslund 3be861cee2 Fix trailing references causing memory leak
==== Fixed Issues ====

====  Tech Notes ====
This PR corrects a couple of small issues led to skills being left in memory when.
- Handler for `stop.mycroft` weren't removed from event emitter when
skill shut down. Now is added using `self.add_event()`
- registered intent list `self.events` created a circular reference that
python couldn't resolve a live so this is now deleted at shutdown
- Timers in scheduled skills weren't terminated properly. Now if the
timer is alive it will be joined

====  Documentation Notes ====
Registring event handlers should use `self.add_event` instead of
`self.emitter.on()` To make sure they are cleaned up when skill is
terminated.

==== Localization Notes ====
NONE - point to new strings, language specific functions, etc.

==== Environment Notes ====
NONE - new package requirements, new files being written to disk, etc.

==== Protocol Notes ====
NONE - message types added or changed, new signals, APIs, etc.
2017-08-25 11:15:50 +02:00
ginanjar azie 41c7921bbb make message parameter on intent handler optional 2017-08-24 11:15:25 +07:00
leonard-pradier 2e479dd453 Add french translation to the dialogs 2017-08-23 15:17:00 -05:00
Augusto Monteiro 53648b8433 Merge pull request #1012 from forslund/refactor/cleanup-skills
Cleanup skills
2017-08-22 15:03:55 -04:00
Jarbas 684c08d4c0 Allow internal configuration changes PR #980
====  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
2017-08-22 14:50:31 +02:00
Åke Forslund dea591e9b8 Cleanup imports 2017-08-22 08:45:06 +02:00
Åke Forslund e61b516ea1 Add more docstrings 2017-08-22 07:40:28 +02:00
Åke Forslund 12bf78cd5f Move funcs only used in skill_tester from core.py
====  Tech Notes ====
Some functions have been orphaned in core.py and are only used in the
tests. To clean up these have been moved to where they're used.
2017-08-21 15:59:48 +02:00
Åke Forslund bb0fbb51ed Cleanup skill service main
====  Tech Notes ====
Minor cleanup and comments
2017-08-21 15:59:48 +02:00
Åke Forslund ebcbbd3a60 Fix skill container
==== Fixed Issues ====
#1007

====  Tech Notes ====
The converse system changed the api for the load_skill() function this
since the skill_container wasn't updated accordingly it stopped working.
This PR makes updates the container to use the new interface.
2017-08-21 15:09:51 +02:00
Jarbas f04f5107e7 small fix (#1005) Rebase issues with converse method
====  Tech Notes  ====
- Use skill id instead of name
- use time() function correctly
2017-08-21 09:18:01 +02:00
Åke Forslund eb4991ade9 Fix multiple reloads of skills at startup
==== Fixed Issues ====
#1001

====  Tech Notes ====
Previously the skills were reloaded a couple of times during startup
since updates of the .pyc file and possible the settings.json file were
made.

This commit adds a bit finer control over which files to check.
Currently all files in skill root except ones ending in .pyc and the
settings.json are checked along with all visible subdirectories
2017-08-18 11:41:14 +02:00
Michael Nguyen f2f5925b09 fixing issue 998 2017-08-17 22:05:49 -05:00
Matthew D. Scholefield 9de5a13659 Add decorator support for intent files and fix regular decorator 2017-08-17 16:01:11 -05:00
Matthew D. Scholefield 7b28e7e61d Make PadatiousService inherit from FallbackSkill to fix new fallback changes 2017-08-17 16:01:11 -05:00
Matthew D. Scholefield e3da4dbcb8 Train on initialization in case no intents are added 2017-08-17 16:01:11 -05:00
Matthew D. Scholefield 3aa52273f4 Add notification when padatious not installed 2017-08-17 16:01:11 -05:00
Matthew D. Scholefield 69d17a373b Create PadatiousService and add padatious to requirements.txt 2017-08-17 16:01:11 -05:00
Jarbas d661b8d2e7 Add conversational support to skill system
The most recently used skills now have an opportunity to preview all
utterances before they hit the intent system.

==== Tech Notes ====
Skills get a preview in the order of activation -- most recent first --
and if they can consume the utterance or ignore it. If consumed,
processing stops. If ignored, the next most recent skill gets a shot
at it. Finally, if no skill consumes it the intent system takes over,
running as it always has.

Skills remain "active" for 5 minutes after last use.

A skill achieves this by implementing the converse() method, e.g.

def def converse(self, utterances, lang="en-us"):
    if .... :
        return True  # handled, consume utterance
    else:
        return False  # not for this skill, pass it along
2017-08-17 12:09:17 -05:00
Åke Forslund 811cbdb6da Remove requrement to build Intents
====  Tech Notes ====
IntentBuilder objects always need to be built into an Intent to be
usable in mycroft. Since this is always neccessary the code doing this
can be moved so users don't need to do this step.

This commit makes the `register_intent()` method check the handler
argument type, if it's an IntentBuilder object it builds the Intent, if
it's an Intent it continues as normal, if it's any other type it will
raise a ValueError
2017-08-17 11:49:00 +02:00
harika 4c3dd3aa7c Updating skill_tester to automate skills testing(regression) 2017-08-17 02:05:02 -05:00
harika 632df2a498 Update tests 2017-08-17 02:05:02 -05:00
Augusto Monteiro 873b231a54 Merge pull request #990 from forslund/feature/downloader
Add class for handling downloads
2017-08-16 12:54:18 -04:00
Åke Forslund f19ac28a5c Add some safety to the add/remove context methods
====  Tech Notes ====
Invalid context or word arguments will now raise ValueError
2017-08-15 21:27:19 -05:00
Åke Forslund b1082d4b27 Only use latest meaning of each keyword 2017-08-15 21:27:19 -05:00
Åke Forslund 242770aa94 Update context config options
- options grouped under "context"
- added option to activate "greedy" context gathering
2017-08-15 21:27:19 -05:00
Åke Forslund d7cbe3065a Add decorators making context management easier 2017-08-15 21:27:19 -05:00
Åke Forslund c9b19cb97e Fix remove_context
Also remove debug prints
2017-08-15 21:27:19 -05:00
Åke Forslund 471a8d8360 Add configuration settings for using adapt's context 2017-08-15 21:27:19 -05:00
Åke Forslund b9a054e669 Manual context injection
A skill can inject context to enable and disable intent handlers
automatically depending on previous conversation.
2017-08-15 21:27:19 -05:00
Åke Forslund 025a771fe1 Add class for handling downloads
====  Tech Notes ====
Downloader() is a Thread subclass starting and handling a download. The
property done and status is set when the download is completed or
failed.
download manager ensuring continuation of started downloads (per process)
complete_action, a function to be called after download is complete can be
supplied to the downloader
2017-08-15 14:42:32 +02:00
Åke Forslund e40ad7e4dc Add subscription endpoint to DeviceApi
====  Tech Notes ====
The DeviceApi now has a `get_subscription()` method returning the entire
subscription structure and the property `is_subscriber` returning True
if the device is connected to a paying account and False if it's a free
account.
2017-08-15 09:03:30 +02:00
Åke Forslund 44b68e3f3f Add handlers for lowering/restoring pulseaudio vol
====  Tech Notes ====
pulse_lower_volume() scans through the list of running input sinks and
reduces the volume to 30% of original volume skipping over the stream
named 'mycroft-voice'

pulse_restore_volume() restores the volume again.

If activated with the 'pulseaudio' config parameter they will be called
when mycroft starts/stops listening and starts/stops speaking

==== Environment Notes ====
The Audio->pulseaudio configuration parameter can now be set to 'lower'
to activate this feature
2017-08-11 16:44:24 +02:00
Augusto Monteiro bbde78cee8 Merge pull request #976 from forslund/feature/easier-fallback
Feature/easier fallback
2017-08-10 15:25:14 -04:00
Augusto Monteiro 540adbd195 Merge pull request #959 from forslund/bugfix/issue-958
Make visime stream end together with audio
2017-08-09 13:57:35 -04:00
Augusto Monteiro f2e9d6b2cf Merge pull request #971 from reginaneon/patch-1
Fixing wakeword save
2017-08-09 13:53:58 -04:00
Augusto Monteiro 2b171b4d34 Merge pull request #970 from forslund/bugfix/issue-969
Fix message bus logging for audio service
2017-08-09 13:42:10 -04:00
Åke Forslund dc8b01f61f Fix mute mycroft-voice
====  Fixed Issues ====
#978

====  Tech Notes ====
We name the stream insted of the client. Now mycroft-voice is excluded
from mute.
2017-08-09 17:28:42 +02:00
Åke Forslund 1d7d02161d Add a default shutdown method for fallback skills
====  Tech Notes ====
Adds a shutdown method that removes all handlers registered by the
current instance.
2017-08-09 14:24:21 +02:00
Åke Forslund c363662b67 Remove need for name parameter
====  Tech Notes ====
If name is not provided the class name will be used
2017-08-09 14:18:14 +02:00
Åke Forslund 7f5f1ac2c1 Fix double __init__ in MycroftSkill
==== Fixed Issues ====
NONE

====  Tech Notes ====
During earlier rebase it seems like a double instance of __init__ got
into MycroftSkill.

====  Documentation Notes ====
NONE

==== Localization Notes ====
NONE

==== Environment Notes ====
NONE

==== Protocol Notes ====
NONE
2017-08-09 13:31:55 +02:00
reginaneon c96d0a3d5b Bug Fix
Bug fix proposed for success wake-word recording. 
Opt: Suggestion to change the save location of recording files as well. 
Otherwise, the user could potentially get the permission denial. 
-NeonGecko.com Inc
2017-08-08 15:38:58 -07:00
Åke ab22106659 Merge pull request #938 from MycroftAI/feature/fallbacks
Add intent fallback system

==== Fixed Issues ====
NONE - replace with issue numbers, e.g. #123, #304

====  Tech Notes ==== 
NONE - explain new algorithms in detail, tool changes, etc.

====  Documentation Notes ==== 
The FallbackSkill needs to be documented in detail for skill creators.


==== Environment Notes ==== 
NONE

==== Protocol Notes ====
multi_utterance_intent_failure replaced with complete_intent_failure
2017-08-08 21:00:51 +02:00
Åke Forslund 86cb1bb462 Fix message bus logging for audio service
==== Fixed Issues ====
#969

====  Tech Notes ====
The criteria for excluding messages were inverted and excluded all
messages containing 'mycroft.audio.service'. This criteria has been
fixed.

====  Documentation Notes ====
NONE - things like description of a new feature or notes on behavior
changes

==== Localization Notes ====
NONE - point out new strings, functions needing international versions,
     etc.

==== Environment Notes ====
NONE - new package requirements, new files being written to disk,
etc.

==== Protocol Notes ====
NONE - message types added or changed, new signals, etc.
2017-08-08 14:23:02 +02:00
penrods c138182451 Fix the logger fix
Gotta slow down my fingers.  Mixed "logging" and "mycroft.util.log" into
the non-existent "mycroft.util.logging".  Fixed.
2017-08-03 16:56:55 -05:00
penrods 76ef80e443 Switch to mycroft.util.logger
Changed from a plain logger to mycroft.util.logger
2017-08-03 16:42:26 -05:00
penrods 54bf9b3cb6 Fix a missing logger which caused a crash
Some exception code was attempting to use the LOGGER, but one had
not been created for this file.  So when the exception occurred
it caused a crash.

NOTE: We need to standardize on log/LOG/LOGGER!
2017-08-03 16:42:26 -05:00
Michael Nguyen 4ae511812c Merge pull request #962 from MycroftAI/feature/display_state_manager
Feature/display state manager
2017-08-03 14:21:40 -05:00
Arron Atchison bdfdc1fec5 bump version to 0.8.20 2017-08-03 14:19:29 -05:00
Matthew D. Scholefield fee8ffab59 Change skill-wolfram-alpha to fallback-wolfram-alpha
This is necessary because of the API breaking change
2017-08-03 13:49:32 -05:00
Matthew D. Scholefield 6f1a2dbe55 Convert static methods in FallbackSkill to class methods
This makes it more concise and mimics the behavior of self, but for static methods
2017-08-03 13:49:32 -05:00
Matthew D. Scholefield 3b6942a250 Move intent fallback behavior to new FallbackSkill base class 2017-08-03 13:49:32 -05:00
Matthew D. Scholefield 4afe6687c4 Fix intent failed messages before running fallbacks 2017-08-03 13:49:02 -05:00
Matthew D. Scholefield a86f0478a4 Add intent fallback system
Also removes multi utterence intent fail. Only makes sense to emit an intent_failure regardless of the amount of intents
2017-08-03 13:49:02 -05:00
Michael Nguyen ee3391db29 pep8.. 2017-08-03 13:04:12 -05:00
Michael Nguyen 4355dad333 moved init disp websocket to enclosure 2017-08-03 13:01:11 -05:00
Åke Forslund db6127a0ed Catch exceptions in user provided stop() method
==== Fixed Issues ====
#960

====  Tech Notes ====
The messagebus handler for "mycroft.stop" halts and exits if an
exception occurs in any methods that are registered to that name. The
handler executes the stop() method that's provided by the user and is
not verified. To ensure that other skills are unaffected exceptions in
the user provided method are caught.

====  Documentation Notes ====
NONE - things like description of a new feature or notes on behavior
changes

==== Localization Notes ====
NONE - point out new strings, functions needing international versions,
etc.

==== Environment Notes ====
NONE - new package requirements, new files being written to disk,
etc.

==== Protocol Notes ====
NONE - message types added or changed, new signals, etc.
2017-08-03 14:14:31 +02:00
Åke Forslund 5b4ae74cfb Make visime stream end together with audio
===Fixed issues ====
#958

====  Tech Notes ====
Adds method clear_visimes() to voice playback thread to stop visime stream
instead of having visime stream check for signals.

====  Documentation Notes ====
NONE - things like description of a new feature or notes on behavior
changes

==== Localization Notes ====
NONE - point out new strings, functions needing international versions,
     etc.

==== Environment Notes ====
NONE - new package requirements, new files being written to disk,
etc.

==== Protocol Notes ====
NONE - message types added or changed, new signals, etc.
2017-08-03 10:57:14 +02:00
Åke Forslund a0ac65ac35 Fix rebase issues introduced with audio subsystem
util/signal.py add missing import time
move tts thread shutdown/clear to audio/speech.py
2017-08-02 16:53:48 -05:00
Michael Nguyen 58288b4c11 fixed permissions bug 2017-08-02 12:46:05 -05:00
Michael Nguyen c1041b9902 fixed permissions bug 2017-08-02 12:34:04 -05:00
Michael Nguyen 07b123db89 Merge pull request #944 from forslund/bugfix/issue-943
Remove volume parameter from default wav play cmd
2017-08-02 10:06:39 -05:00
Åke e7c55aaa43 Merge pull request #933 from MycroftAI/feature/skill-configuration
Feature/skill configuration
2017-08-02 08:57:28 +02:00
Åke Forslund ddf0e3578e Remove volume parameter from default wav play cmd
==== Fixed Issues ====
#943
2017-08-02 08:08:42 +02:00
Michael Nguyen b68baf1d57 change LOGGER to logger 2017-08-01 16:39:13 -05:00
Michael Nguyen 12c7302ac7 changed logger to LOGGER 2017-08-01 16:22:49 -05:00
Michael Nguyen 48b26d1fbd added new test and put back is_stored property 2017-08-01 13:52:51 -05:00
Åke Forslund df18f42ae0 Remove debug prints 2017-08-01 11:45:42 +02:00
Åke Forslund 9c49f97421 Audio service is_playing property 2017-07-31 13:37:18 +02:00
Åke Forslund 0e2029d9fe Add support for muting pulse audio streams
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.
2017-07-31 13:37:18 +02:00
Åke Forslund 6f37d3c8f8 Fix bug in track_info_method
* import Message to allow audio service to reply info
* Add default message to audio service class
2017-07-31 13:37:18 +02:00
Åke Forslund 3aee40274a Fix pep8 issue introduced during rebase. 2017-07-31 13:37:18 +02:00
Åke Forslund 68506cb519 Add basic tests for audio service 2017-07-31 13:37:17 +02:00
Åke Forslund 93a9848a4c Move speech information methods to audio 2017-07-31 13:37:17 +02:00
Åke Forslund 769b4f900e Move text to speech to audio service 2017-07-31 13:37:17 +02:00
Åke Forslund 824503ae4d Volume is now changed in relation to current volume for vlc 2017-07-31 13:37:17 +02:00
Åke Forslund 8d4aabe6ca Correct resume handler 2017-07-31 13:37:17 +02:00
Åke Forslund e1eb61e9d8 Update default setting to new standard 2017-07-31 13:37:17 +02:00
Åke Forslund d012702bde Update control logic for mpg123 process
Removes the cases where the process keeps playing in the background
when a new track is started.
2017-07-31 13:37:17 +02:00
Åke Forslund 839803c958 Rename messages.
As requested by Augusto Monteiro
2017-07-31 13:37:17 +02:00
Åke Forslund 86a557e1ac Docstrings! 2017-07-31 13:37:17 +02:00
Åke Forslund e9a8eb01ca Handle file:// uri's in mpg123 backend 2017-07-31 13:37:17 +02:00
Åke Forslund c81ad57ebf Populate AudioService class with more methods
Pause, resume, next and previous added to the interface.
The play method was updated to add 'file://' to uri's lacking uri type.
2017-07-31 13:37:17 +02:00
Åke Forslund 5c874677cc Add check for valid type of tracks 2017-07-31 13:37:17 +02:00
Åke Forslund 0749b3c088 Only display message bus messages related to audio service 2017-07-31 13:37:17 +02:00
Åke Forslund 44a7c5ec0c Fix playback_control skill 2017-07-31 13:37:17 +02:00
Åke Forslund 2270448fff Fix pep8 errors 2017-07-31 13:37:17 +02:00
Åke Forslund bddccad7b9 Make service loading more robust 2017-07-31 13:37:17 +02:00
Åke Forslund aab65d8178 Add docstrings. 2017-07-31 13:37:17 +02:00
Åke Forslund 177187bee6 Rename manual_load to load_service. 2017-07-31 13:37:17 +02:00
Åke Forslund bccc9f78d8 Handle stop 2017-07-31 13:37:17 +02:00
Åke Forslund a39033fa98 Re-add resume functionality 2017-07-31 13:37:17 +02:00
Åke Forslund 3001dd5a83 Move backend base class to audio/services 2017-07-31 13:37:17 +02:00
Åke Forslund 7dc746370a Load all audio services in the service directory 2017-07-31 13:37:17 +02:00
Åke Forslund c7ad6b11bb Move audio service to separate process. 2017-07-31 13:37:17 +02:00
Åke Forslund ac5bd17041 Add chromecast service
Chromecast can be manually added with a backend entry with type set to "chromecast" or the service can autodetect all chromecast and register them with their names by setting the Audio configuration parameter autodetect-chromecast set to true.

Currently this implementation is very basic and is using the default media controller. This limits the usable uri's to http(s), adding support for local files and hopefully more services will be added later.
2017-07-31 13:37:17 +02:00
Åke Forslund 67502372bf fix pep8 issues 2017-07-31 13:37:17 +02:00
Åke Forslund 51b98a11b7 Fix trailing comma in default config 2017-07-31 13:37:17 +02:00
Åke Forslund e55cd018f2 Activate default-backend option 2017-07-31 13:37:17 +02:00
Åke Forslund b098f2ad30 Make sure mopidy startup doesn't block 2017-07-31 13:37:17 +02:00
Åke Forslund ee5141ed6f Make all audio backend build on the base class
Abstract base class is now a bit more lenient
2017-07-31 13:37:16 +02:00
Åke Forslund 34dd679d3e Fix mopidy configuration 2017-07-31 13:37:16 +02:00
Åke Forslund 6d36cf4cd1 Add default configuration 2017-07-31 13:37:16 +02:00
Åke Forslund 8686cade3b Update service alias to use config name 2017-07-31 13:37:16 +02:00
Åke Forslund 06a9eb7ee5 Initial update to follow changes in mycroft 2017-07-31 13:37:16 +02:00
Åke Forslund e6723b2a56 Add backend selection
The user can now specify which backend to use to play media. default the keywords are the name of the backend (vlc, mpg123, mopidy) but can be set with the config.

Example:
audio.mopidy.name = "livingroom"

A possible user interaction might be

- "Hey mycroft, play the news in the livingroom"

The detection is very basic and not very elegant but works as a proof of concept.
2017-07-31 13:37:16 +02:00
Åke Forslund 8078bdd4c2 Correct return value from track_info 2017-07-31 13:37:16 +02:00
Åke Forslund 37b8c17121 Add name property to VlcService 2017-07-31 13:37:16 +02:00
Åke Forslund 4af620c968 Add configuration handling for mpg123 backend 2017-07-31 13:37:16 +02:00
Åke Forslund 7ea387988d Add vocab dir to project 2017-07-31 13:37:16 +02:00
Åke Forslund a28a435ddf Add configuration options 2017-07-31 13:37:16 +02:00
Åke Forslund 26e63cdff3 Add abstract base class for audio backends 2017-07-31 13:37:16 +02:00
Åke Forslund 717c6fa49b Add track_info to audio service connection 2017-07-31 13:37:16 +02:00
Åke Forslund f596992a88 Remove unused vocabulary. 2017-07-31 13:37:16 +02:00
Åke Forslund 89d4cc5f0a Add basic configuration to activate services 2017-07-31 13:37:16 +02:00
Åke Forslund 89adf6e8ac Initial commit of audio service
Three backends have been added, mopidy, vlc and mpg123. Depending on uri type an apporpriate service is selected when media playback is requested. (for example mopidy service can handle spotify://... and local://...)

A playback Control skill can pause, resume, stop change track, etc any started media. So for example if the NPR news skill used this after starting playing the news the user can say "Hey Mycroft, pause" and the playback will pause. The playback control also handles stuff like lowering the volume of the playback if mycroft is asked another question.

Currently the different backend runs under the playbeck control, this was made most for convenience and the services should be moved in the future.

Usage:
The user needs to import the audioservice interface
`from mycroft.skills.audioservice import AudioService`

and initialize an instance in the skill `initialize` method

`self.audio_service = AudioService(self.emitter)`

Then playing an uri is as simple as

`self.audio_service.play(uri)`

TODO:
* Configuration (Alias for the different backends, service specific config, active services, etc.)
* Manual selection of backend (This is prepared in the audioservice interface biut not implemented)
* More feature complete audio service interface (playback control, get trackname etc)
* Separate audio services from the playback control
* Probably lots more
2017-07-31 13:37:16 +02:00
Michael Nguyen 05852f30ef removed logger messages 2017-07-28 15:08:33 -05:00
Michael Nguyen 0c0bc6fd34 fixed bugs 2017-07-28 13:42:18 -05:00
Michael Nguyen 1e8ee03674 fixed pep8 issues 2017-07-27 16:38:24 -05:00
Michael Nguyen 37ada28dbd refactored skill settings and fixed test 2017-07-27 16:28:32 -05:00
Arron Atchison 2a595931ba bump enclosure version to 1.0.0 2017-07-24 17:16:32 -05:00
Steve Penrod e8e0853825 Merge pull request #838 from MycroftAI/feature/display_state_manager
Feature/display state manager
2017-07-21 19:58:07 -05:00
Arron Atchison dc386a432e bump version to 0.8.19 2017-07-20 19:05:24 -05:00
Åke Forslund 6f41964796 Make name parameter optional.
==== Fixed Issues ====

==== Tech Notes ====
Uses supplied name parameter if present, otherwise uses name of class.

==== Documentation Notes ====
The skill creation documentation should mention that the name parameter
is only an option.

==== Localization Notes ====
NONE

==== Environment Notes ====
NONE

=== Protocol Notes ====
NONE
2017-07-19 16:47:26 -05:00
Åke Forslund f843e758d3 Make expect respones trigger when mycroft stops speaking 2017-07-19 11:36:03 -05:00
Åke Forslund 6f3e1e0d55 Fix filename for cache lookup 2017-07-19 10:43:57 -05:00
Matthew D. Scholefield 90aff68034 Reverting "Add intent fallback system (#899)"
This is because this will break wolfra alpha skill unless they update
skills, but if they update before getting the new version, it will also
break wolfram

This reverts commit 6ca4161335.
2017-07-14 17:53:42 -05:00
Matthew D. Scholefield 6ca4161335 Add intent fallback system (#899)
* Create new FallbackSkill base class for implementing fallback behavior
Also removes multi utterance intent fail. Only makes sense to emit an intent_failure regardless of the amount of intents
2017-07-14 17:27:26 -05:00
Augusto Monteiro a5d349aff5 Merge pull request #878 from Teagan42/kaldi-stt
Kaldi STT
2017-07-13 13:14:39 -04:00
Michael Nguyen 6eb1c194cb add try except 2017-07-11 18:19:21 -05:00
Michael Nguyen 00bde77400 fixed test 2017-07-11 16:19:05 -05:00
Michael Nguyen b891e03511 implement patch functionality, chaged json structure 2017-07-11 15:25:43 -05:00
penrods e307df2bb4 Duplicate service hack #2... performing check in the Enclosure client after a
60 second delay.  The packaging system was preventing the previous approach
from rebooting.
2017-07-10 23:22:29 -05:00
penrods 8cbc73e98c Added same kind of hack for mycroft-speech-client 2017-07-10 22:12:59 -05:00
penrods b6cc47a1a4 Hack to deal with a silly problem happening during upgrade of a Mark 1 from a
0.8.17 or earlier build.  A Series of Unfortunate Events leads to two instances
of the mycroft-skills service running.  This causes double-answers, which is
confusing to everyone.  The root problem that lead to this is corrected in
release 0.8.18, but resolving it in packaging is ridiculously difficult.

So, we'll do this simple hack for the interim.  It is harmless and useless if
not running in the Mark 1 environment.
2017-07-10 22:12:59 -05:00
Connor Penrod 41698d4dbe Adds the ExtractDateTime parse function from Christopher (plus relevant tests) (#866)
Adds the ExtractDateTime parse function from Christopher.  When imported from mycroft/util/parse.py, it'll take a sentence like "What's the weather like 5 weeks from next Wednesday?" and will extract a python datetime object for that date.

* Added requirements.txt change for importing dateutil
2017-07-10 15:33:21 -05:00
Sujan Patel 668eefe74f Issue-895 - Adding uppercase support to wake words 2017-07-08 11:35:58 -04:00
Arron Atchison 3a6b9be389 version bump to 0.8.18 2017-07-07 12:12:59 -05:00
Ethan Ward ec7bc6d512 Refactor setup_base to use CORE_VERSION_STR 2017-07-07 10:46:45 -05:00
Michael Nguyen bb0dd95b55 changed server from test to prod in mycroft.conf 2017-07-07 10:27:03 -05:00
Åke dd30d586e1 Check queue empty with self.queue.empty() instead of len() (#894)
* Check queue empty with self.queue.empty() instead of len()

* Add error logging of exceptions in tts thread.

* Limit the number of audio_output_start messages.

recognizer_loop:audio_output_start message will only be sent if the
queue has been empty since last loop.
2017-07-07 09:08:28 -05:00
Matthew D. Scholefield 63d90cef4f Only output audio end when all audio has been spoken 2017-07-06 20:18:59 -05:00
Matthew D. Scholefield 0a09e6b91e Move audio output start and end messages to TTS class
This prevents them from being outputted too early if playback is run on another thread
2017-07-06 20:18:59 -05:00
Michael Nguyen f62a771e28 merge changes 2017-07-06 16:59:26 -05:00
Michael Nguyen 25a457083d fixed function names 2017-07-06 16:58:24 -05:00
Åke Forslund 28c15eb64e Fix subprocess.call() issue and add error logging. 2017-07-06 15:29:19 -05:00
Michael Nguyen f361392628 Merge branch 'dev' of https://github.com/MycroftAI/mycroft-core into feature/skill-configuration 2017-07-06 12:40:50 -05:00
Michael Nguyen bf48d7b6fb [WIP] need to implement PATCH 2017-07-06 12:40:21 -05:00
Åke 7bab1d1e21 Merge pull request #804 from forslund/feature/issue-803
TTS playback thread
2017-07-06 12:15:48 +02:00
Åke Forslund f714a5a882 Stop current sentence immediately by terminating playback 2017-07-06 11:49:47 +02:00
Åke Forslund 7143e5ef93 Return True when button is pressed as well. 2017-07-06 11:48:40 +02:00
Åke Forslund 3be91fb84c Allow "Stop" to clear playback queue 2017-07-06 09:41:22 +02:00
Åke Forslund fb6fa54fd8 refactor Google tts to take advantage of playback thread 2017-07-06 09:39:28 +02:00
Åke Forslund e528fa0bd3 Stop tts playback thread when needed
When
- Updating tts config
- KeyboardInterrupt
2017-07-06 09:39:28 +02:00
Åke Forslund d378c9d1a6 Refactor Mimic class to keep caching functions in base class 2017-07-06 09:39:28 +02:00
Åke Forslund 0de3f49a82 Add threading for mimic tts 2017-07-06 09:34:33 +02:00
Matthew D. Scholefield a33cc35b39 Fully fix wake up functionality 2017-07-05 17:37:26 -05:00
Matthew D. Scholefield e11bb52853 Fix wake up 2017-07-05 17:11:26 -05:00
Matthew D. Scholefield c2b2134a12 Make Wake Word detection modular (#876)
This separates Pocketsphinx into its own class allowing other wake word recognizes to be switched in easier.
2017-07-05 14:26:34 -05:00
Åke Forslund 653d1e6f5e Change logging level for missing dialog/vocab to debug 2017-07-05 19:37:33 +02:00
Åke Forslund 54783a1dd1 Minor cleanup 2017-07-05 19:35:26 +02:00
Åke Forslund a2644bc97c Load data files and decorated intent handlers automatically. 2017-07-05 19:35:26 +02:00
Åke Forslund eb6cd79e52 Minor cosmetic fixes
- underscore in front of variables/methods not intended for users
- docstrings
- remove debug printout
2017-07-05 19:35:26 +02:00
Åke Forslund 7955feaec7 Add support for decorating handlers with intents 2017-07-05 19:35:26 +02:00
Teagan Glenn e0a88667ee Configs for kaldi 2017-07-05 10:02:35 -06:00
Teagan Glenn 5d1cb4dbdf Use config var 2017-07-05 09:10:15 -06:00
Teagan Glenn a64862cf41 Fixes based on PR comments 2017-07-05 09:06:08 -06:00
Teagan Glenn f795ea0237 Kaldi STT 2017-07-04 15:46:08 -06:00
Michael Nguyen b6a7234be3 Merge branch 'dev' of https://github.com/MycroftAI/mycroft-core into feature/skill-configuration 2017-06-30 17:36:08 -05:00
Michael Nguyen 01d8a0caf7 [WIP] need to add PATCH for settingsmeta.json 2017-06-30 17:36:04 -05:00
Åke 97af70bb86 Merge pull request #857 from JarbasAI/patch-16
Read Blacklisted skills from config
2017-06-30 22:08:01 +02:00
Jarbas 2c0ed93e4b pep8 2017-06-30 20:27:33 +01:00
kfezer cc129f615d Update message.py 2017-06-30 10:03:24 -07:00
Art McGee 3872dafd81 This add comments to document the message class
Signed-off-by: Art McGee <amcgee7@jaguarlandrover.com>

	mycroft/messagebus/message.py
2017-06-30 09:57:00 -07:00
Art McGee 94e8705264 Fixes and Typeo's
Signed-off-by: Art McGee <amcgee7@jaguarlandrover.com>

	mycroft/messagebus/message.py
2017-06-30 09:54:15 -07:00
Arron Atchison 14df7e6846 Update __init__.py 2017-06-30 09:37:06 -05:00
Steve Penrod 96c08189ed Revert "This add comments to document the message class" 2017-06-30 00:41:20 +02:00
penrods 0eee71d90f Fixed the allow_timeout (used in out-of-the-box); and a wifi setup disconnect tweak
* The allow_timeout value was tested poorly, preventing it from actually doing anything
* Upped the number of arp/ping test failures from 3 to 6 when validating the connection.  This makes falsely detecting a wifi setup disconnect pretty unlikely.
2017-06-29 17:10:14 -05:00
Jarbas ebe1c7fcea use get 2017-06-29 21:44:21 +01:00
Jarbas d4177d43a0 Update mycroft.conf 2017-06-29 21:42:05 +01:00
Jarbas 6b9c2d8e74 add blacklisted skills 2017-06-29 20:39:09 +01:00
Jarbas 8af5ce09cf read blacklisted skills from config 2017-06-29 20:36:02 +01:00
Åke b98b020da2 Merge pull request #854 from forslund/gregmccoy-feature/issue-788
Gregmccoy feature/issue 788
2017-06-29 20:32:08 +02:00
Art McGee 355225ee3d Merge branch 'dev' into amcgee7_docs 2017-06-29 07:17:19 -07:00
Åke Forslund 10e4660e3e Add some safety to remove_all_listers
The same websocket client object is often used between many different
parts of the software. (for example skills) This will reduce the risk
that all listeners are removed for all events by mistake. It it still
possible toi do this by calling
`WebsocketClient.ws.remove_all_listers()` if there would be need for
this mechanism.
2017-06-29 08:09:23 +02:00
Greg McCoy d7d0dbec5e Issues 788 - Adding remove_all_listeners 2017-06-29 07:54:05 +02:00
Michael Nguyen d3621b7fca [WIP] refactored 2017-06-28 17:31:35 -05:00
Michael Nguyen 344d53cc7e [WIP] 2017-06-28 11:35:25 -05:00
Michael Nguyen e3b4e7c6e3 [WIP] modify settings.py to post metadata to api, and get settings form api 2017-06-28 11:32:19 -05:00
Art McGee 8323f193f0 Merge branch 'amcgee7_docs' of https://github.com/amcgee7/mycroft-core into amcgee7_docs 2017-06-26 13:55:27 -07:00
Art McGee 57ae8bac4c Fixes and Typeo's
Signed-off-by: Art McGee <amcgee7@jaguarlandrover.com>
2017-06-26 13:52:52 -07:00
Art McGee 11c6ae4a07 This add comments to document the message class
Signed-off-by: Art McGee <amcgee7@jaguarlandrover.com>
2017-06-26 13:52:52 -07:00
kfezer@gmail.com 12ebabb70f Changing how SSH is enabled.
Now using systemctl for both enabling and disabling\
	modified:   mycroft/client/wifisetup/main.py
2017-06-26 13:52:52 -07:00
Arron Atchison cf14c64f5a Update main.py 2017-06-26 13:52:52 -07:00
Arron Atchison 9d36ad5d20 Update version.txt 2017-06-26 13:52:52 -07:00
kfezer@gmail.com 517034bd73 Added command line calls to enable/ disable ssh
Fixed issue where ssh.enable was emitting wrong message
	Tested mycroft.dialog.get
	modified:   mycroft/client/enclosure/__init__.py
	modified:   mycroft/client/wifisetup/main.py
2017-06-26 13:52:52 -07:00
Arron Atchison b6fb405499 Version bump to 0.8.12 2017-06-26 13:52:52 -07:00
penrods 7b1cfbca1f Minor code restructure to simplify _record_phrase()
Basically just moved the signal-related code into a helper method.
2017-06-26 13:52:52 -07:00
penrods bd4e3836d3 Improved handling of button press
Improved the way the button press is handled.  Now the listener gives the rest
of the system a moment to consume the button press before it interprets it
as a request to begin listening.

Also replaced the use of the "buttonPress" signal when "expect_response"
was indicated with an utterance.  Now the signal "startListening" is
created, differentiating it from a buttonPress.
2017-06-26 13:52:52 -07:00
penrods 8bd28e11ce Support for Mark 1 SSH > BLOCK menu item
This implements the handler for the Mark 1 menu item SSH > BLOCK (the inverse of SSH > ALLOW)
* Added handler for "unit.disable-ssh" on the serial line. This turns around and emits "mycroft.disable.ssh" on the messagebus.
* Removed the automatic reboot, just let the user know it will be different after a restart
* Made the spoken message translatable
* Changed mycroft.dialog.get() to not require the "lang" parameter.  It will default to the mycroft.conf value.
2017-06-26 13:52:52 -07:00
penrods fa32ff303a Restore the drawing of icons when showing weather.py
This implements the image drawing functionality of the lastest Mark 1 enclosure instead of the old numeric weather icon codes.
2017-06-26 13:52:52 -07:00
Åke Forslund e7b2665f80 Enable config updates for skills in container 2017-06-26 13:52:52 -07:00
Augusto Monteiro 'Sparky 55780dbc4a Fixing demo mode, sending two events on message bus 2017-06-26 13:52:52 -07:00
Arron Atchison 8483c33154 Update __init__.py 2017-06-26 13:52:52 -07:00
kfezer@gmail.com c851461c4e increases boot delay on reboot after ssh and reset
modified:   mycroft/client/enclosure/__init__.py
2017-06-26 13:52:52 -07:00
Arron Atchison 0cdfaf3ae7 bump enclosure version to 0.1.22 2017-06-26 13:52:52 -07:00
SoloVeniaASaludar cf1a98b2da + 2017-06-26 13:52:52 -07:00
SoloVeniaASaludar 4220026672 + 2017-06-26 13:52:52 -07:00
Augusto Monteiro 'Sparky bd93b1f2dc Adding demo mode
* Sending an event to messagebus when demo button is pressed
2017-06-26 13:52:52 -07:00