{ // 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", // Whether to opt in to data collection "opt_in": false, // Play a beep when system begins to listen? "confirm_listening": true, // 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", # emit mycroft.ready signal when all these conditions are met # different setups will have different needs # eg, a server does not care about audio # pairing -> device is paired # internet -> device is connected to the internet - NOT IMPLEMENTED # skills -> skills reported ready # speech -> stt reported ready # audio -> audio playback reported ready # gui -> gui websocket reported ready - NOT IMPLEMENTED # enclosure -> enclosure/HAL reported ready - NOT IMPLEMENTED # network_skills -> skills with network requirements # internet_skills -> skills with internet requirements "ready_settings": ["skills"], // 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, // 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", "padatious_medium", "adapt_low", "common_qa", "fallback_medium", "fallback_low" ] }, // General skill values "skills": { // relative to "data_dir" "directory": "skills", // used by selene for marketplace integration in web interface // NOTE: selene seems to work fine without this data // no need to advertise installed skills if they dont have settings // this data was tightly coupled to msm and is now mostly useless for selene "upload_skill_manifest": false, // if "sync_skill_settings" is enabled in "server" section // should skill settingg changes on device be upload to selene? // NOTE: this should be true, but it was removed (bug ?) in selene at some point // old endpoints are however still available so functionality has been restored here // it is only configurable in case you want to retain "old" mycroft-core behaviour // or in case selene deprecates the old endpoint "sync2way": true, // values in skill settings missing in settingsmeta wont show up in selene // this flag auto generates settingsmeta on the fly // TODO - settings this to true may run into permission issues until settingsmeta.json gets XDG support // it writes to skill base folder "autogen_meta": false, // 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": { // NOTE: selene backend expects "opt_in" to be changeable in their web ui // that effectively gives them a means to enable spying without your input // Mycroft AI can be trusted, but you dont need to anymore! // The other keys are not currently populated by the remote backend // they are defined for protection against bugs and for future proofing // (what if facebook buys mycroft tomorrow?) "remote": [ "enclosure", "server", "system", "websocket", "gui_websocket", "network_tests", "listener:wake_word_upload:disable", // 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", "listener:multiplier", "listener:energy_ratio", "skills:upload_skill_manifest", "skills:auto_update", "skills:priority_skills", "skills:blacklisted_skills", // NOTE: selene exposes this in web_ui, this has been disabled // if you unprotect this key selene can enable opt_in behind your back "opt_in" ], "user": [] } }, // Address of the REMOTE server // Needs to be explicitly enabled, also see "protected_keys" under "system" above // Possible backends // - https://github.com/OpenVoiceOS/OVOS-local-backend "server": { // Valid types: offline, personal "backend_type": "offline", // url for self hosted personal backend "url": "", "version": "v1", "update": false, "metrics": true, "sync_skill_settings": true }, // This section controls what providers should be used by each 3rd party API "microservices": { // auto == backend from "server" section above // auto / wolfram / personal "wolfram_provider": "auto", // auto / owm / personal "weather_provider": "auto", // auto / osm / personal "geolocation_provider": "auto", // secret keys for offline usage "wolfram_key": "", "owm_key": "", "email": { // by default send emails here "recipient": "", "smtp": { "username": "", "password": "", "host": "smtp.mailprovider.com", "port": 465 } } }, // 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": false, // 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": "{hash}-{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 } }, // 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 "g2p": { "module": "ovos-g2p-plugin-mimic", "ovos-g2p-plugin-mimic": {"fallback_module": "ovos-g2p-plugin-heuristic-arpa"} }, // 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 }