Compartilhar via


Traduzir texto com a API do Microsoft Translator

A API do Microsoft Translator é uma API Web experimental que lhe permite traduzir texto entre diferentes idiomas através de um modelo especializado incorporado no Microsoft Edge, a partir de código JavaScript no seu site ou extensão do browser.

Para obter informações introdutórias sobre a API do Microsoft Translator, veja:

Conteúdo detalhado:

Disponibilidade da API do Microsoft Translator

A API do Microsoft Translator está disponível como pré-visualização para programadores nos canais Microsoft Edge Canary ou Dev, começando pela versão 143.0.3636.0. Para transferir um canal de pré-visualização do Microsoft Edge (Beta, Dev ou Canary), aceda a Tornar-se um Microsoft Edge Insider.

Benefícios da API do Microsoft Translator

A API do Microsoft Translator utiliza um modelo especializado para tradução automática que é executado no mesmo dispositivo onde são utilizadas as entradas e saídas do modelo (ou seja, localmente). Esta abordagem tem os seguintes benefícios em comparação com as soluções baseadas na cloud:

  • Custo reduzido: Não existem custos associados à utilização de um serviço de tradução na nuvem.

  • Independência da rede: Para além da transferência do modelo inicial, não existe latência de rede ao utilizar esta API para traduzir texto e a API também pode ser utilizada quando o dispositivo está offline.

  • Privacidade melhorada: A entrada de dados no modelo nunca sai do dispositivo e não é recolhida para preparar modelos de IA.

Os modelos de tradução para pares de idiomas especificados são transferidos na primeira vez que a API é utilizada no Microsoft Edge e, posteriormente, são partilhados em todos os sites no browser. Os modelos são acedidos através de uma API Web simples que não requer conhecimento de arquiteturas de terceiros e não requer conhecimentos de Inteligência Artificial (IA) ou Machine Learning (ML).

Alternativas à API do Microsoft Translator

Pode enviar pedidos de rede para serviços de tradução baseados na cloud com capacidades mais sofisticadas, incluindo tradução neural; veja Azure documentação do AI Translator.

Como alternativa no dispositivo, a API Prompt serve cenários mais personalizados de pedidos de vários idiomas, com um pequeno modelo de linguagem incorporado no Microsoft Edge; veja Pedir um modelo de linguagem incorporado com a API Prompt.

Aviso de isenção

Tal como outros modelos de tradução automática, os modelos especializados no Microsft Edge podem potencialmente produzir traduções injustas, pouco fiáveis ou ofensivas. Para saber mais sobre as limitações destes modelos de tradução automática, veja Limitações no Azure Nota de Transparência do Microsoft AI Translator.

Disponibilidade do modelo

Será necessária uma transferência inicial do modelo da primeira vez que um site chamar uma API de IA incorporada. Pode monitorizar a transferência do modelo com a opção de monitor ao criar uma nova sessão da API do Microsoft Translator; veja Monitorizar o progresso da transferência do modelo (monitor:), abaixo.

Ativar a API do Microsoft Translator

Para utilizar a API do Microsoft Edge, defina dois sinalizadores da seguinte forma:

  1. No Microsoft Edge, aceda a edge://versione certifique-se de que está a utilizar a versão 143.0.3636.0 ou posterior do Microsoft Edge, como o canal de pré-visualização Canary ou Dev do Microsoft Edge.

    Para transferir um canal de pré-visualização do Microsoft Edge (Beta, Dev ou Canary), aceda a Tornar-se um Microsoft Edge Insider.

  2. Nessa versão do Microsoft Edge, abra um novo separador ou janela e aceda a edge://flags.

  3. Na caixa de texto Sinalizadores de pesquisa na parte superior, comece a escrever api de tradução:

    Página sinalizadores do browser

    Estão listados os seguintes sinalizadores:

    • API de tradução experimental – ativa a API de tradução de idiomas no dispositivo. Veja Explicador das APIs do Tradutor e do Detetor de Idiomas.

      Esta entrada mostra #edge-translation-api, que vai para edge://flags/#edge-translation-api.

    • Transmissão em fluxo da API de Tradução dividida por frase – quando ativada, a API de tradução dividirá o texto por frase e transmitirá cada frase traduzida à medida que for concluída, proporcionando uma melhor capacidade de resposta para tradução de texto longa.

      Esta entrada mostra #edge-translation-api-streaming-by-sentence, que vai para edge://flags/#edge-translation-api-streaming-by-sentence.

  4. Em API de tradução experimental, selecione Ativado.

  5. Em Transmissão em fluxo da API de Tradução dividida por frase, selecione Ativado.

    No canto inferior direito, é apresentado um botão Reiniciar .

  6. Clique no botão Reiniciar .

Veja um exemplo de trabalho

