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.
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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file palavreado-1.5.0a3.tar.gz.
File metadata
- Download URL: palavreado-1.5.0a3.tar.gz
- Upload date:
- Size: 95.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95923176256460cfd5b106fb591ac4697d632ddb577519da94ffe72a18a90a48
|
|
| MD5 |
6fb19e08ff34d2563955d76e5085321e
|
|
| BLAKE2b-256 |
5cf644192775d3abf79e4dd93fc377297ca9e8da9978ed8a0f5b3d5c99a579cd
|
File details
Details for the file palavreado-1.5.0a3-py3-none-any.whl.
File metadata
- Download URL: palavreado-1.5.0a3-py3-none-any.whl
- Upload date:
- Size: 76.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c6ce0ef3fa9521cedb155b306431ddeea1655e61e5d09e863a7cefede7a80af
|
|
| MD5 |
379630f5a3a43040e854bb2398ddf283
|
|
| BLAKE2b-256 |
276f34b5446687c3c5fd674cad6f5feeb2d661c8038dfd4fadfe4e93e17a6c4a
|