Tech preview : nouveaux Robots IA pour mieux traiter les médias
Note historique sur les tarifs : le forfait aujourd’hui affiché sous le nom Pro s’appelait Startup lors de la publication de cet article. Les prix, quotas et promotions ci-dessous décrivent cette offre historique. Consultez les tarifs actuels pour les forfaits d’aujourd’hui.
Nous sommes heureux d’annoncer le lancement d’une nouvelle gamme de bots IA en Tech Preview. Nous avons déjà un Robot IA en production depuis un certain temps : /image/facedetect. Il s’appuie sur un logiciel interne et ses performances nous satisfont. Les bots annoncés aujourd’hui reposent en revanche sur des services cloud externes.
Impossible de passer à côté des progrès en IA réalisés par les Big Five. Avec un accès à une quantité de données quasi illimitée, les modèles peuvent être entraînés pour atteindre une précision inégalée. Nous avons pensé que proposer ces capacités d’IA directement au sein de nos pipelines d’encodage pourrait apporter une valeur considérable aux clients qui cherchent à automatiser davantage le traitement de leurs médias.
Nous avons testé et cartographié les offres d’IA de Google Cloud Platform (GCP) et d’Amazon Web Services (AWS), puis commencé à dessiner des diagrammes de Venn pour repérer les fonctionnalités communes.

Notre idée était de proposer une abstraction fondée sur le plus petit dénominateur commun. Autrement
dit : avec une seule API, nos clients peuvent brancher, par exemple, la reconnaissance d’images de
l’un ou l’autre fournisseur et obtenir des réponses uniformes. Il suffirait de spécifier
provider: 'aws' ou provider: 'gcp' pour passer d’un fournisseur à
l’autre.
Pourquoi confier cette intégration à Transloadit ?
Il va sans dire que Transloadit ne peut pas battre, ni même égaler, les tarifs des fournisseurs d’IA eux-mêmes. Si vous devez traiter des volumes massifs de données, envisagez donc une intégration directe avec GCP/AWS.
Cependant, si votre cas d’usage ne consiste pas à économiser chaque centime sur chaque octet, voici quatre raisons pour lesquelles nos clients peuvent vouloir utiliser ces services d’IA conjointement avec Transloadit :
1. Une composabilité façon LEGO
Vous pouvez intégrer l’IA dans des pipelines d’encodage existants et la combiner avec 97 fonctionnalités (Robots) pour créer des flux de travail propres à votre entreprise. Tout cela sans écrire de code impératif répétitif pour assembler le tout, ce qui multiplierait les pièces mobiles et les points de défaillance.
Transloadit propose une solution intégrée que l’on peut piloter avec une seule recette JSON déterministe. Avec vingt lignes d’instructions déclaratives, vous pourriez demander à Transloadit de faire passer une vidéo par ces Robots :
- /speech/transcribe : transformer la vidéo en texte lisible
- /text/translate : traduire le texte en japonais
- /text/speak : synthétiser le japonais sous forme de voix
- /video/merge : fusionner le nouveau japonais parlé, en tant que piste audio, avec la vidéo d’origine
En somme, vous venez de faire traduire automatiquement une vidéo par Transloadit 😄 Ce n’est probablement pas encore prêt pour une utilisation en production, mais cela illustre bien la puissance de notre chaîne d’Assembly. Pour des exemples de code autour de notre composabilité déclarative, consultez la suite de l’article.
2. Comparer facilement les fournisseurs d’IA et passer de l’un à l’autre
Les fournisseurs utilisent des notations différentes pour les langues (lors des traductions), structurent leurs réponses différemment et proposent des documentations, SDK, formats, réglages, etc. différents.
Transloadit fait abstraction de tout cela : il accepte des entrées uniformes et renvoie des sorties uniformes, quel que soit le fournisseur.
Après avoir utilisé Amazon, vous pouvez voir comment Google décrit la même image en ne modifiant que
le paramètre provider. Vous pouvez ainsi comparer facilement les résultats et
les latences dans votre application, pour voir ce qui convient le mieux à votre cas d’usage. Et cela
peut bien sûr évoluer. Ces IA apprennent et s’améliorent constamment pour la majorité des cas, mais
si l’un de vos propres clients se trouve dans un cas minoritaire malchanceux, vous pourriez lui
proposer de changer de fournisseur en un clin d’œil.
3. Réduire éventuellement le nombre de fournisseurs
Si vous :
- utilisez déjà Transloadit pour le traitement de vos médias
- cherchez une fonctionnalité d’IA, mais souhaitez aussi la compléter par une optimisation d’images automatisée, de l’encodage, ou tirer parti de l’une de nos autres 97 fonctionnalités
… cela vous évite de devoir intégrer encore un autre fournisseur. Nous avons déjà évoqué les coûts d’ingénierie liés à la multiplication des pièces mobiles, mais il faut aussi tenir compte de facturations différentes, de SLA à surveiller et de services d’assistance à gérer.
4. Sans tracas 💆♀️
Nous nettoyons et préparons automatiquement les entrées. Par exemple, alors qu’AWS accepte n’importe quel fichier audio à transcrire, Google exigera, selon les réglages, le format PCM avec un encodage 16 bits signé, 1 canal, little-endian. Avec Transloadit, il vous suffit de nous envoyer n’importe quel fichier audio (ou vidéo !), et nous veillerons à ce qu’il soit converti dans le format que préfère le fournisseur d’IA que vous avez choisi.
Fonctionnalités lancées aujourd’hui
Aujourd’hui, nous lançons deux Robots en Tech Preview :

