Skip to content

LEARNing, Scheduling and speaking in other languages

Compare
Choose a tag to compare
@aatchison aatchison released this 19 Sep 02:16
· 3253 commits to dev since this release

LEARN support (#1039)

A small step but major change is in this release. For the first time we are enabling Mycroft users to provide data to our machine learning algorithms so we can improve the behavior of the system. For Mark 1 users, a LEARN menu item is now available, for Picroft and Github installs use a manual mycroft.conf entry.

When enabled, the 10 seconds of audio containing and preceding a “Hey Mycroft” wake-up are shared with us. We gather the previous 10 seconds to capture many of the false negatives, that is the times when you had to say ‘Hey Mycroft’ multiple times to wake it up.

We respect your privacy, so this is disabled by default. (Despite the developer accidentally checking it in his own ‘wake_word_upload.enabled’ setting originally! Fixed in #1088.) But we encourage you to help us make Mycroft better for all by enabling this simple option.

Translations

Our stated goal with the Mycroft Project is to create an AI for Everyone. This includes far more than just English speakers. We have built-in support for internationalization and several community members have already started work on support for:

Translation efforts have also begun in German and Dutch, look for those soon!

FEATURE: Event scheduling. (#1032)

Previously, Mycroft supported scheduling by basing a skill on the ScheduledSkill() class. However the need for repeating event is so common that this mechanism was limiting. Additionally, the need for a time-based “callback” is common (for example retrying after several seconds or periodically polling), and the common Thread-based method for implementing this was inefficient.

So now the MycroftSkill contains several event scheduling methods:

 def schedule_event(self, handler, when, data=None, name=None):
 def schedule_repeating_event(self, handler, when, frequency, data=None, name=None):
 def update_event(self, name, data=None):
 def cancel_event(self, name):

These capabilities replace the need for the ScheduledSkill(), which is now deprecated.

New/Updated APIs

  • Allow update of local configuration (e.g. TTS engine). Thanks @JarbasAI! (#980)

  • Add commonly used classes and methods to the mycroft and mycroft.util modules, simplifying import’ing them into a skill. (#1023)

    The mycroft module now includes:
    Classes: Api, MycroftSkill, FallbackSkill, Message
    intent_handler(), intent_file_handler(), adds_context(), removes_context()

    The mycroft.util module now includes:
    getLogger(), extract_datetime(), extractnumber(), normalize(), nice_number(), convert_number()

  • Add concept of Priority Skills. Include ‘skill-pairing’ in priority list, delay network check until all priority skills are loaded (#1084)

FIXES

  • ISSUE #847: Static method get() in ConfigurationManager was being called with an actual instance in several locations
  • ISSUE #1001: Prevent multiple reloads of skills on startup
  • ISSUE #1007: Add SkillContainer support after converse() changes
  • ISSUE #1014: Skill unload/reload had memory leaks
  • ISSUE #1019: The expect_response flag for speak_dialog() wasn’t being passed along correctly
  • ISSUE #1022: Workaround an issue with Adapt and context management while determining proper behavior.
  • ISSUE #1027: Change to io.open for better handling of character sets in dialog
  • ISSUE #1036: Correct main() signature to restore support for the mycroft-cli-client shortcut in package builds
  • ISSUE #1047: The start.sh help did not show the support for the ‘audio’ service
  • The websocket client reconnection interval doubled with each failure to avoid bogging down a disconnected system, but wasn’t being reset upon successfull connection (#1080)
  • The “I’m awake” message wasn’t being played, and remove ‘I didn’t catch that’ (#1087)

Misc

  • Testing extensions:
    • Move test for intent_service to correct folder (#1006, #1063)
    • Extend core testing, e.g. skill loading, (#1003)
  • Changed converse() mechanism to use skill_id instead of name (#1005)
  • Skill system cleanup (#1012)
    • Documenting
    • Moving testing support methods out of main code
    • Import cleanup
  • CLI improvements (#1038, #1081)
    • Add :find (or Ctrl+F) for searching logs
    • Add :history size to change the chat history window size
    • Invert PgUp/PgDn (it felt backwards)
    • Add ‘oldest’ and ‘newest’ indicators at the top and bottom of the log
    • Stop message scrolling when paging back through logs
    • Add heading to mic input indicator and limit size
    • Fixed default viseme filter and saving of filters.
  • Clean-up shutdown of skills to allow skill shutdown() methods (#1042)
  • Update Padatious to 0.2.2 (#1058)
  • Refine dev_setup.sh (removing separate build_host_setup_debian.sh, build_host_setup_arch.sh, and build_host_setup_fedora.sh scripts); plus add notification to mycroft.sh when a rerun of dev_setup.sh is needed (#1058)
  • Filtered ‘enclosure.mouth.display’ from the log by default (#1060)
  • Removed wolframalpha as a default skill (#1096, #1097)
  • MSM overhaul. (#1048, #1093)
    • Verifies skill is on ‘master’ branch before updating
    • Handle quoted search string properly
    • Improve error handling and use return codes to reflect results
    • Make install/remove output parser-friendly
    • Add support for ‘msm remove ’
  • Volume change now happens via messagebus messages ‘mycroft.volume.increase’ and ‘mycroft.volume.decrease’ (#1089)
  • Added a hotword factory, allowing integration of alternative wake-word tools such as Snowboy. Thanks @JarbasAI! (#1062)
  • Improved handling of microphone muting (#1078)
  • Add messagebus messages ‘mycroft.skill.handler.start’ and ‘mycroft.skill.handler.complete’ as skills are being processed (#1079)
  • Added mycroft_use.sh script, allowing easy switching between the stable, unstable and github installs on Raspbian (including Mark 1, Picroft) platforms (#1073)
  • Add support for bitrates other than 16000 Hertz in Mycroft STT (#1054)
  • Add Context manager sanity checks (#1071)
  • Rework configuration loading, reducing unneeded remote configuration loads during testing (#1064)