Skip to main content
Pre-release

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

palavreado

Keyword-based intent parser for OVOS voice assistants — the drop-in replacement for Adapt.

Palavreado matches natural-language utterances against named intents built from required and optional keyword slots. Each slot holds a list of vocabulary words; if the right words are present in the utterance, the intent fires. Optional regex and simplematch autoregex patterns enable entity extraction.


Install

pip install palavreado

For the OVOS pipeline plugin:

pip install "palavreado[ovos]"

Quick start

from palavreado import IntentContainer, IntentCreator

container = IntentContainer()

intent = (
    IntentCreator("lights_off")
    .require("off",   ["off", "disable", "shutdown"])
    .require("light", ["light", "lights", "lamp"])
)
container.add_intent(intent)

result = container.calc_intent("turn off the lights")
print(result["name"])      # lights_off
print(result["conf"])      # 0.9438
print(result["keywords"])  # {'off': ['off'], 'light': ['light']}
print(result["utterance_remainder"])  # 'turn the'

An intent only fires when every required slot has at least one keyword match in the utterance.

Optional slots

intent = (
    IntentCreator("lights_off")
    .require("off",   ["off", "disable"])
    .require("light", ["light", "lights"])
    .optionally("room", ["kitchen", "bedroom", "bathroom"])
)
container.add_intent(intent)

result = container.calc_intent("turn off the bedroom lights")
print(result["keywords"]["room"])  # ['bedroom']

Autoregex / entity extraction

intent = (
    IntentCreator("buy")
    .require_autoregex("item", ["buy {item}", "purchase {item}", "get {item}"])
)
container.add_intent(intent)

result = container.calc_intent("buy some milk")
print(result["keywords"]["item"])  # ['some milk']

OVOS pipeline plugin

Palavreado ships an OVOS pipeline plugin that replaces Adapt as the keyword intent engine. It responds to the same bus events (register_vocab, register_intent, detach_intent, detach_skill) so existing skills need no changes.

Configure in mycroft.conf:

{
  "intents": {
    "palavreado": {
      "conf_high": 0.65,
      "conf_med":  0.45,
      "conf_low":  0.25
    }
  }
}

Entry point: palavreado.opm:PalavreadoPipeline


Documentation

Page Description
Quickstart 5-minute guide: keyword intents, optional slots, autoregex
Intent API Full IntentCreator and IntentContainer reference
Confidence Scoring How scores are calculated: formula, penalties, bonuses
Normalisation Apostrophe handling, whitespace, plural/singular lemmatizer
Context Gating Require / exclude contexts, worked examples
OVOS Pipeline Plugin Bus events, confidence tiers, migration from Adapt
Configuration All config keys with types, defaults, and effect
Benchmark Accuracy results and how to reproduce them
Troubleshooting Common issues and fixes

Benchmark

Evaluated on a keyword-intent dataset of 284 cases (217 match utterances across 22 intents, 67 no-match utterances).

Engine Accuracy Precision Recall F1 TN / no-match FP Median latency
palavreado 81.7% 80.6% 94.0% 0.868 28 / 67 49 0.58 ms
adapt 80.3% 81.0% 90.3% 0.854 32 / 67 46 0.20 ms
python benchmark/compare.py

Credits

Originally an experimental research project by TigreGóticoLda, polished and donated to OpenVoiceOS. Its modernization, integration into OpenVoiceOS, and intent benchmarking were funded by the NGI0 Commons Fund.

NGI0 Commons Fund

This project was funded through the NGI0 Commons Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101135429.


License

Apache 2.0

Metadata

Release files for palavreado 1.7.2a1

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

Source distribution (sdist)

Source distribution for palavreado 1.7.2a1
File Size Uploaded
palavreado-1.7.2a1.tar.gz 101.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for palavreado 1.7.2a1
File Interpreter ABI Platform
palavreado-1.7.2a1-py3-none-any.whl Python 3 none any Details

Total release size: 185.2 kB

Release files / palavreado-1.7.2a1.tar.gz

Download URL palavreado-1.7.2a1.tar.gz
Size 101.2 kB
Tags Source
SHA-256 checksum
How to use checksums
82a3aff7dbeb1c09c354abe028231b5cda2bd72033f2bd2d7a8f5dd14ea837d7
BLAKE2b-256 checksum
How to use checksums
b9b595e401721f27c62230806b909aeb5c01d94c250040e443ce6c0d27fc7ea4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / palavreado-1.7.2a1-py3-none-any.whl

Download URL palavreado-1.7.2a1-py3-none-any.whl
Size 84.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ba00897a5bb2a52f8e5b3fa58e4aa2c2a527f6b789106e9e8d98724415cceda5
BLAKE2b-256 checksum
How to use checksums
5644bf0424637ed52d9ce5637abb9c4bfb8302bc206891e48102b01e720d643e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14
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