github OpenVoiceOS/ovos-core 0.0.1post1
0.0.1 - OpenVoiceOS - core

latest releases: 0.5.1, 0.5.0, 0.5.0a1...
3 years ago

🎉 ovos-core exists now!

Configuration

  • audio backends deactivated by default if not present in config ec8ac01
  • optional ntp sync 62f322d
  • offline support (do not wait for internet to load skills) 6160306
  • optional msm e0b2ffe
  • optional backend fd9a01c
  • tts cache min_free_percent is now configurable (per TTS engine) a07378c
  • dedicated bus connection per skill 1f4fe33
  • instant_listen 127dad4
    • experimental config option to not require the pause between "hey mycroft" and actually issuing an order
  • skill permissions - initial experiments a169ad8
    • converse handling
      • skill whitelist/blacklist mode - restrict converse to certain skill_ids
      • configurable converse timeout
        • can be set globally and per skill
      • initial concept of converse priority, needs to be set per skill in .conf
    • converse activations
      • skill whitelist/blacklist mode - restrict converse (de)activation to certain skill_ids
      • cross (de)activation setting - only skills can (de)activate themselves
      • configurable max consecutive number of skill activations (per minute)
        • can be set globally and per skill
    • fallback handling
      • skill whitelist/blacklist mode (restrict fallbacks to certain skill_ids)
      • fallback skill priority override (user defines fallback order)
      • no fallback priority limit (can go above 100 now)

Features

  • skills full XDG support aaa159a
    • will load skills from all XDG dirs, skills are considered data, not code
    • the "classic" skills folder is loaded last and has the highest priority, this ensures backwards compatibility
    • skill_ids need to be unique and correspond to the skill folder name, by convention repo.author
      • skills in higher priority directories replace skills with same skill_id in previous directories (no duplicate skill loading)
      • empty folders are assumed to mean the skill should not be loaded, ie, a user can disable a system skill without uninstalling or messing with .conf
      • if a new skill is detected and a loaded skill exists with same id, the loaded skill will be unloaded (assuming the new skill is in higher priority directory)
  • audio service support for media player seek bar 8d881f5
    • get_track_length
    • set_playback_time
    • get_playback_time
    • all methods now support timedelta objects
  • new messagebus api to clear config cache (force a reload on Configuration.get()) 434da34
  • add phonetic spellings for ip and wikipedia to help TTS say it right 41bec48
  • allow all TTS engines to have a persistent cache (creation of the cache is out of scope) 6b86f00
    • used to be mimic2 exclusive functionality
  • active skill events - enhanced version of mycroft-core/pull/1468
    • adds self.activate() and self.deactivate() in MycroftSkill class
    • adds "intent.service.skills.deactivated" event when IntentService removes a skill from active list
    • adds "intent.service.skills.activated" event when IntentService adds a skill to active list
    • adds def handle_deactivate(self, message): callback in MycroftSkill class
    • adds def handle_activate(self, message): callback in MycroftSkill class

Language support

  • fix pairing (replace hardcoded english utterance with bus event) cf4e994
  • fix locale switching + timezone handling f0b07d9
    • all individual services setup the locale (timezone + default lang) on loading, this means not-skills-service (eg. a TTS engine) using lingua_franca will have the correct locale
    • timezone conversion utilities made wrong assumptions about UTC and naive datetimes
    • ⚠️ bug still present in lingua_franca MycroftAI/lingua-franca#209
      • recommended that you import the time utilities from mycroft.util.time
      • if running under mycroft-core or using lingua_franca you get wrong timezones, if running under ovos-core you get the fix
  • flexible lang dialect support f002001
    • when loading resources check for all language code variations and returns best
    • changing language to en-gb should load british dialect variations if available, but en-us should still be used if en-gb missing
  • keep original message.data in intents b175e4e
    • intent handlers now get the same info that converse does + intent data
    • helps with language support, where language can come from STT/wakeword/config
  • add multi lingual support 7e43162
    • every bus message can now request/inform about a specific language
      • Wakeword/STT can detect language
      • Hivemind voice satellite can send it's own language
    • introduce the concept of secondary_languages
    • load resources and intents for all configured languages
  • skills self.lang is now session based instead of loaded once from .conf c967826
  • intent engine per language 8c96e5e
    • Improves accuracy since only lang specific intents are taken into account now
    • make the dialog_renderer load lang resources on demand
    • Remove fallback to en-us for missing resource files

