Mycroft Core, the Mycroft Artificial Intelligence platform.

Overview

License CLA Team Status

Unit Tests codecov PRs Welcome Join chat

Mycroft

Mycroft is a hackable open source voice assistant.

Table of Contents

Getting Started

First, get the code on your system! The simplest method is via git (git installation instructions):

  • cd ~/
  • git clone https://github.com/MycroftAI/mycroft-core.git
  • cd mycroft-core
  • bash dev_setup.sh

This script sets up dependencies and a virtualenv. If running in an environment besides Ubuntu/Debian, Arch or Fedora you may need to manually install packages as instructed by dev_setup.sh.

NOTE: The default branch for this repository is 'dev', which should be considered a work-in-progress. If you want to clone a more stable version, switch over to the 'master' branch.

Running Mycroft

Mycroft provides start-mycroft.sh to perform common tasks. This script uses a virtualenv created by dev_setup.sh. Assuming you installed mycroft-core in your home directory run:

  • cd ~/mycroft-core
  • ./start-mycroft.sh debug

The "debug" command will start the background services (microphone listener, skill, messagebus, and audio subsystems) as well as bringing up a text-based Command Line Interface (CLI) you can use to interact with Mycroft and see the contents of the various logs. Alternatively you can run ./start-mycroft.sh all to begin the services without the command line interface. Later you can bring up the CLI using ./start-mycroft.sh cli.

The background services can be stopped as a group with:

  • ./stop-mycroft.sh

Using Mycroft

Home Device and Account Manager

Mycroft AI, Inc. maintains a device and account management system known as Mycroft Home. Developers may sign up at: https://home.mycroft.ai

By default, mycroft-core is configured to use Home. By saying "Hey Mycroft, pair my device" (or any other request verbal request) you will be informed that your device needs to be paired. Mycroft will speak a 6-digit code which you can enter into the pairing page within the Mycroft Home site.

Once paired, your unit will use Mycroft API keys for services such as Speech-to-Text (STT), weather and various other skills.

Skills

Mycroft is nothing without skills. There are a handful of default skills that are downloaded automatically to your /opt/mycroft/skills directory, but most need to be installed explicitly. See the Skill Repo to discover skills made by others. Please share your own interesting work!

Behind the scenes

Pairing Information

Pairing information generated by registering with Home is stored in: ~/.mycroft/identity/identity2.json <-- DO NOT SHARE THIS WITH OTHERS!

Configuration

Mycroft's configuration consists of 4 possible locations:

  • mycroft-core/mycroft/configuration/mycroft.conf(Defaults)
  • Mycroft Home (Remote)
  • /etc/mycroft/mycroft.conf(Machine)
  • $HOME/.mycroft/mycroft.conf(User)

When the configuration loader starts, it looks in these locations in this order, and loads ALL configurations. Keys that exist in multiple configuration files will be overridden by the last file to contain the value. This process results in a minimal amount being written for a specific device and user, without modifying default distribution files.

Using Mycroft Without Home

If you do not wish to use the Mycroft Home service, before starting Mycroft for the first time, create $HOME/.mycroft/mycroft.conf with the following contents:

{
  "skills": {
    "blacklisted_skills": [
      "mycroft-configuration.mycroftai",
      "mycroft-pairing.mycroftai"
    ]
  }
}

Mycroft will then be unable to perform speech-to-text conversion, so you'll need to set that up as well, using one of the STT engines Mycroft supports.

You may insert your own API keys into the configuration files listed above in Configuration. For example, to insert the API key for the Weather skill, create a new JSON key in the configuration file like so:

{
  // other configuration settings...
  //
  "WeatherSkill": {
    "api_key": "<insert your API key here>"
  }
}

API Key Services

These are the keys currently used in Mycroft Core:

Using Mycroft behind a proxy

Many schools, universities and workplaces run a proxy on their network. If you need to type in a username and password to access the external internet, then you are likely behind a proxy.

If you plan to use Mycroft behind a proxy, then you will need to do an additional configuration step.

NOTE: In order to complete this step, you will need to know the hostname and port for the proxy server. Your network administrator will be able to provide these details. Your network administrator may want information on what type of traffic Mycroft will be using. We use https traffic on port 443, primarily for accessing ReST-based APIs.

Using Mycroft behind a proxy without authentication

If you are using Mycroft behind a proxy without authentication, add the following environment variables, changing the proxy_hostname.com and proxy_port for the values for your network. These commands are executed from the Linux command line interface (CLI).

$ export http_proxy=http://proxy_hostname.com:proxy_port
$ export https_port=http://proxy_hostname.com:proxy_port
$ export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,0.0.0.0,::1"

Using Mycroft behind an authenticated proxy

If you are behind a proxy which requires authentication, add the following environment variables, changing the proxy_hostname.com and proxy_port for the values for your network. These commands are executed from the Linux command line interface (CLI).

$ export http_proxy=http://user:[email protected]_hostname.com:proxy_port
$ export https_port=http://user:[email protected]_hostname.com:proxy_port
$ export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,0.0.0.0,::1"

Getting Involved

This is an open source project. We would love your help. We have prepared a contributing guide to help you get started.

If this is your first PR, or you're not sure where to get started, say hi in Mycroft Chat and a team member would be happy to mentor you. Join the Mycroft Forum for questions and answers.

Links

