Traduzir texto com a API de Tradutor

Use a API Translator para traduzir texto entre diferentes idiomas do código JavaScript em seu site ou extensão do navegador. A API do Tradutor é alimentada por um modelo específico de tarefa integrado ao Microsoft Edge.

Conteúdo detalhado:

Introdução

Para obter informações introdutórias sobre a API do Tradutor, consulte:

Usar a API do Detector de Idioma com a API do Tradutor

Para facilitar a tradução de texto fornecido pelo usuário para outro idioma, use a API do Tradutor em conjunto com a API do Detector de Idioma.

Para saber mais sobre a API do Detector de Idiomas, consulte Detectar idiomas com a API do Detector de Idiomas.

Disponibilidade da API de Tradutor

A API do Tradutor está disponível no Microsoft Edge 148 ou posterior.

Benefícios da API do Tradutor

A API do Tradutor usa um modelo específico de tarefa para tradução automática que é executado no mesmo dispositivo em que as entradas e saídas do modelo são usadas (ou seja, localmente). Essa abordagem tem os seguintes benefícios em comparação com soluções baseadas em nuvem:

  • Custo reduzido: Não há nenhum custo associado ao uso de um serviço de tradução na nuvem.

  • Independência de rede: Além do download inicial do modelo, não há latência de rede ao usar essa API para traduzir texto, e a API também pode ser usada quando o dispositivo está offline.

  • Privacidade aprimorada: A entrada de dados no modelo nunca sai do dispositivo e não é coletada para treinar modelos de IA.

Os modelos de tradução para pares de idiomas especificados são baixados na primeira vez que a API é usada no Microsoft Edge e, posteriormente, são compartilhados em todos os sites no navegador. Os modelos são acessados por meio de uma API Web direta que não requer conhecimento de estruturas de terceiros e não requer experiência em IA (Inteligência Artificial) ou ML (Aprendizado de Máquina).

Alternativas à API de Tradutor

Você pode enviar solicitações de rede para serviços de tradução baseados em nuvem com recursos mais sofisticados, incluindo tradução neural; confira a documentação do Tradutor de IA do Azure.

Como uma alternativa no dispositivo, a API de prompt também pode atender a cenários de prompting mais personalizados e multilíngues, com um pequeno modelo de linguagem integrado ao Microsoft Edge; consulte Solicitar um modelo de linguagem interno com a API de solicitação.

Aviso de isenção

Assim como outros modelos de tradução automática, os modelos de tarefa específica no Microsoft Edge podem potencialmente produzir traduções injustas, não confiáveis ou ofensivas. Para saber mais sobre as limitações desses modelos de tradução automática, consulte Limitações na Nota de Transparência do Tradutor de IA do Azure.

Disponibilidade de modelo

Um download inicial do modelo de tradução no dispositivo é necessário na primeira vez que um site chama a API do Tradutor. Você pode monitorar o download do modelo usando a opção de monitor ao criar uma nova sessão da API do Tradutor; consulte Monitorar o progresso do download do modelo (monitorar), abaixo.

Veja um exemplo de trabalho

Para ver a API do Translator em ação e examinar o código existente que usa a API:

  1. No Microsoft Edge 148 ou posterior, acesse o playground da API do Tradutor em uma nova janela ou guia.

  2. Na faixa de informações na parte superior, marque o status: inicialmente lê-se: API no dispositivo e modelo para download. O modelo para um par de idiomas especificado será baixado na primeira vez que a API for usada.

  3. Na caixa de texto Texto para traduzir , insira o texto para traduzir e, opcionalmente, altere os valores do idioma de origem e do idioma de destino .

  4. Clique no botão Traduzir .

    Se o modelo do par de idiomas especificado não tiver sido baixado antes, o download será iniciado.

    Indicador de status mostrando o progresso do download do modelo

    Se o download do modelo não iniciar, reinicie o Microsoft Edge e tente novamente.

    Após o download do modelo, ele começa a gerar uma tradução do texto do idioma de origem para o idioma de destino.

    A saída é gerada na seção de resposta da página:

    A página de demonstração do Tradutor com configurações e um botão Traduzir

  5. Para parar de gerar a resposta, a qualquer momento, clique no botão Parar .

Veja também:

Usar a API do Tradutor

As próximas seções são sobre como usar a API do Tradutor.

Verificar se a API do Tradutor está habilitada

Antes de usar a API do Translator no código do seu site, marque se a API está disponível, testando a presença do Translator objeto:

if (!Translator) {
  // The Translator API is not available.
} else {
  // The Translator API is available.
}

Verifique se o modelo pode ser usado (availability())

A API do Tradutor tem os seguintes requisitos:

  • A tradução do idioma de origem especificado para o idioma de destino especificado deve ser suportada.
  • O modelo de tradução para o par de idiomas e o tempo de execução do modelo já devem ter sido baixados pelo Microsoft Edge.

Para marcar se a API do Tradutor pode ser usada, chameTranslator.availability():

const availability = await Translator.availability({
  sourceLanguage: "en",
  targetLanguage: "es"
});

if (availability == "unavailable") {
  // The model is not available.
}

if (availability == "downloadable" || availability == "downloading") {
  // The model can be used, but it needs to be downloaded first.
}

if (availability == "available") {
  // The model is available and can be used.
}

Para sourceLanguage e targetLanguage, use os códigos de idioma em Marcas para identificar idiomas, como cadeias de caracteres.

Criar uma nova sessão (create())

A criação de uma sessão instrui o navegador a carregar o modelo de linguagem na memória, para que ele possa ser usado. Antes de traduzir o texto, crie uma nova sessão usando o Translator.create() método e especifique os idiomas de origem e de destino:

