Prévia técnica: novos Robots de IA para processamento aprimorado de mídia
Nota histórica sobre preços: o plano hoje exibido como Pro se chamava Startup quando este artigo foi publicado. Os preços, as franquias e as promoções abaixo descrevem essa oferta histórica. Consulte os preços atuais para conhecer os planos de hoje.
Temos o prazer de anunciar que estamos lançando uma nova linha de bots de IA em prévia técnica. Já temos um Robot de IA em produção há algum tempo: /image/facedetect. Ele é baseado em software interno e estamos satisfeitos com o desempenho dele. Os bots anunciados hoje, porém, são baseados em serviços de nuvem externos.
É difícil não notar os avanços em IA que as Big Five estão fazendo. Com acesso a uma quantidade virtualmente ilimitada de dados, os modelos podem ser treinados para alcançar uma precisão sem igual. Sentimos que oferecer esses recursos de IA diretamente nos nossos pipelines de codificação poderia agregar um valor enorme para clientes que buscam automatizar ainda mais o processamento de mídia.
Testamos e mapeamos as ofertas de IA do Google Cloud Platform (GCP) e da Amazon Web Services (AWS), e começamos a desenhar diagramas de Venn para identificar funcionalidades em comum.

Nossa ideia era oferecer uma abstração sobre o menor denominador comum. Em outras palavras: com uma
única API, nossos clientes podem conectar, por exemplo, o reconhecimento de imagens de qualquer um
dos provedores e receber respostas uniformes. Bastaria especificar provider: 'aws' ou
provider: 'gcp' para trocar de um provedor para outro.
Por que deixar a Transloadit cuidar disso?
Nem é preciso dizer que a Transloadit não consegue superar nem mesmo igualar os preços dos próprios provedores de IA; portanto, se você precisa processar quantidades enormes de dados, considere integrar diretamente com GCP/AWS.
No entanto, se o seu caso de uso não gira em torno de economizar cada centavo em cada byte, há quatro motivos pelos quais nossos clientes podem querer usar esses serviços de IA em conjunto com a Transloadit:
1. Composição no estilo LEGO
Você pode inserir IA em pipelines de codificação existentes, combinando-a com 97 recursos (Robots) para criar fluxos de trabalho exclusivos para o seu negócio. Tudo isso sem escrever código boilerplate imperativo para juntar todas as partes, o que resultaria em mais peças móveis e pontos de falha.
A Transloadit oferece uma solução integral que pode ser operada com uma única receita JSON determinística. Com vinte linhas de instruções declarativas, você poderia mandar a Transloadit passar um vídeo por estes Robots:
- /speech/transcribe: transformar o vídeo em texto legível por humanos
- /text/translate: traduzir o texto para japonês
- /text/speak: sintetizar o japonês em fala
- /video/merge: mesclar o novo japonês falado como faixa de áudio sobre o vídeo original
Basicamente, agora você fez a Transloadit traduzir um vídeo automaticamente 😄 Provavelmente ainda não está pronto para uso em produção, mas isso mostra como a nossa linha de Assembly pode ser poderosa. Para exemplos de código sobre a nossa composição declarativa, veja mais abaixo.
2. Compare e alterne facilmente entre provedores de IA
Os fornecedores usam notações diferentes para idiomas (ao traduzir), estruturam suas respostas de forma diferente e têm documentações, SDKs, formatos, configurações etc. diferentes.
A Transloadit abstrai tudo isso e aceita entrada uniforme, entregando saída uniforme, seja qual for o provedor.
Depois de usar a Amazon, você pode ver como o Google descreve a mesma imagem sem mudar nada além do
parâmetro provider. Assim, você pode comparar facilmente resultados e latências no seu app para ver o
que melhor atende ao seu caso de uso. E isso pode mudar, é claro. Essas IAs estão constantemente
aprendendo e melhorando na maioria dos casos, mas, se um dos seus próprios clientes tiver um caso
minoritário desfavorável, você poderia oferecer a troca num piscar de olhos.
3. Possivelmente menos fornecedores
Se você estiver em pelo menos uma destas situações (basta uma delas):
- já usando a Transloadit para o seu processamento de mídia
- procurando um recurso de IA, mas também quiser complementá-lo com otimização automática de imagens, codificação ou aproveitar qualquer um dos nossos outros 97 recursos
.. isso poupa você do trabalho de integrar com mais um provedor. Já mencionamos os custos de engenharia associados a muitas peças móveis, mas também há faturamentos diferentes a considerar, acordos de SLA a monitorar e centrais de suporte com que lidar.
4. Sem complicações 💆♀️
Higienizamos e limpamos as entradas automaticamente. Por exemplo, enquanto a AWS aceita qualquer arquivo de áudio para transcrever, dependendo das configurações, o Google vai querer o arquivo no formato PCM com codificação de 16 bits com sinal, 1 canal e little-endian. Com a Transloadit, basta enviar qualquer áudio (ou vídeo!) para nós, e garantimos que ele seja convertido do jeito que o provedor de IA escolhido por você prefere.
Recursos que estamos lançando hoje
Hoje, estamos lançando dois Robots em prévia técnica:

Nosso Robot /image/describe. Envie uma imagem e
receba uma lista dos objetos detectados: Tree, Car, House etc. Podemos retorná-la como arquivo de
texto, arquivo JSON ou passá-la para outro Robot para processamento. Casos de uso comuns
incluem sinalizar automaticamente conteúdo (in)adequado, fornecer legendas alt para imagens e/ou
tornar imagens pesquisáveis.

