ovos-core

OpenVoiceOS is an open source platform for smart speakers and other voice-centric devices.

OpenVoiceOS is fully modular. Furthermore, common components have been repackaged as plugins. That means it isn't just a great assistant on its own, but also a pretty small library!

ovos-core contains "the brains" of OpenVoiceOS, all the NLP components and skills are managed here

Skills Service

The skills service is responsible for loading skills and intent parsers

All user queries are handled by the skills service, you can think of it as OVOS's brain

All Mycroft Skills should work normally with ovos-core until version 0.1.0, after that modernization is required!

Under OpenVoiceOS skills are regular python packages, any installed skills will be loaded automatically by ovos-core

Since ovos-core 0.0.8 it is also possible to launch a skill standalone via ovos-workshop, this enables individual skill containers in ovos-docker

This can be also be helpful during skill development for quick testing before the skill is packaged

ovos-skill-launcher {skill_id} [path/to/my/skill_id]

Configuration

"skills": {

    // blacklisted skills to not load
    // NB: This is the skill_id, usually the basename() of the directory where the skill lives, so if
     // the skill you want to blacklist is in /usr/share/mycroft/skills/mycroft-alarm.mycroftai/
    // then you should write `["mycroft-alarm.mycroftai"]` below.
    "blacklisted_skills": [],

    // fallback skill configuration (see below)
    "fallbacks": {...},

    // converse stage configuration (see below)
    "converse": {...}

},

Utterance Transformers

NEW in ovos-core version 0.0.8, originally developed for Neon

when ovos-core receives a natural language query/ utterance from a user it is sent to a "preprocessing stage"

The utterance transformers framework consists of any number of plugins ordered by priority (developer defined), the utterance and message.context are sent sequentially to all transformer plugins, and can be mutated by any of those plugins

imagem

to enable a utterance transformer simply add it to mycroft.conf after installing it

// To enable a utterance transformer plugin just add it's name with any relevant config
// these plugins can mutate the utterance between STT and the Intent stage
// they may also modify message.context with metadata
// plugins only load if they are installed and enabled in this section
"utterance_transformers": {

 "ovos-utterance-normalizer": {},

 // cancel utterances mid command
 "ovos-utterance-plugin-cancel": {},

 // define utterance fixes via fuzzy match ~/.local/share/mycroft/corrections.json
 // define unconditional replacements at word level ~/.local/share/mycroft/word_corrections.json
 "ovos-utterance-corrections-plugin": {},

 // translation plugin
 "ovos-utterance-translation-plugin": {
   "bidirectional": true,
   "verify_lang": false,
   "ignore_invalid": true,
   "translate_secondary_langs": false
 }
},

Metadata Transformers

NEW in ovos-core version 0.0.8

Similar to utterance transformers, these plugins only transform the message.context

// To enable a metadata transformer plugin just add it's name with any relevant config
// these plugins can mutate the message.context between STT and the Intent stage
"metadata_transformers": {},

Intent Pipelines

NEW in ovos-core version 0.0.8

after the utterance has been transformed it is sent to various OVOS components by priority order until one can handle the query

Pipelines include intent parsers, converse framework, common query framework and fallback skill framework

  // Intent Pipeline / plugins config
  "intents" : {
    // the pipeline is a ordered set of frameworks to send an utterance too
    // if one of the frameworks fails the next one is used, until an answer is found
    // NOTE: if padatious is not installed, it will be replaced with padacioso (much slower)
    // in the future these will become plugins, and new pipeline stages can be added by end users
    "pipeline": [
        "ocp_high",
        "stop_high",
        "converse",
        "padatious_high",
        "adapt_high",
        "fallback_high",
        "stop_medium",
        "adapt_medium",
        "ovos-persona-pipeline-plugin-high",
        "adapt_low",
        "common_qa",
        "fallback_medium",
        "ovos-persona-pipeline-plugin-low",
        "fallback_low"
    ]
  },