Stop Pipeline
The stop pipeline is a core component of the Open Voice OS (OVOS) pipeline architecture. It defines the logic responsible for stopping ongoing interactions with active skills. This includes aborting responses, halting speech, and terminating background tasks that skills may be performing.
Because stopping is a fundamental feature of a voice assistant, it is implemented as a dedicated pipeline plugin, not just a fallback or intent handler.
Purpose
A voice assistant must always be capable of responding to a "stop" command. Whether the user says “stop,” “cancel,” or another localized phrase, OVOS must quickly:
- Determine if a skill is actively responding
- Allow skills to confirm whether they can be stopped
- Abort conversations, questions, or spoken responses
The stop
pipeline guarantees this behavior through a flexible plugin system and localized vocab matching.
How it works
The stop pipeline activates based on high-confidence or medium-confidence utterance matches.
High-confidence (stop_high
)
This is triggered when a user says an exact match for a stop command, e.g.,:
- “Stop”
- “Cancel”
- “Parar” (in Portuguese)
- “Stopp” (in German)
The plugin:
- Checks if any active skills can be stopped.
- Pings active skills
- Waits briefly (0.5s) for replies.
- Calls stop on relevant skills.
- If no skills are active, emits a global stop:
mycroft.stop
.
Medium-confidence (stop_medium
)
Triggered for more complex phrases that include a stop command but are not exact matches, such as:
- “Can you stop now?”
- “I don’t want that anymore”
- “Stop playing music please”
This match falls back to fuzzy intent matching.
Localization
The plugin supports stop commands in multiple languages using .voc
files stored in:
locale/
en-us/
stop.voc
global_stop.voc
pt-pt/
stop.voc
global_stop.voc
You can help with language support via GitLocalize
Session Integration
The stop plugin interfaces with the OVOS session system:
- Skills that respond to
stop
will be removed from active skill list - Session blacklists are respected, blacklisted skills will not be pinged
- Session state is updated after each successful stop
Design Philosophy
- ⏱️ Low latency: Matches and stops skills within 0.5 seconds
- 🧩 Extensible: Other plugins can extend or override this pipeline
- 🗣️ Localized: All behavior is language-aware and configurable
- 🔄 Resilient: Falls back to global stop if skills are unresponsive
Summary
The stop
pipeline ensures that OVOS is always in control. Whether a user needs to quickly interrupt a skill, cancel a conversation, or shut down all interactions, the StopService
plugin provides the robust, language-aware foundation to make that possible.
It is not considered optional, all OVOS installations should include this pipeline by default.