Issues
  • The dev_setup.sh script should ensure that it is not run with sudo, or at least ask.

    The dev_setup.sh script should ensure that it is not run with sudo, or at least ask.

    After going through the register process the mycroft client doesn't seem to realize that it has been registered and continues to say that the device is not registered and gives a registration code. Restarting all of mycroft's processes after registration, and then restarting has no effect. The website itself appears to have worked, the device id on the web page matches the id in the identity.json file on my machine.

    commit: 9aa9f47f720736e0330854bd0d9ef5af0604808c

    Type: Bug - complex 
    opened by LongBoolean 45
  • Missing mycroft.conf

    Missing mycroft.conf

    I've just installed mycroft on Ubuntu 17.04, but have no mycroft.conf file, so nothing is working except cli. Please help.

    opened by TongShanHui 41
  • Use XDG Base directories for settings, cache and runtime data

    Use XDG Base directories for settings, cache and runtime data

    Description

    This makes Mycroft use the XDG Base Directory specification. Data is now saved to:

    • settings to $XDG_CONFIG_DIR/mycroft, which most of the time equals to ~/.config/mycroft
    • data to $XDG_DATA_DIRS/mycroft, which most of the time equals to ~/.local/share/mycroft
    • cache to $XDG_CACHE_HOME/mycroft, which most of the time equals to ~/.cache

    Since this changes the default location of pretty much everything, please test it well!

    Goal is to support and read from the old ~/.mycroft location if it already exists, but save to the XDG Base Directories and read from it on new installations.

    Together with #2559 this should be full XDG Base Directory compliance.

    How to test

    First of all, run this PR with an existing installation, and check if everything is loaded from the usual locations. Then shut it down and restart to make sure it has saved to the new locations. Then, completely remove any trace of Mycroft settings from your system. Easiest would be to fully deinstall (remove /opt/mycroft), remove ~/.mycroft, and the XDG Base directories mentioned above. Now reinstall Mycroft (with this PR applied) and start and connect it. Check if ~/.mycroft is not created anymore and ~/.config/mycroft, ~/.local/share/mycroft and ~/.cache/mycroft are with the correct files and directories in them.

    Contributor license agreement signed?

    CLA [x]

    Status: Work in progress CLA: Yes Type: Enhancement - roadmapped 
    opened by PureTryOut 39
  • Pure-try-out's XDG config PR with changed Jenkinsfile

    Pure-try-out's XDG config PR with changed Jenkinsfile

    Description

    This is PR #2578 with added Jenkinsfile change for the identity location.

    Contributor license agreement signed?

    CLA [ Yes ] (Whether you have signed a CLA - Contributor Licensing Agreement

    CLA: Yes 
    opened by forslund 37
  • feat/gui video common play

    feat/gui video common play

    Starts integrating gui video playback into the common play framework

    • adds self.gui.play_video
    • makes gui video playback respond to playback control skill
      • pause
      • resume
      • stop

    see usage here https://github.com/JarbasSkills/skill-dagon/blob/feat/gui_common_play/init.py#L124

    Status: To be reviewed CLA: Yes Type: Enhancement - roadmapped Status: Abandoned by author 
    opened by JarbasAl 34
  • Issue #279 - Added results property to skills

    Issue #279 - Added results property to skills

    Also added default of the skills name to the extras. Skills should now be able to call the inherited 'add_extra' method to add extras to its responses ref issue #279

    opened by joshymcd 34
  • Issues 238 - Philips Hue Skill

    Issues 238 - Philips Hue Skill

    #238 - Phillips Hue Skill

    opened by ChristopherRogers1991 29
  • Audio service

    Audio service

    In late November @penrods led a discussion about how an audio service in Mycroft could work. This is a simple implementation of what was discussed. This is a quick implementation of the system as I understood it and I think this can be used to continue the discussion. Ideas and suggestions on improvements are very welcome.

    The PR adds support for commands like

    "Hey Mycroft, play the news in the livingroom"

    Backends

    The current system includes support for the following "backends"

    • Mpg123, very limited implementation
    • VLC
    • Mopidy

    "backends" currently in the works:

    • Chromecast
    • Kodi

    Backends are quite easy to add and an existing baseclass can be extended to add new ones.

    AudioService

    Skill creators will use an audio service interface to communicate with the audio service / playback control. the AudioService interface uses the standard message bus.

    from mycroft.skills.audioservice import AudioService
    [...]
      as = AudioService()
    [...]
      as.play(file_or_uri) # handles both lists and single uris
    

    See the npr_news skill for basic usage.

    The AudioService currently only support play and track_info requests but this will probably be expanded for increased usefulness.

    Playback control skill

    Features:

    • backend/location selection from utterance ("...in kitchen" etc.)
    • lowering volume while Mycroft speaks
    • playback control (Pausing/Resuming, skipping, Stopping)

    The backend/location selection is currently done using basic string parsing and should probably be done using adapt instead.

    This skill removes much of the basic functions that needs to be implemented for an audio playback skill and the skill creator can focus on the trickier parts.

    Currently most of the audio logic is implemented in the playback control skill and should maybe be moved but this was a good starting point.

    Configuration

    A Configuration the audio services:

    {
      "Audio": {
        "backends": {
          "local": {
            "type": "mpg123",
            "active": true
          },
          "kitchen": {
            "type": "mopidy",
            "url": "http://localhost:6680",
            "active": true
          },
          "livingroom": {
            "type": "mopidy",
            "url": "http://192.168.10.232:6680",
            "active": false
          },
          "vlc": {
            "type": "vlc",
            "active": true
          }
        },
        "default-backend": "local"
      }
    }
    

    If you try it I suggest you install vlc and pyvlc and use the vlc backend since mpg123 only has basic functionallity.

    I've tested this mainly with the mopidy skill and the npr_news skill.

    Todo

    • more backends, Kodi and chromecast is a minimum
    • possibly separate the backends from the playback control skill
    • populate the AudioService interface with more functions so skill creators can do more interesting things with the audio (A music quiz-skill should be able to skip ahead in the playlist when a correct answer is provided)
    • More configuration options
    • Maybe some way to send credentials from a skill to the backend to access some music services
    • Better utterance parsing when starting playback, along with more keywords (like half volume)
    opened by forslund 27
  • UnicodeDecodeError in setup

    UnicodeDecodeError in setup

    Hi, I'm trying to set up Mycroft on an Ubuntu 18.0.4 Docker container that I've got some other stuff in, but am running into an issue when I try to run "start_mycroft.sh". I've followed the installation instructions in the README but run into this error: Already up to date. Starting all mycroft-core services Initializing... Changing ownership of /opt/mycroft to user: with group: root Starting background service bus CAUTION: The Mycroft bus is an open websocket with no built-in security measures. You are responsible for protecting the local port 8181 with a firewall as appropriate. Starting background service skills Starting background service audio Starting background service voice Starting background service enclosure Starting cli Traceback (most recent call last): File "/usr/lib/python3.6/runpy.py", line 183, in _run_module_as_main mod_name, mod_spec, code = _get_module_details(mod_name, _Error) File "/usr/lib/python3.6/runpy.py", line 109, in _get_module_details import(pkg_name) File "/opt/mycroft/mycroft/init.py", line 17, in from mycroft.api import Api File "/opt/mycroft/mycroft/api/init.py", line 22, in from mycroft.configuration import Configuration File "/opt/mycroft/mycroft/configuration/init.py", line 15, in from .config import Configuration, LocalConf, RemoteConf File "/opt/mycroft/mycroft/configuration/config.py", line 23, in from mycroft.util.json_helper import load_commented_json, merge_dict File "/opt/mycroft/mycroft/util/init.py", line 35, in from .parse import extract_datetime, extract_number, normalize File "/opt/mycroft/mycroft/util/parse.py", line 32, in import lingua_franca.parse File "/usr/local/lib/python3.6/dist-packages/lingua_franca/parse.py", line 21, in from lingua_franca.lang.parse_pt import * File "/usr/local/lib/python3.6/dist-packages/lingua_franca/lang/parse_pt.py", line 200, in class PortugueseNormalizer(Normalizer): File "/usr/local/lib/python3.6/dist-packages/lingua_franca/lang/parse_pt.py", line 202, in PortugueseNormalizer _default_config = json.load(f) File "/usr/lib/python3.6/json/init.py", line 296, in load return loads(fp.read(), File "/usr/lib/python3.6/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 602: ordinal not in range(128)

    I've run dev_setup.sh and such, so not really sure what I'm doing wrong. I'm aware of the docker container available, I'm trying to rig one up myself though. Let me know if I missed anything!

    opened by cmburn 26
  • initial work on danish.

    initial work on danish.

    DescriptionInitial work on adding Danish to core

    How to test

    difficult to test without translating some basic skills - fallback-unknown is one important one…..

    Contributor license agreement signed?

    CLA [ X ] (Whether you have signed a CLA - Contributor Licensing Agreement

    CLA: Yes 
    opened by andlo 25
  • Padatious doesn't need to run 3 times

    Padatious doesn't need to run 3 times

    Description

    New class PadatiousMatcher created to avoid running Padatious intent service 3 times when a low priority callback happens. Instead, the new class stores the result from the first call and uses it on subsequent calls with different match priority.

    How to test

    There's no new feature, the way to see its impact is by getting faster low priority fallbacks. So just say something to Mycroft that it shouldn't understand and see that it takes shorter for it to reply.

    CLA: Yes 
    opened by Joanguitar 4
  • Extended the idea of the VK CriteriaWaiter

    Extended the idea of the VK CriteriaWaiter

    Description

    Recently a new CriteriaWaiter class was added to the VoightKampff test framework. This did an excellent job for its intended use case, but there are other similar use cases that could use some of the same logic. This PR adds a base event matching class that is extended by a dialog matching class and a new version of the criteria matching class. The latter was only changed to fit in with the new class structure. The new classes also handle the error messaging that was once in a separate function.

    Existing functions in the VoightKampff tools.py file that did the things these new classes now take care of in a reusable manner have been marked as deprecated in the next major release, 21.08

    How to test

    Run the VK tests. The new criteria matcher is called in then_wait() which is called throughout the test suite. The other classes are used in new tests defined in the TimerSkill (PR yet to be created).

    Contributor license agreement signed?

    CLA [Y] (Whether you have signed a CLA - Contributor Licensing Agreement

    CLA: Yes 
    opened by chrisveilleux 2
  • alter avx test to accomodate aarch64

    alter avx test to accomodate aarch64

    Description

    fixes #2999

    How to test

    Run on an aarch64 platform, ensure the AVX query completes without stopping dev_setup.sh

    Contributor license agreement signed?

    CLA [ X]

    CLA: Yes 
    opened by el-tocino 1
  • dev_setup.sh incorrectly excludes certain ARM cpu's for avx query.

    dev_setup.sh incorrectly excludes certain ARM cpu's for avx query.

    Describe the bug dev_setup.sh incorrectly excludes certain ARM cpu's for avx query. https://github.com/MycroftAI/mycroft-core/blob/9e9f2f74e551efebacf1bd26fc3ed7fde35fae48/dev_setup.sh#L179

    To Reproduce Steps to reproduce the behavior:

    1. Run dev_setup.sh on an aarch64 platform

    Expected behavior avx query would recognize this is an arm platform and move on.

    Log files

    [email protected]:~/mycroft-core $ bash dev_setup.sh
    
                        Welcome to Mycroft!  
    
    This script is designed to make working with Mycroft easy.  During this
    first run of dev_setup we will ask you a few questions to help setup
    your environment.
    
    The Precise Wake Word Engine requires the AVX instruction set, which is
    not supported on your CPU. Do you want to fall back to the PocketSphinx
    engine? Advanced users can build the precise engine with an older
    version of TensorFlow (v1.13) if desired and change use_precise to true
    in mycroft.conf.
      Y)es, I want to use the PocketSphinx engine or my own.
      N)o, stop the installation.
    Choice [Y/N]:  N - quit the installation 
    [email protected]:~/mycroft-core $ cat /proc/cpuinfo 
    processor       : 0
    BogoMIPS        : 108.00
    Features        : fp asimd evtstrm crc32 cpuid
    CPU implementer : 0x41
    CPU architecture: 8
    CPU variant     : 0x0
    CPU part        : 0xd08
    CPU revision    : 3
    
    processor       : 1
    BogoMIPS        : 108.00
    Features        : fp asimd evtstrm crc32 cpuid
    CPU implementer : 0x41
    CPU architecture: 8
    CPU variant     : 0x0
    CPU part        : 0xd08
    CPU revision    : 3
    
    processor       : 2
    BogoMIPS        : 108.00
    Features        : fp asimd evtstrm crc32 cpuid
    CPU implementer : 0x41
    CPU architecture: 8
    CPU variant     : 0x0
    CPU part        : 0xd08
    CPU revision    : 3
    
    processor       : 3
    BogoMIPS        : 108.00
    Features        : fp asimd evtstrm crc32 cpuid
    CPU implementer : 0x41
    CPU architecture: 8
    CPU variant     : 0x0
    CPU part        : 0xd08
    CPU revision    : 3
    
    Hardware        : BCM2835
    Revision        : b03114
    Serial          : 10000000f328eb95
    Model           : Raspberry Pi 4 Model B Rev 1.4
    [email protected]:~/mycroft-core $ uname -m
    aarch64
    

    Environment (please complete the following information):

    • Device type: RPi4
    • OS: Debian ARM64
    • Mycroft-core version: 21.08
    opened by el-tocino 1
  • Add flag

    Add flag "--skip"

    Description

    Flag --skip for skipping interactive prompt. I added this flag neccessary for building Picroft image on Github Actions.

    How to test

    Run dev_setup.sh --skip

    Contributor license agreement signed?

    CLA [x] (Whether you have signed a CLA - Contributor Licensing Agreement

    CLA: Yes 
    opened by kleo 2
  • Bump pillow from 8.2.0 to 8.3.2

    Bump pillow from 8.2.0 to 8.3.2

    Bumps pillow from 8.2.0 to 8.3.2.

    Release notes

    Sourced from pillow's releases.

    8.3.2

    https://pillow.readthedocs.io/en/stable/releasenotes/8.3.2.html

    Security

    • CVE-2021-23437 Raise ValueError if color specifier is too long [hugovk, radarhere]

    • Fix 6-byte OOB read in FliDecode [wiredfool]

    Python 3.10 wheels

    • Add support for Python 3.10 #5569, #5570 [hugovk, radarhere]

    Fixed regressions

    • Ensure TIFF RowsPerStrip is multiple of 8 for JPEG compression #5588 [kmilos, radarhere]

    • Updates for ImagePalette channel order #5599 [radarhere]

    • Hide FriBiDi shim symbols to avoid conflict with real FriBiDi library #5651 [nulano]

    8.3.1

    https://pillow.readthedocs.io/en/stable/releasenotes/8.3.1.html

    Changes

    8.3.0

    https://pillow.readthedocs.io/en/stable/releasenotes/8.3.0.html

    Changes

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    8.3.2 (2021-09-02)

    • CVE-2021-23437 Raise ValueError if color specifier is too long [hugovk, radarhere]

    • Fix 6-byte OOB read in FliDecode [wiredfool]

    • Add support for Python 3.10 #5569, #5570 [hugovk, radarhere]

    • Ensure TIFF RowsPerStrip is multiple of 8 for JPEG compression #5588 [kmilos, radarhere]

    • Updates for ImagePalette channel order #5599 [radarhere]

    • Hide FriBiDi shim symbols to avoid conflict with real FriBiDi library #5651 [nulano]

    8.3.1 (2021-07-06)

    • Catch OSError when checking if fp is sys.stdout #5585 [radarhere]

    • Handle removing orientation from alternate types of EXIF data #5584 [radarhere]

    • Make Image.array take optional dtype argument #5572 [t-vi, radarhere]

    8.3.0 (2021-07-01)

    • Use snprintf instead of sprintf. CVE-2021-34552 #5567 [radarhere]

    • Limit TIFF strip size when saving with LibTIFF #5514 [kmilos]

    • Allow ICNS save on all operating systems #4526 [baletu, radarhere, newpanjing, hugovk]

    • De-zigzag JPEG's DQT when loading; deprecate convert_dict_qtables #4989 [gofr, radarhere]

    • Replaced xml.etree.ElementTree #5565 [radarhere]

    ... (truncated)

    Commits
    • 8013f13 8.3.2 version bump
    • 23c7ca8 Update CHANGES.rst
    • 8450366 Update release notes
    • a0afe89 Update test case
    • 9e08eb8 Raise ValueError if color specifier is too long
    • bd5cf7d FLI tests for Oss-fuzz crash.
    • 94a0cf1 Fix 6-byte OOB read in FliDecode
    • cece64f Add 8.3.2 (2021-09-02) [CI skip]
    • e422386 Add release notes for Pillow 8.3.2
    • 08dcbb8 Pillow 8.3.2 supports Python 3.10 [ci skip]
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    CLA: Needed dependencies 
    opened by dependabot[bot] 4
  • "mycroft-config set" command still uses old non-existant mycroft.conf

    Describe the bug On picroft I updated to the latest 21.2 version which now puts all of its configs under ~/.config/mycroft/mycroft.conf and warns the user to delete the old one in ~/.mycroft/mycroft.conf However, the mycroft-config set .. command still looks for the old one which I have now deleted due to the warning.

    To Reproduce Steps to reproduce the behavior:

    1. At the shell, enter mycroft-config edit default
    2. It will edit the ~/.mycroft/mycroft.conf file as expected
    3. Now type a config set command such as mycroft-config set play_wav_cmdline "aplay %1"
    4. An error occurs: jq: error: Could not open file /home/pi/.mycroft/mycroft.conf: No such file or directory

    Expected behavior The mycroft-config set should apply the setting to ~/.mycroft/mycroft.conf

    Log files

    Environment (please complete the following information):

    • Device type: Raspberry Pi 3B+
    • OS: Picroft
    • Mycroft-core version: 21.2.1
    • Other versions:

    Additional context This is on a fairly clean install of picroft. It auto-updated to version 21 and I just enabled GPIO, homeassistant skill, got audio working.

    opened by vijay-prema 4
  • Prevent critical failure of audio services

    Prevent critical failure of audio services

    Description

    If an audioservice throws an exception when starting playback, the service_lock is never released. Playback cannot be initiated again until the Audio Service is restarted.

    I haven't yet found exactly what's failing, and hence how to replicate the issue. Supposedly VLC was not entirely crashing, instead hanging and blocking forever in one of three methods in self.play():

            selected_service.clear_list()
            selected_service.add_list(tracks)
            selected_service.play(repeat)
    

    Thanks to @JarbasAI @HelloChatterbox for catching this.

    How to test

    Need to find a way to reliably reproduce it first...

    Contributor license agreement signed?

    • [x] CLA
    CLA: Yes 
    opened by krisgesling 9
  • Add method to remove any entries from a .voc file from a string.

    Add method to remove any entries from a .voc file from a string.

    Description

    The remove_voc method complements the existing vocab matching tools.

    It is useful to clean utterances of common articles or other noise when parsing for specific information.

    This method is not case sensitive unlike the other vocab matching methods. Is the case sensitivity intentional? Should we make all methods case insensitive?

    Context: I was needing this type of method today, then saw the same need had been identified in https://github.com/MycroftAI/mycroft-core/pull/2986 and an existing method to do it already existed in OVOS

    How to test

    Unit tests included

    Contributor license agreement signed?

    • [x] CLA
    help wanted CLA: Yes 
    opened by krisgesling 4
  • Asks how long of a timer on random questions

    Asks how long of a timer on random questions

    Describe the bug Random questions ask me to set a timer rather than saying it doesn't know or an answer that makes sense

    To Reproduce Steps to reproduce the behavior: Ask mycroft: Are you a cat Response: How long of a timer Ask mycroft: Are you a bear Response: How long of a timer

    Expected behavior Mycroft should respond that it does not understand or respond with an answer

    Log files

    Voice.log

    2021-08-21 03:45:13.895 | INFO | 703 | main:handle_wakeword:71 | Wakeword Detected: hey mycroft 2021-08-21 03:45:14.400 | INFO | 703 | main:handle_record_begin:41 | Begin Recording... 2021-08-21 03:45:16.971 | INFO | 703 | main:handle_record_end:49 | End Recording... 2021-08-21 03:45:17.625 | INFO | 703 | main:handle_utterance:76 | Utterance: ['are you a cat'] 2021-08-21 03:45:20.700 | INFO | 703 | main:handle_record_begin:41 | Begin Recording... 2021-08-21 03:45:23.842 | INFO | 703 | main:handle_record_end:49 | End Recording... 2021-08-21 03:45:24.696 | ERROR | 703 | mycroft.client.speech.listener:transcribe:239 | list index out of range 2021-08-21 03:45:24.700 | ERROR | 703 | mycroft.client.speech.listener:transcribe:240 | Speech Recognition could not understand audio 2021-08-21 03:45:26.640 | INFO | 703 | main:handle_record_begin:41 | Begin Recording... 2021-08-21 03:45:32.034 | INFO | 703 | main:handle_record_end:49 | End Recording... 2021-08-21 03:45:33.052 | ERROR | 703 | mycroft.client.speech.listener:transcribe:239 | list index out of range 2021-08-21 03:45:33.054 | ERROR | 703 | mycroft.client.speech.listener:transcribe:240 | Speech Recognition could not understand audio 2021-08-21 03:45:40.037 | INFO | 703 | main:handle_wakeword:71 | Wakeword Detected: hey mycroft 2021-08-21 03:45:40.510 | INFO | 703 | main:handle_record_begin:41 | Begin Recording... 2021-08-21 03:45:42.831 | INFO | 703 | main:handle_record_end:49 | End Recording... 2021-08-21 03:45:43.381 | INFO | 703 | main:handle_utterance:76 | Utterance: ['stop'] 2021-08-21 03:50:22.642 | INFO | 703 | mycroft.session:get:74 | New Session Start: 57692dc9-007d-4c64-ac9c-e4d24e4c7398 2021-08-21 03:50:22.644 | INFO | 703 | main:handle_wakeword:71 | Wakeword Detected: hey mycroft 2021-08-21 03:50:23.096 | INFO | 703 | main:handle_record_begin:41 | Begin Recording... 2021-08-21 03:50:24.899 | INFO | 703 | main:handle_record_end:49 | End Recording... 2021-08-21 03:50:25.520 | INFO | 703 | main:handle_utterance:76 | Utterance: ['are you a bear'] 2021-08-21 03:50:28.571 | INFO | 703 | main:handle_record_begin:41 | Begin Recording... 2021-08-21 03:50:34.525 | INFO | 703 | main:handle_record_end:49 | End Recording... 2021-08-21 03:50:35.683 | ERROR | 703 | mycroft.client.speech.listener:transcribe:239 | list index out of range 2021-08-21 03:50:35.684 | ERROR | 703 | mycroft.client.speech.listener:transcribe:240 | Speech Recognition could not understand audio 2021-08-21 03:50:37.587 | INFO | 703 | main:handle_record_begin:41 | Begin Recording... 2021-08-21 03:50:40.729 | INFO | 703 | main:handle_record_end:49 | End Recording... 2021-08-21 03:50:41.651 | ERROR | 703 | mycroft.clien

    t.speech.listener:transcribe:239 | list index out of range

    Audio.log

    2021-08-21 03:45:18.812 | INFO | 700 | mycroft.audio.speech:mute_and_speak:127 | Speak: How long of a timer? 2021-08-21 03:45:18.814 | INFO | 700 | mycroft.tts.tts:_get_sentence_from_cache:392 | Found 1db9ce8c25e4c98f15de609813128fb8.wav in TTS cache 2021-08-21 03:45:24.740 | INFO | 700 | mycroft.audio.speech:mute_and_speak:127 | Speak: How long of a timer? 2021-08-21 03:45:24.747 | INFO | 700 | mycroft.tts.tts:_get_sentence_from_cache:392 | Found 1db9ce8c25e4c98f15de609813128fb8.wav in TTS cache 2021-08-21 03:50:26.729 | INFO | 700 | mycroft.audio.speech:mute_and_speak:127 | Speak: How long of a timer? 2021-08-21 03:50:26.731 | INFO | 700 | mycroft.tts.tts:_get_sentence_from_cache:392 | Found 1db9ce8c25e4c98f15de609813128fb8.wav in TTS cache 2021-08-21 03:50:35.713 | INFO | 700 | mycroft.audio.speech:mute_and_speak:127 | Speak: How long of a timer?

    Environment (please complete the following information):

    • Device type: Raspberry Pi 4
      
    • OS: Picroft
      
    • Mycroft-core version: 21.2.0
      

    Additional context

    May be related to my previous issue and I have been having an issue with a lack of responsiveness to the wake word from time to time after commands, which might also be related.

    opened by Arndorferd 1
Releases(release/v21.2.1)
  • release/v21.2.1(Sep 3, 2021)

    Mycroft-core v21.2.1 is an iterative release with a whole smattering of goodies.

    Most noticeably mycroft-core is becoming compliant with the XDG Base Directory specification. This moves some files from their traditional directories, to those defined by the XDG spec:

    • settings to $XDG_CONFIG_DIR/mycroft, which most of the time is ~/.config/mycroft
    • data to $XDG_DATA_DIRS/mycroft, which most of the time is ~/.local/share/mycroft
    • cache to $XDG_CACHE_HOME/mycroft, which most of the time is ~/.cache/mycroft

    Mycroft Skills currently remain at /opt/mycroft/skills/

    A series of improvements have also been made to the Voight Kampff test suite to make them more reliable and robust. The better our tests, the quicker we can push other updates.

    Features

    • Do not attempt update when only launching CLI (#2715) by @el-tocino
    • Initial XDG Base Directory specification compliance (#2794) by @PureTryOut and @forslund
    • Remove registered keywords on Skill shutdown (#2877) by @forslund
    • Add Farsi support with upgrade of Lingua Franca from v0.4.1 > v0.4.2 (#2908) by @HKalbasi and @ChanceNCounter
    • Update Adapt intent parser from v0.3.7 to v0.5.1 (#2909, #2960) by @clusterfudge and @forslund ➔ See the release notes for more information
    • Check for the AVX instruction set during install (#2910) by @mathmauney and @krisgesling
    • fa-ir localization of mycroft-core (#2943) by @HKalbasi
    • Improve the speed of waiting for dialogs helper function (#2946) by @chrisveilleux
    • Add feature request functionality to webviews (#2956) by @AIIX
    • scripts: Support busybox chown (#2966) by @rzr
    • Make network tests configurable (#2962) by @krisgesling
    • Add fullscreen fix for webviews (#2967) by @AIIX

    Bugfixes

    • Add Common Play to active Skills when invoked (#2900) by @krisgesling
    • Make TTSCache safer (#2914) by @forslund
    • stop passing lang=None to Lingua Franca (#2927) by @ChanceNCounter
    • Stop creation of 'None' cache directory (#2931) by @JarbasAI @HelloChatterbox
    • Fix #2929: use returned TTS audio file path (#2934, #2938) by @JarbasAI @HelloChatterbox, @krisgesling and @forslund
    • Fix loading of audioservice plugins (#2957) by @forslund and @JarbasAI @HelloChatterbox
    • Install pulseaudio-utils on Fedora (#2971) by @strugee

    Tests

    • Add update comment logic to Jenkins (#2807) by @forslund
    • Fix Voight Kampff race condition in MycroftSkill.get_response() (#2937) by @chrisveilleux
    • Use unique paths for temp file storage (#2944) by @krisgesling
    • Added comments to document race condition (#2945) by @chrisveilleux
    • Fix Possible Voight Kampff message race (#2948) by @forslund
    • Use event handler to capture messages in then_wait() (#2951) by @forslund
    • Remove mycroft-stock from Voight Kampff install list (#2954) by @forslund
    • Voight Kampff: No skill updates at runtime (#2968) by @forslund

    Other changes

    • Revert a temporary bugfix from PR #2626 (#2741) by @krisgesling
    • Fix broken link in Contributor Guide (#2693) by @krisgesling
    • Refactor mimic_tts to not load config when importing (#2888) by @forslund
    • Cleanup of documentation (#2898) by @krisgesling
    • ReadTheDocs documentation: Fetch Mycroft-core version from mycroft.version (#2903) by @forslund
    • Bump pillow from 8.1.1 to 8.2.0 (#2917) by @dependabot[bot]
    • Remove docs encouraging Skill config via mycroft.conf (#2936) by @krisgesling
    • Expose AdaptIntent from mycroft.skills (#2970) by @krisgesling

    Thanks as always to our Community Contributors for this release: :tada: @AIIX :tada: @ChanceNCounter :tada: @clusterfudge :tada: @el-tocino :tada: @forslund :tada: @HKalbasi :tada: @JarbasAI :tada: @mathmauney :tada: @PureTryOut :tada: @rzr :tada: @strugee

    Source code(tar.gz)
    Source code(zip)
  • release/v21.2.0(May 26, 2021)

    Features

    • Allow overridden converse methods to accept messages (#2813) by @NeonAndrii
    • Add Skill API (#1822) by @forslund ➔ Find out more
    • Add skill_id to converse error msg (#2827) by @krisgesling
    • Install Alpine deps to a virtual meta package (#2841) by @PureTryOut
    • Add optional paramater to voc_match for exact matching (#2858) by @JarbasAl and @krisgesling
    • Upgrade Lingua Franca to v0.4.1 (#2890) by @ChanceNCounter and @krisgesling
    • Replace hardcoded use of /tmp directory (#2892) by @dzekem and @krisgesling

    Bugfixes

    • Fix dev_setup.sh max cores detection (#2857) by @forslund
    • Sync curated cache with dict of cached sentences (#2870) by @forslund
    • Remove example entries in blacklisted_skills config (#2844) by @krisgesling
    • Fix loading Mimic phonemes from cache (#2871) by @forslund
    • Fix replacement of existing Skill loader in queue (#2899) by @krisgesling

    Tests

    • Add tests for get_response (#2838) by @forslund
    • Old skill tester: Fix Padatious setup and fallback intents (#2894) by @forslund

    Other changes

    • Remove log pollution (#2840) by @DiegoAsterio
    • Remove duplicated Padatious code (#2843) by @JarbasAl
    • Remove intent-service backwards compatibilities (#2849) by @forslund
    • Consolidate TTS cache logic (#2853) by @chrisveilleux
    • Remove stray print (#2856) by @forslund
    • Utilize the mycroft-messagebus-client module (#2863) by @forslund
    • The phoneme needs to be converted to a list before being passed on. (#2865) by @chrisveilleux
    • Upgrade pillow from 7.1.2 to 8.1.1 (#2868) by @dependabot[bot]
    • Move TTS cache curation to TextToSpeechCache (#2869) by @forslund
    • Upgrade pyyaml from 5.1.2 to 5.4 (#2873) by @dependabot[bot]
    • Upgrade requests to 2.25.1 (#2783) by @PureTryOut
    • Update Readthedocs config to handle mycroft-messagebus-client (#2887) by @forslund
    • Bump core version and MSM for v21.02 (#2907) by @krisgesling

    Deprecations

    • Support for Python 3.5 has been deprecated as it has reached EOL.
    Source code(tar.gz)
    Source code(zip)
  • release/v20.8.1(Feb 17, 2021)

    Features

    • Add Plugin system for STT, TTS, Wake Word engines and Audioservices (#2594) by @forslund and @JarbasAl ➔ Find out more
    • Add ProcessStatus to all Mycroft Services providing a consistent interface for querying their state. (#2648) by @krisgesling and @forslund ➔ Find out more
    • Add new CPS_extend_timeout method to Common Play Skill (#2666) by @JarbasAl
    • Add support for doas, a sudo alternative (#2690) by @pixelherodev
    • Local changes to Skill settings will now persist until a change is made to remote settings (#2707) by @forslund
    • Add config flag to disable all Skill settings syncing (#2734) by @JarbasAl
    • Add Mozilla TTS support (#2713) by @domcross ➔ Find out more
    • Validate the Mozilla TTS connection (#2828) by @JarbasAl
    • Add engine configuration option for Polly TTS (#2706) by @joshuajaharwood
    • Add self.gui.connected() to check if a GUI is connected (#2682) by @JarbasAl
    • Add self.gui.get() to safely access values in GUI dict (#2820) by @krisgesling
    • Add self.gui.release() to signal that the Skill is no longer using the GUI (#2766) by @JarbasAl
    • Upgrade Mycroft Skills Kit to v0.3.16 (#2688) by @krisgesling ➔ Find out more

    Bugfixes

    Skills

    • Don't reload skill if a mod time is in the future (#2659) by @forslund
    • Initialize status members before bus handlers (#2681) by @forslund
    • Fix dialog_renderer when no dialog or locale directory exists (#2685) by @katridi
    • Reorder operations to ensure removed Skills are first unloaded. (#2823) by @krisgesling
    • ensure load_status is initialized on load failure (#2735) by @krisgesling
    • Handle anonymous adapt intent (#2767) by @forslund
    • Fix intent_api following refactor (#2786) by @JarbasAl

    Audio Services

    • Fix Audioservice startup on system time change (#2689) by @forslund
    • Fix UnboundLocalError in AudioProducer (#2780) by @dalgwen
    • Add the --no-video flag to VLC audio backend (#2791) by @JarbasAl
    • Improve safety of audioservice calls, particularly in VK tests (#2804) by @forslund

    Other Mycroft Services

    • Settings - Add optional message argument (#2704) by @krisgesling
    • Update to pyee 8.1.0 - improved handling of multithreaded environments (#2724) by @forslund
    • Config - Stop location being referenced before assignment (#2809) by @PureTryOut
    • Ensure messagebus is connected before reporting that the Enclosure service is ready (#2758) by @krisgesling
    • Unshadow Message class in _handle_pairing_complete (#2790) by @forslund
    • Fix typo preventing STT plugins to load (#2748) by @forslund

    TTS Engines

    • Mimic - Fix duration_stretch configuration (#2691) by @forslund
    • Mimic - Fix memory calculation causing build failures on ARM (#2716) by @el-tocino
    • Mimic - Handle missing binary properly (#2718) by @forslund
    • Mimic - Send correct conf to Mimic when used as fallback (#2829) by @forslund
    • Mimic2 - Fix cache directory error (#2800) by @chrisveilleux
    • Google - Fix pronounciation of "m." (#2699) by @gaganpreet
    • Google - Upgrade gTTS to v2.2.0 (#2763) by @marvin-w
    • Google - Upgrade gTTS to v2.2.2 to fix Google voice (#2831) by @krisgesling

    Wake Word Engines

    • PocketSphinx - Fallback to English model if configured model does not exist (#2692) by @katridi
    • Porcupine Wake Word - Update for newer engines (#2722) by @forslund

    GUI

    • Fix missing skill_id parameter for page interaction and focus events (#2732) by @AIIX
    • Fix missing remove page implementation, show idle if all pages removed (#2781) by @AIIX
    • Don't clear namespace on every system page call (#2814) by @AIIX
    • Use the correct delegate, fix layouts, autofit text for System TextFrame (#2815) by @AIIX

    Tests

    • Voight Kampff - add Given steps to set test timeout (#2663) by @forslund
    • Add basic test cases for GUI interface (#2697) by @forslund
    • Voight Kampff - fix reset of patched config (#2742) by @forslund
    • Only build Mimic once during travis tests (#2745) by @forslund
    • Enable simultaneous CI jobs and provide Mycroft logs on failure (#2762) by @krisgesling
    • Voight Kampff - Improve error handling (#2793) by @forslund
    • Voight Kampff - add method to wait for audio service (#2808) by @krisgesling
    • Implement GitHub Actions for linting and unit tests (#2819) by @chrisveilleux
    • Use OS default gcc in github workflow (#2830) by @forslund
    • Run unit tests on python 3.9 (#2739) by @forslund

    Documentation

    • Fix documentation for Lock.exists() (#2721) by @Nihvel
    • Point sphinxdocs to new requirements.txt location (#2731) by @forslund
    • Add Plugin base classes APIs to readthedocs (#2736) by @forslund
    • Fix readthedocs build (#2749) by @forslund
    • Clarify that gui.clear does not close a Skill (#2769) by @krisgesling
    • Fix simple typo, retruns -> returns (#2785) by @timgates42
    • Add filesystem documentation to readthedocs (#2805) by @forslund

    Other changes

    • Refactor intent service (#2599) by @forslund
    • DeepSpeech - Remove English-only error. DS now supports other languages. (#2705) by @el-tocino
    • Setup - allow variants of arch (archarm, ...) to fetch dependencies (#2725) by @emphasize
    • Add warning if MSM is using an appstore other than Mycroft Marketplace (#2737) by @JarbasAl
    • Setup - Enable utf-8 encoding during dev-setup.sh (#2746) by @forslund
    • Run CLA check on all branches (#2759) by @krisgesling
    • Remove six from dependencies (#2782) by @PureTryOut
    • Refactor - common bus connection method (#2792) by @krisgesling
    • Refactor - stop speaking (#2821) by @forslund
    Source code(tar.gz)
    Source code(zip)
  • release/v20.8.0(Sep 3, 2020)

    Features:

    • Allow override of platform animations like talking and thinking to prevent interrupting existing content #2657
    • Add more detailed Track Status to Common Play Skill. Provides distinct status codes for different layers of media handling #2674

    Bugfixes:

    • Fix ValueError on check of file modification date - do not check if list of files is empty #2662
    • Fix fresh MSM initialization with no internet connection - adds a missing argument #2677
    • A recent change allowed default Skills to update even if the autoupdate flag was set to false. This ensures that flag is respected. #2680

    Removal of deprecated items:

    • pyee.EventEmitter and our own ThreadedEventEmitter converted to new Emitters available in pyee #2667
    • Hardcoded recording timeouts should now be configured in mycroft.conf #2668
    • skills.converse.error will no longer be emitted, please use skills.converse.response instead #2669
    • Internal startListening signal will no longer be checked #2670
    • DialogLoader class removed in favor of new load_dialogs function #2671
    • get_http and remove_last_slash string utils have been removed #2672
    • Audio utils that had previously been moved from mycroft.util have had their references removed. This includes mycroft.util.is_speaking, mycroft.util.wait_while_speaking, and mycroft.util.stop_speaking. The methods should be called from their new module mycroft.audio #2678
    • The imp package has been completely replaced with importlib. This was located in the Audio service loading and loading of the old integration test environment #2679. Audioservice submodules names are now prepended with "audioservice_" to prevent module naming collisions #2684
    Source code(tar.gz)
    Source code(zip)
  • release/v20.2.5(Aug 17, 2020)

    Features

    Add callback hooks to run Mycroft as a service #2601 This adds a simple system of callback hooks to run mycroft as a service or through a single executable. It allows the definition of a wrapper script with handlers for ready states, error states and a watchdog to ensure the system is still running.

    The current watchdog implementations are currently only for the speech client (voice data is received from the mic) and the Skills process (skills are updated) due to their natural cyclic structure.

    Big thanks to @forslund for this and all his contributions to this release. There are too many to count!

    Add GUI support for animated images #2616 New method show_animated_image() added to Qt GUI framework providing a GUI page for displaying animated gif files. Thanks to @JarbasAl for this and all his new GUI Skills.

    Add method for updating playback information from Skills #2619, #2655 This adds a common method for Skills to send playback information and status to the Common Play Skill. There are ongoing discussions about the complete management of playback between Skills, Common Play, and audio services. Special thanks to @AIIX and @JarbasAl for their ongoing work on this.

    Gentoo Linux support added to setup scripts #2583 Gentoo users can now run the standard dev_setup.sh script and their OS will be detected allowing the correct dependencies to be installed. Big thanks to @doczkal for this one!

    Snapcraft CI #2597 Continuous Integration implemented for Mycroft Snap releases.

    Add 'Skill should not reply' test #2618 A new Voight Kampff Step was added allowing integration tests to check that a particular Skill does not respond to some utterance. This helps to ensure your Skill only responds to questions it can handle reducing unexpected errors.

    Add wait_for_message() method #2628 This method will wait for a message of a specific type to be detected on the messagebus, returning the message if detected before the timeout has expired.

    Add Festival TTS support #2643 Thanks to @jmontane for this addition, enabling on-device TTS for Catalan (and other language) speakers!

    Bug fixes

    Workaround for issue on older versions of ncurses #2591 get_wch() can at times throw errors as reported in Issue #2523, this creates a function wait_for_any_key() handling the error and retrying.

    Prevent audio playing between recording and handling of utterance #2621, #2625 This maintains silence for a short period while Mycroft is actively processing a request providing a better experience for the user. It means media playback completely stops the moment a user asks it to, and prevents short snippets of audio playback if Mycroft is formulating a response.

    Fix Skill submodule loading and replace imp with importlib #2327 Replaces the current imp based Skill loader with an importlib based solution. Adds a small change allowing better use of submodules allowing them to reload together with the main module.

    Fix Common IoT Skills unable to register entities and scenes #2636 Thanks to @jamesmf for this fix!

    Ensure custom timeout is passed to wait_for_response method #2634

    Fix Mimic builds on Fedora #2521 Thanks to @countcretinos for this one!

    Fix writing multiple settings to file #2652 Thanks to @emphasize for reporting this one.

    Improve language configuration handling in IntentService #2650 If the STT service does not send a language code with the message, then the Intent Service will now fallback to the globally defined language, or en-us if none is defined.

    Ensure default Skills are installed before initial load #2644 This adds a quick check on load to ensure default Skills are installed, unless they are blacklisted. If not installed it will do so before finalising Mycroft's boot sequence. This will only extend the boot time if important default Skills are not available.

    Update Lingua Franca to v0.2.2 #2654 Primarily bug fixes - see release notes for more details. Thanks to @ChanceNCounter, @emphasize, @forslund and @PureTryOut

    Disable wake word uploads in preparation for API deprecation #2661 The API endpoint used to upload wake words will be deprecated in the near future and instead shifted to Selene (home.mycroft.ai). To ensure older devices are not making unnecessary post requests to a dead endpoint, the upload has been disabled for devices running v20.2.

    Other improvements

    • Refactor wake-word waiting and record phrase #2589
    • Cleanup settings system #2560
    • Improved list of available commands in mycroft-help #2613
    • Update pyee to v7.0.1 - replaces home-spun threadpool based emitter with ThreadExecutor from pyee #2507
    • CI improvements #2537, #2541
    • Remove duplicate check for supported languages of Lingua Franca methods #2649. Another thanks to @emphasize for reporting this one.

    Community Contributors

    Another big thanks to all the Mycroft Community members that contributed to this release:

    Source code(tar.gz)
    Source code(zip)
  • release/v20.2.4(May 29, 2020)

    Padatious Intent Parser v0.4.8 #2595

    This release of Padatious adds support for saving and loading intent models courtesy of @repodiac, and better handles apostrophes thanks to @stratus-ss.

    Voight Kampff updated #2576, #2592

    Added support for setting user configurations through Given Steps in the form: "Given the user's {config} is {value}".

    Added a clean command to remove any test, step and configuration files that have been copied to the Voight Kampff directory by the test runner. To clean up use ./start-mycroft.sh vktest clear, mycroft-start vktest clear or mycroft-skill-testrunner vktest clear.

    Updated dependency handling #2562, #2571, #2575

    Added "loose" requirements option, allowing pip install to use ">=" instead of "==" for all packages. This is done by setting the MYCROFT_LOOSE_REQUIREMENTS environment variable. The intention is to make mycroft packaging for linux distributions easier while allowing the git installation to still use a locked set of module versions.

    The ever growing requirements.txt has also been split into core requirements, and a range of optional requirements files. This reduces the number of packages being installed unless the system will actually make use of them. It also paves the way for automatic installation of plugin dependencies. Big thanks to @PureTryOut for this one.

    Removed xmlrunner as it is no longer used.

    Added initial support for XDG Base Directory Specification #2559

    Skills will now read and store settings in the XDG_CONFIG_DIR if it is set and the device isn't already using the existing settings location in each Skill directory.

    Added support for Alpine Linux installation #2584

    The standard setup script will now detect Alpine Linux and install the appropriate dependencies. Another big thanks to @PureTryOut for this and the range of work that has gone into making Mycroft compatible!

    Fixed add_context decorator #2577

    The @adds_context decorator has optional content that should be passed to the set_context() method. This was not being passed along. This has been resolved with tests added.

    Fixed remove_fallback using original handler #2588

    Allows the removal of a fallback handler using the original handler, and not the wrapped handler used internally. Along with a range of tests to verify setup and shutdown of Fallback Skills.

    Modernize ESpeak TTS #2581

    ESpeak output was produced directly from the executable, this is now through the standard TTS output queue like the other TTS modules. This resolves an issue with wait_while_speaking.

    Added Polly TTS support - for real this time #2585

    This got missed in the last release but is definitely included this time. To get setup check out the documentation. Thanks again to JarbasAl from the Chatterbox team for this one!

    Bugfix audio service crashes if started without internet connection #2598

    The audio service would crash whilst importing the google_tts module on startup if no internet connection was available as it failed to fetch a list of supported languages. This update prevents the crash and adds a cached to use if the remote list is unavailable.

    Source code(tar.gz)
    Source code(zip)
  • release/v20.2.3(May 8, 2020)

    Mycroft Skills Kit v0.3.15

    This release of Mycroft Skills Kit v0.3.15 switches Github authentication to use Personal Access Tokens as the existing username and password method is being deprecated. A huge thanks to Andlo for all his work on this. It also includes a small bugfix to respect the --repo-cache argument courtesy of Jarbas.

    IBM Cloud Text to Speech (TTS) #2548

    The IBM Cloud Text to Speech connector has been rewritten to handle IBM's new authentication mechanism. Massive thanks to @CodyReinold for this one.

    Contributor guidelines cleanup #2551

    This update improves clarity, fixes broken links and makes it easier for new developers to contribute to the project . Another big thanks to @CodyReinold

    Czech and Polish support #2554, #2556

    Initial language support added for Czech by @Tony763 and Polish by @RafalJanicki. Support for these languages is also underway in our Lingua Franca library.

    Mimic1 add default core param #2558

    When installing Mimic1 with no core paramater, it will now default to a safe value running on a single core. Thanks to @el-tocino for this.

    MOAR Tests! #2496, #2569, #2573

    A wide range of tests have been added to various utilities and functions. This includes tests for audio, caching, downloads, files, strings and time.

    The test runner has also had some tweaks. It will explicitly execute with Python 3, addressing an issue where the system would hang if a generic Python alias did not exist. It will also ignore directories not intended to be tested with Pytest. Big thanks to @PureTryOut for both of these fixes!

    Dependency updates #2551

    Pillow has been updated to v7.1.2

    Source code(tar.gz)
    Source code(zip)
  • release/v20.2.2(Apr 23, 2020)

    This release is focused on testing and includes the Voight Kampff test suite along with improved unit tests. Of course, the wheels of the community is always spinning so there are some juicy additions and fixes as well.

    Voight Kamff #2506, #2530, #2540, #2522,

    The new behavioral skill / core test suite is run on each PR to mycroft-core and mycroft-skills allowing easier identification of bugs and bad behavior. For more information on how to write this type of test check out the official documentation. The system is still in early development and will be built out more and more to completely replace the current test system.

    Enable multiple snowboy hotwords #2499

    Thanks to awesome work by @dalgwen Mycroft now supports using multiple snowboy hotwords.

    Add config options for listening timeouts #2536

    To allow longer voice input or timeout after silence these new config options can be used.

    Polly TTS

    @JarbasAI polished up his old Polly TTS Pull request and it finally got merged, giving mycroft the ability to use Polly for rendering speech of a variety of languages.

    Google TTS automatic language #2534

    The Google TTS backend no longer require a specific configuration, instead it tries to determine the correct language code to use from the global lang config option. Many thanks to @luca-vercelli for this contribution

    Fix IBM Watson TTS #2514

    IBM Watson's TTS Api has been updated and now Mycroft's interface has been updated as well to match.

    Shutdown sequence #2529, #2538, #2543

    These updates fixes a couple of issues with the shutdown process of skills and enclosure allowing them to be shutdown without being killed.

    Support for reading the Mark-1's Eye colour #2471

    @JarbasAI's second PR this release, this adds an interface to retrieve the current color of the Mycroft Mark-1 eyes.

    Simplify Mycroft gui bus connection #2533

    The GUI interface was simplified to use a single websocket connection while still isolating the clients, this fixed a regression due to upgrade of Tornado.

    Upgrade lingua-franca to 0.2.1 #2512, #2515

    This fixes some issues with rendering numbers and dates. Many thanks to @ChanceNCounter and the LF-crew for this.

    Add tests and fix bugs surrounding the converse system #2503

    Adding tests is always a good way to find and squash bugs. This handles a couple of modification during iteration issues.

    Miscellaneous

    • Spelling fixes courtesy of the very nice person @tycrek #2487
    • Simplify the converse system using the wait_for_response() method #2479
    • Upgrade psutil to version 5.6.6 #2501
    • Improve Danish translations by the very friendly @andlo #2520
    • Non Mark-1 devices now also updates the version on the webpage #2528
    • Update documentation of running core without backend by the friendly @kelnos #2531
    • Fix possible voice client crash if mic is initialized muted #2542

    A big thanks to all who has contributed to this release, you are all my favorite persons in the world.

    Source code(tar.gz)
    Source code(zip)
  • release/v20.2.1(Mar 9, 2020)

    This contains mainly minor bugfixes.

    Upgrade msm to 0.8.7 #2484

    Fixes issues loading skills if a skill is installed using a git/git+ssh url

    Fix reset converse #2491

    Fixes an issue where converse state wasn't informed on user silence

    Update enclosure version #2489

    Fixes updating the enclosure firmware on each boot.

    Source code(tar.gz)
    Source code(zip)
  • release/v20.2.0(Feb 27, 2020)

    We're not out of beta but we're releasin' on time! In the best possible way!

    A major release like this is an opportunity for us to clean up some of the older things and make future development easier and cleaner. The improvements over 19.08.0 are now many thanks to the work of the core team and the awesome community of developers and users.

    v20.02 brings some changes, some old deprecated code has been removed making core a little bit leaner and some huge contributions has made it in (targeted messages) along with the usual bag of minor fixes, and improvements.

    Breaking changes in 20.02

    • Skill settings are now a simple dict (Deprecated 19.08) Skill settings are now a simple dict and procedure for registring settings changed callback and forcing a disk write of the settings has been updated

    Registering settings changed callback (docs):

        def initialize(self):
            self.settings_change_callback = self.my_callback
    
        def my_callback(self):
            ...
    

    Write settings to disk:

    from mycroft.skills.settings import save_settings
    
    ...
    
        def skill_method(self, _):
            save_settings(self.root_dir, self.settings)
    
    • The ConfigurationManager has been removed (Deprecated 18.02) #2470

    • The backwards compatibility language for extract_datetime() has been removed. #2469 The function now follows the documentation and returns None if the utterance doesn't include a date or time.

    • audio accuracy test is now wake word test The test is moved from the mycroft module into the test folder.

    Improvements, fixes and other greatness

    Targeted messages #2461, #2476, #2478, #2481

    This is something that has been discussed for a long time and now the implementation by @jarbasal is here. The system allows for multiple clients to be connected to Mycroft and only returning the response to the caller client that called. For an example implementation check out the Hive Mind Voice Sat.

    Added the commandline tool mycroft-listen #2460

    @FruityWelsh created a simple commandline tool to trigger mycroft listening. Many thanks!

    Make listener audio storage location configurable #2477

    Thanks to @ludwhe the storage of utterances and detected wake words can be configured.

    IntentQueryApi #2468

    An API allowing a skill or application to query the state of the intent service, listing things such as registered intents, skill ids and other things. This is also the work of @jarbasal

    Deprecate use of # in config file #2472

    Using only // as comment makes the config compatible with tools such as jsmin. Big thanks to @belvederef for the initiative and implementation.

    Improve Mimic2 error handling #2473

    Server errors generating Mimic2 audio will now be caught and Mimic1 will be used as fallback.

    Common Play tests and cleanup #2459

    A series of unittests has been added to test the common play skill base class and the audioservice. As these were added a couple of minor bugs were resolved and the code was cleaned up slightly.

    Tests for common query #2462

    Adds test and fixes detection of visual platforms.

    Simplify dialog loading #2422

    The DialogLoader class is now deprecated instead a simple get_dialog() function is used.

    Source code(tar.gz)
    Source code(zip)
  • release/v19.8.7(Jan 30, 2020)

    Few PR's lots of code changes!

    The big change in this release is the removal of the language parsing/formatting code and instead relies on the lingua-franca module run by the Mycroft community (and @JarbasAI in particular who set up the project originally). Much discussion is going on in the mycroft chat language channel, if you're interested join us there!

    Replace language parsing and formatting with lingua-franca #2438, #2464

    This basically cuts 20 000 lines of code from mycroft-core (roughly 50% of the python code). Stubs still remains to retain backwards compatibility.

    Allow stop-mycroft.sh to stop Mycroft if launched through other python module #2449

    This relates to the work @andlo is making to make the skills easier to run in various IDEs. Big thanks to him for improving this side of things!

    Upgrade pip to latest version #2458

    The dev_setup.sh script will now install pip 20.0.2, besides bringing us uptodate this allows installs on bleeding edge systems running Python 3.9.

    Source code(tar.gz)
    Source code(zip)
  • release/v19.8.6(Jan 16, 2020)

    I saw the future clearly. It was 20/20...

    Mycroft has now entered the new year with a release, we're happy for all contributors old and new that are joining us in this Brave New World of 2020.

    Documentation updates

    • @TheLastProject corrected the non-metric version of the unit config in #2441
    • @notdefine corrected the documentation on how to start the unittests with start-mycroft.sh
    • The MycroftSkill members root_dir and settings_change_callback were added to the readthedocs documentation.

    Test updates #2443, #2442, #2450

    Tests were extended for the mycroft_skill, tts and audio modules, increasing code coverage by a couple of percent. In doing this some issues were identified and squashed.

    • Mimic2 preprocessing is now active
    • The fallback TTS can now trigger listening
    • vlc playback backend works with tracks with mime-info

    Make venv-activate work with sh and zsh #2439

    We're always grateful when contributors make our scripts work with more platforms and tools. Big thanks to @notdefine for fixing this.

    Make padatious multithreading configurable #2448

    Padatious will default run multithreaded to speed up training but this is now configurable thanks to @andlo.

    Upate gtts backend to be compatible with newer versions #2447

    This allows mycroft to work with v2.1.0 and above of gTTS. Many thanks to @ansgar-t for this update.

    Update msm to 0.8.5 #2452

    This allows the installer skill to detect errors when installing.

    End of playlist message

    The audioservice will now send an end of playlist message after the last track has been played. This will be useful for restoring the resting screen after the last track or detecting the end of a sequence of steps in an prerecorded situation.

    Source code(tar.gz)
    Source code(zip)
  • release/v19.8.5(Dec 20, 2019)

    The Mycroft Christmas release comes with a small bag of goodies this year, even if I won't be doing any rhyming like I did last year.

    We've had 25 releases this year (unless this release is messed up somehow that's how we'll end). These 25 releases include the code contributions from no less than 41 community members (just on mycroft-core).

    Settingsmeta stability #2370, #2433

    The biggest thing in this release is an attempt to stabilize the settings upload. This will make sure that the skills page on Mycroft Home is populated as soon as the device is paired. It also tries to guarantee that the skills manifest is uploaded before any new changes to the settingsmeta are pushed making modifying skills easier.

    Upgrade python dependency on Red Hat #2412

    @maxbachmann replaced the old python34 package with the generic python package installing a more modern python version on Red Hat systems. Many thanks for that!

    Allow Gui to connect again #2416

    This is a quick work-around allowing the gui to connect to core over the enclosure bus again. A change in the recently upgraded tornado made this fail.

    Allow showing DEBUG in CLI #2421

    The cli now always disregards the DEBUG message filter, relying solely on the log level setting.

    Fix Hotword selection when precise development models are activated #2418

    The recent update of hotword config loading included a bug where the settings from different places wasn't merged correctly. This fix handles the merging properly.

    Support for Porcupine hotword engine #2139, #2424

    @alumae submitted a PR to allow the usage of the porcupine hotword engine by picovoice. Many thanks for this awesome feature.

    Langauge parsing

    • Handle extracting number from strings with %, many thanks @ChanceNCounter #2413
    • Clean up time resolution code, also @ChanceNCounter! #2432

    Documentation

    • Readthedocs generation code was cleaned up #2399
    • Typo fix, thanks @PFischbeck for spotting and fixing #2427
    Source code(tar.gz)
    Source code(zip)
  • release/v19.8.4(Dec 6, 2019)

    This release comes with many small updates and more excitingly a couple of new contributors

    Geolocation API #2393

    The API is now prepared for the comming update of the mycroft backend offering a geolocation api. This will enable retrieving coordinates from names of places.

    dev_setup.sh update #2388, #2390, #2401, #2403, #2406, #2414

    • The dev_setup.sh os install instructions has been separated into separate functions to make the script a bit more easy to read. In addition to this the installer for Arch Linux and certain versions of Debian has been fixed. In addition a --clean option now exists allowing to wipe Mycroft from the system. Big thanks to @gbaptista, @maxbachmann for helping out with this.

    msk 0.3.14

    The latest release of msk adds License selections and the option to add a manifest.yml at skill creation time. And some splashes of color to make it more readable.

    Python 3.8 #2391, #2400

    Python 3.8 is now included in the Travis tests and is running the mycroft stack nicely.

    Handle missing .intent files #2411

    @domcross added a fallback to the en-us folder in case the .intent file doesn't exist. This allows skills that aren't fully translated to be loaded. Many thanks.

    Language improvements

    • Improve dutch language functions, thanks @mikewoudenberg #2385
    • Speed up extract_number, thanks @maxbachmann #2402
    • make time output more natural, thanks @maxbachmann #2386

    Misc

    • Fix simple audio backend Mimetype lookup when http request fails #2389
    • Fix usage of Ctrl+C in the simple cli #2409
    • Speed up the SSML tests, big thanks to @maxbachmann for this. #2405
    • Clean up python2 remnants, big thanks to @maxbachmann for this. #2396
    • Use flake8 instead of pycodestyle in travis. Thanks @cclauss #2251
    • Update adapt to 0.3.4 #2394
    • Simplify setting a custom wakeword #2395
    Source code(tar.gz)
    Source code(zip)
  • release/v19.8.3(Nov 15, 2019)

    Yo it's my turn, do drop the mic, old python 3.4 will have to take a hike It's served long and well It's been nice, it won't go to hell

    We've come a long way since the early days, we moved on and changed our ways first python two had to go It's 2019 and support for 3.4 is gone so we'll follow suite drop this snake, yo, hope you enjoyed this hot take.

    Boom Mic drop.

    Actual release notes

    So as the poetry slam entry above indicated, as of this version (19.8.3) we join the rest of the Python community and dropping support for Python 3.4. This was originally planned for 19.8.0 but the packaging changes for the Mark-1 wasn't completed and tested in time. This change will allow us to start updating a couple of the dependencies to newer versions. We now officially support Python 3.5 - 3.7, 3.8 is on the horizon.

    Fix Wakeword messagebus message #2367

    The recognizer_loop:wakeword message wasn't sent until after the STT was complete. Thanks to the work of @speedfox-uk the message is now sent as soon as the wakeword is detected.

    STT and TTS error handling #2372, #2374

    In case of errors when starting up the TTS and STT systems would fail quitely, Error logging has been added and a fallback mechanism using the default services.

    Speed up external interaction with the messagebus #2371

    The simple send script in the messagebus used by some of the mycroft commandline tools (mycroft-speak, mycroft-say-to) has been sped up by not requiring the remote settings to be fetched.

    Drop python 3.4 changes #2381

    In the process of dropping python gTTS was updated along with pillow (fixing a stability issue), and the

    Bugfixes

    • Handle negative frame count in Mic code #2377
    • Remove unnecessary code when using relative time #2364
    • Fix Error when shutting down a removed skill #2376
    • Fix reference leak in websocket client #2375
    • Fix Spanish Datetime tests running on November 1 #2378
    Source code(tar.gz)
    Source code(zip)
  • release/v19.8.2(Oct 21, 2019)

    Due to a possible major bug (voice process going haywire and filling the disk) this release got moved forward a couple of days.

    Improve mic handling #2365, #2368

    Especially the Mic Array v2 seemed prone to throw IO errors, this release adds a basic restart control allowing it to recover in some cases. The change also adds some extra safety to the mute/unmute operations which could theoretically cause an issue. In addition this resolves a possible issue with looping logging if an IOError occured.

    Ask Selection #2302

    The new MycroftSkill.ask_selection() method adds a simple way of asking the user to choose between a number of options. Many thanks to @JarbasAl for designing it. Read more about the method in the api documentation

    Fix trigger listening over messagebus for Picroft #2366

    The restructuring of how the get_response() or speak() with exepect_response=True methods triggers listening missed a special case on the Picroft platform. This small one-line change resolves the issue.

    Misc

    • Handling of fractions in Spanish #2356 (Big thanks to @ChanceNCounter)
    • Minor fixup of the project Readme #2352 (Thank you @moritzgloeckl )
    Source code(tar.gz)
    Source code(zip)
  • release/v19.8.1(Oct 10, 2019)

    This release features mainly bugfixes for issues introduced in 19.8.0 but also a couple of very welcome improvements.

    Replace the custom IS_TRAVIS environment variable with the standard CI #2252

    Big thanks to @cclauss for handling this and making the setup more standardized.

    Remove NTP sync reboots #2326

    Recent updates has improved the stability during and after NTP updates so the reboot is no longer necessary.

    Fix Mary TTS #2262

    Many thanks to @KishCom for updating the MaryTTS backend into a functional state.

    Remove Dialog repetition #2297

    @ChanceNCounter is to be commended for this little tweak making sure that the same dialog line isn't used twice in a row.

    Make sure get_response listen trigger is sent after the correct sentence #2351, #2360, #2361

    Attaches the listen trigger to the last chunk of a sentence instead of relying on the audio_output_end message.

    Spanish extract number improvements #2347

    @ChanceNCounter fixed an issue where the numbers were summed instead of returned as a list

    Update nice duration #2330

    Thanks to @ChanceNCounter the nice_duration now takes resolution as an argument.

    Bugfixes

    • Crash in logger when starting skills #2323
    • Load skill settings once only #2336
    • Restore tail queuing of event handlers #2353
    • Add missing __delitem__ method in Settings #2354
    • Make skill logs visible in tester #2359
    • Fix default arguments for noce_number, many thanks again @ChanceNCounter #2330

    Misc

    • remove skill manager classes config property #2283
    • .gitignore updated with vscode and coverage folders #2334
    • Add better logging for voice client #2331
    • Add mute information to the mic_status file #2317
    Source code(tar.gz)
    Source code(zip)
  • release/v19.8.0(Sep 24, 2019)

    At long last the 19.08 release is here.

    During these last 8 weeks (time sure flies) we've focused on refactoring the code to improve maintainability and to make it easier to improve Mycroft in the future. This has led to some major shifts in the structure of Mycroft and some backwards-incompatible changes. Most of these changes was flagged in the 19.02.0 release and the ones that weren't generally doesn't impact skill developers.

    Depreciations

    • Skill settings: MycroftSkill.settings.store() and MycroftSkill.settings.set_changed_callback() are deprecated and will be removed in v20.02. mycroft.skills.settings.save_settings() will replace the first mentioned and MycroftSkill.settings_changed_callback can be set replacing the second. Secondly this adds warning about features of the settingsmeta that hasn't been used since the switch to the new backend.

    During the coming month we will look through and mark more deprecated features...

    The Breaks

    The following are the breaking changes included in this major release

    • MycroftSkill.config no longer exists. Any skill specific settings should be made using the settings.json in the skills folder.
    • the SkillManager api was reworked and will not work as previously, locks are missing etc.
    • the listener config parameter record_utterances was completely replaced with the save_utterances
    • Config.init() to setup bus connections for the process configuration was replaced by Config.set_config_update_handlers()
    • Message parameter (and member) type was renamed to msg_type
    • WebSocketClient was renamed to MessageBusClient
    • Skill settings feature protecting existing members during the skill initialization was removed. This was a rarely used and frankly confusing feature

    The big Reorganizations

    Skill process startup #2237, #2260, #2263, #2265, #2279, #2280, #2311, #2316

    Refactors the SkillManager, moving complex logic into a couple of helper classes SkillLoader and SkillUpdater. Refactors the startup code to a simpler flow. All of this makes the startup of skills much speedier.

    Skill Settings #2287, #2306, #2312, #2313, #2314, #2315, #2319, #2320

    Major restructure splitting the settings metadata from the actual settings. This restores the skill settings to a simple dict instead of a vastly complex object.

    Mycroft Skill #2256, #2276, #2281, #2296

    The MycroftSkill class was refactored moving some of the complexity into helper classes. This also makes way for adding some mycroft skill Utils

    Skill tester #2284

    The skill tester was reorganized to make the code easier to follow.

    The Improvements

    Pulseaudio ducking support #2282

    The TTS can now trigger pulseaudio role ducking of roles (like music and video) lowering playing media while Mycroft is speaking

    Improved operation without listening indicator #2267

    The recording sent to STT lost a couple of audio frames right after the wake word trigger, this stores and prepends the lost frames to the STT data.

    Handle Precise download errors #2245

    Precise download could fail due to network errors and never restart leaving the user with pocketsphinx wakeword. This allows retrying and will use an existing precise installation if available.

    Fedora install #2257

    @vegerot contributed an update to the dev_setup.sh to make it work better on Fedora. Many thanks!

    Mint install #2209

    @fermulator fixed a couple of issues related to detecting Debian like OSes, this adds support for Mint among other distributions. Many thanks!

    Keyword munging #2303

    Long time contributor @JarbasAI found and fixed an issue with the keyword munging causing intents to fail if the intent contained the skill id. As always great work!

    Fix Mimic 2 Cache usage #2301

    Fixes an issue when the playback of the utterance wouldn't start if the .pho file for a cached utterance was missing.

    Warn if packages may be uninstalled during dev_setup.sh #2268, #2275

    This warns if a conflict in Ubuntu could lead to packages being uninstalled.

    intent_handler decorator update #2221

    the @intent_handler() decorator can now be used with padatious .intent files as well as adapt intents.

    Updated swedish time and number handling #2234

    Big thanks to @c0r73x for fixing these issues!

    Flake8 cleanup #2241. #2242

    Many thanks to @cclauss for looking through the code and fixing these issues.

    Clean the unittest from mocks from the mock module #2274

    Instead use the builtin unittest.mock. Many thanks to @mathmauney for contributing this.

    Add support for bus.get_response in skill tester #2284

    Add a basic mock of the get_response() bus method.

    Log viewer tool #2277

    A simple tool for merging and viewing all mycroft log files.

    Configuration tool #2290

    This tool validates configuration files before storing them making it harder to destroy a config.

    Make connection test more robust #2305

    Make a dns lookup as part of the test to validate that part along with the reachability of the outside world.

    Pairing check updates #2180, #2248

    Make sure the pairing check fails early if the identity information is missing and only initiate pairing for 401 errors from STT services behind mycroft pairing.

    Source code(tar.gz)
    Source code(zip)
  • release/v19.2.14(Jul 24, 2019)

    This is one of those general improvement releases with lots of minor and some major things making quite a noticeable difference.

    Refactor messagebus subsystem #2213

    The code surrounding the messagebus was heavily refactored and improved.

    voice service startup improvements #2183

    The voice config was read multiple times on boot resulting in up to 4 restarts of precise when starting the service. this was resolved by improving the configuration change detection and loading of the service.

    Speedup skill service startup #2197

    The skill startup was reorganized slightly to load skills before trying to update as well as launch the settings fetching in a thread instead of blocking skill loading.

    Speedup audio service startup #2228

    The TTS service was loaded twice on startup, a fix in handling the config hash fixed the issue.

    Update "yes" aliases #2190

    @strugee submitted a couple of extra words for use when handling ask_yes_no(). Many thanks for that.

    Improve metrics #2196, #2198

    Only report stt timing if an utterance was returned and report skill id for skill handlers.

    Misc

    • Fix readthedocs documentation #2206
    • Allow may to not be a month #2187
    • Fix resting_screen_handler code when no name is provided #2185
    • configurable log locations #2192
    • fetch settings when pairing is completed #2211
    • Fix dev_setup.sh if terminal can't display color #2216
    Source code(tar.gz)
    Source code(zip)
  • release/v19.2.13(Jul 1, 2019)

    This is the first in the reduced intensity release schedule adding a couple of fixes related to skill settings the inclusion of support for streaming STT's!

    Streaming STT #2149

    Support for streaming STT's were added thanks to the excellent work of @JPEWdev. In addition to the basic infrastructure a DeepSpeech streaming STT backend was included.

    Google Streaming STT #2160

    On top of the new Streaming STT infrastructure an update google streaming STT was added.

    Skill settings fixes #2172, #2177, #2182

    • Improve skills data cleaning before sending
    • Make sure delayed checks are resumed
    • Update msm to improve skill GID in skills manifest

    Add state requests to commoniot skill framework #2150

    This updates the common IoT skill to allow for query type requests (e.g. "what is the living room temperature," "where is my phone," and "is the bedside outlet on").

    Update packages for debian/ubuntu based distributions #2167

    Big thanks to @MichaIng for cleaning this up. Checkout his project dietPi (Mycroft is a pending feature)

    Cleanup bash scripting in dev_setup.sh #2166

    Makes the script much more concise and less prone to errors using some of the features bash supplies. Shout out to @MichaIng for providing this!

    Time to system #2158

    This time util function converts a a Time/Datetime object with timezone info to a local system time.

    Miscellaneous

    • Allow to schedule events in fractions of seconds (both ints and floats). #2154
    • Remove stop() as an abstract method, since this doesn't need to be provided by all skills. #2156
    • Remove unused subprocess module from simple audio backend. #2157
    • Update python2 style metaclass declarations to python3 style. #2163
    • Travis will now only build pull requests and the branches dev and master #2162
    • Fix bug with showing the entire help pages in the cli. #2151
    • Fix changing log level of voice service. #2169
    • Update os detection code in dev_setup.sh #2165, #2173
    • Test system now hides gui messages #2170
    • Update pychromecast to 3.2.2 #2168
    • Minor German spelling fix (@MichaIng) #2174
    • Lock cryptography module version to 2.6.1 #2176
    • Add mycroft.util.format to the api documentation #2178
    Source code(tar.gz)
    Source code(zip)
  • release/v19.2.12(Jun 6, 2019)

    🇸🇪 This release on Sweden's national day brings mainly bugfixes but also small improvements to the Mycroft GUI.

    Restore functionality to store utterances locally #2141, #2145

    During previous refactoring the ability to locally store utterances was lost. This has now been restored.

    Skill settings update #2140

    After switching over to the new backend a couple of issues in the skill settings were noticed. This cleans up a couple of them and should make the code a bit tidier. For details see the relevant pull request.

    Show webpages on the GUI #2138

    @AIIX continues to build out the features of the mycroft GUI, this time adding methods for showing webpages and HTML code.

    Miscellaneous

    • Use yaml.safe_loadwhen loading settingsmeta.yaml files #2133
    • Upgrade Adapt to 0.3.3, fixing an issue with one_of()
    • Upgrade msk to 0.3.13, fixing the default layout of the README.md
    Source code(tar.gz)
    Source code(zip)
  • release/v19.2.11(May 23, 2019)

    This release fixes rare issues where skills would not start when starting Mycroft without network connection.

    Update MSM to 0.7.6 #2136

    MSM could throw an unhandled exception if no network was available at all.

    Disable settings for padatious #2132

    Padatious was uploaded as a skill to the skill page.

    Correct the check for user / group of mycroft data folder #2135

    On systems where the user wasn't the same as the default group mycroft would request to change the permissions on each startup.

    Source code(tar.gz)
    Source code(zip)
  • release/v19.2.10(May 22, 2019)

    Following the recent backend release, certain situations resulted in devices which couldn't be verified as registered by the server. Device ID is now sent as part of the registration to assist in debugging and resolving these issues.

    This release also corrects a problem with 'mycroft-use' script which would disable automatic device updates when you return to the stable mycroft-core package after testing an unstable release.

    Source code(tar.gz)
    Source code(zip)
  • release/v19.2.9(May 22, 2019)

  • release/v19.2.8(May 22, 2019)

    This update brings code for better interacting with the skill settings on the new backend.

    Skill GID #2104

    Instead of the old identifier a skill_gid is used to identify the skill settings from the backend.

    Remove extra pauses when speaking initials #2126

    This fixes an error when chunking sentences for the tts service and will no longer do splits in initials like "N. Armstrong"

    Update of mycroft-say-to and mycroft-speak #2111

    You can now pipe strings to this script. Thanks for adding this @FruityWelsh

    Allow yaml in settingsmeta #2113

    Settingmeta can now also be written as a yaml file with a simpler and more forgiving syntax.

    Allow sending GUI pages over http(s) #2106

    @AIIX (Thanks!) submitted a feature to allow sending qml pages over https which is a required feature for remote GUI devices.

    Cache pre-loading for Mimic 2 #2115

    Some of the common dialogs are now prerendered and cached for Mimic2.

    Precise Input queue management #2124

    Update precise to handle a build up of unprocessed chunks.

    System QML pages for show_text and show_image #2121

    @AIIX built some nice templates for basic text and showing of images on the GUI that are accessed by self.gui.show_image() and self.gui.show_text() from a skill.

    Miscellaneous

    • Fix typo in config comment for log levels. Thanks @katecanaveral #2119
    • Switch from old pep8 to pycodestyle
    Source code(tar.gz)
    Source code(zip)
  • release/v19.2.7(May 9, 2019)

    Apart from a nice update for the IoT skills this has been a quiet few weeks.

    Value support for IoTSkills #2109

    IoT skill protocol has been updated to allow catching of value fields. This also introduces a system for declaring the skill's supported featureset

    Request limiting on 422 or server errors #2116

    If posting settingsmeta to home.mycroft.ai receives a 402, 500 or 501 error it will reschedule the next retry 5 minutes into the future instead of the normal 1 minute.

    Typo-fix for german #2086

    Big thanks to @doczkal for spotting and fixing this.

    Source code(tar.gz)
    Source code(zip)
  • release/v19.2.6(Apr 25, 2019)

    This release was made to fix a packaging issue for the Mark-1. No core changes but a change in the packaging script was made to hold the pip version at 19.0.3

    Source code(tar.gz)
    Source code(zip)
  • release/v19.2.5(Apr 25, 2019)

    One of the shorter lived versions released, around 5 hours after this one 19.2.6 were released.

    Acknowledge #2096

    There is now an acknowledge sound that can be triggered by a skill instead of a verbal response self.acknowledge()

    IoTSkill Trigger Action #2099

    The trigger action is a primitive for triggering a IoT device function. Similar to the toggle but is intended to be stateless.

    Make precise default listener #2098

    For a long time precise has been available as a listener but only default on the Mark-1 and the picroft device. Now it will be the default listener on all platforms.

    Fix bus message logging #2101

    Big thanks to @JarbasAI for noticing and correcting this error.

    Audioservice list backends #2088

    The audioservice can now report the available backends, their type and some additional information.

    Miscellaneous

    • Skill tester restores get_response after tests are run #2100
    • Fix invalid chown in dev_setup.sh #2094
    • Update if automatically generated api documentation #2095
    Source code(tar.gz)
    Source code(zip)
  • release/v19.2.4(Apr 11, 2019)

    After concentrating on the server and then quickly removing the server related changes this release got pretty small.

    Restore Settings polling to 1 minute #2091

    Polling was restored from the emergency 5 minute level to the normal 1 minute

    Paused audio bug #2090

    Paused audio wasn't stopped correctly. The procedure was updated to unpause before stopping.

    Remove stop threshold #2089

    Stop threshold was a very old idea that never was used. this removes the traces of it from the code. Thanks @KathyReid for helping out with this one!

    Source code(tar.gz)
    Source code(zip)
  • release/v19.2.3(Apr 9, 2019)

    Try to reduce load on server to help the server issue April 5 - 7

    • Remove duplicated skill entries in skills.json before upload
    • Reduce settings polling to 5 minutes.
    Source code(tar.gz)
    Source code(zip)
Owner
Mycroft
An Open Source Artificial Intelligence for Everyone
Mycroft
A black hole for Internet advertisements

Network-wide ad blocking via your own Linux hardware The Pi-hole® is a DNS sinkhole that protects your devices from unwanted content, without installi

Pi-hole 32.5k Sep 17, 2021
Skygear - an open source serverless platform for modern secure app development

Next is the V2 of Skygear that aim to follow Support multi tenant at core, make cloud deploy scalable at first day. Simplify deployment. Give back app

SkygearIO 390 Aug 26, 2021
Personal CRM. Remember everything about your friends, family and business relationships.

Personal Relationship Manager Monica is a great open source personal relationship management system. Introduction Purpose Features Who is it for? What

Monica 13.3k Sep 24, 2021
Open source API management platform

About Fusio is an open source API management platform which helps to build and manage REST APIs. Fusio provides all tools to quickly build an API from

Apioo 997 Sep 15, 2021
Popcorn Time is a multi-platform, free software BitTorrent client that includes an integrated media player ( Windows / Mac / Linux ) A Butter-Project Fork

Popcorn Time A multi-platform, free software BitTorrent client that includes an integrated media player. Visit the project's website at popcorntime.ap

Popcorn Software 6.3k Sep 15, 2021
Multi-platform app that allows your devices to communicate

KDE Connect - desktop app KDE Connect is a multi-platform app that allows your devices to communicate (eg: your phone and your computer). (Some) Featu

KDE GitHub Mirror 1.2k Sep 15, 2021
🎧 Kaku is a highly integrated music player supports different online platform like YouTube, SoundCloud, Vimeo and more. Available on Mac, Windows and Linux.

Kaku Kaku is a highly integrated music player that supports different online platforms like YouTube, SoundCloud, Vimeo and more. Available on Windows,

Chia-Lung Chen 1k Sep 20, 2021
Eventx

EventX What do you do when you have an event and all the event management applications available are too heavy but with little functionality to serve

Andela 20 Jun 29, 2019
Sharetribe Go is a source available marketplace software, also available as a hosted, no-code SaaS product. For a headless, API-first marketplace solution, check out Sharetribe Flex: https://www.sharetribe.com/flex.

Sharetribe Sharetribe develops advanced marketplace software for every business life cycle stage. Sharetribe Go gives you the complete feature set to

Sharetribe 2.2k Sep 24, 2021
Open Source multi-language/multi-currency/multi-store E-commerce platform for Ruby on Rails with a modern UX, PWA frontend, REST API, GraphQL, several official extensions, and 3rd party integrations.

Spree Commerce Success Stories Documentation Integrations Spree is a complete open source e-commerce solution built with Ruby on Rails. It was started

Spree Commerce 11.4k Sep 20, 2021
Open source back-end server for web, mobile and IoT. The backend for busy developers. (self-hosted or hosted)

A scalable, multitenant backend for the cloud. Para is a scalable, multitenant backend server/framework for object persistence and retrieval. It helps

Erudika 408 Sep 20, 2021
visualCaptcha's Main Repo. This is a collection of all the different versions/repos of visualCaptcha.

visualCaptcha Please note visualCaptcha is no longer actively developed. It still works and should continue to, but it won't be improved by the initia

null 405 Sep 2, 2021
Self-hosted VirusTotal / MetaDefender wannabe with API, demo UI and Scanners running in Docker.

MalwareMultiScan Self-hosted VirusTotal / OPSWAT MetaDefender wannabe API for scanning URLs and files by multiple antivirus solutions. IMPORTANT: vers

Volodymyr Smirnov 237 Sep 14, 2021
OpenProject is the leading open source project management software.

OpenProject OpenProject is a web-based project management software. Its key features are: Project planning and scheduling Product roadmap and release

OpenProject 5.2k Sep 25, 2021
A cross-platform tool for optimizing PNG and JPG files.

Made by @kilianvalkhof Other projects: ?? Polypane - Develop responsive websites and apps twice as fast on multiple screens at once ??️ Superposition

Kilian Valkhof 634 Sep 19, 2021
Flash OS images to SD cards & USB drives, safely and easily.

Etcher Flash OS images to SD cards & USB drives, safely and easily. Etcher is a powerful OS image flasher built with web technologies to ensure flashi

balena 21.2k Sep 10, 2021
Linux System Optimizer and Monitoring - https://oguzhaninan.github.io/Stacer-Web

Linux System Optimizer and Monitoring Sponsors Reviews Required Packages curl, systemd PPA Repository (for ubuntu) sudo add-apt-repository ppa:oguzhan

Oguzhan Inan 7.2k Sep 18, 2021
Angry IP Scanner - fast and friendly network scanner

Angry IP Scanner This is the source code of Angry IP Scanner, licensed with GPL v2. Official site The code is written mostly in Java (currently, sourc

Angry IP Scanner 2.4k Sep 17, 2021