Qui parle quand : la diarisation avec WhisperX, pas à pas
Ou : comment apprendre à une machine que ce n’est pas la même personne qui pose la question et qui y répond.
La réponse courte : Whisper transcrit, mais ne dit pas qui parle. WhisperX, sous licence BSD, ajoute deux étapes : un alignement qui horodate chaque mot, puis une diarisation, c’est-à-dire la séparation des locuteurs, confiée au modèle pyannote community-1. Sur une carte louée, l’ensemble s’installe en quelques commandes et traite une heure d’audio en quelques minutes ; pyannote annonce 31 secondes de diarisation par heure d’audio sur une H100. Deux contraintes : pyannote demande un compte Hugging Face, l’acceptation de ses conditions et un jeton d’accès, et sa licence exige de le citer. C’est l’étape qui transforme une transcription en compte rendu, dans Whisper et TTS dans le cloud.
WhisperX s’appuie sur faster-whisper pour la transcription, annonce une vitesse de 70 fois le temps réel avec le modèle large-v2 et moins de 8 Go de mémoire. L’alignement utilise un second modèle, spécifique à chaque langue : pour le français, un modèle wav2vec2 entraîné sur les débats du Parlement européen, choisi automatiquement. C’est lui qui donne l’horodatage au mot, indispensable pour attribuer chaque mot au bon locuteur.
La diarisation, elle, vient de pyannote. Le modèle speaker-diarization-community-1, sous licence CC-BY-4.0, est public, mais son téléchargement passe par un formulaire : il faut accepter de partager ses coordonnées avec pyannote, qui se réserve le droit d’écrire au sujet de ses offres payantes. Sa fiche publie son taux d’erreur de diarisation, la part du temps attribuée au mauvais locuteur ou manquée : 8,9 % sur REPERE, un corpus d’émissions françaises, 17 % sur des réunions en anglais.
Pour qui : un journaliste, un chercheur ou une équipe qui transcrit des entretiens, des réunions ou des podcasts à plusieurs voix, et veut savoir qui a dit quoi.
À partir de : 0,34 $ de l’heure pour une RTX 4090 de 24 Go en Community Cloud, 0,74 $ en Secure Cloud, facturés à la seconde.
Pour démarrer : ouvrir un compte Runpod, lancer un pod PyTorch sur une RTX 4090, puis installer WhisperX et créer un jeton Hugging Face en lecture.
WhisperX diarisation : identifier les locuteurs sur GPU cloud, étape par étape
| Étape | Ce qu’il faut faire |
|---|---|
| Préparer l’accès | créer un compte Hugging Face, accepter les conditions de speaker-diarization-community-1, créer un jeton en lecture |
| Installer | pip install whisperx sur le pod, avec PyTorch et ffmpeg |
| Lancer | modèle large-v3, langue française forcée, option de diarisation, nombre de locuteurs si vous le connaissez |
| Lire le résultat | chaque segment et chaque mot portent un identifiant de locuteur, à renommer à la main |
| Relire | la diarisation n’est pas parfaite : vérifiez l’attribution avant de publier |
| |
| Solution | Prix | Remarque |
|---|---|---|
| WhisperX sur RTX 4090 louée | 0,34 $ de l’heure de carte | pyannote gratuit, attribution obligatoire |
| pyannoteAI, Precision-3 | 0,112 € l’heure d’audio, offre à 19 € par mois | gamme Precision, plus précise que community-1 dans les tableaux de pyannote |
| OpenAI gpt-4o-transcribe-diarize | 0,006 $ la minute, 0,36 $ l’heure | transcription et locuteurs en un appel |
| Deepgram Nova-3 | 0,26 $ l’heure | locuteurs compris |
| AssemblyAI Universal-2 | 0,15 $ l’heure, plus 0,02 $ pour les locuteurs |
Prix relevés le 28 septembre 2026 ; options de WhisperX vérifiées dans son code source.
Les options comptent. Forcer la langue évite une détection ratée sur les premières secondes. Le dépôt recommande de donner le nombre de locuteurs quand vous le connaissez, par exemple deux pour un entretien. Le format de sortie peut être du SRT, du VTT, du texte ou du JSON, ce dernier gardant l’horodatage de chaque mot et l’identifiant de son locuteur. Si la mémoire manque, le dépôt conseille de réduire la taille des lots ou de passer en calcul int8.
Le dépôt de WhisperX est honnête sur les limites : la diarisation est « loin d’être parfaite ». Les mots sans lettres reconnues par le modèle d’alignement, comme les nombres écrits en chiffres, ne reçoivent pas d’horodatage. Comptez une relecture de l’attribution des locuteurs, plus rapide que celle du texte, mais indispensable.
Côté coût, la carte louée gagne largement dès quelques heures d’audio : 31 secondes de diarisation et quelques minutes de transcription par heure d’audio, sur une carte à 0,34 $ l’heure. Les solutions hébergées, de 0,15 à 0,36 $ l’heure d’audio, se justifient pour un volume faible ou pour éviter l’installation. pyannoteAI vend aussi sa gamme Precision, mieux notée que la version gratuite dans ses propres tableaux, avec un hébergement européen annoncé.
Ma recommandation : WhisperX sur un pod pour les archives et les séries d’entretiens, avec le nombre de locuteurs renseigné. Une API avec locuteurs inclus pour quelques fichiers par mois. Et dans les deux cas, renommez les locuteurs à la main avant de publier : aucun modèle ne sait que « SPEAKER_01 » s’appelle Martine.
Si vous partez de zéro sur la transcription
Le modèle, la vitesse et les réglages de faster-whisper, sur lequel repose WhisperX, sont dans transcrire une heure d’audio sur GPU loué.
Si vous comparez avec les API qui font tout
Transcription et locuteurs en un seul appel ont un prix à la minute. Le calcul complet est dans payer la minute ou louer le GPU.
Si l’entretien doit être sous-titré
Les locuteurs identifiés peuvent colorer ou préfixer les sous-titres. La chaîne est dans des sous-titres propres sans service payant.