
Transcrição em lote para projetos grandes: o manual de 2026
Summarize this article with:
Executar transcrição em lote em escala exige um pipeline orientado por manifesto, e não apenas um laço for chamando uma API. Este guia cobre o fluxo de trabalho completo para trabalhos em escala de acervo: organização de arquivos, padrões de envio à API, concorrência e limites de taxa, novas tentativas com backoff exponencial, amostragem de controle de qualidade e comparação de custos entre Deepgram, AssemblyAI, AWS Transcribe e OpenAI Whisper. O princípio de piloto antes do lote completo economiza mais tempo do que qualquer outro hábito isolado.
Um acervo de 1.000 arquivos não é um problema de interface. No momento em que um projeto ultrapassa cerca de 50 horas de áudio, a pergunta deixa de ser "qual ferramenta usar" e passa a ser "como executar este pipeline sem perder o controle do que falhou."

Este post é sobre construir esse pipeline. Vamos cobrir organização de arquivos, padrões de envio à API, paralelismo, limites de taxa, tratamento de falhas, amostragem de controle de qualidade, convenções de nomenclatura e cálculo de custos nas principais APIs. Os padrões se aplicam quer você esteja migrando o catálogo antigo de um podcast, processando entrevistas de pesquisa ou arquivando depoimentos.
Antes de escrever uma única chamada de API: o manifesto
O maior custo oculto em qualquer lote grande é o trabalho de reconstrução: descobrir quais arquivos rodaram, quais falharam e quais saídas pertencem a qual fonte depois que o trabalho se arrasta por horas ou dias.
Um manifesto CSV escrito antes do envio elimina esse custo. As colunas que importam:
| Coluna | Observações |
|---|---|
file_id | Slug estável, não o nome bruto do arquivo (nomes de arquivo mudam) |
source_path | Caminho absoluto ou URL de armazenamento |
duration_sec | Preencha antecipadamente se puder; ajuda a estimar o custo |
language | Defina explicitamente; não dependa da detecção automática em escala |
status | pending / submitted / completed / failed |
job_id | Retornado pela API no envio |
output_path | Onde a transcrição foi salva |
error | Mensagem ou código de erro se o status for failed |
reviewed | Sinalizador de CQ: vazio / pass / needs-review |
Atualize o manifesto no próprio arquivo enquanto o lote roda. Um script Python que lê o manifesto, pula as linhas completed, envia as linhas pending e faz polling das linhas submitted é idempotente por construção. Reinicie-o com segurança a qualquer momento.
Estrutura de diretórios que escala
/batch-project/
manifest.csv
source/
2024-Q1/
interview-001-smith-2024-03-12.mp3
interview-002-jones-2024-03-14.mp3
2024-Q2/
...
transcripts/
2024-Q1/
interview-001-smith-2024-03-12.txt
interview-001-smith-2024-03-12.srt
interview-001-smith-2024-03-12.json
...
O padrão de nomenclatura {id}-{speaker}-{date}.{ext} torna possível reconstruir o manifesto a partir do sistema de arquivos se algo der errado. Evite espaços nos nomes de arquivo: eles quebram URLs não assinadas na maioria dos sistemas de armazenamento.
Escolhendo a API certa
Para projetos em lote, três fatores determinam qual API escolher: custo por minuto, teto de requisições simultâneas e se você precisa de diarização de falantes ou vocabulário de domínio. Veja como estão os preços atuais, verificados nas páginas dos fornecedores no início de julho de 2026.
| Fornecedor | Modelo | Preço base | Com diarização | Limite de concorrência |
|---|---|---|---|---|
| AssemblyAI | Universal-2 | US$ 0,15/hora | US$ 0,17/hora | 200 trabalhos |
| AssemblyAI | Universal-3.5 Pro | US$ 0,21/hora | US$ 0,23/hora | 200 trabalhos |
| Deepgram | Nova-3 Monolingual | US$ 0,46/hora | US$ 0,58/hora | 50 requisições |
| Deepgram | Nova-3 Multilingual | US$ 0,55/hora | US$ 0,67/hora | 50 requisições |
| AWS Transcribe | Standard (Leste dos EUA) | US$ 0,36/hora | N/D integrado | Varia conforme a conta |
| OpenAI | GPT-4o-mini-transcribe | US$ 0,18/hora | N/D | Por nível de limite de taxa |
A AssemblyAI é a líder em custo para volume bruto de transcrição. A Deepgram Nova-3 custa mais, mas mostra desempenho forte em áudio ruidoso com vários falantes e oferece keyterm prompting para vocabulário de domínio. A AWS Transcribe cobra em incrementos de um segundo com um mínimo de 15 segundos por requisição; esse mínimo infla os custos efetivos quando seu acervo tem muitos clipes curtos.
Para um acervo de 1.000 horas usando AssemblyAI Universal-2 com diarização, espere gastar cerca de US$ 170. O mesmo trabalho na Deepgram Nova-3 com diarização sai por volta de US$ 580. Ambas superam a transcrição humana em áudio limpo por uma ordem de magnitude.
Consulte comparação de preços de transcrição 2026 e custo da transcrição por hora para análises mais detalhadas.
Padrões de envio: URL vs upload
Use envio por URL para arquivos que já estão em armazenamento na nuvem. A API baixa o arquivo de uma URL assinada; você nunca reenvia gigabytes de áudio pela sua conexão. A maioria dos sistemas de armazenamento (S3, R2, GCS) gera URLs assinadas com uma chamada de SDK direta.
Use upload multipart direto apenas para arquivos que estão localmente e não serão armazenados em outro lugar. Em escala, o custo de banda e de tempo dos uploads locais para a API se acumula rápido.
O loop de envio
O padrão básico em Python, escrito para poder ser reiniciado:
import csv
import time
import requests
API_KEY = "your_api_key"
BASE_URL = "https://api.assemblyai.com/v2"
def submit_job(url, language="en"):
resp = requests.post(
f"{BASE_URL}/transcript",
headers={"authorization": API_KEY},
json={
"audio_url": url,
"language_code": language,
"speaker_labels": True,
},
)
resp.raise_for_status()
return resp.json()["id"]
def poll_job(job_id, timeout=600):
deadline = time.time() + timeout
while time.time() < deadline:
resp = requests.get(
f"{BASE_URL}/transcript/{job_id}",
headers={"authorization": API_KEY},
)
data = resp.json()
if data["status"] == "completed":
return data
if data["status"] == "error":
raise RuntimeError(data.get("error", "unknown"))
time.sleep(15)
raise TimeoutError(f"Job {job_id} did not complete in {timeout}s")
Para um lote de 1.000 arquivos, não faça polling de forma síncrona em uma única thread. Envie uma janela de trabalhos, colete os IDs e, então, faça polling de forma concorrente, ou passe a usar webhooks assim que seu endpoint estiver estável.
Paralelismo e limites de taxa
Limitando a taxa do loop de envio
Mesmo com tetos altos de concorrência, enviar todas as 1.000 requisições em 30 segundos vai disparar limites de taxa na maioria dos provedores. Um semáforo mantém você dentro dos limites:
import asyncio
import aiohttp
CONCURRENCY = 50 # Stay under provider ceiling
async def submit_all(manifest_rows):
sem = asyncio.Semaphore(CONCURRENCY)
async with aiohttp.ClientSession() as session:
tasks = [submit_with_sem(sem, session, row) for row in manifest_rows]
return await asyncio.gather(*tasks, return_exceptions=True)
Adicione uma pequena pausa entre os envios (10-50ms) se você vir respostas 429 durante a rajada inicial.
Se você precisar do trade-off entre webhook e polling detalhado para sistemas de produção, aquele post cobre a árvore de decisão.
Tratamento de falhas
Tratamento de idiomas em lotes multilíngues
Vocabulário personalizado: vale configurar primeiro
Controle de qualidade: amostre antes de dar por concluído
A tentação em um lote de 1.000 arquivos é aceitar todas as transcrições como prontas. A etapa de amostragem e revisão toma de 5 a 10 por cento do tempo do projeto e captura os problemas sistêmicos que, de outra forma, se propagariam para todos os usos posteriores das transcrições.
O que amostrar
Puxe uma amostra aleatória de 5 por cento das transcrições concluídas. Inclua pelo menos um arquivo de cada tipo principal de fonte presente no lote (ambientes de gravação diferentes, falantes diferentes, equipamentos diferentes).
Ouça segmentos de 2 minutos de cada arquivo amostrado enquanto lê a transcrição. Sinalize:
- Identificação errada consistente de um termo recorrente (adicione-o à lista de vocabulário e reprocesse os arquivos afetados)
- Atribuição de falante incorreta em arquivos com múltiplos falantes (verifique se a diarização estava ativada; verifique a qualidade do áudio)
- Trechos em que a confiança caiu (geralmente correlaciona com ruído de fundo ou fala sobreposta)
Verificações pontuais em arquivos críticos
Alguns arquivos importam mais que outros. A entrevista âncora de um projeto de pesquisa. O depoimento principal de um acervo jurídico. O episódio inaugural de um podcast. Separe esses para uma revisão mais detalhada, independentemente do que a amostra indicar. Pontuações de confiança de IA não correspondem perfeitamente a "este arquivo era importante."
Limiares de confiança como sinal, não como barreira
Alguns provedores retornam pontuações de confiança no nível da palavra na resposta JSON. Marque como candidatas à revisão humana as transcrições em que a confiança média fica abaixo de cerca de 0,80, mas não as descarte automaticamente. Confiança baixa em áudio limpo geralmente significa que o vocabulário de domínio é desconhecido. Confiança baixa em áudio ruidoso geralmente significa que o áudio precisa ser regravado ou que o arquivo está perdido.
Cálculo de custos para tamanhos comuns de projeto
| Projeto | Horas | Melhor API | Custo estimado |
|---|---|---|---|
| Entrevistas de pesquisa | 200 horas | AssemblyAI Universal-2 + diarização | ~US$ 34 |
| Catálogo antigo de podcast | 1.000 horas | AssemblyAI Universal-2 | ~US$ 150 |
| Acervo jurídico | 500 horas | Deepgram Nova-3 + keyterms | ~US$ 270 |
| Migração de acervo legado | 5.000 horas | AssemblyAI Universal-2 | ~US$ 750 |
O plano Pro da CATT, a US$ 9,99/mês, funciona bem para volumes mensais recorrentes abaixo de cerca de 100 horas. Para migrações grandes pontuais, o preço por uso da API é mais flexível: você paga pelo que executa, sem compromisso mensal.
Consulte preços de transcrição ilimitada vs por uso para a análise de ponto de equilíbrio. Se você está construindo um produto que chama essas APIs em nome dos usuários, otimização de custo de chamadas à API de transcrição e cache de resultados de transcrição cobrem as duas alavancas de maior impacto.
Se você só precisa transcrever arquivos sem construir um pipeline, seja um lote pontual ou uma entrega rápida em um único projeto, o ConvertAudioToText processa fontes de áudio, vídeo e URL sem nenhuma configuração em /tools/audio-to-text.
Pós-processamento da transcrição por tipo de projeto
Uma vez que as transcrições existem, o trabalho posterior é específico de cada projeto:
Projetos de pesquisa: Modelagem de tópicos sobre os turnos de fala dos participantes, codificação temática no MAXQDA ou NVivo, extração de citações para bases de dados de citações. A saída JSON da maioria das APIs inclui marcações de tempo no nível da palavra, o que facilita reconstruir citações com marcação de tempo.
Acervos de mídia: Construção de índice de busca (Elasticsearch ou Meilisearch funcionam bem), enriquecimento de metadados, sumarização no nível do episódio via uma passada de LLM sobre cada transcrição.
Acervos jurídicos: Indexação por palavras-chave, fluxo de trabalho de revisão de privilégios, extração de citações. Vocabulário personalizado se paga muitas vezes aqui: nomes de casos e referências a leis precisam ser exatos.
Produção de conteúdo: Reaproveitamento de transcrições em artigos, newsletters e posts para redes sociais. Consulte como transcrever gravações de entrevistas para o fluxo editorial.
A ordem certa de construção
Para qualquer novo projeto em lote, esta sequência economiza mais tempo:
- Defina a convenção de nomenclatura e a estrutura de diretórios.
- Monte ou preencha o manifesto CSV.
- Escreva o script de envio com leitura/gravação do manifesto.
- Rode um piloto de 10 arquivos. Revise a saída.
- Corrija qualquer problema encontrado no piloto (vocabulário, configurações de idioma, problemas de formato).
- Rode o lote completo.
- Amostre e revise 5 por cento.
- Reprocesse a fila de falhas.
- Entregue ao processamento posterior.
Minha opinião: a etapa do piloto é o item mais importante desta lista. Detectar um problema de fluxo de trabalho com 10 arquivos é barato. Detectá-lo no arquivo 800, depois que a execução já custou dinheiro e tempo de verdade, é caro. Os 10 arquivos também lhe dão uma amostra real de precisão para mostrar aos stakeholders antes de se comprometer com o trabalho completo.
FAQ
Quantos arquivos posso enviar em paralelo às APIs de transcrição?
A AssemblyAI processa até 200 trabalhos simultaneamente por padrão. O endpoint pré-gravado da Deepgram permite até 50 requisições simultâneas nos planos Pay As You Go e Growth. Ambos os limites são no nível do projeto. Fale com o comercial para solicitar limites maiores para trabalho contínuo de grande volume.
Qual é a taxa de falha normal em uma primeira passada de lote?
Espere que 3 a 5 por cento dos arquivos falhem na primeira passada. Uma nova tentativa com backoff exponencial normalmente resolve 60 a 80 por cento dessas falhas. As falhas restantes geralmente têm uma causa raiz: áudio de origem corrompido, um codec não suportado ou um arquivo verdadeiramente silencioso. O manifesto permite fazer a triagem delas sem reprocessar os arquivos bem-sucedidos.
Devo usar webhooks ou polling para acompanhar o status dos trabalhos em lote?
Para lotes com menos de algumas centenas de arquivos, o polling com intervalo de 15 a 30 segundos é simples e eficaz. Para lotes na casa dos milhares, os webhooks eliminam a sobrecarga repetida de HTTP e reduzem a chance de perder um trabalho concluído. A contrapartida: webhooks exigem um endpoint público estável, o que adiciona infraestrutura. Consulte o post webhook vs polling para transcrições para a árvore de decisão.
Como lidar com um acervo com idiomas mistos?
Ou classifique previamente o idioma de cada arquivo antes do envio (uma passada leve de identificação de idioma resolve), ou use um modelo multilíngue que cubra todos os seus idiomas em uma única camada de modelo. A AssemblyAI Universal-2 cobre 99 idiomas. A Deepgram Nova-3 Multilingual cobre mais de 30. Definir o idioma explicitamente no envio é sempre mais rápido e
Try transcription free
Convert any audio or video to clean, unwatermarked text — speaker labels, timestamps, and AI summaries included. First 10 minutes free, no account.
Related Articles
How to Add Timestamps to a Transcript
Learn how to add timestamps to a transcript with an audio-to-text tool, then export timestamped SRT or VTT subtitle files for easy navigation and editing.
How to Transcribe a Conference Talk to Text
Learn how to transcribe a conference talk or keynote to text, label speakers, and export SRT, VTT, or TXT using a straightforward upload or URL workflow.