Open source neural machine translation

Argos Translate

  • Check Mark Open source
  • Check Mark Python library, Web app, API, Desktop app
  • Check Mark State of the art neural machine translation
  • Check Mark Train and package custom language models
Live Demo Install
Argos Translate icon


Docs | Forum | GitHub

Open-source offline translation library written in Python

Argos Translate uses OpenNMT for translations, SentencePiece for tokenization, Stanza for sentence boundary detection, and PyQt for GUI. Argos Translate can be used as either a Python library, command-line, or GUI application. LibreTranslate is an API and web-app built on top of Argos Translate.

Argos Translate supports installing language model packages which are zip archives with a ".argosmodel" extension with the data needed for translation.

Argos Translate also manages automatically pivoting through intermediate languages to translate between languages that don't have a direct translation between them installed. For example, if you have a es ➔ en and en ➔ fr translation installed you are able to translate from es ➔ fr as if you had that translation installed. This allows for translating between a wide variety of languages at the cost of some loss of translation quality.



Video intro

Machine Translation in Argos Translate



Packages



Python example

import argostranslate.package, argostranslate.translate

from_code = "en"
to_code = "es"

# Download and install Argos Translate package
available_packages = argostranslate.package.get_available_packages()
available_package = list(
    filter(
        lambda x: x.from_code == from_code and x.to_code == to_code, available_packages
    )
)[0]
download_path = available_package.download()
argostranslate.package.install_from_path(download_path)

# Translate
installed_languages = argostranslate.translate.get_installed_languages()
from_lang = list(filter(
    lambda x: x.code == from_code,
    installed_languages))[0]
to_lang = list(filter(
    lambda x: x.code == to_code,
    installed_languages))[0]
translation = from_lang.get_translation(to_lang)
translatedText = translation.translate("Hello World!")
print(translatedText)
# '¡Hola Mundo!'


Command Line

$ argos-translate --from-lang en --to-lang es "Hello World"
Hola Mundo

$ echo "Text to translate" | argos-translate --from-lang en --to-lang es
Texto para traducir


LibreTranslate Web App (Demo)

Web App Screenshot



LibreTranslate API

const res = await fetch("https://translate.argosopentech.com/translate", {
    method: "POST",
    body: JSON.stringify({
        q: "Hello!",
        source: "en",
        target: "es"
    }),
    headers: {
        "Content-Type": "application/json"}
    });

console.log(await res.json());

// {
//    "translatedText": "¡Hola!"
// }


GUI

Screenshot Screenshot2