Para ver a API do Microsoft Translator em ação e rever o código existente que utiliza estas APIs:

  1. Ative a API do Microsoft Translator, conforme descrito acima.

  2. No Microsoft Edge Canary ou Dev, aceda ao ambiente de trabalho da API do Translator numa nova janela ou separador.

  3. Na faixa de informações na parte superior, marcar o status: inicialmente, lê-se: API no dispositivo e modelo transferível. O modelo de um par de idiomas especificado será transferido na primeira vez que a API for utilizada.

  4. Na caixa Texto para traduzir texto, introduza texto para traduzir e, opcionalmente, altere os valores Idioma de origem e Idioma de destino .

  5. Clique no botão Traduzir .

    Se o modelo do par de idiomas especificado ainda não tiver sido transferido, a transferência será iniciada.

    Indicador de estado a mostrar o progresso da transferência do modelo

    Se a transferência do modelo não iniciar, reinicie o Microsoft Edge e tente novamente.

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

    O resultado é gerado na secção de resposta da página:

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

  6. Para parar de gerar a resposta, em qualquer altura, clique no botão Parar .

Veja também:

  • /built-in-ai/ - Código fonte e Readme para a demonstração de playgrounds de IA incorporados.

Utilizar a API do Microsoft Translator

As secções seguintes são sobre a utilização da API do Microsoft Translator.

Verificar se a API do Microsoft Translator está ativada

Antes de utilizar a API do Microsoft Translator no código do seu site, marcar que a API está ativada ao testar a presença do Translator objeto:

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

Verificar se o modelo pode ser utilizado (availability())

A API do Tradutor tem os seguintes requisitos:

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

Para marcar se a API puder ser utilizada, chame 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, utilize os códigos de idioma em Etiquetas para Identificar Idiomas, como cadeias de carateres.

Criar uma nova sessão (create())

Criar uma sessão indica ao browser para carregar o modelo de idioma na memória, para que possa ser utilizado. Antes de poder traduzir texto, crie uma nova sessão com o 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"
});

Pode monitorizar a transferência do modelo com a opção monitor da seguinte forma.

Monitorizar o progresso da transferência do modelo (monitor:)

Pode seguir o progresso da transferência do modelo com a opção monitor . Isto é útil quando o modelo ainda não foi totalmente transferido para o dispositivo onde será utilizado, para informar os utilizadores do seu site de que devem aguardar.

// Create a Translator session with 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 Microsoft Translator (translate())

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

  • translatorSession.translate() devolve uma promessa, que é resolvida após a tradução do texto.
  • translatorSession.translateStreaming() devolve imediatamente um objeto de fluxo, que pode utilizar para apresentar o texto traduzido, token por token, à medida que está a ser gerado.

Os detalhes encontram-se abaixo.

Aguarde até que o texto seja traduzido (translate())

Traduz texto. Devolve uma promessa, que é resolvida depois de o texto ter sido traduzido.

Para aguardar que o texto seja totalmente traduzido antes de continuar a executar o código, utilize o método assíncrono translate() . Este método devolve 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);

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

Traduz texto. Devolve imediatamente um objeto de fluxo, que pode utilizar para apresentar o texto traduzido, token por token, à medida que está a ser gerado.

Para apresentar os tokens à medida que estão a ser gerados, utilize este método de transmissão em fluxo. O translateStreaming() método devolve um objeto de fluxo imediatamente. Utilize o objeto de fluxo devolvido para apresentar os tokens de resposta à medida que estão a ser 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 chunk of stream) {
  console.log(chunk);
}

Parar de traduzir texto (abortController.signal)

Para parar de traduzir texto antes de a promessa ou fluxo devolvido pelos métodos acima terem sido resolvidos ou terminados, utilize 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 texto, destrua a sessão para informar o browser de que já não precisa do modelo de idioma, para que o modelo possa ser descarregado da memória.

Pode destruir uma sessão de duas formas diferentes:

  • Ao utilizar o destroy() método .
  • Ao utilizar um AbortController.

Os detalhes encontram-se abaixo.

Destruir uma sessão ao chamar destroy()

Para destruir uma sessão ao chamar 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();

Destruir uma sessão com AbortController

Para destruir uma sessão ao criar um AbortController objeto, crie uma Translator sessão e, em seguida, 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 muito interessados em saber mais sobre o leque de cenários para os quais pretende utilizar a API do Microsoft Translator, quaisquer problemas com a API ou o modelo de especialistas e se outras APIs incorporadas específicas de tarefas seriam úteis.

Para enviar feedback sobre os seus cenários e as tarefas que pretende alcançar, adicione um comentário ao problema de feedback da API do Microsoft Translator.

Se reparar em problemas ao utilizar a API, comunique-o no repositório.

Também pode contribuir para o debate sobre a conceção da API do Microsoft Translator no repositório do Grupo de Trabalho do W3C Web Machine Learning.

Confira também

Obter o Microsoft Edge:

GitHub:

Azure documentos:

Repositório de demonstrações: