|
|
|
@@ -0,0 +1,776 @@
|
|
|
|
|
{
|
|
|
|
|
// Definition and documentation of all variables used by mycroft-core.
|
|
|
|
|
//
|
|
|
|
|
// Settings seen here are considered DEFAULT. Settings can also be
|
|
|
|
|
// overridden at the REMOTE level (set by the user via
|
|
|
|
|
// https://home.mycroft.ai), at the SYSTEM level (typically in the file
|
|
|
|
|
// '/etc/mycroft/mycroft.conf'), or at the USER level (typically in the
|
|
|
|
|
// file '~/.config/mycroft/mycroft.conf').
|
|
|
|
|
//
|
|
|
|
|
// The load order of settings is:
|
|
|
|
|
// DEFAULT
|
|
|
|
|
// REMOTE
|
|
|
|
|
// SYSTEM
|
|
|
|
|
// USER
|
|
|
|
|
//
|
|
|
|
|
// The Override: comments below indicates where these settings are generally
|
|
|
|
|
// set outside of this file. The load order is always followed, so an
|
|
|
|
|
// individual systems can still apply changes at the SYSTEM or USER levels.
|
|
|
|
|
|
|
|
|
|
// Language used for speech-to-text and text-to-speech.
|
|
|
|
|
// Code is a BCP-47 identifier (https://tools.ietf.org/html/bcp47), lowercased
|
|
|
|
|
// TODO: save unmodified, lowercase upon demand
|
|
|
|
|
"lang": "en-us",
|
|
|
|
|
|
|
|
|
|
// Secondary languages will also have their resource files loaded into memory
|
|
|
|
|
// but intents will only be considered if that lang is tagged with the utterance at STT step
|
|
|
|
|
"secondary_langs": [],
|
|
|
|
|
|
|
|
|
|
// Measurement units, either 'metric' or 'imperial'
|
|
|
|
|
"system_unit": "metric",
|
|
|
|
|
// Temperature units, either 'celsius' or 'fahrenheit'
|
|
|
|
|
"temperature_unit": "celsius",
|
|
|
|
|
// Windspeed units, either 'km/h', 'm/s', 'mph' or 'kn' (knots)
|
|
|
|
|
"windspeed_unit": "m/s",
|
|
|
|
|
// Precipitation units, either 'mm' or 'inch'
|
|
|
|
|
"precipitation_unit": "mm",
|
|
|
|
|
|
|
|
|
|
// Time format, either 'half' (e.g. "11:37 pm") or 'full' (e.g. "23:37")
|
|
|
|
|
"time_format": "half",
|
|
|
|
|
"spoken_time_format": "full",
|
|
|
|
|
|
|
|
|
|
// Date format, either 'MDY' (e.g. "11-29-1978") or 'DMY' (e.g. "29-11-1978")
|
|
|
|
|
"date_format": "MDY",
|
|
|
|
|
|
|
|
|
|
// Play a beep when system begins to listen?
|
|
|
|
|
"confirm_listening": true,
|
|
|
|
|
|
|
|
|
|
// opendata servers can be hosted by users or OVOS team, either for analyzing your usage patterns or to contribute to a open dataset
|
|
|
|
|
// any number of server urls can be added here, this is EXCLUSIVELY OPT-IN
|
|
|
|
|
// source: https://github.com/OpenVoiceOS/ovos-opendata-server
|
|
|
|
|
"open_data": {
|
|
|
|
|
// NOTE: consider enabling tigregotico.pt servers to help collecting datasets!
|
|
|
|
|
// this is a server hosted by @JarbasAi and will directly help improving the intent pipeline
|
|
|
|
|
// a dashboard is provided at https://opendata.tigregotico.pt
|
|
|
|
|
// more test data is needed to complement https://gitlocalize-bench.tigregotico.pt and to identity areas of improvement
|
|
|
|
|
"intent_urls": [
|
|
|
|
|
// "https://metrics.tigregotico.pt/intents"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// File locations of sounds to play for system events
|
|
|
|
|
"sounds": {
|
|
|
|
|
"start_listening": "snd/start_listening.wav",
|
|
|
|
|
"end_listening": "snd/end_listening.wav",
|
|
|
|
|
"acknowledge": "snd/acknowledge.mp3",
|
|
|
|
|
"error": "snd/error.mp3"
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Mechanism used to play WAV audio files
|
|
|
|
|
// by default ovos-utils will try to detect best player
|
|
|
|
|
//"play_wav_cmdline": "paplay %1 --stream-name=mycroft-voice",
|
|
|
|
|
|
|
|
|
|
// Mechanism used to play MP3 audio files
|
|
|
|
|
// by default ovos-utils will try to detect best player
|
|
|
|
|
//"play_mp3_cmdline": "mpg123 %1",
|
|
|
|
|
|
|
|
|
|
// Mechanism used to play OGG audio files
|
|
|
|
|
// by default ovos-utils will try to detect best player
|
|
|
|
|
//"play_ogg_cmdline": "ogg123 -q %1",
|
|
|
|
|
|
|
|
|
|
// Location where the system resides
|
|
|
|
|
// NOTE: Although this is set here, an Enclosure can override the value.
|
|
|
|
|
// For example a mycroft-core running in a car could use the GPS.
|
|
|
|
|
"location": {
|
|
|
|
|
"city": {
|
|
|
|
|
"code": "Lawrence",
|
|
|
|
|
"name": "Lawrence",
|
|
|
|
|
"state": {
|
|
|
|
|
"code": "KS",
|
|
|
|
|
"name": "Kansas",
|
|
|
|
|
"country": {
|
|
|
|
|
"code": "US",
|
|
|
|
|
"name": "United States"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"coordinate": {
|
|
|
|
|
"latitude": 38.971669,
|
|
|
|
|
"longitude": -95.23525
|
|
|
|
|
},
|
|
|
|
|
"timezone": {
|
|
|
|
|
"code": "America/Chicago",
|
|
|
|
|
"name": "Central Standard Time",
|
|
|
|
|
"dstOffset": 3600000,
|
|
|
|
|
"offset": -21600000
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// default to $XDG_DATA_DIRS/mycroft
|
|
|
|
|
// "data_dir": "/opt/mycroft",
|
|
|
|
|
|
|
|
|
|
// by default, files persist across reboots, but be careful with space usage!
|
|
|
|
|
// TIP: use "/dev/shm/mycroft/cache" if you want to keep the cache in RAM or
|
|
|
|
|
// use "/tmp/mycroft/cache" to remove files upon reboot
|
|
|
|
|
// default to $XDG_DATA_DIRS/$BASE_FOLDER where BASE_FOLDER is read from ovos.conf (default "mycroft")
|
|
|
|
|
// "cache_path": "/tmp/mycroft/cache",
|
|
|
|
|
|
|
|
|
|
// 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": {}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 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 Pipeline / plugins config
|
|
|
|
|
"intents" : {
|
|
|
|
|
// the position in the pipeline where each engine matches can be configured in "pipeline" section below
|
|
|
|
|
|
|
|
|
|
// adjust confidence thresholds for adapt pipeline
|
|
|
|
|
// adapt intents with conf lower than these values will be ignored
|
|
|
|
|
"adapt": {
|
|
|
|
|
"conf_high": 0.65,
|
|
|
|
|
"conf_med": 0.45,
|
|
|
|
|
"conf_low": 0.25
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// adjust confidence thresholds for padatious pipeline
|
|
|
|
|
// padatious/padacioso intents with conf lower than these values will be ignored
|
|
|
|
|
"padatious": {
|
|
|
|
|
"conf_high": 0.95,
|
|
|
|
|
"conf_med": 0.8,
|
|
|
|
|
"conf_low": 0.5,
|
|
|
|
|
|
|
|
|
|
// use snowball stemmer, helps with grammatical gender and verb tenses
|
|
|
|
|
"stem": false,
|
|
|
|
|
|
|
|
|
|
// normalization step to remove punctuation and punctuation
|
|
|
|
|
"cast_to_ascii": false,
|
|
|
|
|
|
|
|
|
|
// padaos is an internal regex matcher that ensures exact matches
|
|
|
|
|
"disable_padaos": false,
|
|
|
|
|
|
|
|
|
|
// domain engine will classify intents first and then the intent for that skill
|
|
|
|
|
// if false intents are classified directly
|
|
|
|
|
"domain_engine": false,
|
|
|
|
|
|
|
|
|
|
// path to save trained intent files
|
|
|
|
|
// by default uses XDG directories if not set
|
|
|
|
|
//"intent_cache": "~/.local/share/mycroft/intent_cache/",
|
|
|
|
|
|
|
|
|
|
// set to false if multithreading is wanted
|
|
|
|
|
"single_thread": true
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Common Query gathers responses to questions from various skills and chooses the best answer
|
|
|
|
|
"common_query": {
|
|
|
|
|
// maximum seconds to wait for skill responses before giving up
|
|
|
|
|
"max_response_wait": 6,
|
|
|
|
|
// how much extra seconds to allow a skill to search if it requests so
|
|
|
|
|
"extension_time": 3,
|
|
|
|
|
// reranker plugins are responsible for selecting the best answer among skill responses in case of ties
|
|
|
|
|
// the default is a BM25 implementation from ovos-classifiers
|
|
|
|
|
"reranker": "ovos-choice-solver-bm25"
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// OVOS Common Play - handle media requests
|
|
|
|
|
"OCP": {
|
|
|
|
|
// enable usage of a pretrained classifier for MediaType matching
|
|
|
|
|
// if disabled a simple .voc match is used
|
|
|
|
|
// NOTE: classifiers currently are english only
|
|
|
|
|
"experimental_media_classifier": false,
|
|
|
|
|
"experimental_binary_classifier": false,
|
|
|
|
|
// legacy forces old audio service instead of OCP
|
|
|
|
|
"legacy": false,
|
|
|
|
|
// min confidence (0.0 - 1.0) to accept MediaType
|
|
|
|
|
"classifier_threshold": 0.4,
|
|
|
|
|
// min conf for each result (0 - 100)
|
|
|
|
|
"min_score": 40,
|
|
|
|
|
// filter results from "wrong" MediaType
|
|
|
|
|
"filter_media": true,
|
|
|
|
|
// filter results we lack plugins to play
|
|
|
|
|
"filter_SEI": true,
|
|
|
|
|
// playback mode
|
|
|
|
|
// 0 - auto
|
|
|
|
|
// 10 - audio results only
|
|
|
|
|
// 20 - video results only
|
|
|
|
|
"playback_mode": 0,
|
|
|
|
|
// if MediaType query fails, try Generic query
|
|
|
|
|
"search_fallback": true
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 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",
|
|
|
|
|
"ocp_high",
|
|
|
|
|
"padatious_high",
|
|
|
|
|
"adapt_high",
|
|
|
|
|
"ocp_medium",
|
|
|
|
|
"fallback_high",
|
|
|
|
|
"stop_medium",
|
|
|
|
|
"adapt_medium",
|
|
|
|
|
"adapt_low",
|
|
|
|
|
"common_qa",
|
|
|
|
|
"fallback_medium",
|
|
|
|
|
"fallback_low"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// General skill values
|
|
|
|
|
"skills": {
|
|
|
|
|
|
|
|
|
|
// relative to "data_dir"
|
|
|
|
|
"directory": "skills",
|
|
|
|
|
|
|
|
|
|
// blacklisted skills to not load
|
|
|
|
|
// NB: This is skill_id of the skill, usually defined in the skills setup.py
|
|
|
|
|
"blacklisted_skills": [
|
|
|
|
|
// stop skill has been replaced with native core functionality
|
|
|
|
|
"skill-ovos-stop.openvoiceos"
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
// fallback skill configuration
|
|
|
|
|
"fallbacks": {
|
|
|
|
|
// you can add skill_id: priority to override the developer defined
|
|
|
|
|
// priority of those skills, this allows customization
|
|
|
|
|
// of unknown intent handling for default_skills + user preferences
|
|
|
|
|
"fallback_priorities": {
|
|
|
|
|
// "skill_id": 10
|
|
|
|
|
},
|
|
|
|
|
// fallback skill handling has 3 modes of operations:
|
|
|
|
|
// - "accept_all" # default mycroft-core behavior
|
|
|
|
|
// - "whitelist" # only call fallback for skills in "fallback_whitelist"
|
|
|
|
|
// - "blacklist" # only call fallback for skills NOT in "fallback_blacklist"
|
|
|
|
|
"fallback_mode": "accept_all",
|
|
|
|
|
"fallback_whitelist": [],
|
|
|
|
|
"fallback_blacklist": []
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// converse stage configuration
|
|
|
|
|
"converse": {
|
|
|
|
|
// the default number of seconds a skill remains active
|
|
|
|
|
// if the user does not interact with the skill in this timespan it
|
|
|
|
|
// will be deactivated, default 5 minutes (same as mycroft)
|
|
|
|
|
"timeout": 300,
|
|
|
|
|
// override of "skill_timeouts" per skill_id
|
|
|
|
|
"skill_timeouts": {},
|
|
|
|
|
|
|
|
|
|
// conversational mode has 3 modes of operations:
|
|
|
|
|
// - "accept_all" # default mycroft-core behavior
|
|
|
|
|
// - "whitelist" # only call converse for skills in "converse_whitelist"
|
|
|
|
|
// - "blacklist" # only call converse for skills NOT in "converse_blacklist"
|
|
|
|
|
"converse_mode": "accept_all",
|
|
|
|
|
"converse_whitelist": [],
|
|
|
|
|
"converse_blacklist": [],
|
|
|
|
|
|
|
|
|
|
// converse activation has 4 modes of operations:
|
|
|
|
|
// - "accept_all" # default mycroft-core behavior, any skill can
|
|
|
|
|
// # activate itself unconditionally
|
|
|
|
|
// - "priority" # skills can only activate themselves if no skill with
|
|
|
|
|
// # higher priority is active
|
|
|
|
|
// - "whitelist" # only skills in "converse_whitelist" can activate themselves
|
|
|
|
|
// - "blacklist" # only skills NOT in converse "converse_blacklist" can activate themselves
|
|
|
|
|
// NOTE: this does not apply for regular skill activation, only to skill
|
|
|
|
|
// initiated activation requests
|
|
|
|
|
"converse_activation": "accept_all",
|
|
|
|
|
|
|
|
|
|
// number of consecutive times a skill is allowed to activate itself
|
|
|
|
|
// per minute, -1 for no limit (default), 0 to disable self-activation
|
|
|
|
|
"max_activations": -1,
|
|
|
|
|
// override of "max_activations" per skill_id
|
|
|
|
|
"skill_activations": {},
|
|
|
|
|
|
|
|
|
|
// if false only skills can activate themselves
|
|
|
|
|
// if true any skill can activate any other skill
|
|
|
|
|
"cross_activation": true,
|
|
|
|
|
|
|
|
|
|
// if false only skills can deactivate themselves
|
|
|
|
|
// if true any skill can deactivate any other skill
|
|
|
|
|
// NOTE: skill deactivation is not yet implemented
|
|
|
|
|
"cross_deactivation": true,
|
|
|
|
|
|
|
|
|
|
// you can add skill_id: priority to override the developer defined
|
|
|
|
|
// priority of those skills, currently there is no api for skills to
|
|
|
|
|
// define their default priority, it is assumed to be 50, the only current
|
|
|
|
|
// canonical source for converse priorities is this setting
|
|
|
|
|
"converse_priorities": {
|
|
|
|
|
// "skill_id": 10
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// system administrators can define different constraints in how configurations are loaded
|
|
|
|
|
// this is a mechanism to require root to change these config options
|
|
|
|
|
"system": {
|
|
|
|
|
// do not allow users to tamper with settings at all
|
|
|
|
|
"disable_user_config": false,
|
|
|
|
|
// do not allow remote backend to tamper with settings at all
|
|
|
|
|
"disable_remote_config": false,
|
|
|
|
|
// protected keys are individual settings that can not be changed at remote/user level
|
|
|
|
|
// nested dictionary keys can be defined with "key1:key2" syntax,
|
|
|
|
|
// eg. {"a": {"b": True, "c": False}}
|
|
|
|
|
// to protect "c" you would enter "a:c" in the section below
|
|
|
|
|
"protected_keys": {
|
|
|
|
|
"remote": [
|
|
|
|
|
"system",
|
|
|
|
|
"websocket",
|
|
|
|
|
"gui_websocket",
|
|
|
|
|
"network_tests",
|
|
|
|
|
// NOTE: selene returns listener settings as part of ww config
|
|
|
|
|
// they are protected because selene has no clue about your mic setup
|
|
|
|
|
"listener:channels",
|
|
|
|
|
"listener:sample_rate"
|
|
|
|
|
],
|
|
|
|
|
"user": []
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// The ovos-core messagebus websocket
|
|
|
|
|
"websocket": {
|
|
|
|
|
"host": "127.0.0.1",
|
|
|
|
|
"port": 8181,
|
|
|
|
|
"route": "/core",
|
|
|
|
|
"ssl": false,
|
|
|
|
|
// in mycroft-core all skills share a bus, this allows malicious skills
|
|
|
|
|
// to manipulate it and affect other skills, this option ensures each skill
|
|
|
|
|
// gets its own websocket connection
|
|
|
|
|
"shared_connection": true,
|
|
|
|
|
// any bus messages over this size in MB will be refused
|
|
|
|
|
"max_msg_size": 25
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// The GUI messagebus websocket. Once port is created per connected GUI
|
|
|
|
|
"gui_websocket": {
|
|
|
|
|
"host": "0.0.0.0",
|
|
|
|
|
"base_port": 18181,
|
|
|
|
|
"route": "/gui",
|
|
|
|
|
"ssl": false
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// URIs to use for testing network connection.
|
|
|
|
|
"network_tests": {
|
|
|
|
|
"ip_url": "https://api.ipify.org",
|
|
|
|
|
"dns_primary": "1.1.1.1",
|
|
|
|
|
"dns_secondary": "8.8.8.8",
|
|
|
|
|
"web_url": "http://nmcheck.gnome.org/check_network_status.txt",
|
|
|
|
|
"web_url_secondary": "https://checkonline.home-assistant.io/online.txt",
|
|
|
|
|
"captive_portal_url": "http://nmcheck.gnome.org/check_network_status.txt",
|
|
|
|
|
"captive_portal_text": "NetworkManager is online"
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Settings used by the wake-up-word listener
|
|
|
|
|
"listener": {
|
|
|
|
|
"sample_rate": 16000,
|
|
|
|
|
|
|
|
|
|
// mute global audio output volume while microphone is recording
|
|
|
|
|
"fake_barge_in": true,
|
|
|
|
|
|
|
|
|
|
// TODO - these names are confusing, update dinkum listener to give them more descriptive names
|
|
|
|
|
// min speech seconds for audio to be considered speech
|
|
|
|
|
"speech_begin": 0.3,
|
|
|
|
|
// min silence seconds before speech is considered ended
|
|
|
|
|
"silence_end": 0.7,
|
|
|
|
|
// hard limit on max recording time before audio is sent to STT
|
|
|
|
|
"recording_timeout": 10,
|
|
|
|
|
// size of buffer kept for STT
|
|
|
|
|
"utterance_chunks_to_rewind": 2,
|
|
|
|
|
// sound chunks sent to ww callback (eg, saving recordings)
|
|
|
|
|
"wakeword_chunks_to_save": 15,
|
|
|
|
|
|
|
|
|
|
// Set 'save_path' to configure the location of files stored if
|
|
|
|
|
// 'record_wake_words' and/or 'save_utterances' are set to 'true'.
|
|
|
|
|
// WARNING: Make sure that user 'mycroft' has write-access on the
|
|
|
|
|
// directory!
|
|
|
|
|
// "save_path": "/tmp",
|
|
|
|
|
// Set 'record_wake_words' to save a copy of wake word triggers
|
|
|
|
|
// as .wav files under: /'save_path'/mycroft_wake_words
|
|
|
|
|
"record_wake_words": false,
|
|
|
|
|
// Set 'save_utterances' to save each sentence sent to STT -- by default
|
|
|
|
|
// they are only kept briefly in-memory. This can be useful for for
|
|
|
|
|
// debugging or other custom purposes. Recordings are saved
|
|
|
|
|
// under: /'save_path'/utterances/'utterance_filename'.wav
|
|
|
|
|
"save_utterances": false,
|
|
|
|
|
|
|
|
|
|
// Set 'utterance_filename' based on how you would like to save utterances.
|
|
|
|
|
// Special keys surrouned by curly braces will be replaces as follows
|
|
|
|
|
// "{md5}" - the md5 hash of the transcription
|
|
|
|
|
// "{uuid4}" - a random uuid4
|
|
|
|
|
// "{now:%Y-%m-%dT%H%M%S%z}" - the local ISO datetime
|
|
|
|
|
// "{utcnow:%Y-%m-%dT%H%M%S%z}" - the UTC ISO datetime
|
|
|
|
|
"utterance_filename": "{md5}-{uuid4}",
|
|
|
|
|
|
|
|
|
|
"wake_word_upload": {
|
|
|
|
|
"disable": true,
|
|
|
|
|
// official mycroft endpoint disabled, enable if you want to collect your own
|
|
|
|
|
// eg, eltocino localcroft or personal backend
|
|
|
|
|
"url": ""
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Microphone plugin to be read audio
|
|
|
|
|
"microphone": {
|
|
|
|
|
"module": "ovos-microphone-plugin-alsa",
|
|
|
|
|
"ovos-microphone-plugin-alsa": {"fallback_module": "ovos-microphone-plugin-sounddevice"},
|
|
|
|
|
"ovos-microphone-plugin-sounddevice": {"fallback_module": "ovos-microphone-plugin-pyaudio"}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// if true, will remove silence from both ends of audio before sending it to STT
|
|
|
|
|
"remove_silence": true,
|
|
|
|
|
|
|
|
|
|
// Voice Activity Detection is used to determine when speech ended
|
|
|
|
|
"VAD": {
|
|
|
|
|
// silence method defined the main vad strategy
|
|
|
|
|
// valid values:
|
|
|
|
|
// VAD_ONLY - Only use vad
|
|
|
|
|
// RATIO_ONLY - Only use max/current energy ratio threshold
|
|
|
|
|
// CURRENT_ONLY - Only use current energy threshold
|
|
|
|
|
// VAD_AND_RATIO - Use vad and max/current energy ratio threshold
|
|
|
|
|
// VAD_AND_CURRENT - Use vad and current energy threshold
|
|
|
|
|
// ALL - Use vad, max/current energy ratio, and current energy threshold
|
|
|
|
|
// NOTE: if a vad plugin is not available method will fallback to RATIO_ONLY
|
|
|
|
|
"silence_method": "vad_and_ratio",
|
|
|
|
|
// Seconds of speech before voice command has begun
|
|
|
|
|
"speech_seconds": 0.1,
|
|
|
|
|
// Seconds of silence before a voice command has finished
|
|
|
|
|
"silence_seconds": 0.5,
|
|
|
|
|
// Seconds of audio to keep before voice command has begun
|
|
|
|
|
"before_seconds": 0.5,
|
|
|
|
|
// Minimum length of voice command (seconds)
|
|
|
|
|
// NOTE: max_seconds uses recording_timeout listener setting
|
|
|
|
|
"min_seconds": 1,
|
|
|
|
|
// Ratio of max/current energy below which audio is considered speech
|
|
|
|
|
"max_current_ratio_threshold": 2,
|
|
|
|
|
// Energy threshold above which audio is considered speech
|
|
|
|
|
// NOTE: this is dynamic, only defining start value
|
|
|
|
|
"initial_energy_threshold": 1000.0,
|
|
|
|
|
|
|
|
|
|
// recommended plugin: "ovos-vad-plugin-silero"
|
|
|
|
|
"module": "ovos-vad-plugin-silero",
|
|
|
|
|
"ovos-vad-plugin-silero": {
|
|
|
|
|
"threshold": 0.2,
|
|
|
|
|
"fallback_module": "ovos-vad-plugin-precise"
|
|
|
|
|
},
|
|
|
|
|
"ovos-vad-plugin-precise": {
|
|
|
|
|
"fallback_module": "ovos-vad-plugin-webrtcvad"
|
|
|
|
|
},
|
|
|
|
|
"ovos-vad-plugin-webrtcvad": {
|
|
|
|
|
"vad_mode": 3,
|
|
|
|
|
"fallback_module": "ovos-vad-plugin-noise"
|
|
|
|
|
},
|
|
|
|
|
"ovos-vad-plugin-noise": {
|
|
|
|
|
"method": "all",
|
|
|
|
|
"max_current_ratio_threshold": 2.0,
|
|
|
|
|
"energy_threshold": 1000.0
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Override as SYSTEM or USER to select a specific microphone input instead of
|
|
|
|
|
// the PortAudio default input.
|
|
|
|
|
// "device_name": "somename", // can be regex pattern or substring
|
|
|
|
|
// or
|
|
|
|
|
// "device_index": 12,
|
|
|
|
|
|
|
|
|
|
// Retry microphone initialization infinitely on startup
|
|
|
|
|
"retry_mic_init" : true,
|
|
|
|
|
|
|
|
|
|
// Stop listing to the microphone during playback to prevent accidental triggering
|
|
|
|
|
// This is enabled by default, but instances with good microphone noise cancellation
|
|
|
|
|
// can disable this to listen all the time, allowing 'barge in' functionality.
|
|
|
|
|
"mute_during_output" : false,
|
|
|
|
|
|
|
|
|
|
// In milliseconds
|
|
|
|
|
"phoneme_duration": 120,
|
|
|
|
|
"multiplier": 1.0,
|
|
|
|
|
"energy_ratio": 1.5,
|
|
|
|
|
|
|
|
|
|
// NOTE, multiple hotwords are supported now, these fields define the main wake_word,
|
|
|
|
|
// this is equivalent to setting "active": true in the "hotwords" section below IF "active" is missing
|
|
|
|
|
// this field is also used to get a speakable string of main wake word, ie, mycrofts name
|
|
|
|
|
// this is set by selene and used in naptime skill
|
|
|
|
|
"wake_word": "hey_mycroft",
|
|
|
|
|
"stand_up_word": "wake_up",
|
|
|
|
|
|
|
|
|
|
// Settings used by microphone to set recording timeout
|
|
|
|
|
"recording_timeout": 10.0,
|
|
|
|
|
"recording_timeout_with_silence": 3.0,
|
|
|
|
|
|
|
|
|
|
// Skips all checks (eg. audio service confirmation) after the wake_word is recognized and
|
|
|
|
|
// instantly continues to listen for a command
|
|
|
|
|
"instant_listen": true,
|
|
|
|
|
|
|
|
|
|
// continuous listen is an experimental setting, it removes the need for
|
|
|
|
|
// wake words and uses VAD only, a streaming STT is strongly recommended
|
|
|
|
|
// this setting might downgrade STT accuracy depending on plugins used
|
|
|
|
|
"continuous_listen": false,
|
|
|
|
|
|
|
|
|
|
// hybrid listen is an experimental setting,
|
|
|
|
|
// it will not require a wake word for X seconds after a user interaction
|
|
|
|
|
// this means you dont need to say "hey mycroft" for follow up questions
|
|
|
|
|
// NOTE: depending on hardware this may cause mycroft to hear its own TTS responses as questions,
|
|
|
|
|
// in devices like the mark2 this should be safe to turn on
|
|
|
|
|
"hybrid_listen": false,
|
|
|
|
|
// number of seconds to wait for an interaction before requiring wake word again
|
|
|
|
|
"listen_timeout": 45
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Hotword configurations
|
|
|
|
|
"hotwords": {
|
|
|
|
|
"hey_mycroft": {
|
|
|
|
|
"module": "ovos-ww-plugin-precise-lite",
|
|
|
|
|
"model": "https://github.com/OpenVoiceOS/precise-lite-models/raw/master/wakewords/en/hey_mycroft.tflite",
|
|
|
|
|
"expected_duration": 3,
|
|
|
|
|
"trigger_level": 3,
|
|
|
|
|
"sensitivity": 0.5,
|
|
|
|
|
"listen": true,
|
|
|
|
|
"fallback_ww": "hey_mycroft_precise"
|
|
|
|
|
},
|
|
|
|
|
// in case precise-lite is not installed, attempt to use classic precise
|
|
|
|
|
"hey_mycroft_precise": {
|
|
|
|
|
"module": "ovos-ww-plugin-precise",
|
|
|
|
|
"version": "0.3",
|
|
|
|
|
"model": "https://github.com/MycroftAI/precise-data/raw/models-dev/hey-mycroft.tar.gz",
|
|
|
|
|
"expected_duration": 3,
|
|
|
|
|
"trigger_level": 3,
|
|
|
|
|
"sensitivity": 0.5,
|
|
|
|
|
"listen": true,
|
|
|
|
|
"fallback_ww": "hey_mycroft_vosk"
|
|
|
|
|
},
|
|
|
|
|
// in case classic precise is not installed, attempt to use vosk
|
|
|
|
|
"hey_mycroft_vosk": {
|
|
|
|
|
"module": "ovos-ww-plugin-vosk",
|
|
|
|
|
"samples": ["hey mycroft", "hey microsoft", "hey mike roft", "hey minecraft"],
|
|
|
|
|
"rule": "fuzzy",
|
|
|
|
|
"listen": true,
|
|
|
|
|
"fallback_ww": "hey_mycroft_pocketsphinx"
|
|
|
|
|
},
|
|
|
|
|
// in case vosk is not installed, attempt to use pocketsphinx
|
|
|
|
|
"hey_mycroft_pocketsphinx": {
|
|
|
|
|
"module": "ovos-ww-plugin-pocketsphinx",
|
|
|
|
|
"phonemes": "HH EY . M AY K R AO F T",
|
|
|
|
|
"threshold": 1e-90,
|
|
|
|
|
"lang": "en-us",
|
|
|
|
|
"listen": true
|
|
|
|
|
},
|
|
|
|
|
// default wakeup word to take ovos out of SLEEPING mode,
|
|
|
|
|
"wake_up": {
|
|
|
|
|
"module": "ovos-ww-plugin-vosk",
|
|
|
|
|
"rule": "fuzzy",
|
|
|
|
|
"samples": ["wake up"],
|
|
|
|
|
"lang": "en-us",
|
|
|
|
|
// makes this a wakeup word for usage in SLEEPING mode
|
|
|
|
|
"wakeup": true,
|
|
|
|
|
"fallback_ww": "wake_up_pocketsphinx"
|
|
|
|
|
},
|
|
|
|
|
// in case vosk plugin is not installed, attempt to use pocketsphinx
|
|
|
|
|
"wake_up_pocketsphinx": {
|
|
|
|
|
"module": "ovos-ww-plugin-pocketsphinx",
|
|
|
|
|
"phonemes": "W EY K . AH P",
|
|
|
|
|
"threshold": 1e-20,
|
|
|
|
|
"lang": "en-us",
|
|
|
|
|
"wakeup": true
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"gui": {
|
|
|
|
|
// Override: SYSTEM (set by specific enclosures)
|
|
|
|
|
// set skill_id of initial homescreen
|
|
|
|
|
"idle_display_skill": "skill-ovos-homescreen.openvoiceos",
|
|
|
|
|
|
|
|
|
|
// GUI plugins / Extensions provide additional GUI platform support for specific devices
|
|
|
|
|
"extension": "generic",
|
|
|
|
|
|
|
|
|
|
// Generic extension can additionaly provide homescreen functionality
|
|
|
|
|
"generic": {
|
|
|
|
|
// enable/disable homescreen
|
|
|
|
|
"homescreen_supported": true
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// in headless devices you can set this flag to not emit any GUI related bus messages
|
|
|
|
|
// this will reduce messagebus usage
|
|
|
|
|
// NOTE: this may be undesired, GUI clients can also be cli based and
|
|
|
|
|
// do not necessarily require a desktop environment or to be running 24/7
|
|
|
|
|
"disable_gui": false
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Level of logs to store, one of "CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"
|
|
|
|
|
// NOTE: This configuration setting is special and can only be changed in the
|
|
|
|
|
// SYSTEM or USER configuration file, it will not be read if defined in the
|
|
|
|
|
// DEFAULT (here) or in the REMOTE mycroft config.
|
|
|
|
|
// If not defined, the default log level is INFO.
|
|
|
|
|
//"log_level": "INFO",
|
|
|
|
|
|
|
|
|
|
// Messagebus types that will NOT be output to logs
|
|
|
|
|
// DEPRECATED: this was consumed by ovos-cli-client which is being retired
|
|
|
|
|
"ignore_logs": ["enclosure.mouth.viseme", "enclosure.mouth.display"],
|
|
|
|
|
|
|
|
|
|
// Settings related to remote sessions
|
|
|
|
|
// Overrride: none
|
|
|
|
|
"session": {
|
|
|
|
|
// Time To Live, in seconds
|
|
|
|
|
"ttl": -1
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Speech to Text parameters
|
|
|
|
|
"stt": {
|
|
|
|
|
// select a STT plugin as described in the respective readme
|
|
|
|
|
// ovos-stt-plugin-server default plugin has a bundled list of public whisper instances
|
|
|
|
|
"module": "ovos-stt-plugin-server",
|
|
|
|
|
// set a offline fallback STT, if your primary STT fails for some reason
|
|
|
|
|
"fallback_module": ""
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Text to Speech parameters
|
|
|
|
|
"tts": {
|
|
|
|
|
"pulse_duck": false,
|
|
|
|
|
// ovos tts server piper public servers by default, alan pope voice
|
|
|
|
|
"module": "ovos-tts-plugin-server",
|
|
|
|
|
"fallback_module": "",
|
|
|
|
|
"ovos-tts-plugin-mimic": {
|
|
|
|
|
"voice": "ap",
|
|
|
|
|
// Add every new synth to the persistent cache (not cleared)
|
|
|
|
|
"persist_cache": false,
|
|
|
|
|
// Path to the persistent cached files, default will be $XDG_DATA_DIRS/mycroft/OVOSServerTTS
|
|
|
|
|
// (or respective TTS name)
|
|
|
|
|
"preloaded_cache": "",
|
|
|
|
|
// Curate the /tmp/tts cache if disk usage is above min %
|
|
|
|
|
"min_free_percent": 75,
|
|
|
|
|
// How many times a utterance must be seen in order to be added to persistent cache
|
|
|
|
|
"persist_thresh": 1
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// NLP plugins
|
|
|
|
|
// split utterances into words
|
|
|
|
|
// used by downstream tasks, handles lang specific nuances
|
|
|
|
|
"tokenization": {
|
|
|
|
|
// default plugin comes bundled with ovos-plugin-manager
|
|
|
|
|
"module": "ovos-tokenization-plugin-quebrafrases"
|
|
|
|
|
},
|
|
|
|
|
// split utterances into sub commands
|
|
|
|
|
// used to extract multiple intents from a single utterance
|
|
|
|
|
"segmentation": {
|
|
|
|
|
// default plugin comes bundled with ovos-plugin-manager
|
|
|
|
|
"module": "ovos-segmentation-plugin-quebrafrases"
|
|
|
|
|
},
|
|
|
|
|
// given an utterance extract keywords from it
|
|
|
|
|
// can be used to get search terms
|
|
|
|
|
"keyword_extract": {
|
|
|
|
|
// default plugin comes bundled with ovos-classifiers
|
|
|
|
|
"module": "ovos-keyword-extractor-heuristic"
|
|
|
|
|
},
|
|
|
|
|
// tag pronouns with the word they refer to
|
|
|
|
|
// used in normalization step
|
|
|
|
|
"coref": {
|
|
|
|
|
// default plugin comes bundled with ovos-classifiers
|
|
|
|
|
"module": "ovos-coref-solver-heuristic"
|
|
|
|
|
},
|
|
|
|
|
"postag": {
|
|
|
|
|
// default plugin comes bundled with ovos-classifiers
|
|
|
|
|
"module": "ovos-classifiers-postag-plugin"
|
|
|
|
|
},
|
|
|
|
|
// turn utterances into phoneme sequences, used to generate mouth movements
|
|
|
|
|
// disabled by default, only relevant in devices such as the Mark 1
|
|
|
|
|
"g2p": {
|
|
|
|
|
"module": ""
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// DEPRECATED: this section is in the process of being fully removed,
|
|
|
|
|
// only providing default values for clean migration
|
|
|
|
|
"padatious": {
|
|
|
|
|
// fallback settings for padacioso (pure regex)
|
|
|
|
|
// set regex_only to False to re-enable padatious (ovos-core < 0.0.8)
|
|
|
|
|
"regex_only": false,
|
|
|
|
|
"fuzz": true
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Translation plugins
|
|
|
|
|
"language": {
|
|
|
|
|
//by default uses public servers for translation
|
|
|
|
|
// https://github.com/OpenVoiceOS/ovos-translate-server
|
|
|
|
|
"detection_module": "ovos-lang-detector-plugin-server",
|
|
|
|
|
"translation_module": "ovos-translate-plugin-server",
|
|
|
|
|
// define translate fallbacks to use if plugin can not be loaded
|
|
|
|
|
"ovos-translate-plugin-server": {"fallback_module": "ovos-google-translate-plugin"},
|
|
|
|
|
// define detect fallbacks to use if plugin can not be loaded
|
|
|
|
|
"ovos-lang-detector-plugin-server": {"fallback_module": "ovos-google-lang-detector-plugin"},
|
|
|
|
|
"ovos-google-lang-detector-plugin": {"fallback_module": "ovos-lang-detector-plugin-cld3"},
|
|
|
|
|
"ovos-lang-detector-plugin-cld3": {"fallback_module": "ovos-lang-detector-plugin-cld2"},
|
|
|
|
|
"ovos-lang-detector-plugin-cld2": {"fallback_module": "ovos-lang-detector-plugin-langdetect"},
|
|
|
|
|
"ovos-lang-detector-plugin-langdetect": {"fallback_module": "ovos-lang-detector-plugin-fastlang"},
|
|
|
|
|
"ovos-lang-detector-plugin-fastlang": {"fallback_module": "ovos-lang-detector-plugin-lingua-podre"},
|
|
|
|
|
"ovos-lang-detector-plugin-fastlang": {"fallback_module": "ovos-lang-detect-ngram-lm"}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// placeholder to help in migration to ovos-media
|
|
|
|
|
// if set to False the legacy audio service won't load
|
|
|
|
|
"enable_old_audioservice": true,
|
|
|
|
|
|
|
|
|
|
"Audio": {
|
|
|
|
|
// message.context may contains a source and destination
|
|
|
|
|
// native audio (playback / TTS) will only be played if a
|
|
|
|
|
// message destination is a native_source or if missing (considered a broadcast)
|
|
|
|
|
"native_sources": ["debug_cli", "audio", "mycroft-gui"],
|
|
|
|
|
|
|
|
|
|
// default audio player to be used by old_audioservice
|
|
|
|
|
// needs to be set under "backends" section, if not installed the setting is ignored without errors
|
|
|
|
|
// DO NOT use "OCP", that is not a valid option and only located in "backends" for legacy reasons
|
|
|
|
|
"default-backend": "mpv",
|
|
|
|
|
|
|
|
|
|
"backends": {
|
|
|
|
|
"OCP": {
|
|
|
|
|
// LEGACY CONFIG - OCP is in the process of being replaced by ovos-media
|
|
|
|
|
// if you are already using ovos-media this config does nothing
|
|
|
|
|
"type": "ovos_common_play",
|
|
|
|
|
// define order of preference for playback plugins
|
|
|
|
|
"preferred_audio_services": ["mpv", "vlc", "simple"],
|
|
|
|
|
// allow OCP to be controlled via MPRIS
|
|
|
|
|
"disable_mpris": true,
|
|
|
|
|
// dbus type for MPRIS, "session" or "system"
|
|
|
|
|
"dbus_type": "session",
|
|
|
|
|
// if MPRIS is enabled above, also allow OCP to control MPRIS enabled 3rd party applications
|
|
|
|
|
// voice enables them (next/prev/stop/resume..)
|
|
|
|
|
// and stops them when OCP starts it's own playback
|
|
|
|
|
// NOTE: OCP can be controlled itself via MPRIS independentely of this setting
|
|
|
|
|
"manage_external_players": false,
|
|
|
|
|
"active": true
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"type": "ovos_audio_simple",
|
|
|
|
|
"active": true
|
|
|
|
|
},
|
|
|
|
|
"vlc": {
|
|
|
|
|
"type": "ovos_vlc",
|
|
|
|
|
"active": true,
|
|
|
|
|
// volume used during audio_ducking
|
|
|
|
|
"initial_volume": 100,
|
|
|
|
|
"low_volume": 50
|
|
|
|
|
},
|
|
|
|
|
"mpv": {
|
|
|
|
|
"type": "ovos_mpv",
|
|
|
|
|
"active": true,
|
|
|
|
|
// volume used during audio_ducking
|
|
|
|
|
"initial_volume": 100,
|
|
|
|
|
"low_volume": 50
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"debug": false
|
|
|
|
|
}
|