Notre Robot /image/describe.
Envoyez-lui une image et récupérez la liste des objets détectés : Tree,
Car, House, etc. Nous pouvons la renvoyer sous
forme de fichier texte ou de fichier JSON, ou la transmettre à un autre
Robot pour traitement. Parmi les cas d’usage courants
figurent le signalement automatique de contenus (in)appropriés, la génération de légendes
alt pour les images et/ou la possibilité de rechercher des images.

Notre Robot /speech/transcribe. Envoyez-lui un enregistrement audio ou vidéo et récupérez du texte lisible. Nous pouvons le renvoyer sous forme de fichier texte ou de fichier JSON, ou le transmettre à un autre Robot pour traitement. Parmi les cas d’usage courants figurent le sous-titrage automatisé et la possibilité de rechercher dans l’audio ou la vidéo.
Nous les lançons parallèlement à une mise à niveau de :

Notre Robot /file/filter.
Fournissez-lui un fichier et des critères : ce Robot joue le
rôle de gardien et peut, si vous le souhaitez, transmettre les fichiers à un autre
Step, comme un export. Nous l’avons modifié pour qu’il
accepte désormais aussi un opérateur includes.
Grâce au nouvel opérateur includes, vous pouvez désormais commencer à rejeter
(ou signaler) automatiquement les contenus indésirables, comme ceci :
{
"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"
}
}
}
Maintenant, si je voulais n’autoriser que des photos de voitures sur mon site de vente de voitures d’occasion, et que je préférais la reconnaissance d’images de Google, il me suffirait de remplacer :
"declines"par"accepts"[ "Naked", "Sex" ]par[ "Car", "Tires" ]"provider": "aws"par"provider": "gcp"
Et c’est tout ! ✨
Vous trouverez également plus bas un exemple de code complet utilisant notre Robot /image/describe, ainsi que des liens vers des démos de nos Robots /speech/transcribe et /image/facedetect.
Quelles fonctionnalités d’IA sont prévues ?
Outre les deux Robots lancés aujourd’hui en Tech Preview, nos diagrammes de Venn nous ont montré que nous devrions également développer les suivants :
- /image/ocr : envoyez une image et récupérez tout texte lisible qu’elle contenait, comme celui de plaques nominatives ou de panneaux de signalisation
- /document/ocr : envoyez un PDF et récupérez tout texte lisible qu’il contenait, afin de rendre les documents consultables par recherche s’ils ne le sont pas déjà
- /text/translate : envoyez du texte lisible et récupérez-le dans une autre langue
- /text/speak : envoyez du texte lisible et récupérez un fichier audio contenant un enregistrement de synthèse vocale
Il manque quelque chose dans cette liste ? Nous accueillons volontiers d’autres suggestions !
Et la tarification ?
Nous comptabilisons les octets en entrée et en sortie qui passent par ces Robots et les déduisons de votre forfait Transloadit habituel : aucun abonnement supplémentaire n’est nécessaire. Nous facturons toutefois un minimum de 1 MB par transaction : si vous envoyez une image de 100 KB et qu’un fichier texte de 2 KB est renvoyé, même si cela totalise 102 KB, nous déduisons tout de même 1 MB de votre forfait. Sur notre forfait Pro (10 GB pour 49 $/mois), cela aurait coûté 0,0049 $ ; sur notre forfait Medium Business, 0,00166 $. Plus d’informations sur notre page Tarifs.
Et les autres fournisseurs, comme Microsoft Azure ?
Nous estimons que cela apporte déjà suffisamment de valeur pour le proposer dès aujourd’hui en Tech Preview. Comme nous faisons abstraction des fournisseurs, nous ne dépendons pas d’une offre unique. Ainsi, si GCP devait fermer en 2023 (on plaisante ! Enfin, on croit !) ou si AWS augmentait ses prix, nous aurions des alternatives. Les intégrations restent identiques lorsque vous changez de fournisseur. D’ailleurs, nous envisageons également d’ajouter Microsoft Azure à la liste.