// Create a Translator session.
const session = await Translator.create({
  sourceLanguage: "en",
  targetLanguage: "es"
});

Você pode monitorar o download do modelo usando a monitor opção, da seguinte maneira.

Monitorar o progresso do download do modelo (monitor)

Você pode acompanhar o progresso do download do modelo usando a monitor opção. Isso é útil quando o modelo ainda não foi totalmente baixado no dispositivo em que será usado, para informar aos usuários do seu site que eles devem esperar.

// Use the monitor option to monitor the model download.
const session = await Translator.create({
  sourceLanguage: "en",
  targetLanguage: "es",
  monitor: m => {
    // Use the monitor object argument to add an listener for the 
    // downloadprogress event.
    m.addEventListener("downloadprogress", event => {
      // The event is an object with the loaded and total properties.
      if (event.loaded == event.total) {
        // The model is fully downloaded.
      } else {
        // The model is still downloading.
        const percentageComplete = (event.loaded / event.total) * 100;
      }
    });
  }
});

Executar a API do Tradutor

Depois de criar uma sessão de modelo, você pode traduzir o texto. A API de tradução fornece dois métodos para traduzir texto:

  • session.translate() retorna uma promessa, que é resolvida depois que o texto é traduzido.
  • session.translateStreaming() Retorna imediatamente um objeto de fluxo, que você pode usar para exibir o texto traduzido, token por token, conforme ele está sendo gerado.

Os detalhes estão abaixo.

Aguarde a tradução do texto (translate())

Traduz texto. Retorna uma promessa, que é resolvida depois que o texto foi traduzido.

Para aguardar até que o texto seja totalmente traduzido antes de continuar a executar o código, use o método assíncrono translate() . Esse método retorna uma promessa que é resolvida após a API terminar de gerar texto:

// Create a Translator session.
const translatorSession = await Translator.create({
  sourceLanguage: "en",
  targetLanguage: "es"
});

// Translate the text and wait for the translation to be done.
const translatedText = await translatorSession.translate(sourceText);

// Use the translation.
console.log(translatedText);

Exibir tokens à medida que são gerados (translateStreaming())

Traduz texto. Retorna imediatamente um objeto de fluxo, que você pode usar para exibir o texto traduzido, token por token, à medida que ele está sendo gerado.

Para exibir os tokens à medida que eles estão sendo gerados, use este método de streaming. O translateStreaming() método retorna um objeto de fluxo imediatamente. Use o objeto de fluxo retornado para exibir os tokens de resposta à medida que eles estão sendo gerados:

// Create a Translator session.
const translatorSession = await Translator.create({
  sourceLanguage: "en",
  targetLanguage: "es"
});

// Ask the model to translate text.
const stream = translatorSession.translateStreaming(sourceText);

// Use the stream object to display tokens that are generated by the model,
// as they are being generated.
for await (const token of stream) {
  console.log(token);
}

Parar a tradução de texto (abortController.signal)

Para parar de traduzir o texto antes que a promessa ou o fluxo retornado pelos métodos acima tenham sido resolvidos ou encerrados, use um AbortController sinal:

// Create a Translator session.
const translatorSession = await Translator.create({
  sourceLanguage: "en",
  targetLanguage: "es"
});

// Create an AbortController object.
const abortController = new AbortController();

// Use the model session to translate some text and pass the AbortController
// object by using the signal option.
const stream = translatorSession.translateStreaming(sourceText, {
  signal: abortController.signal
});

// Later, perhaps when the user presses a "Stop" button, call the abort()
// method on the AbortController object to stop translating text.
abortController.abort();

Destruir uma sessão (destroy())

Depois de traduzir o texto, destrua a sessão para que o navegador saiba que você não precisa mais do modelo de linguagem, para que o modelo possa ser descarregado da memória.

Você pode destruir uma sessão de duas maneiras diferentes:

  • Usando o destroy() método.
  • Ao usar um AbortControllerarquivo .

Os detalhes estão abaixo.

Destruir uma sessão chamando destroy()

Para destruir uma sessão chamando destroy() com uma Translator sessão:

const session = await Translator.create({
  sourceLanguage: "en",
  targetLanguage: "es"
});

// Later, destroy the session by using the destroy method.
session.destroy();

Destrua uma sessão usando AbortController

Para destruir uma sessão criando um AbortController objeto, crie uma Translator sessão e chame abort():

// Create an AbortController object.
const controller = new AbortController();

// Create a Translator session and pass the 
// AbortController object by using the signal option.
const session = await Translator.create({
  sourceLanguage: "en",
  targetLanguage: "es",
  signal: controller.signal
});

// Later, perhaps when the user interacts with the UI, destroy the session by
// calling the abort() function of the AbortController object.
controller.abort();

Enviar comentários

Estamos interessados em aprender sobre:

  • O intervalo de cenários para o qual você usa a API do Tradutor.
  • Qualquer problema com a API do Tradutor.
  • Quaisquer problemas com os modelos de tradução no dispositivo.
  • Se outras APIs internas específicas da tarefa seriam úteis.

Para enviar comentários sobre seus cenários e as tarefas que você deseja realizar, adicione um comentário ao problema de comentários da API do Tradutor.

Se você notar algum problema ao usar a API, informe-o no repositório.

Você também pode contribuir para a discussão sobre o design da API do Tradutor no repositório do Grupo de Trabalho de Aprendizado de Máquina Web do W3C.

Confira também

GitHub:

Documentos do Azure:

Demos repo: