https://d226lax1qjow5r.cloudfront.net/blog/blogposts/text-translation-api-comparison-dr/EFBED5D5-7AAF-4AAC-8C64-214E8559ABD2.jpeg

Comparaison des API de traduction de texte

Publié le May 18, 2021

Temps de lecture : 8 minutes

Note : Certains des outils ou méthodes décrits dans cet article peuvent ne plus être pris en charge ou ne plus être d'actualité. Pour un contenu mis à jour ou une assistance, consultez nos derniers articles ou contactez-nous sur le site Communauté Vonage Slack

Les API de traduction de texte sont essentielles dans l'environnement mondial de la messagerie entrante et sortante. Amazon Web Services, Google Cloud Platform, IBM Watson et Microsoft Azure proposent tous des offres solides. Ce billet met en lumière certains des enseignements que j'ai tirés de l'utilisation de chaque service.

Amazon Translate

Caractéristiques

Amazon Transcribe utilise ce que l'on appelle la traduction automatique neuronale pour créer des traductions en langage plus naturel. Le service propose des processus en temps réel et par lots, ce qui permet au développeur de traduire le texte immédiatement ou de le traiter après coup.

Amazon Translate propose un choix de 54 langues, ce qui vous offre une grande variété d'options. Le service détecte également la langue source, ce qui offre une plus grande flexibilité. Vous pouvez également personnaliser votre terminologie pour vous assurer d'une plus grande précision lorsqu'il s'agit de votre cas d'utilisation spécifique.

Facilité d'utilisation

Le SDK AWS d'Amazon comprend Amazon Translate pour plusieurs langages de programmation. J'ai utilisé JavaScript et je n'ai eu aucun problème à travailler avec le service.

La documentation d'Amazon Translate est suffisamment simple pour vous permettre de démarrer et suffisamment complète pour couvrir une plus grande complexité si nécessaire. Elle fournit également des exemples pour vous aider à démarrer.

Ma méthode de traduction est présentée ci-dessous à titre d'exemple -

function translateText(params) {
  var translate = new AWS.Translate({region: process.env.AWS_REGION})
  var opts = {
    SourceLanguageCode: 'auto',
    TargetLanguageCode: 'en',
    Text: params.text
  };
  translate.translateText(opts, function(err, data) {
    if (err) {
      console.log(err, err.stack);
    }
    else{
      console.log(params.text);
      console.dir(data, {depth: null})
    }
  });
}

La réponse reçue du service pourrait éventuellement comporter plus d'informations, mais les données fournies sont suffisantes pour être fonctionnelles. J'aimerais savoir quel était le texte d'origine et, peut-être, comment faire correspondre les appels plus tard. id pour faire correspondre les appels plus tard. Je peux intégrer cela dans mon application, mais il serait utile d'avoir ces informations supplémentaires.

Hola
{
  TranslatedText: 'Hello',
  SourceLanguageCode: 'es',
  TargetLanguageCode: 'en'
}
Halo
{
  TranslatedText: 'Hello. Hello',
  SourceLanguageCode: 'id',
  TargetLanguageCode: 'en'
}

Vous pouvez trouver un exemple complet et un tutoriel dans mon précédent article sur Amazon Translate.

Tarification

La structure tarifaire d'Amazon Translate est simple. Le service est facturé à l'utilisation et au caractère. Il propose également une version gratuite pour commencer.

Pendant les 12 mois qui suivent votre premier appel de traduction, AWS vous offre gratuitement 2 millions de caractères par mois, ce qui est plus que suffisant pour les tests et même pour une utilisation légère par les clients. Tout ce qui dépasse les 2 millions de caractères est facturé au tarif standard, soit 15 $ par million de caractères.

API Azure Text Translator

Caractéristiques

L'API Azure Text Translator API fait partie de Cognitive Services et utilise la traduction automatique neuronale pour effectuer ses traductions. Microsoft fournit également un dictionnaire bilingue pour trouver des traductions alternatives en utilisant des phrases contextuelles pour aider à choisir la traduction appropriée.

L'API Azure Text Translator offre une grande variété de langues en prenant en charge plus de 60 d'entre elles. Le service fournit une translittération qui vous permet de modifier le texte pour utiliser différents alphabets. Des modèles personnalisés sont disponibles en option pour traiter correctement les termes spécifiques à un secteur d'activité. Si nécessaire, l'API Azure Text Translator traduit également les documents.

La possibilité d'utiliser un service de traduction local avec vos applications Android pour traduire lorsque vous n'êtes pas connecté à l'internet est une offre unique d'Azure.

Facilité d'utilisation

À l'heure où nous écrivons ces lignes, les SDK Azure ont fait l'objet de mises à jour importantes. Les changements sont positifs et simplifient l'installation. J'ai parfois trouvé la documentation un peu difficile à parcourir, mais le code source contenait suffisamment de commentaires pour que je puisse m'y retrouver.

Une fois que j'ai pu localiser les paramètres et les formats d'entrée requis, la structure Promise du SDK a permis de simplifier le code JavaScript.

function translateText(params) {
  const creds = new CognitiveServicesCredentials.ApiKeyCredentials({ inHeader: { 'Ocp-Apim-Subscription-Key': process.env.TEXT_TRANSLATION_SUBSCRIPTION_KEY } });
  const client = new TranslatorTextClient(creds, process.env.TEXT_TRANSLATION_ENDPOINT);

  client.translator
    .translate(["en"], [{text:params.text}])
    .then(data => {
      console.dir(data, {depth: null})
    })
    .catch(err => {
      console.error("error:", err);
    });
}

La méthode translator.translate permet des entrées multiples pour le texte et les langues. Les tableaux d'entrée permettent de traduire les messages dans différentes langues simultanément, ainsi que d'envoyer plusieurs messages par lots.

La réponse est légère. Prévoyez de garder une trace des appels effectués et du texte original dans votre application. Ces détails ne sont pas fournis.

[
  {
    detectedLanguage: { language: 'es', score: 1 },
    translations: [ { text: 'Hello', to: 'en' } ]
  }
]

Vous pouvez voir comment mettre en œuvre ce service en JavaScript dans mon article intitulé billet sur l'API Azure de traduction de texte.

Tarification

La structure tarifaire pour Azure Text Translation API est basée sur le principe du paiement à l'utilisation et facture 10 $ par million de caractères. Le service n'offre pas de niveau gratuit en dehors de la période d'essai typique d'Azure.

Google Cloud Translate

Caractéristiques

L'API Google Cloud Translation utilise le traitement du langage naturel AutoML pour fournir les traductions que vous attendez d'un service Google Translate. Google Cloud offre également la possibilité de former des modèles AutoML personnalisés ou d'utiliser les modèles préformés déjà disponibles.

Google Cloud Translate prend en charge plus de 100 langues et assure la détection des langues. Il propose un glossaire qui permet de donner la priorité aux traductions de terminologie spécifique à un secteur d'activité. Si vous optez pour une traduction AutoML personnalisée, vous pouvez créer des modèles personnalisés avec plus de 50 paires de langues.

Facilité d'utilisation

J'ai toujours aimé utiliser le SDK Google Cloud pour mes projets JavaScript. Les démarrages rapides sont toujours faciles à suivre, et les références pour l'API sont faciles à trouver et bien structurées.

Google Cloud utilise des comptes de service pour l'authentification. Lorsque vous fournissez le fichier d'informations d'identification à la racine du projet, le SDK gère l'authentification pour vous, ce qui en fait mon API de service cloud préférée à mettre en œuvre.

function translateText(params) {
  const translate = new Translate();
  const target = process.env.TARGET_LANGUAGE || 'en';

  translate.translate(params.text, target)
        .then(data => {
           console.dir(data, {depth: null})
         })
         .catch(err => {
           console.log('error', err);
         });
}

L'objet translate est très simple à utiliser, mais il ne contient pas le texte original renvoyé dans la réponse.

[
  'Hi',
  {
    data: {
      translations: [ { translatedText: 'Hi', detectedSourceLanguage: 'es' } ]
    }
  }
]

Pour un tutoriel plus détaillé sur la façon d'exécuter Google Cloud Translate avec JavaScript, vous pouvez consulter ceci (https://developer.vonage.com/en/blog/extending-nexmo-google-cloud-translation-api-dr).

Tarification

Google Cloud Translate tarifs Google Cloud Translate propose deux niveaux principaux : le niveau de base et le niveau avancé. Le service avancé offre quelques fonctionnalités supplémentaires et est proposé au même prix que le service de base, soit 20 dollars par million de caractères.

Le service est également payant, mais il indique explicitement qu'il facturera au prorata, ou par incréments. Au prorata signifie qu'il n'attendra pas que vous atteigniez 1 million pour vous facturer l'utilisation.

À partir du 1er novembre 2019, ils offrent également 10 $ d'utilisation gratuite par mois - ce qui est excellent pour les tests de développement.

Traducteur linguistique IBM Watson

Caractéristiques

Comme les trois autres services, IBM Watson Language Translator utilise également la traduction automatique neuronale pour fournir des résultats plus précis. La création de modèles personnalisés est une option pour ce fournisseur de services, ce qui vous donne le même degré de contrôle.

Les langues traduites par IBM Watson Language Translator semblent être les moins nombreuses, avec seulement une trentaine de langues répertoriées. La liste couvre la majorité des cas d'utilisation, mais si vous prévoyez d'utiliser une langue spécifique, assurez-vous de vérifier la liste avant de commencer.

IBM Watson Language Translator dispose d'un service de traduction de documents, ce qui lui confère un ensemble de fonctionnalités bien équilibré pour la plupart des cas d'utilisation.

Facilité d'utilisation

Le SDK JavaScript d'IBM Watson Language Translator a de loin la syntaxe d'authentification la plus verbeuse, mais les méthodes sont généralement conformes à celles des autres services.

