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
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": {},
Pipelines
NEW in ovos-core
version 0.0.8, The concept of configurable pipelines has been introduced in ovos-core
0.0.8 and will be fully implemented as
plugins after version 0.1.0
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": [
"stop_high",
"converse",
"padatious_high",
"adapt_high",
"fallback_high",
"stop_medium",
"padatious_medium",
"adapt_medium",
"adapt_low",
"common_qa",
"fallback_medium",
"fallback_low"
]
},
Most pipeline components will provide a high/medium/low variety with different confidence levels, but this is not required
pipeline | description | notes |
---|---|---|
stop_high | stop command exact matches | replaces OpenVoiceOS/skill-ovos-stop |
converse | continuous conversation interception for skills | |
padacioso_high | high confidence intent matches from padacioso | slow !!! disabled by default |
padatious_high | high confidence intent matches from padatious | |
adapt_high | high confidence intent matches from adapt | |
fallback_high | high priority fallback skill matches | |
stop_medium | medium confidence stop matches | replaces OpenVoiceOS/skill-ovos-stop |
padacioso_medium | medium confidence intent matches from padacioso | slow !!! disabled by default |
padatious_medium | medium confidence intent matches from padatious | |
adapt_medium | medium confidence intent matches from adapt | |
adapt_low | low confidence intent matches from adapt | |
common_query | send utterance to common_query skills and select best match | |
fallback_medium | medium priority fallback skill matches | |
stop_low | low confidence stop matches | disabled by default |
padacioso_low | low confidence intent matches from padacioso | slow !!! disabled by default |
padatious_low | low confidence intent matches from padatious | almost always wrong disabled by default |
fallback_low | low priority fallback skill matches |