
Transcription par lots pour les grands projets : le playbook 2026
Summarize this article with:
Exécuter une transcription par lots à grande échelle exige un pipeline piloté par manifeste, pas seulement une boucle for appelant une API. Ce guide couvre le flux complet pour les travaux à l’échelle d’une archive : organisation des fichiers, modèles de soumission aux API, simultanéité et limites de débit, nouvelles tentatives avec backoff exponentiel, échantillonnage QC et comparaison des coûts entre Deepgram, AssemblyAI, AWS Transcribe et OpenAI Whisper. Le principe du pilote avant le lot complet fait gagner plus de temps que toute autre habitude.
Un fonds de 1 000 fichiers n’est pas un problème d’interface. Dès qu’un projet dépasse environ 50 heures d’audio, la question n’est plus « quel outil utiliser » mais « comment exécuter ce pipeline sans perdre la trace de ce qui a échoué ».

Cet article explique comment construire ce pipeline. Nous aborderons l’organisation des fichiers, les modèles de soumission aux API, le parallélisme, les limites de débit, la gestion des échecs, l’échantillonnage pour le contrôle qualité, les conventions de nommage et le calcul des coûts sur les principales API. Ces modèles s’appliquent que vous migriez un catalogue de podcasts, traitiez des entretiens de recherche ou archiviez des dépositions.
Avant d’écrire un seul appel d’API : le manifeste
Le coût caché le plus important dans tout traitement par lots volumineux est le travail de reconstruction, c’est-à-dire déterminer quels fichiers ont été traités, lesquels ont échoué et quelles sorties correspondent à quelles sources après que le travail s’est étalé sur des heures ou des jours.
Un manifeste CSV rédigé avant la soumission élimine ce coût. Les colonnes qui comptent :
| Colonne | Remarques |
|---|---|
file_id | Identifiant stable, pas le nom de fichier brut (les noms changent) |
source_path | Chemin absolu ou URL de stockage |
duration_sec | Préremplissez si possible ; aide à estimer le coût |
language | Définissez explicitement ; ne comptez pas sur la détection automatique à grande échelle |
status | pending / submitted / completed / failed |
job_id | Renvoyé par l’API à la soumission |
output_path | Là où la transcription a été enregistrée |
error | Message d’erreur ou code si le statut est failed |
reviewed | Indicateur de contrôle qualité : vide / pass / needs-review |
Mettez à jour le manifeste en place pendant l’exécution du lot. Un script Python qui lit le manifeste, ignore les lignes completed, soumet les lignes pending et interroge les lignes submitted est idempotent par construction. Vous pouvez le redémarrer en toute sécurité à tout moment.
Une structure de dossiers qui passe à l’échelle
/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
...
Le modèle de nommage {id}-{speaker}-{date}.{ext} permet de reconstruire le manifeste à partir du système de fichiers en cas de problème. Évitez les espaces dans les noms de fichiers : ils cassent les URL non signées dans la plupart des systèmes de stockage.
Choisir la bonne API
Pour les projets par lots, trois facteurs déterminent le choix de l’API : le coût à la minute, le plafond de requêtes simultanées et la nécessité de la diarisation des locuteurs ou d’un vocabulaire métier. Voici la tarification actuelle, vérifiée sur les pages des fournisseurs début juillet 2026.
| Fournisseur | Modèle | Tarif de base | Avec diarisation | Limite de simultanéité |
|---|---|---|---|---|
| AssemblyAI | Universal-2 | $0.15/hr | $0.17/hr | 200 travaux |
| AssemblyAI | Universal-3.5 Pro | $0.21/hr | $0.23/hr | 200 travaux |
| Deepgram | Nova-3 Monolingual | $0.46/hr | $0.58/hr | 50 requêtes |
| Deepgram | Nova-3 Multilingual | $0.55/hr | $0.67/hr | 50 requêtes |
| AWS Transcribe | Standard (US East) | $0.36/hr | N/A intégré | Varie selon le compte |
| OpenAI | GPT-4o-mini-transcribe | $0.18/hr | N/A | Selon le palier de limite de débit |
AssemblyAI est le plus économique pour le volume brut de transcription. Deepgram Nova-3 coûte plus cher, mais offre de bonnes performances sur l’audio multi-locuteurs bruité et propose l’incitation par termes clés pour le vocabulaire métier. AWS Transcribe facture par incréments d’une seconde avec un minimum de 15 secondes par requête ; ce minimum gonfle les coûts effectifs lorsque votre fonds contient de nombreux clips courts.
Pour un fonds de 1 000 heures traité avec AssemblyAI Universal-2 avec diarisation, comptez environ 170 $. Le même travail sur Deepgram Nova-3 avec diarisation revient à environ 580 $. Les deux battent la transcription humaine sur audio clair d’un ordre de grandeur.
Consultez comparaison des prix de la transcription 2026 et coût de la transcription par heure pour des analyses plus détaillées.
Modes de soumission : URL ou envoi direct
Utilisez la soumission par URL pour les fichiers déjà dans le stockage cloud. L’API télécharge depuis une URL signée ; vous n’avez jamais à renvoyer des gigaoctets d’audio via votre connexion. La plupart des systèmes de stockage (S3, R2, GCS) génèrent des URL signées avec un simple appel SDK.
N’utilisez l’envoi direct multipart que pour les fichiers qui restent en local et ne seront pas stockés ailleurs. À grande échelle, le coût en bande passante et en temps des envois locaux vers l’API augmente rapidement.
La boucle de soumission
Le modèle Python de base, écrit pour être redémarrable :
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")
Pour un lot de 1 000 fichiers, n’interrogez pas de manière synchrone dans un seul thread. Soumettez une fenêtre de travaux, collectez les identifiants, puis interrogez simultanément, ou passez aux webhooks une fois votre endpoint stable.
Parallélisme et limites de débit
Limiter la boucle de soumission
Même avec des plafonds de simultanéité élevés, soumettre les 1 000 requêtes en 30 secondes déclenchera des limites de débit chez la plupart des fournisseurs. Un sémaphore vous maintient dans les 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)
Ajoutez une petite pause entre les soumissions (10 à 50 ms) si vous constatez des réponses 429 lors de la rafale initiale.
Si vous avez besoin de l’arbitrage webhooks ou interrogation expliqué pour les systèmes de production, cet article couvre l’arbre de décision.
Gestion des échecs
Gestion des langues dans les lots multilingues
Vocabulaire personnalisé : à configurer dès le départ
Contrôle qualité : échantillonnez avant de considérer le travail terminé
La tentation sur un lot de 1 000 fichiers est de considérer toutes les transcriptions comme terminées. L’étape d’échantillonnage et de révision prend 5 à 10 % du temps du projet et détecte les problèmes systémiques qui, autrement, se propageraient dans tous les usages en aval des transcriptions.
Quoi échantillonner
Prélevez un échantillon aléatoire de 5 % des transcriptions terminées. Incluez au moins un fichier de chaque type de source principal du lot (environnements d’enregistrement, locuteurs et équipements différents).
Écoutez des segments de 2 minutes de chaque fichier échantillonné tout en lisant la transcription. Signalez :
- La mauvaise identification récurrente d’un terme (ajoutez-le à la liste de vocabulaire et relancez les fichiers concernés)
- L’attribution incorrecte des locuteurs sur les fichiers multi-locuteurs (vérifiez si la diarisation était activée ; vérifiez la qualité audio)
- Les passages où la confiance a chuté (souvent corrélée au bruit de fond ou aux chevauchements de parole)
Vérifications ciblées sur les fichiers à enjeu élevé
Certains fichiers comptent plus que d’autres. L’entretien central d’un projet de recherche. La déposition clé d’un fonds juridique. L’épisode fondateur d’un podcast. Révisez-les de plus près, quel que soit le résultat de l’échantillon. Les scores de confiance de l’IA ne correspondent pas parfaitement à l’importance d’un fichier.
Les seuils de confiance comme signal, pas comme filtre
Certains fournisseurs renvoient des scores de confiance au niveau du mot dans la réponse JSON. Signalez les transcriptions dont la confiance moyenne tombe en dessous d’environ 0,80 comme candidates à une révision humaine, mais ne les rejetez pas automatiquement. Une faible confiance sur un audio clair signifie généralement que le vocabulaire métier n’est pas reconnu. Une faible confiance sur un audio bruité signifie généralement que l’audio doit être réenregistré ou que le fichier est irrécupérable.
Calcul des coûts pour les tailles de projet courantes
| Projet | Heures | Meilleure API | Coût estimé |
|---|---|---|---|
| Entretiens de recherche | 200 heures | AssemblyAI Universal-2 + diarisation | ~34 $ |
| Catalogue de podcasts | 1 000 heures | AssemblyAI Universal-2 | ~150 $ |
| Fonds juridique | 500 heures | Deepgram Nova-3 + termes clés | ~270 $ |
| Migration d’un fonds ancien | 5 000 heures | AssemblyAI Universal-2 | ~750 $ |
L’offre Pro de CATT à 9,99 $/mois convient bien aux volumes mensuels récurrents inférieurs à environ 100 heures. Pour les grandes migrations ponctuelles, la tarification API mesurée est plus flexible : vous payez ce que vous exécutez sans engagement mensuel.
Consultez tarification illimitée ou mesurée de la transcription pour l’analyse du point mort. Si vous créez un produit qui appelle ces API pour le compte des utilisateurs, optimiser les coûts des appels d’API de transcription et mettre en cache les résultats de transcription couvrent les deux leviers à plus fort impact.
Si vous avez simplement besoin de transcrire des fichiers sans construire de pipeline, pour un lot ponctuel ou un projet unique à traiter rapidement, ConvertAudioToText prend en charge les sources audio, vidéo et URL sans configuration sur /tools/audio-to-text.
Traitement post-transcription par type de projet
Une fois les transcriptions disponibles, le travail en aval dépend du type de projet :
Projets de recherche : modélisation de sujets sur les tours de parole des participants, codage thématique dans MAXQDA ou NVivo, extraction de citations pour les bases de données bibliographiques. La sortie JSON de la plupart des API inclut des horodatages au niveau du mot, ce qui facilite la reconstitution de citations horodatées.
Archives médias : construction d’un index de recherche (Elasticsearch ou Meilisearch fonctionnent bien), enrichissement des métadonnées, synthèse par épisode via un passage LLM sur chaque transcription.
Archives juridiques : indexation par mots-clés, flux de révision des privilèges, extraction de citations. Le vocabulaire personnalisé est rentabilisé plusieurs fois ici : les noms d’affaires et les références légales doivent être exacts.
Production de contenu : réutilisation des transcriptions en articles, newsletters et publications sociales. Consultez comment transcrire des enregistrements d’entretien pour le flux éditorial.
Le bon ordre de construction
Pour tout nouveau projet par lots, cette séquence fait gagner le plus de temps :
- Définissez la convention de nommage et la structure des dossiers.
- Créez ou remplissez le manifeste CSV.
- Écrivez le script de soumission avec lecture/écriture du manifeste.
- Lancez un pilote de 10 fichiers. Examinez le résultat.
- Corrigez les problèmes trouvés dans le pilote (vocabulaire, paramètres de langue, problèmes de format).
- Lancez le lot complet.
- Échantillonnez et révisez 5 %.
- Relancez la file des échecs.
- Passez au traitement en aval.
Mon avis : l’étape pilote est le point le plus important de cette liste. Détecter un problème de flux de travail sur 10 fichiers coûte peu. Le détecter au fichier 800, après que l’exécution a déjà coûté de l’argent et du temps réels, coûte cher. Les 10 fichiers fournissent aussi un échantillon de précision réel à montrer aux parties prenantes avant de s’engager dans le travail complet.
FAQ
Combien de fichiers puis-je soumettre en parallèle aux API de transcription ?
AssemblyAI traite jusqu’à 200 travaux simultanément par défaut. L’endpoint préenregistré de Deepgram autorise jusqu’à 50 requêtes simultanées sur les offres Pay As You Go et Growth. Ces deux plafonds sont au niveau du projet. Contactez le service commercial pour demander des limites plus élevées en cas de travail soutenu à grand volume.
Quel est le taux d’échec normal lors d’un premier passage sur un lot ?
Attendez-vous à ce que 3 à 5 % des fichiers échouent au premier passage. Un second passage avec backoff exponentiel résout généralement 60 à 80 % de ces échecs. Les échecs restants ont souvent une cause racine : audio source corrompu, codec non pris en charge ou fichier réellement silencieux. Le manifeste vous permet de les trier sans relancer les fichiers ayant réussi.
Dois-je utiliser des webhooks ou l’interrogation pour suivre l’état des travaux par lots ?
Pour les lots de quelques centaines de fichiers au maximum, l’interrogation à intervalle de 15 à 30 secondes est simple et efficace. Pour les lots de plusieurs milliers, les webhooks suppriment les frais généraux HTTP répétés et réduisent le risque de manquer un travail terminé. Le compromis : les webhooks nécessitent un endpoint public stable, ce qui ajoute de l’infrastructure. Consultez l’article webhooks ou interrogation pour les transcriptions pour l’arbre de décision.
Comment gérer un fonds multilingue ?
Soit vous pré-classez la langue de chaque fichier avant la soumission (un passage léger d’identification de langue fonctionne), soit vous utilisez un modèle multilingue qui prend en charge toutes vos langues sur un seul niveau de modèle. AssemblyAI Universal-2 couvre 99 langues. Deepgram Nova-3 Multilingual en couvre plus de 30. Définir explicitement la langue à la soumission est toujours plus rapide et plus précis que la détection automatique à grande échelle.
Quand le vocabulaire personnalisé vaut-il la peine d’être configuré ?
Tout fonds contenant une terminologie spécialisée, médicale, juridique, technique ou fortement liée à une marque, bénéficie d’une liste de vocabulaire. Deepgram (jusqu’à 100 termes clés par requête) et AssemblyAI (jusqu’à 1 000 termes sur Universal-3 Pro) prennent en charge l’incitation de vocabulaire en ligne, sans étape d’entraînement distincte. Construisez la liste une fois, utilisez-la sur chaque fichier du lot. Le gain de précision sur les termes connus est significatif.
Sources
- Tarification Deepgram, consultée en juillet 2026 : https://deepgram.com/pricing
- Limites de débit de l’API Deepgram, consultées en juillet 2026 : https://developers.deepgram.com/reference/api-rate-limits
- Documentation Deepgram sur l’incitation par termes clés, consultée en juillet 2026 : https://developers.deepgram.com/docs/keyterm
- Tarification AssemblyAI, consultée en juillet 2026 : https://www.assemblyai.com/pricing
- Guide AssemblyAI de transcription par lots à grande échelle, consulté en juillet 2026 : https://www.assemblyai.com/blog/large-scale-audio-transcription
- Tarification Amazon Transcribe, consultée en juillet 2026 : https://aws.amazon.com/transcribe/pricing/
- Tarification de la transcription OpenAI, consultée en juillet 2026 : https://developers.openai.com/api/docs/pricing
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.