
Compartir:
Kelly J Andrews es desarrolladora de Nexmo y lleva más de 30 años jugando con los ordenadores. Utilizó BASIC por primera vez a los 5 años.
No fue hasta que creó su primera página web en 1997 y probó JavaScript por primera vez cuando encontró su verdadera vocación. Kelly lucha ahora por JavaScript, el código comprobable y la entrega rápida.
Se le puede encontrar cantando karaoke, haciendo magia o animando a los Cubs y a los Fighting Irish.
Comparación de API de traducción de textos
Nota: Es posible que algunas de las herramientas o métodos descritos en este artículo ya no reciban soporte o no estén actualizados. Para obtener contenido actualizado o soporte, consulta nuestras últimas publicaciones o contáctanos en el Slack de la comunidad de Vonage
Las API de traducción de textos son esenciales en el entorno global de la mensajería entrante y saliente. Amazon Web Services, Google Cloud Platform, IBM Watson y Microsoft Azure tienen ofertas muy potentes. En este artículo destacaré algunas de mis experiencias con cada servicio.
Amazon Translate
Características
Amazon Transcribe utiliza lo que se denomina traducción automática neuronal para crear traducciones más naturales. El servicio ofrece procesos tanto en tiempo real como por lotes, dando al desarrollador la opción de traducir el texto inmediatamente o procesarlo a posteriori.
Amazon Translate ofrece 54 idiomas entre los que elegir, lo que le proporciona una amplia variedad de opciones. El servicio también detectará el idioma de origen, lo que permite una flexibilidad adicional. También puedes personalizar tu terminología para asegurarte de tener una mayor precisión cuando se trata de tu caso de uso específico.
Facilidad de uso
El AWS SDK de Amazon incluye Amazon Translate para varios lenguajes de programación. Utilicé JavaScript y no tuve problemas para trabajar con el servicio.
La documentación de Amazon Translate es lo suficientemente fácil para empezar y lo suficientemente completa para cubrir más complejidad según sea necesario. También proporcionan algunos ejemplos para ayudarle a empezar.
Mi método de traducción es el siguiente como ejemplo -
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 respuesta recibida del servicio podría necesitar más información, pero los datos proporcionados dan suficiente para ser funcional. Me gustaría saber cuál era el texto original y tal vez algunos id para cotejar las llamadas más tarde. Puedo integrar esto en mi aplicación, pero sería útil disponer de información adicional.
Hola
{
TranslatedText: 'Hello',
SourceLanguageCode: 'es',
TargetLanguageCode: 'en'
}
Halo
{
TranslatedText: 'Hello. Hello',
SourceLanguageCode: 'id',
TargetLanguageCode: 'en'
}Puedes encontrar un ejemplo completo y un tutorial en mi post anterior sobre Amazon Translate.
Precios
La estructura de precios de Amazon Translate es sencilla. El servicio es de pago por uso y cobra por carácter. También ofrece un nivel gratuito para empezar.
Durante los 12 meses siguientes a su primera llamada de traducción, AWS le ofrece 2 millones de caracteres gratuitos al mes, lo que es más que suficiente para realizar pruebas e incluso para un uso ligero por parte del cliente. Todo lo que supere la asignación de 2 millones de caracteres se cobra a la tarifa estándar, que es de 15,00 dólares por millón de caracteres.
API del traductor de textos de Azure
Características
En Azure Text Translator API forma parte de Cognitive Services y utiliza traducción automática neuronal para realizar sus traducciones. Microsoft también proporciona un diccionario bilingüe para encontrar traducciones alternativas utilizando frases contextuales para ayudar a elegir la traducción adecuada.
Azure Text Translator API ofrece una amplia variedad de idiomas al admitir más de 60. El servicio proporciona transliteración para que pueda cambiar el texto para utilizar diferentes alfabetos. Los modelos personalizados son una opción para manejar adecuadamente términos específicos de la industria. Si es necesario, Azure Text Translator API también traducirá documentos.
Una oferta única de Azure es la posibilidad de utilizar un servicio de traducción local con tus aplicaciones Android para traducir cuando no estés conectado a Internet.
Facilidad de uso
En el momento de escribir estas líneas, los SDK de Azure han sido objeto de importantes actualizaciones. Los cambios son para mejor y simplifican la configuración. A veces me resultaba un poco difícil navegar por la documentación, pero el código fuente tenía suficientes comentarios como para que pudiera resolver las cosas.
Una vez que pude localizar los parámetros necesarios y los formatos de entrada, la estructura Promise del SDK hizo que el código para JavaScript fuera sencillo.
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);
});
}
El método translator.translate permite múltiples entradas tanto para el texto como para los idiomas. Las matrices de entrada permiten traducir mensajes a varios idiomas simultáneamente, así como enviar varios mensajes por lotes.
La respuesta es ligera. Planifique llevar un registro de las llamadas realizadas y el texto original en su aplicación. Estos detalles no se proporcionan.
[
{
detectedLanguage: { language: 'es', score: 1 },
translations: [ { text: 'Hello', to: 'en' } ]
}
]Puede ver cómo implementar este servicio en JavaScript en mi Azure Text Translation API.
Precios
La estructura de precios de Azure Text Translation API es de pago por uso y cobra 10 dólares por millón de caracteres. El servicio no ofrece ningún nivel gratuito fuera de la típica versión de prueba de Azure.
Google Cloud Translate
Características
La API de traducción de Google Cloud utiliza el procesamiento de lenguaje natural AutoML para proporcionar las traducciones que esperarías de un servicio de Google Translate. Google Cloud también ofrece la posibilidad de entrenar modelos AutoML personalizados o utilizar los modelos preentrenados ya disponibles.
Google Cloud Translate es compatible con más de 100 idiomas y ofrece detección de idiomas. Ofrece un glosario para dar prioridad a las traducciones de terminología específica del sector. Si optas por la traducción AutoML personalizada, puedes crear modelos personalizados con más de 50 pares de idiomas.
Facilidad de uso
Siempre me ha gustado utilizar el SDK de Google Cloud con proyectos de JavaScript. La página quickstarts siguen siendo fáciles de seguir, y las referencias para la API se pueden encontrar fácilmente y están bien estructuradas.
Google Cloud utiliza cuentas de servicio para la autenticación. Cuando proporcionas el archivo de credenciales en la raíz del proyecto, el SDK gestiona la autenticación por ti, haciendo de esta mi API de servicios en la nube favorita para implementar.
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);
});
}
El objeto translate es muy fácil de usar; sin embargo, el retorno no contiene el texto original que se devuelve en la respuesta.
[
'Hi',
{
data: {
translations: [ { translatedText: 'Hi', detectedSourceLanguage: 'es' } ]
}
}
]Para obtener un tutorial más detallado sobre cómo ejecutar Google Cloud Translate con JavaScript, puede consultar este enlace (https://developer.vonage.com/en/blog/extending-nexmo-google-cloud-translation-api-dr).
Precios
Traductor de Google Cloud precios ofrece dos niveles principales: Básico y Avanzado. El servicio avanzado tiene algunas funciones adicionales disponibles y tiene el mismo precio que el básico, ambos cuestan 20 dólares por millón de caracteres.
El servicio también es de pago por uso, pero afirma explícitamente que cobrará de forma prorrateada o incremental. Pro-rata significa que no esperará a que alcances 1 millón para cobrarte por el uso.
A partir del 1 de noviembre de 2019, también están ofreciendo $ 10 de uso gratuito por mes - que es excelente para las pruebas de desarrollo.
Traductor de idiomas IBM Watson
Características
Al igual que los otros tres servicios, IBM Watson Language Translator también utiliza la traducción automática neuronal para ofrecer resultados más precisos. La creación de modelos personalizados es una opción para este proveedor de servicios, que te ofrece el mismo grado de control.
Los idiomas traducidos para IBM Watson Language Translator parecen ser los menos, con sólo unos 30 en la lista. La lista cubre la mayoría de los casos de uso, pero si estás planeando utilizar un idioma específico, asegúrate de comprobar la lista antes de empezar.
IBM Watson Language Translator cuenta con un servicio de traducción de documentos, lo que le confiere un conjunto de funciones muy completo para la mayoría de los casos de uso.
Facilidad de uso
IBM Watson Language Translator JavaScript SDK tiene, con diferencia, la sintaxis de autenticación más prolija, pero en general los métodos también están en consonancia con los demás servicios.
En documentación es fácil de seguir, y proporcionan varias aplicaciones de ejemplo para empezar.
Un pequeño inconveniente es que el servicio no determina automáticamente la lengua de origen, como los demás servicios. Existe un método para evaluar el idioma de entrada. Sin embargo, tendrás que establecer el modelo de traducción explícitamente.
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);
});
}
Una vez más, la respuesta no contiene el texto original, así que planifica en consecuencia.
{
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
}
}Puedes configurar tu propio proyecto siguiendo mi anterior tutorial.
Precios
En precios del traductor de idiomas IBM Watson es, con diferencia, lo más confuso. Hay una versión Lite, que es la gratuita. Puedes utilizar 1 millón de caracteres al mes sin coste alguno. Sin embargo, no podrás utilizar modelos personalizados hasta que tengas un plan de pago, y los servicios Lite se eliminan después de 30 días de inactividad.
El plan Estándar te da 250.000 caracteres gratis, pero la viñeta tenía un asterisco y no daba más detalles (supongo que las traducciones estándar utilizan los modelos por defecto). Después de los 250.000 iniciales, el precio es de 0,02 dólares por cada mil. Ese precio equivale a 20 dólares por millón una vez que haces cuentas.
El plan Avanzado no parece darte los 250.000 gratis, pero sigue cobrando lo mismo que el Estándar. Vuelve a comprobar si los mismos caracteres gratuitos se aplican aquí también antes de comprar. Las traducciones de modelos personalizadas cuestan 100 dólares por millón de caracteres, más una cuota de mantenimiento de 15 dólares al mes por modelo.
Resumen
Utilizar el aprendizaje automático y los modelos lingüísticos neuronales para traducir texto es una potente herramienta para cualquier aplicación. Los modelos no son perfectos, y puede que el servicio nunca sea igual que una traducción humana. Sin embargo, las traducciones en tiempo real para facilitar la comunicación global son demasiado valiosas como para no seguir mejorando.
Me parece un poco decepcionante que los cuatro servicios no devuelvan el texto original en la llamada. Creo que estaría bien tener alguna forma de saber, basándose en la respuesta, a dónde pertenece la traducción si algo se confunde durante el proceso.
En general, creo que cada servicio es lo suficientemente bueno como para manejar la mayoría de los casos de uso que su aplicación requeriría. Las traducciones parecen precisas. Sin embargo, creo que el precio de IBM es elevado, dado que admite menos idiomas y carece de detección automática de idiomas. En mi opinión, me decantaría por Azure o Google debido a la madurez de su oferta y a sus modelos lingüísticos.
Si tienes alguna pregunta o comentario, no dudes en dejarlos a continuación o ponte en contacto conmigo en Twitter (@kellyjandrews).
Compartir:
Kelly J Andrews es desarrolladora de Nexmo y lleva más de 30 años jugando con los ordenadores. Utilizó BASIC por primera vez a los 5 años.
No fue hasta que creó su primera página web en 1997 y probó JavaScript por primera vez cuando encontró su verdadera vocación. Kelly lucha ahora por JavaScript, el código comprobable y la entrega rápida.
Se le puede encontrar cantando karaoke, haciendo magia o animando a los Cubs y a los Fighting Irish.