La documentation est facile à suivre et fournit plusieurs exemples d'Applications pour vous aider à démarrer.

Un léger inconvénient est que le service ne détermine pas automatiquement la langue source, comme les autres services. Il existe une méthode pour évaluer la langue d'arrivée. Cependant, vous devrez définir explicitement le modèle de traduction.

function translateText(params) {

  const languageTranslator = new LanguageTranslatorV3({
    version: '2017-09-21',
    authenticator: new IamAuthenticator({
      apikey: process.env.TRANSLATE_IAM_APIKEY,
    }),
    url: process.env.TRANSLATE_URL,
  });

  const translateParams = {
    text: params.text,
    modelId: 'en-es',
  };

  languageTranslator.translate(translateParams)
    .then(data => {
      console.dir(data, {depth: null})
    })
    .catch(err => {
      console.log('error:', err);
    });
}

Une fois de plus, la réponse ne contient pas le texte original, il faut donc s'y préparer.

{
  status: 200,
  statusText: 'OK',
  headers: {
    'content-type': 'application/json;charset=UTF-8',
    'content-length': '104',
    'x-xss-protection': '1; mode=block',
    'x-content-type-options': 'nosniff',
    'content-security-policy': "default-src 'none'",
    'cache-control': 'no-cache, no-store',
    pragma: 'no-cache',
    'content-language': 'en-US',
    'strict-transport-security': 'max-age=31536000; includeSubDomains;',
    'x-global-transaction-id': 'guid',
    'x-dp-watson-tran-id': 'guid',
    'x-edgeconnect-midmile-rtt': '25',
    'x-edgeconnect-origin-mex-latency': '229',
    date: 'DATE/TIME OF CALL',
    connection: 'close'
  },
  result: {
    translations: [ { translation: 'Hi' } ],
    word_count: 1,
    character_count: 4
  }
}

Vous pouvez mettre en place votre propre projet en suivant mon précédent précédent.

Tarification

Les prix Prix du traducteur linguistique IBM Watson était de loin le plus déroutant. Il existe une version Lite, qui est la version gratuite. Vous pouvez utiliser gratuitement 1 million de caractères par mois. Cependant, vous ne pourrez pas utiliser de modèles personnalisés tant que vous n'aurez pas souscrit à un plan payant, et les services Lite sont supprimés après 30 jours d'inactivité.

L'offre Standard permet d'obtenir gratuitement 250 000 caractères, mais la puce comporte un astérisque et aucun autre détail (je suppose que les traductions standard utilisent les modèles par défaut). Après les 250 000 caractères initiaux, le prix est de 0,02 $ par millier. Une fois le calcul effectué, ce prix revient à 20 dollars par million.

Le plan avancé ne semble pas offrir les 250 000 caractères gratuits, mais il est facturé au même prix que le plan standard. Vérifiez à nouveau si les mêmes caractères gratuits s'appliquent ici aussi avant d'acheter. Les traductions de modèles personnalisés coûtent 100 $ par million de caractères, plus 15 $ de frais de maintenance par modèle et par mois.

Résumé

L'utilisation de l'apprentissage automatique et des modèles de langage neuronaux pour traduire du texte est un outil puissant pour n'importe quelle application. Les modèles ne sont pas parfaits et le service ne sera peut-être jamais identique à une traduction humaine. Cependant, les traductions en temps réel pour faciliter la communication mondiale sont trop précieuses pour ne pas continuer à s'améliorer.

Je trouve quelque peu décevant que les quatre services ne renvoient pas le texte original dans l'appel. Je pense qu'il serait bon d'avoir un moyen de savoir, sur la base de la réponse, à qui appartient la traduction si quelque chose s'est mélangé au cours du processus.

Dans l'ensemble, je pense que chaque service est suffisamment bon pour gérer la plupart des cas d'utilisation dont votre application aurait besoin. Les traductions semblent précises. Je pense que le prix d'IBM est un peu élevé, étant donné le nombre réduit de langues prises en charge et l'absence d'auto-détection de la langue. Pour ma part, j'opterais pour Azure ou Google en raison de la maturité de leur offre et de leurs modèles linguistiques.

Si vous avez des questions ou des commentaires, n'hésitez pas à les laisser ci-dessous ou à me contacter sur Twitter (@kellyjandrews).

Partager:

https://a.storyblok.com/f/270183/384x384/444c073b5e/kellyjandrews.png
Kelly J AndrewsAncien membre de l'équipe

Kelly J. Andrews est un défenseur des développeurs pour Nexmo. Il bricole des ordinateurs depuis plus de 30 ans et a utilisé BASIC pour la première fois à l'âge de 5 ans.

Ce n'est que lorsqu'il a créé sa première page web en 1997 et qu'il a essayé JavaScript pour la première fois qu'il a trouvé sa véritable vocation. Kelly se bat désormais pour JavaScript, un code testable et une livraison rapide.

Vous pouvez le trouver en train de chanter au karaoké, de faire de la magie ou d'encourager les Cubs et les Fighting Irish.