HiveMind support

  • the whole language support section is relevant to hivemind, scroll up if you didn't read it!
  • make audio service respect target/destination in message.context c100394
  • ensure usage of .forward and .reply methods 26aaadc
    • covers skills / intents / scheduled events
    • skill_id is now always included in message.context

Bug fixes

  • refactor/readiness+enclosure 847e822
    • the generic enclosure partially handled some onboarding functions that dont belong there
    • completely remove mk1 specific code to mk1 enclosure class (was duplicated)
    • move readiness check from enclosure to skills service (enclosure is optional)
    • make readiness conditions configurable to account for headless installs and other setup specific considerations
  • hotfixes: 9257bc9
    • dont raise exception on directory creation error
    • hotfix/phoneme_bug
    • fix/signal_remove_race_condition
    • make merge_dict return the modified dict for convenience (sync with ovos_utils)
  • handle missing dialogs in get_response method fa40029
  • fix process_status report ready at correct time 758ce53
  • support optional stt credentials (google works with None) 5d2307a
  • make mycorft.conf priority skill list use deterministic skill_id instead of skill name 58427c1
  • fix stop handling cfc5fb6
    • if skill failed to load stop was called and could throw an exception (skill not fully initialized!)
    • if stop took more than 100ms it was assumed to be handled and a message was wrongly sent
  • remove tts audio extension assumptions, determine extension on the fly a07378c
  • ipc signal permissions c1ff029
  • ensure reload_skill flag is respected 7e440b0
    • this probably wasn't happening in the wild at all, refactored while searching for a related bug
    • it is still important for derivative projects importing mycroft as a lib
  • allow event_scheduler to run as a daemon c1ce28f
  • fix skill shutdown sequence, order of operations was not safe befbc55
  • gui dicts would not sync on subdict changes (missing data in mycroft-gui) fc0e9f4
  • handle unimportant .conf default values missing 16b41e9
  • disable debug mode in tornado 439cf7e
  • ensure logger is always fully constructed (circular imports monkey business going on) c92d584
  • fix/handle gui api trying to emit messages without self.bus 7313135
    • this should avoid most of the error logs during skill shutdown and reload
  • fix unmunge message issue 3c752e2
    • the Message object can come from mycroft or from the bus client package, this caused type check issues
  • fix/ensure lang is always lowercased eebbb17
  • fix/race condition dictionary changed iteration 47d8a1f

Packaging

  • turn mycroft-core into a proper python library instead of a standalone application 9257bc9
    • replace all relative imports with explicit imports
    • move audioservice from skills to audio module to decouple the individual modules
    • remove expand_parentheses import (dead code) from mycroft.util.format
    • remove all non-package files
    • split requirements.txt into individual files per service
    • gTTS optional import -> throw import error only if google selected
    • petact optional import -> throw import error only if precise selected
    • adapt optional import -> no longer required by top-level mycroft import, only by skills service
    • do not require pyaudio just to import mycroft.util.audio_utils -> throw error if search for input device is used
    • extract bracket_expansion.py from padatious.util
    • rebranding
      • change platform to "OpenVoiceOS"
      • add "(OpenVoiceOS)" to version string
    • remove support for the version.json file (mk1 specific)
    • reset version to 0.0.1
  • optional_padatious d59dc53
  • loosen requirements aabd1c0
  • do not bundle the english pocketsphinx model twice 3506ecd
  • support websocket-client >= 1.2.1 f5d3b5b
  • lingua_franca optional f0b07d9
    • only needed if using the utilities directly (throws ImportError on usage)
    • only required by individual skills, they should list it in requirements.txt
  • add optional ovos.conf 4a8317f
    • example usage https://github.com/OpenVoiceOS/ovos-core/blob/dev/mycroft/configuration/ovos.py
    • allow setting name of base XDG folder (rename "mycroft")
    • enable/disable XDG compliance - mycroft is not (fully) compliant
    • allow setting location of the default config and name of .conf files
    • configure per downstream project
      - multiple "cores" can co exist now, each with it's own skills folder and config files
      - cores are detected via presence of preconfigured list of module names
  • refactor/allow overriding stt engine in constructor de681fe
    • for downstream projects wanting to use speech client but not STTFactory

Post release notes

this is the same as version 0.0.1

the github release accidentally included 2 extra commits not in 0.0.1 that is published in pypi, this release drops those 2 extra commits

Related issues

Companion issues/PRs in mycroft-core:

Don't miss a new ovos-core release

NewReleases is sending notifications on new releases.