OpenVoiceOS / ovos-plugin-manager

plugin manager for OpenVoiceOS , STT/TTS/Wakewords that can be used anywhere
Apache License 2.0
12 stars 11 forks source link

support ovos-translate-server #182

Closed mikejgray closed 11 months ago

mikejgray commented 11 months ago

Support for ovos-translate-server-plugin is missing from OVOSLangDetectionFactory's mappings. This caused almost entirely indecipherable failures in some tests in the icanhazdadjokes skill, which had recently been adjusted to us ovos-translate-server, but was silently failing over to Neon's libretranslate plugin. When I removed that plugin from requirements.txt because it was theoretically not needed, all the tests failed.

Adding support for ovos-translate-server means that the joking skill, and any others using OVOSLangDetectionFactory, can start using it.

NeonDaniel commented 11 months ago

The mappings in the factory methods are mostly for backwards-compat. This plugin should be loaded if the entrypoint (ovos-translate-plugin-server) is specified in config

Did you see either of these logs?

LOG.warning("`translation_module` not configured")
LOG.error(f'Language Translation plugin {lang_module} not found. Falling back to libretranslate plugin')
NeonDaniel commented 11 months ago

On another read, the ovos-translate-plugin-server doesn't provide a language detection module, only translation

JarbasAl commented 11 months ago

On another read, the ovos-translate-plugin-server doesn't provide a language detection module, only translation

indeed, the detection module is not used directly in any major OVOS component, and when used it is optional

translation is the major component we support, for detection the default config points to the very basic lang detector provided by ovos-classifiers, just to ensure something loads if the factory is called, however it is strongly recommended users pick a different lang detector, such as cld3 that runs offline. we just dont want to drag additional dependencies as a default value

note the translation server does support both endpoints, so it would also be valid to get a remote lang detection server list in the plugin, and migrate the official ovos server to use something like cld3 (or better), the official ovos server / nllb docker image is using https://github.com/OpenVoiceOS/lingua-podre/ for language detection

outdated list of plugins here https://openvoiceos.github.io/ovos-technical-manual/lang_plugins/ i think it has all neon plugins and none of ovos plugins

  // Translation plugins
  "language": {
    // default plugin comes bundled with ovos-classifiers
    "detection_module": "ovos-lang-detect-ngram-lm",
    // default uses public servers for nllb
    // https://github.com/OpenVoiceOS/ovos-translate-server
    // https://github.com/OpenVoiceOS/ovos-translate-plugin-nllb
    "translation_module": "ovos-translate-plugin-server"
  }
JarbasAl commented 11 months ago

fixed by #184