Tech preview: nuevos Robots de IA para procesar mejor multimedia
Nota histórica sobre precios: el plan que ahora aparece como Pro se llamaba Startup cuando se publicó este artículo. Los precios, las asignaciones y las promociones que se describen a continuación corresponden a esa oferta histórica. Consulta los precios actuales para ver los planes de hoy.
Nos complace anunciar que estamos lanzando una nueva línea de Robots de IA en Tech Preview. Desde hace tiempo tenemos un Robot de IA en producción: /image/facedetect. Funciona con software interno y su rendimiento nos ha dejado satisfechos. Sin embargo, los Robots que anunciamos hoy funcionan con servicios en la nube externos.
Es difícil pasar por alto los avances en IA que están logrando The Big Five. Con acceso a datos prácticamente ilimitados, los modelos se pueden entrenar para alcanzar una precisión sin igual. Nos pareció que ofrecer estas capacidades de IA directamente dentro de nuestros pipelines de encoding podría aportar un valor enorme a los clientes que buscan automatizar aún más su procesamiento multimedia.
Hemos probado y mapeado las ofertas de IA de Google Cloud Platform (GCP) y Amazon Web Services (AWS), y empezamos a dibujar diagramas de Venn para identificar las funcionalidades que se solapan.

Nuestra idea era ofrecer una abstracción sobre el mínimo común denominador. En otras palabras: con
una sola API, nuestros clientes pueden conectar, por ejemplo, el reconocimiento de imágenes de
cualquiera de los dos proveedores y recibir respuestas uniformes. Bastaría con especificar
provider: 'aws' o
provider: 'gcp' para cambiar de un proveedor a otro.
¿Por qué dejar que Transloadit lo encapsule?
No hace falta decir que Transloadit no puede superar ni siquiera igualar los precios de los propios proveedores de IA, así que si necesitas procesar cantidades enormes de datos, considera integrarte directamente con GCP/AWS.
Sin embargo, si tu caso de uso no gira en torno a exprimir hasta el último centavo de cada byte, hay cuatro razones por las que nuestros clientes podrían querer usar estos servicios de IA junto con Transloadit:
1. Componibilidad tipo LEGO
Puedes incorporar IA en pipelines de encoding existentes, combinándola con 95 funciones (Robots) para crear flujos de trabajo únicos para tu negocio. Todo esto sin escribir código repetitivo e imperativo para unirlo todo, lo que daría lugar a más piezas móviles y más puntos de fallo.
Transloadit ofrece una solución integral que se puede manejar con una sola receta JSON determinista. Con veinte líneas de instrucciones declarativas, podrías indicarle a Transloadit que pase un video por estos Robots:
- /speech/transcribe: convertir el video en texto legible para personas
- /text/translate: traducir el texto al japonés
- /text/speak: sintetizar el japonés en lenguaje hablado
- /video/merge: fusionar el nuevo japonés hablado como pista de audio sobre el video original
En esencia, acabas de hacer que Transloadit traduzca un video automáticamente 😄 Probablemente no esté listo para producción, pero esto sí ilustra lo potente que puede ser nuestra línea de Assembly. Para ver ejemplos de código sobre nuestra componibilidad declarativa, mira más abajo.
2. Compara y cambia fácilmente entre proveedores de IA
Los proveedores usan notaciones distintas para los idiomas (al traducir), estructuran sus respuestas de forma diferente y tienen documentación, SDK, formatos, ajustes, etc. distintos.
Transloadit abstrae todo esto y acepta una entrada uniforme, entregando una salida uniforme sin importar el proveedor.
Después de haber usado Amazon, puedes ver cómo Google describe la misma imagen sin cambiar nada más
que el parámetro provider. Así puedes comparar fácilmente resultados y latencias en tu aplicación, para
ver qué se ajusta mejor a tu caso de uso. Y eso podría cambiar, por supuesto. Estas IA aprenden y
mejoran constantemente para la mayoría de los casos, pero si alguno de tus propios clientes se topa
con un caso minoritario desafortunado, podrías ofrecerle cambiar en un abrir y cerrar de ojos.
3. Puede que reduzcas el número de proveedores
Si te encuentras en alguna de estas situaciones:
- ya usas Transloadit para tu procesamiento multimedia
- buscas una función de IA, pero también te gustaría complementarla con optimización de imágenes automatizada, encoding o aprovechar cualquiera de nuestras otras 95 funciones
.. esto te ahorra la molestia de integrarte con otro proveedor más. Ya señalamos los costos de ingeniería asociados a tener muchas piezas móviles, pero también hay que considerar una facturación distinta, acuerdos de SLA que monitorear y mesas de soporte con las que lidiar.
4. Sin complicaciones 💆♀️
Saneamos y limpiamos las entradas automáticamente. Por ejemplo, mientras que AWS acepta cualquier archivo de audio para transcribir, según los ajustes, Google lo querrá en formato PCM con codificación con signo, de 16 bits, 1 canal y little-endian. Con Transloadit, solo tienes que lanzarnos cualquier audio (¡o video!) y nos aseguraremos de convertirlo a la forma que le guste al proveedor de IA que hayas elegido.
Funciones que lanzamos hoy
Hoy lanzamos dos Robots en Tech Preview:

Nuestro Robot /image/describe. Introduce una imagen y recibe
una lista de los objetos detectados: Tree, Car, House, etc. Podemos devolverla como archivo de
texto o archivo JSON, o pasarla a otro Robot para su
procesamiento. Los casos de uso comunes incluyen marcar automáticamente contenido (in)apropiado,
proporcionar textos alt para las imágenes y/o hacer que las imágenes se puedan buscar.

Nuestro Robot /speech/transcribe. Introduce una grabación de audio o video y recibe texto legible para personas. Podemos devolverlo como archivo de texto o archivo JSON, o pasarlo a otro Robot para su procesamiento. Los casos de uso comunes incluyen el subtitulado automático o hacer que el audio y el video se puedan buscar.
Los lanzamos junto con una mejora de:

Nuestro Robot /file/filter. Pásale un archivo y unos
criterios, y este Robot actúa como guardián, dejando pasar
opcionalmente los archivos a otro
Step, como uno de exportación. Lo cambiamos para que ahora también acepte un operador includes.
Con el operador includes recién añadido, ahora puedes empezar a rechazar (o marcar) automáticamente
el contenido no deseado así:
{
"steps": {
"described": {
"use": ":original",
"robot": "/image/describe",
"provider": "aws",
"format": "meta",
"granularity": "list"
},
"filtered": {
"use": "described",
"robot": "/file/filter",
"declines": [
[ "${file.meta.descriptions}", "includes", [ "Naked", "Sex" ] ]
]
},
"exported": {
"use": "filtered",
"robot": "/s3/store",
"credentials": "YOUR_AWS_CREDENTIALS"
}
}
}
Ahora bien, si solo quisiera permitir fotos de coches para mi sitio web de venta de coches usados, y prefiriera el reconocimiento de imágenes de Google, simplemente cambiaría:
"declines"por"accepts"[ "Naked", "Sex" ]por[ "Car", "Tires" ]"provider": "aws"por"provider": "gcp"
¡Y eso es todo! ✨
Más abajo también tenemos un ejemplo de código completo con nuestro Robot /image/describe, así como enlaces a demos de nuestros Robots /speech/transcribe y /image/facedetect.
¿Qué funciones de IA están planeadas?
Además de los dos Robots lanzados hoy en Tech Preview, nuestros diagramas de Venn nos han mostrado que también deberíamos construir lo siguiente:
- /image/ocr: introducir una imagen y recuperar cualquier texto legible para personas que contuviera, como carteles con nombres o señales de tráfico
- /document/ocr: introducir un PDF y recuperar cualquier texto legible para personas que contuviera, para que los documentos se puedan hacer buscables si aún no lo son
- /text/translate: introducir texto legible para personas y recuperarlo en otro idioma
- /text/speak: introducir texto legible para personas y recuperar un archivo de audio con una grabación de voz sintetizada
¿Echas algo en falta en esta lista? ¡Estaremos encantados de recibir más sugerencias!
¿Y los precios?
Registramos los bytes de entrada y de salida que pasan por estos Robots, y los restamos de tu plan habitual de Transloadit, sin necesidad de suscripciones adicionales. Sí cobramos una tarifa mínima de 1 MB por transacción: si envías una imagen de 100 KB y se devuelve un archivo de texto de 2 KB, aunque eso sume 102 KB, igualmente restamos 1 MB de tu plan. En nuestro plan Pro (10 GB por $49/mes) eso habría costado $0,0049, y en nuestro plan Medium Business, $0,00166. Más información en nuestra página de precios.
¿Y otros proveedores como Microsoft Azure?
Creemos que aquí hay suficiente valor como para empezar a ofrecer esto hoy en Tech Preview. Como abstraemos a los proveedores, no dependemos de una sola oferta. Así que si GCP cierra en 2023 (¡es broma! ¡eso creemos!) o AWS nos sube los precios, hay opciones. Las integraciones siguen siendo las mismas al cambiar de proveedor. De hecho, estamos estudiando añadir también Microsoft Azure a la mezcla.