Nosso Robot /speech/transcribe. Envie uma gravação de áudio ou vídeo e receba texto legível por humanos. Podemos retorná-lo como arquivo de texto, arquivo JSON ou passá-lo para outro Robot para processamento. Casos de uso comuns incluem legendagem automática ou tornar áudio/vídeo pesquisável.
Estamos lançando os dois em conjunto com uma atualização em:

Nosso Robot /file/filter. Passe para ele um arquivo
e critérios, e este Robot atua como um porteiro, opcionalmente deixando os arquivos
seguirem para outro Step, como a exportação. Nós o alteramos para que agora ele
também aceite um operador includes.
Com o operador includes recém-adicionado, agora você pode começar a rejeitar (ou sinalizar)
automaticamente conteúdo indesejado assim:
{
"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"
}
}
}
Agora, se eu quisesse permitir apenas fotos de carros no meu site de venda de carros usados e preferisse o reconhecimento de imagens do Google, bastaria mudar:
"declines"para"accepts"[ "Naked", "Sex" ]para[ "Car", "Tires" ]"provider": "aws"para"provider": "gcp"
E pronto! ✨
Também temos um exemplo de código completo com o nosso Robot /image/describe mais abaixo, além de links para demonstrações dos nossos Robots /speech/transcribe e /image/facedetect.
Quais recursos de IA estão planejados?
Além dos dois Robots lançados hoje em prévia técnica, nossos diagramas de Venn nos mostraram que também deveríamos construir o seguinte:
- /image/ocr: envie uma imagem e receba de volta qualquer texto legível por humanos que ela contenha, como placas com nomes ou de trânsito
- /document/ocr: envie um PDF e receba de volta qualquer texto legível por humanos que ele contenha, para que os documentos possam se tornar pesquisáveis caso ainda não sejam
- /text/translate: envie texto legível por humanos e receba-o de volta em outro idioma
- /text/speak: envie texto legível por humanos e receba de volta um arquivo de áudio com uma gravação de fala sintetizada
Sentiu falta de algo nesta lista? Ficaremos felizes em receber mais sugestões!
E os preços?
Contabilizamos os bytes de entrada e saída que passam por esses Robots e descontamos esse volume do seu plano regular da Transloadit, sem necessidade de assinaturas extras. Cobramos uma tarifa mínima de 1 MB por transação: se você enviar uma imagem de 100 KB e um arquivo de texto de 2 KB for retornado, mesmo que isso some 102 KB, ainda descontamos 1 MB do seu plano. No nosso plano Pro (10 GB por $49/mês), isso teria custado $0,0049; no nosso plano Medium Business, $0,00166. Mais informações na nossa página de preços.
E quanto a outros provedores, como o Microsoft Azure?
Achamos que já há valor suficiente aqui para começar a oferecer isso como prévia técnica hoje. Como abstraímos os provedores, não dependemos de uma única oferta. Então, caso o GCP seja desativado em 2023 (brincadeira! pelo menos é o que pensamos!) ou a AWS aumente os preços para nós, há opções. As integrações continuam as mesmas ao trocar de provedor. Na verdade, também estamos estudando adicionar o Microsoft Azure à mistura.

E, assim como nós mesmos executamos o nosso Robot de IA
/image/facedetect, quando no futuro se tornar viável executarmos nós
mesmos uma IA de transcrição de alta qualidade, talvez você nos veja adicionar a opção
provider: 'transloadit', oferecida a um preço menor, ao Robot
/speech/transcribe.
O que significa “prévia técnica”?
Significa que você pode começar a usar essa tecnologia hoje! Ainda podemos fazer mudanças na API e nos preços (mas não prevemos nenhuma além de adicionar mais recursos).
Como eu começo?
Depois de se cadastrar, escolha a linguagem de programação de sua preferência e mãos à obra na integração! Parece difícil? Vamos ver uma demonstração.
<!-- 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>
Estamos fazendo upload de duas fotos, uma das quais contém pontes:

Quando verifico o meta.descriptions dos resultados do Step described, vejo:
[ 'Water',
'Outdoors',
'Bridge',
'Building',
'Canal',
'Castle',
'Architecture',
'Fort' ]
https://demos.transloadit.com/53/fae6219071430cb7b794cf9f3513c2/prinsengracht.jpg
Somente fotos com 'Building' passam pelo filtro, então a foto do nosso camaleão também não teria sido
salva no S3 no local adequado.
Nesses casos, você pode optar por:
- ignorar de forma elegante
- gerar um erro definitivo
- encaminhar imagens não reconhecidas para um Step de exportação que use um
diretório diferente, como
./flagged-for-review/
Aqui estão mais demonstrações de IA relacionadas, com exemplos de código para todas as principais plataformas:
Inteligência artificial
Reconhecer e rejeitar determinados objetos em imagens
(English)Inteligência artificial
Transcrever a fala em arquivos de áudio ou vídeo
(English)Inteligência artificial
Detectar rostos em imagens
(English)Documentação
Como esses Robots continuam em prévia técnica por enquanto, ainda podemos mudar a implementação, mas já escrevemos uma documentação preliminar:
Divirta-se!
Ficaremos felizes em expandir este post, nossa documentação e o funcionamento dos bots com base no seu feedback. É só deixar um comentário abaixo ou no Twitter.
