Québec, Canada

403-1381 1re Avenue

+1 581.849.27.96

bdgouthiere@gmail.com

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

ÉtapeCe qu’il faut faire
Préparer l’accèscréer un compte Hugging Face, accepter les conditions de speaker-diarization-community-1, créer un jeton en lecture
Installerpip install whisperx sur le pod, avec PyTorch et ffmpeg
Lancermodèle large-v3, langue française forcée, option de diarisation, nombre de locuteurs si vous le connaissez
Lire le résultatchaque segment et chaque mot portent un identifiant de locuteur, à renommer à la main
Relirela diarisation n’est pas parfaite : vérifiez l’attribution avant de publier
1
2
3
4
5
6
7
# Sur le pod : le jeton est lu dans une variable d'environnement, jamais écrit en clair
export HF_TOKEN="votre_jeton_en_lecture"
whisperx entretien.wav \
  --model large-v3 --language fr \
  --diarize --hf_token "$HF_TOKEN" \
  --min_speakers 2 --max_speakers 2 \
  --output_format srt --output_dir sorties/
SolutionPrixRemarque
WhisperX sur RTX 4090 louée0,34 $ de l’heure de cartepyannote gratuit, attribution obligatoire
pyannoteAI, Precision-30,112 € l’heure d’audio, offre à 19 € par moisgamme Precision, plus précise que community-1 dans les tableaux de pyannote
OpenAI gpt-4o-transcribe-diarize0,006 $ la minute, 0,36 $ l’heuretranscription et locuteurs en un appel
Deepgram Nova-30,26 $ l’heurelocuteurs compris
AssemblyAI Universal-20,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.

Deux micros, deux couleurs : la diarisation ne fait rien d'autre que de colorier la conversation.

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.