Y, al igual que somos nosotros quienes impulsamos nuestro Robot de IA /image/facedetect,
cuando en el futuro sea viable ejecutar nosotros mismos una IA de transcripción de alta calidad, es
posible que añadamos un provider: 'transloadit' al Robot
/speech/transcribe, ofrecido a un precio más
bajo.
¿Qué significa «tech preview»?
¡Significa que puedes empezar a usar esta tecnología hoy mismo! Es posible que todavía hagamos cambios en la API y en los precios (aunque no prevemos ninguno más allá de añadir más funciones).
¿Cómo empiezo?
Después de registrarte, elige el lenguaje de programación que prefieras y ¡monta una integración! ¿Suena difícil? Veamos una demo.
<!-- This pulls Uppy from our CDN -->
<!-- For smaller self-hosted bundles, install Uppy and plugins manually: -->
<!-- npm i --save @uppy/core @uppy/dashboard @uppy/remote-sources @uppy/transloadit ... -->
<link
href="https://releases.transloadit.com/uppy/v3.10.0/uppy.min.css"
rel="stylesheet"
/>
<button id="browse">Select Files</button>
<script type="module">
import {
Uppy,
Dashboard,
ImageEditor,
RemoteSources,
Transloadit,
} from 'https://releases.transloadit.com/uppy/v3.10.0/uppy.min.mjs'
const uppy = new Uppy()
.use(Transloadit, {
waitForEncoding: true,
alwaysRunAssembly: true,
assemblyOptions: {
params: {
// It's often better store encoding instructions in your account
// and use a `template_id` instead of adding these steps inline
steps: {
':original': {
robot: '/upload/handle',
},
described: {
use: ':original',
robot: '/image/describe',
result: true,
format: 'meta',
granularity: 'list',
provider: 'aws',
},
filtered: {
use: 'described',
robot: '/file/filter',
result: true,
accepts: [['${file.meta.descriptions}', 'includes', 'Building']],
},
exported: {
use: 'filtered',
robot: '/s3/store',
credentials: 'demo_s3_credentials',
url_prefix: 'https://demos.transloadit.com/',
},
},
},
},
})
.use(Dashboard, { trigger: '#browse' })
.use(ImageEditor, { target: Dashboard })
.use(RemoteSources, {
companionUrl: 'https://api2.transloadit.com/companion',
})
.on('complete', ({ transloadit }) => {
// Due to `waitForEncoding:true` this is fired after encoding is done.
// Alternatively, set `waitForEncoding` to `false` and provide a `notify_url`
console.log(transloadit) // Array of Assembly Statuses
for (const assembly of transloadit) {
console.log(assembly.results) // Array of all encoding results
}
})
.on('error', (error) => {
console.error(error)
})
</script>
Vamos a subir dos fotos, una de las cuales contiene puentes:

Cuando reviso el meta.descriptions de los resultados del Step described, veo:
[ 'Water',
'Outdoors',
'Bridge',
'Building',
'Canal',
'Castle',
'Architecture',
'Fort' ]
https://demos.transloadit.com/53/fae6219071430cb7b794cf9f3513c2/prinsengracht.jpg
Solo se dejan pasar las fotos con 'Building', así que la foto de nuestro camaleón tampoco se habría
guardado en S3 en la ubicación correcta.
En esos casos podrías optar por:
- ignorarlas de forma elegante
- lanzar un error contundente
- enviar las imágenes no reconocidas a un Step de exportación que use un directorio distinto, como
./flagged-for-review/
Aquí tienes más demos de IA relacionadas, con ejemplos de código para todas las plataformas principales:
Documentación
Como estos Robots permanecen en Tech Preview por ahora, todavía podríamos cambiar la implementación, pero ya hemos escrito documentación preliminar:
¡Que te diviertas!
Estaremos encantados de ampliar este artículo, nuestra documentación y el funcionamiento de los Robots según tus comentarios. Solo deja un comentario abajo o en Twitter.
