Instructions to use OpenVoiceOS/ovos-m2v-intents-multilingual with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Model2Vec
How to use OpenVoiceOS/ovos-m2v-intents-multilingual with Model2Vec:
from model2vec import StaticModel model = StaticModel.from_pretrained("OpenVoiceOS/ovos-m2v-intents-multilingual") - Notebooks
- Google Colab
- Kaggle
OVOS intent classifier, multilingual
A static-embedding intent classifier for OpenVoiceOS. It maps an utterance to
one of 210 intent labels of the form <skill_id>:<intent_name>, exactly as the
OVOS m2v pipeline registers them at runtime.
This is the default model. It covers all 54 locales in the training corpus and is the fallback for every language that has no monolingual model of its own. English also has a smaller monolingual model, ovos-m2v-intents-en, which is the better choice for an English-only device.
The base is a 128-dimensional Model2Vec distillation of intfloat/multilingual-e5-small (MIT). Inference is a vector lookup and an average, so it runs on a CPU with no neural network at inference time.
Size on disk is 73.5 MB. Overall accuracy on the held-out split is 0.9943 across 56,938 rows.
Use
from model2vec.inference import StaticModelPipeline
model = StaticModelPipeline.from_pretrained("OpenVoiceOS/ovos-m2v-intents-multilingual")
model.predict(["turn off the kitchen light"])
Evaluation
Accuracy on the held-out 20% split, per language, for every language with at least 50 test rows.
| Language | Test rows | Accuracy | F1 (weighted) |
|---|---|---|---|
Catalan (ca) |
19363 | 0.9986 | 0.9985 |
English (en) |
7504 | 0.9933 | 0.9930 |
Italian (it) |
6115 | 0.9975 | 0.9973 |
Portuguese (pt) |
6114 | 0.9971 | 0.9965 |
Spanish (es) |
4652 | 0.9946 | 0.9942 |
Galician (gl) |
4326 | 0.9961 | 0.9954 |
German (de) |
2431 | 0.9807 | 0.9791 |
Danish (da) |
1637 | 0.9841 | 0.9838 |
Dutch (nl) |
1246 | 0.9815 | 0.9787 |
Polish (pl) |
1169 | 0.9966 | 0.9972 |
French (fr) |
752 | 0.9614 | 0.9582 |
Basque (eu) |
579 | 0.9620 | 0.9605 |
Swedish (sv) |
398 | 0.9824 | 0.9829 |
Czech (cs) |
287 | 0.9895 | 0.9862 |
Hungarian (hu) |
110 | 0.9545 | 0.9486 |
Kabyle (kab) |
91 | 0.9670 | 0.9674 |
Greek (el) |
59 | 1.0000 | 1.0000 |
Languages below that threshold are present in the corpus with only a handful of rows each; the model still emits labels for them, but there is not enough held-out data to report a meaningful score.
How it was built
The corpus comes from the reproducible dataset pipeline in
ovos-m2v-pipeline at commit
173c1fe. Every source is pinned to an immutable revision, so the build is
repeatable: train/build_dataset.py resolves the sources, normalises and
deduplicates them, drops labels the pinned skill revisions do not attest, and
writes a stratified 80/20 split together with a manifest.
The build behind this model produced 284,687 rows over 210 labels and 54
locales. Its manifest hashes to
c6831002352fe59ed2a2e201f057ccf75807bafcb9fa74cef2b4e4f93a3de720
and the label file to
fdf0abefd0db94127804763c82e2497f33ff77d5d7fe0eb739ed4df8c849bae9.
The classifier is a model2vec StaticModelForClassification head fitted on the
training split and exported with to_pipeline().save_pretrained(). Weights are
float16, which reproduces the float32 predictions exactly on the full held-out
split.
labels.json ships beside the weights. It lists the label set the model was
fitted on, so the pipeline can restrict matching to labels this model can emit.
License
Apache-2.0. The base model is MIT.
- Downloads last month
- -