Et tout comme nous faisons fonctionner nous-mêmes notre Robot
IA /image/facedetect, lorsqu’il deviendra possible à l’avenir
d’exécuter nous-mêmes une IA de transcription de haute qualité, il se peut que nous ajoutions
l’option provider: 'transloadit', qui serait proposée à un prix inférieur, au
Robot /speech/transcribe.
Que signifie « tech preview » ?
Cela signifie que vous pouvez commencer à utiliser cette technologie dès aujourd’hui ! Nous pourrions encore apporter des modifications à l’API et à la tarification (mais nous n’en prévoyons pas, hormis l’ajout de nouvelles fonctionnalités).
Comment démarrer ?
Après votre inscription, choisissez le langage de programmation de votre choix et lancez-vous dans une intégration ! Ça vous semble difficile ? Regardons une démo.
<!-- 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>
Nous envoyons deux photos, dont l’une contient des ponts :

Lorsque je consulte meta.descriptions dans les résultats du
Step described, je vois :
[ 'Water',
'Outdoors',
'Bridge',
'Building',
'Canal',
'Castle',
'Architecture',
'Fort' ]
https://demos.transloadit.com/53/fae6219071430cb7b794cf9f3513c2/prinsengracht.jpg
Seules les photos avec 'Building' sont autorisées à passer ; la photo de notre
caméléon n’aurait donc pas non plus été enregistrée sur S3 à l’emplacement prévu.
Dans de tels cas, vous pourriez choisir de :
- l’ignorer discrètement
- déclencher une erreur bloquante
- rediriger les images non reconnues vers un Step
d’export qui utilise un autre répertoire, comme
./flagged-for-review/
Voici d’autres démos d’IA associées, avec des exemples de code pour toutes les principales plateformes :
Intelligence artificielle
Reconnaître et rejeter certains objets dans les images
(English)Intelligence artificielle
Transcrire la parole dans des fichiers audio ou vidéo
(English)Intelligence artificielle
Détecter les visages dans les images
(English)Documentation
Comme ces Robots restent pour l’instant en Tech Preview, nous pourrions encore en modifier l’implémentation, mais nous avons déjà rédigé une documentation préliminaire :
Amusez-vous bien !
Nous serons ravis d’enrichir cet article, notre documentation et le fonctionnement des bots en fonction de vos retours. Laissez simplement un commentaire ci-dessous ou sur Twitter.
