Todos os artigos

· Casimiro Ferreira· 3 min de leitura

Nenhuma Língua Deixada para Trás

  • OVOS
  • multilingual
  • language-detection
  • translation
  • accessibility

Este artigo foi originalmente publicado no meu blog pessoal (hoje extinto)

O OpenVoiceOS (OVOS) é uma plataforma de assistente de voz de código aberto e orientada pela comunidade. Este artigo cobre os plugins de deteção de língua, tradução e tradução bidirecional que construí para permitir que o OVOS funcione em línguas muito além daquilo que as skills instaladas suportam nativamente.

Deteção de Língua a partir de Áudio

O OVOS identifica a língua falada no áudio antes de esta chegar à etapa de ASR (reconhecimento automático de fala), permitindo que o plugin de ASR transcreva com exatidão em vez de adivinhar. Construí vários plugins para isto:

A deteção de língua está limitada às línguas listadas na sua configuração do OVOS. Classificações fora desse conjunto são rejeitadas, para que não mude acidentalmente para uma língua que ninguém em sua casa fala.

{
  "lang": "en-us",
  "secondary_langs": ["pt-pt", "fr-fr"]
}

Configuração

O tamanho do modelo classificador de língua do FasterWhisper é configurável:

"listener": {
    "audio_transformers": {
        "ovos-audio-transformer-plugin-fasterwhisper": {
            "model": "small"
        }
    }
}

Tradução de Língua de Texto

O No Language Left Behind (NLLB) é o modelo de código aberto da Meta para tradução direta de alta qualidade entre 200 línguas, incluindo línguas de poucos recursos como o asturiano, o luganda e o urdu. Foi esse nome que inspirou este artigo.

O ovos-translate-plugin-nllb executa o NLLB localmente dentro do OVOS. As skills são lentas a ganhar suporte nativo completo de língua. Com este plugin, os utilizadores não precisam de esperar: o OVOS traduz os enunciados recebidos e as respostas enviadas em tempo real, para que qualquer skill funcione em qualquer uma dessas 200 línguas.

Para hardware de menor potência, o ovos-translate-server-plugin delega a tradução num servidor remoto. Há servidores públicos listados de origem, mas o alojamento próprio é fortemente recomendado por questões de privacidade. Usar um servidor público significa confiar todos os seus enunciados ao seu operador.

Plugins de tradução de destaque:

Configuração

"language": {
    "detection_module": "ovos-lang-detect-ngram-lm",
    "translation_module": "ovos-translate-plugin-nllb",
    "ovos-translate-plugin-nllb": {
        "model": "nllb-200_600M_int8"
    }
}

O Plugin de Tradução Bidirecional do OVOS

O plugin de Tradução Bidirecional do OVOS liga a deteção e a tradução com duas etapas de pipeline: um Utterance Transformer (traduz o texto recebido para a língua configurada do OVOS) e um Dialog Transformer (traduz a resposta de volta para a língua original do utilizador).

O modo opcional verify_lang verifica de forma cruzada a língua detetada do texto face à língua da sessão. Isto é útil em plataformas de chat onde uma única instância do OVOS serve utilizadores multilingues. Requer um módulo de deteção de língua configurado em language.detection_module e um plugin de tradução (ovos-translate-plugin-nllb para local ou ovos-translate-server-plugin para remoto).

Configuração

"utterance_transformers": {
    "ovos-utterance-translation-plugin": {
        "bidirectional": true,
        "verify_lang": false,
        "ignore_invalid_langs": true,
        "translate_secondary_langs": true
    }
},
"dialog_transformers": {
    "ovos-dialog-translation-plugin": {}
}

Como Tudo Funciona em Conjunto

Cada componente é útil de forma independente, mas compõem-se de forma limpa:

  1. A deteção de língua do áudio indica ao plugin de ASR que língua transcrever.
  2. A tradução do enunciado converte enunciados não nativos para a língua configurada do assistente antes da correspondência de skills.
  3. A tradução do diálogo traduz a resposta do assistente de volta para a língua do utilizador antes do TTS.

O resultado: o OVOS consegue processar qualquer uma das 200 línguas do NLLB de ponta a ponta, sem que as próprias skills precisem de traduções.

Contribuições e traduções de skills são bem-vindas no OpenVoiceOS no GitHub.