WhisperX est une chaîne open source pour les enregistrements longs, maintenue par Max Bain et la communauté. Elle combine détection d’activité vocale, transcription par lots avec faster-whisper/CTranslate2, alignement forcé propre à la langue et diarisation optionnelle par pyannote. Le résultat n’est pas seulement « Whisper plus rapide » : il fournit des mots avec des temps plus fins et des étiquettes anonymes de locuteur. Chaque étape est un modèle distinct avec ses propres erreurs.
WhisperX ne remplace pas le reconnaisseur par un nouveau modèle ASR universel. Il change le découpage et l’inférence, réaligne le texte reconnu au moyen d’un modèle phonétique, puis peut réconcilier les mots avec des intervalles de locuteurs. Un texte faux ne devient pas vrai grâce à un timing précis. Si un chiffre, symbole ou alphabet manque au dictionnaire d’alignement, son temps peut être absent ou interpolé. En parole simultanée, un SPEAKER_00 propre peut rester erroné.
Ce que WhisperX ajoute à Whisper
| Étape | Implémentation | Valeur | Limite |
|---|---|---|---|
| Segmentation | VAD pyannote/Silero puis Cut & Merge | Chunks vocaux mis en lot | Voix faible coupée ou tours fusionnés |
| Transcription | faster-whisper/CTranslate2 | Batch et quantification | Décodage différent de l’amont |
| Alignement | wav2vec2/ASR phonétique par langue | Mots associés à des temps fins | Caractères, nombres, symboles, langue peuvent échouer |
| Diarisation | pyannote Community-1 | IDs anonymes de locuteurs | Chevauchement, tours courts, voix proches ; pas de noms |
| Sortie | SRT/VTT/TSV/TXT/JSON | Sous-titres et traitement | Lecture, coupures et contenu exigent QA |
Le papier original traite trois problèmes de l’audio long : Whisper fenêtré peut dériver, répéter ou halluciner ; le décodage séquentiel freine le batching ; les temps par énoncé sont trop grossiers. VAD Cut & Merge permet les lots et l’alignement phonétique ajoute des temps de mots après reconnaissance. Les résultats publiés appartiennent à des modèles, données, réglages et GPU précis. Nous n’en faisons pas une vitesse universelle ni un WER sans contexte pour les versions actuelles.
Maintenance et réalité des dépendances
WhisperX reste maintenu. Lors de la revue, v3.8.6 était le dernier release stable affiché et main déclarait 3.8.7rc1. Les versions récentes ont réparé les temps de caractères non alignables, ajouté des callbacks de progression et ajusté Torch/TorchCodec. C’est positif, mais confirme qu’une production doit épingler un release testé plutôt qu’installer main à chaque build.
| Frontière | Exigence actuelle | Conséquence |
|---|---|---|
| Python | 3.10 à moins de 3.14 | Environnement isolé |
| ASR | faster-whisper≥1.2, CTranslate2≥4.5 | Régression CUDA, modèle et décodage |
| PyTorch | Torch/Torchaudio autour de 2.8 | Wheel, pilote et CUDA cohérents |
| Diarisation | pyannote.audio≥4 | TorchCodec, modèle gated, second cycle |
| Licences | WhisperX BSD-2 ; modèles séparés | Notices et conditions indépendantes |
Installation et premier passage contrôlé
python -m venv .venv
source .venv/bin/activate
pip install whisperx
whisperx meeting.wav --model large-v2 --batch_size 4 --output_format json
whisperx meeting.wav --diarize --hf_token "$HF_TOKEN"Le README recommande PyPI et prévient que la version de développement peut contenir expériences et bugs. La procédure GPU cite actuellement CUDA 12.8. Le CPU int8 est possible, mais vitesse et qualité doivent être mesurées. En manque de mémoire, réduire d’abord batch, puis comparer un ASR plus petit ou int8, car ces choix changent la reconnaissance. Le token Hugging Face sert au téléchargement gated et ne doit rester ni dans l’historique, ni le code, ni les métadonnées.
Flux de production pour audio long
- Obtenir le consentement.Documenter but, source, rétention et personnes autorisées.
- Préserver l’original.Décoder une copie stable et conserver les canaux avant mono.
- Créer un test privé.Inclure silence, bruit, musique, chevauchement, interruptions, noms, nombres, alternance de langues et durée max.
- Épingler toute la pile.Noter WhisperX, faster-whisper, ASR, aligner, VAD, pyannote, Torch/CUDA et compute type.
- Calibrer VAD et batch.Mesurer voix coupée, fausse voix, mémoire GPU et facteur temps réel ensemble.
- Conserver l’ASR brut.Garder les segments avant alignement pour ne pas masquer l’hypothèse.
- Marquer les exceptions.Distinguer aligné, interpolé, non aligné et tester la dérive sur tout le fichier.
- Diariser seulement si utile.Garder le token secret, borner le nombre connu et inspecter chevauchements/tours courts.
- Appliquer les gates.Vérifier noms, chiffres, négation, hallucination, temps, changements de voix et lisibilité.
- Exporter avec manifeste.Stocker JSON/SRT/VTT, versions, état de revue et date de suppression.
Langues d’alignement et échecs visibles
L’alignement forcé est propre à la langue. Le README cite des pipelines torchaudio par défaut pour anglais, français, allemand, espagnol et italien, plus les mappings de DEFAULT_ALIGN_MODELS_HF. Si la langue détectée manque, fournir un ASR phonétique avec --align_model et le valider sur la parole cible. La capacité de Whisper à transcrire une langue ne prouve pas que WhisperX aligne chaque mot.
Nombres, devises, symboles, alphabets mixtes, code-switching et graphies rares peuvent sortir du dictionnaire. Les releases récents améliorent les temps, mais nearest/linear reste une estimation, pas une preuve acoustique. ignore laisse le trou visible. Le système aval doit conserver aligned/interpolated plutôt que présenter chaque timing avec la même confiance.
| Cas | Risque | Contrôle |
|---|---|---|
| Nombres/devises | Forme écrite hors dictionnaire | Années, prix, dates, unités séparément |
| Changement de langue | Un modèle ne couvre pas deux scripts | Séparer régions ou aligner validé |
| Noms propres | Orthographe ASR vs lexique | Texte/temps contre référence humaine |
| Musique/silence | VAD et ASR divergent | Étiqueter fausse voix/hallucination |
| Chevauchement | Trois étapes se dégradent | Jeu riche et locuteur incertain |
| Tours courts | Peu de recouvrement mot-intervalle | Inspecter interruptions |
pyannote : accès, licence et sens
La CLI actuelle utilise pyannote/speaker-diarization-community-1 par défaut. L’utilisateur accepte les conditions gated et crée un token Hugging Face. La model card indique CC-BY-4.0 et décrit l’usage local/offline après copie. Ces conditions sont séparées de WhisperX BSD-2 et des modèles Whisper/faster-whisper.
La diarisation indique quel cluster anonyme parle quand ; elle n’identifie pas une personne. SPEAKER_00 peut changer entre fichiers, diviser une voix ou fusionner des voix proches. min/max_speakers contraint sans garantir. Le chevauchement est une limite officielle. En droit, recherche, centre d’appel ou clinique, conserver l’audio et traiter l’attribution comme métadonnée révisable.
Comparaison avec les options voisines
| Option | À choisir si | Compromis |
|---|---|---|
| WhisperX | Long audio, batch, mots et locuteurs locaux | Plusieurs modèles et erreurs composées |
| OpenAI Whisper | Référence Python simple | Temps grossiers, pas de diarisation/batch long natif |
| faster-whisper | Seul le débit CTranslate2 compte | Ajouter alignement/diarisation et QA |
| whisper.cpp | C/C++, CPU, Apple Silicon, edge/offline | Autre écosystème, pipeline absente |
| API managée | Déléguer inférence, échelle et modèles actuels | Données externes, coût, fonctions variables |
Jugement indépendant :WhisperX est une chaîne post-ASR, pas un bouton de précision. Il vaut la peine lorsque temps de mots et locuteurs anonymes réduisent la correction. Si le texte suffit, si aucun aligner n’est validé, si le chevauchement domine ou si l’équipe ne maintient pas Python/Torch/CUDA/modèles, faster-whisper, Whisper, whisper.cpp ou une API peuvent être plus fiables.
Questions fréquentes
Est-ce un nouveau modèle ASR ?
Non. Il utilise Whisper via faster-whisper puis ajoute VAD, alignement et pyannote optionnel.
Les temps de mots sont-ils garantis ?
Non. Caractères, nombres, symboles, scripts mixtes ou langue incorrecte échouent ; interpolation reste estimation.
Identifie-t-il les personnes ?
Non. SPEAKER_00 est un cluster anonyme ; lier un nom exige une preuve séparée.
Le token HF est-il obligatoire ?
Pas pour le cœur ASR. Le chemin pyannote par défaut exige conditions et token de téléchargement.
Fonctionne-t-il offline ?
Oui après téléchargement de tous les modèles, mais il faut auditer egress, logs, caches et stockage.
Pourquoi manque-t-il de GPU ?
Batch, ASR, compute type, alignement et diarisation consomment. Réduire batch d’abord et mesurer.
Est-il fiable en chevauchement ?
Pas comme vérité. Le projet cite chevauchement et diarisation imparfaite comme limites.
Quelles langues s’alignent ?
Defaults torchaudio et mappings HF existent. Sinon valider un modèle phonétique ou ignorer clairement.
Sources vérifiées
- Dépôt officiel WhisperX
- README officiel et limites
- Papier WhisperX
- Releases officiels
- Métadonnées des dépendances
- Code d’alignement et langues
- Defaults CLI actuels
- Code d’attribution locuteur
- Model card pyannote Community-1
- faster-whisper
- Guide OpenAI transcription hébergée
- Licence BSD-2 WhisperX
Revue technique indépendante : 2026-08-20. Versions, dépendances, accès et langues changent. Épinglez les sources et évaluez sur vos audios.



