OVOS No Language Left Behind Plugin (CTranslate2)

September 11, 2026 ยท View on GitHub

codecov

OVOS No Language Left Behind Plugin (CTranslate2)

This is a language plugin for NLLB-200, a translation model from Meta AI.

Overview

NLLB200Translator translates text between languages with the NLLB-200 models. It plugs into the OVOS framework and uses CTranslate2 to run translation fast and efficiently.

Model Options

The table below lists the available models for the NLLB-200 translator.

Model NameSourceDescription
flores200_sacrebleu_tokenizer_spmCTranslate2Tokenizer model
nllb-200_600M_int8CTranslate2600M parameter model, int8 quantized
nllb-200_1.2B_int8CTranslate21.2B parameter model, int8 quantized
nllb-200-3.3B-int8CTranslate23.3B parameter model, int8 quantized
nllb-200-distilled-1.3B-ct2-int8HuggingFace Hub: OpenNMT/nllb-200-distilled-1.3B-ct2-int81.3B distilled model, int8 quantized
nllb-200-3.3B-ct2-int8HuggingFace Hub: OpenNMT/nllb-200-3.3B-ct2-int83.3B model, int8 quantized

Install

Install the plugin with pip:

pip install ovos-translate-plugin-nllb

Usage

OVOS Integration

Use the plugin inside OVOS to translate utterances and text on demand. Add this configuration to one of the configuration files, for example ~/.config/mycroft/mycroft.conf:

{
  "language": {
    "translation_module": "ovos-translate-plugin-nllb",
    "ovos-translate-plugin-nllb": {
      "model": "nllb-200_600M_int8"
    }
  }
}

Python Script

This example shows how to use NLLB200Translator in a Python script.

from ovos_translate_plugin_nllb import NLLB200Translator

src = "es"
tgt = "en-us"
tx = NLLB200Translator(config={"model": "nllb-200_600M_int8"})

utts = ["Hola Mundo"]
print("Translations:", tx.translate(utts, tgt, src))

utts = "hello world"
print("Translations:", tx.translate(utts, src, tgt))

Advanced Configuration

HuggingFace Integration

To use a model hosted on the HuggingFace Hub, set the model parameter to the HuggingFace model ID. NLLB200Translator downloads and loads the model from HuggingFace.

Additional Parameters

  • beam_size: the beam size used for translation. A larger value trades speed for translation quality.
  • device: the device to run on, either cpu or cuda (GPU).
from ovos_translate_plugin_nllb import NLLB200Translator
tx = NLLB200Translator(config={
    "model": "nllb-200_600M_int8",
    "beam_size": 5,
    "device": "cuda"
})

Using CUDA/GPU

Set NLLB200Translator to the cuda device to use GPU acceleration. This can speed up translation for large batches or long texts.

Prerequisites

You need a CUDA-compatible GPU and the CUDA drivers for your system. See the CUDA Installation Guide for details.

Example

This example configures and runs NLLB200Translator with CUDA.

from ovos_translate_plugin_nllb import NLLB200Translator

if __name__ == "__main__":
    src = "es"
    tgt = "en-us"
    tx = NLLB200Translator(config={
        "model": "nllb-200-3.3B-int8",
        "beam_size": 5,
        "device": "cuda"
    })
    
    utts = ["Hola Mundo"]
    print("Translations:", tx.translate(utts, tgt, src))
    
    utts = "hello world"
    print("Translations:", tx.translate(utts, src, tgt))

License

This project is licensed under the Apache License 2.0.