Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

OCP Pipeline

The OCP (Open Common Play) pipeline plugin turns media utterances into playback actions in OVOS. Utterances such as "play metallica", "put on some movie", "pause", or "next" pass through this plugin as an intent pipeline stage. On a match, the plugin searches registered media skills over the message bus and drives playback through the OCP API.

The plugin exposes two entry points under the opm.pipeline group:

  • ovos-ocp-pipeline-plugin (OCPPipelineMatcher), the main pipeline. It matches play, open, media_stop, next, prev, pause, resume, save_game, and load_game intents at high, medium, or low confidence.
  • ovos-ocp-pipeline-plugin-legacy (MycroftCPSLegacyPipeline), a bridge for older Mycroft CommonPlay skills, using the play:query / play:query.response / play:start handshake.

OCPPipelineMatcher also classifies media type, such as music, movie, or podcast. It extracts named entities with ahocorasick-ner, using per-language vocabulary files and optional user-supplied entity CSVs (the entity_csvs config option). It tracks player state per session through an OCPPlayerProxy, kept in sync with ovos.common_play.status and track.state bus events.

Architecture

image

image

Media classification

Media-type classification, the rich provider-ready descriptive Signals, and the content filter are all delegated to the standalone ovos-media-classifier. The pipeline builds the classifier's two context inputs from its own state — the per-session now-playing PlayerStatus and the skill-registered entities (ner_list) — so relative control follow-ups ("next", "pause", "something else") and entity routing work, and it forwards the classifier's lossless mediavocab.Signals (medium / playback_type / content_genres / content_form / programme_format / variant_kind / accessibility / picture_format) to the MediaProviders alongside the legacy media_type.

With no extra configuration the lean keyword (.voc) backend is used — the zero-ML-dependency floor (all heavy backends OFF, online OFF, adult content blocked). The classifier is configured under the pipeline config (or a nested media_classifier block); every key is optional.

Backend selection

Key Default Description
media_classifier_plugin unset name of an external opm.media.classifier entry-point plugin to load
media_classifier_onnx_model unset path to an opt-in ONNX trained bundle (requires the [onnx] extra)
media_classifier_embedding_router unset path to a learned embedding-router bundle (requires the [onnx] extra)
media_classifier_embedding_router_hybrid true run the router as a keyword+router hybrid (false = router standalone)

On any failure (missing extra, bad bundle, unknown plugin) the classifier falls back to the keyword backend, so the zero-ML default is always preserved.

Gazetteer / entity library (embedding-router backend only)

Key Default Description
media_classifier_gazetteer true inject the bundled offline gazetteer of common real titles so bare titles route without a network call
media_classifier_gazetteer_size classifier default cap on titles per media type
media_classifier_entity_library unset {label: [titles]} of the user's own media library, injected at runtime (no retraining)

Online metadata layer (embedding-router hybrid only)

Key Default Description
media_classifier_online_metadatarr false opt into the online metadatarr last-resort layer (adds latency)
media_classifier_online_timeout 4.0 per-request timeout, seconds
media_classifier_online_min_confidence 0.5 minimum confidence to accept an online answer

Content filter (applied at routing)

Blocked content (adult by default) is never routed to providers.

Key Default Description
allow_adult_content false top-level convenience flag; true lifts the default adult block
media_content_filter.enabled true master switch for the filter
media_content_filter.blocked_genres ["adult"] genres to block
media_content_filter.blocked_media_types [] media types to block

Install

pip install ovos-ocp-pipeline-plugin

Usage

OVOS core loads this plugin automatically once installed, through the opm.pipeline entry-point group. Enable it in mycroft.conf under the intents section:

{
  "intents": {
    "ovos-ocp-pipeline-plugin": {
      "entity_csvs": []
    }
  }
}

The plugin reads the pipeline's intents config block, then falls back to a legacy OCP config block for backward compatibility.

Related projects

License

Apache-2.0

Release files for ovos-ocp-pipeline-plugin 1.4.0a1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ovos-ocp-pipeline-plugin 1.4.0a1
File Size Uploaded
ovos_ocp_pipeline_plugin-1.4.0a1.tar.gz 193.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ovos-ocp-pipeline-plugin 1.4.0a1
File Interpreter ABI Platform
ovos_ocp_pipeline_plugin-1.4.0a1-py3-none-any.whl Python 3 none any Details

Total release size: 410.5 kB

Release files / ovos_ocp_pipeline_plugin-1.4.0a1.tar.gz

Download URL ovos_ocp_pipeline_plugin-1.4.0a1.tar.gz
Size 193.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e6dbb3cba4bf8983064d2db5df36c543b831f320ca57a4a831f96ec45c14dd22
BLAKE2b-256 checksum
How to use checksums
6e29dabf0c9f08bd4e0a93c84b0dbb29f41663f2b3948f83abf6fad8468e0e2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ovos_ocp_pipeline_plugin-1.4.0a1-py3-none-any.whl

Download URL ovos_ocp_pipeline_plugin-1.4.0a1-py3-none-any.whl
Size 216.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d500b7f78fe558367953709a0eddcaa6a81762ba4b00877136de0326eac9e8e0
BLAKE2b-256 checksum
How to use checksums
c01cba898534ac9f41f81712dfef771b2f2cf2b0ec7d59b4d78583e59ff04205
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

1.4.0a1 This release

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.0.11

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page