WhisperJAV : un pipeline de sous-titrage pensé pour l'audio dégradé
ASR/STT subtitle generator. Uses Qwen3-ASR, local LLM, Whisper, TEN-VAD. Noise-robust for JAV
En bref
- De quoi s’agit-il ?
- WhisperJAV génère des sous-titres SRT pour des enregistrements longs et bruités, en enchaînant détection de scènes, VAD et modèles ASR interchangeables. Le projet vaut surtout pour la façon dont il contourne les faiblesses connues de Whisper, pas pour un modèle maison.
- À qui s’adresse-t-il ?
- WhisperJAV convient à qui doit sous-titrer des enregistrements japonais longs et bruités sur sa propre machine, et qui accepte de lire la documentation pour choisir un mode. Il ne convient pas à qui cherche un transcripteur généraliste clé en main : le projet est explicitement taillé pour un domaine, et sa documentation indique elle-même que les résultats varient avec la qualité de la source.
- Puis-je l’utiliser commercialement ?
- Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Les derniers commits datent d’il y a 3 jours.
- En quel langage est-il écrit ?
- Principalement Python, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Le problème n'est pas la langue, c'est le signal
La documentation du projet est inhabituellement franche sur le point de départ : les modèles de reconnaissance vocale sont entraînés sur de la parole propre et curated, et l'audio visé ici ne l'est pas. WhisperJAV décrit trois mécanismes d'échec précis. D'abord le profil acoustique : un rapport signal sur bruit faible, une forte densité de vocalisations non verbales dont le spectre imite des syllabes japonaises réelles, par exemple fu, ce qui pousse le modèle à entendre des mots là où il n'y en a pas. Ensuite la dérive sur les longues séquences : ces enregistrements durent des heures, et sur des passages ambigus l'attention du modèle s'effondre et il remplit le vide par du texte répété ou inventé. Enfin le paradoxe du prétraitement : débruiter ou isoler la voix en amont peut retirer les détails haute fréquence nécessaires pour distinguer les consonnes, et dégrader le résultat.
Le public visé est donc étroit. Ce n'est pas un outil de transcription généraliste, c'est un outil pour qui a déjà constaté ces échecs sur ses propres fichiers et cherche un pipeline qui les traite un par un. La page d'accueil annonce elle-même un usage pour les Japanese Adult Videos, mais l'architecture décrite s'applique à tout audio japonais long et bruité. Le README précise aussi que le traitement est local : aucun envoi du média vers un service cloud.
Sept étapes, dont une seule est un modèle de reconnaissance
Le pipeline est représenté dans le README par un flux linéaire : extraction audio, détection de scènes, amélioration de la parole en option, segmentation VAD, modèle ASR, post-traitement, sortie .srt. La détection de scènes découpe selon les caractéristiques du média, l'idée étant que le VAD et l'ASR reçoivent ensuite des segments de nature homogène. L'amélioration de la parole est désactivée par défaut, ce qui est cohérent avec le paradoxe du prétraitement assumé plus haut : elle s'utilise au cas par cas, par scène.
La segmentation VAD est présentée comme le réglage qui compte le plus, parce qu'elle détermine ce que le modèle entend et, dans les pipelines récents, l'origine des horodatages. Le post-traitement, lui, est spécifiquement japonais : regroupement de phrases sensible aux particules finales (ね, よ, わ, の), aux aizuchi (うん, はい) et aux tournures dialectales comme le Kansai-ben ; suppression des hallucinations et répétitions ; suppression des lignes purement sonores, avec une vérification de preuve qui protège le dialogue réel ; réparation du timing, où une réplique trop longue pour son texte voit son début ramené vers l'avant sans que la fin bouge, le nombre de lignes retimées étant affiché dans la console ; résolution des chevauchements aux frontières de scènes.
ChronosJAV sépare les mots du temps
Le point de conception le plus intéressant concerne les modes qwen et anime-whisper, regroupés sous le nom ChronosJAV. Le README indique que plusieurs bons reconnaisseurs de ce domaine, dont anime-whisper et Qwen3-ASR avec ses finetunes japonais, ne produisent pas d'horodatages fiables par eux-mêmes. La réponse du projet est de scinder génération de texte et timing : le VAD fournit le squelette temporel, le modèle fournit les mots. Depuis la v1.9, les horodatages viennent par défaut des trames VAD, sans charger de modèle d'alignement, ce qui représente environ 1 Go de VRAM en moins d'après les notes de version. Un mode aligneur forcé Qwen reste disponible dans les réglages pour un alignement au niveau du mot.
C'est aussi ce découplage qui permet d'ajouter un modèle sans reconstruire le pipeline, tout ce qui transforme l'audio en texte pouvant être inséré. La contrepartie est réelle : la qualité du timing dépend alors de la qualité du VAD, pas de celle du modèle de langue. Un décalage observé sur un sous-titre peut venir de la segmentation et non de la reconnaissance, ce qui déplace l'endroit où il faut chercher.
Modes, sensibilité et le piège du mode par défaut
Le tableau des modes distingue balanced (Faster-Whisper, pipeline complet, compromis vitesse précision), fidelity (OpenAI Whisper, le plus lent des pipelines classiques), fast (OpenAI Whisper plus détection de scènes), faster (Faster-Whisper avec prétraitement minimal, pour de l'audio propre), qwen et anime-whisper via ChronosJAV, transformers pour les modèles Whisper HuggingFace comme Kotoba, et crispasr en expérimental, qui suppose d'apporter sa propre compilation CrispASR.
Un réglage de sensibilité s'applique à tous les modes : conservative, balanced et aggressive. La documentation indique que aggressive attrape davantage de dialogue murmuré et vise les contenus chuchotés ou de type ASMR, et que c'est la cible de réglage de la plupart du travail de benchmark du projet. Autrement dit, le mode par défaut balanced n'est pas forcément celui qui a reçu le plus d'attention. C'est un détail qui change la façon d'aborder un premier essai : si le résultat déçoit sur un fichier difficile, la sensibilité est le premier levier à essayer avant de changer de moteur.
Installation et ligne de commande
Le README propose deux chemins. Le premier est l'interface graphique, recommandée : lancement depuis le raccourci du programme d'installation Windows, ou via la commande whisperjav-gui. On ajoute des fichiers, on choisit un mode, on clique sur Start, et les sous-titres sont écrits à côté de la vidéo au format .srt. Le second est la ligne de commande :
whisperjav video.mp4 whisperjav video.mp4 --mode balanced --sensitivity aggressive whisperjav /path/to/folder --output-dir ./subtitles
Le projet accepte en entrée tout ce que FFmpeg sait lire : MP4, MKV, AVI, WMV, MP3, WAV, FLAC et d'autres. La sortie est en SRT par défaut, en WebVTT, ou les deux avec --output-format both. Deux notebooks sont également fournis, un pour Google Colab et un pour Kaggle, ce qui évite de préparer un environnement local. Le dépôt est en Python et publié sous licence MIT, ce qui autorise la modification et la redistribution du code, y compris dans un contexte commercial, à condition de conserver l'avis de licence. Je ne donne pas d'avis juridique : si la redistribution fait partie de votre usage, faites vérifier les termes exacts.
Ce que le projet ne résout pas
La limite principale est énoncée par le projet lui-même : les résultats varient avec la qualité de l'audio source. Aucun des trois mécanismes décrits ne rend un enregistrement inexploitable exploitable ; ils réduisent le taux d'erreur sur des sources déjà utilisables. Sur un fichier très dégradé, le pipeline produira toujours quelque chose, mais rien dans la documentation ne permet de savoir à quel point ce quelque chose est faux, et c'est précisément le profil de risque à surveiller.
Deuxième limite, le coût matériel et le temps. Le mode fidelity est décrit comme le plus lent des pipelines classiques. Le gain de VRAM annoncé pour ChronosJAV depuis la v1.9 (environ 1 Go, l'aligneur n'étant plus chargé) indique en creux que les versions précédentes chargeaient un modèle supplémentaire. Troisième limite, le mode crispasr est marqué expérimental et suppose une compilation externe : ce n'est pas un mode sur lequel bâtir une chaîne de production.
Enfin, le domaine est restreint par construction. Le post-traitement est japonais, avec des règles sur les particules finales et les dialectes. Sur une autre langue, cette couche ne sert à rien, et rien n'indique que les seuils de confiance ou la sensibilité aggressive aient été réglés ailleurs que sur ce domaine. Pour du français ou de l'anglais, ce projet est le mauvais outil.
Face à faster-whisper seul
L'alternative évidente est d'appeler directement faster-whisper, ou faster-whisper plus un VAD de type Silero, et de faire soi-même le découpage. La différence n'est pas le moteur, puisque le mode balanced de WhisperJAV utilise Faster-Whisper. Elle porte sur trois couches que WhisperJAV ajoute et qu'il faudrait réécrire : la détection de scènes en amont, la stratégie de VAD clamping avec padding mesuré, et le post-traitement japonais (regroupement par particules, suppression des lignes purement sonores, réparation du timing, résolution des chevauchements aux frontières).
Un script maison sur faster-whisper donnera des résultats comparables sur de l'audio propre, et sera plus simple à auditer. Il faudra en revanche gérer soi-même la dérive sur les longues séquences et le nettoyage des hallucinations, ce que la documentation du projet présente comme le cœur du travail. Le choix se joue donc là : reprendre un pipeline déjà assemblé pour un domaine précis, ou garder la main sur un script plus court mais à qui il manque ces garde-fous.
Conclusion éditoriale
WhisperJAV convient à qui doit sous-titrer des enregistrements japonais longs et bruités sur sa propre machine, et qui accepte de lire la documentation pour choisir un mode. Il ne convient pas à qui cherche un transcripteur généraliste clé en main : le projet est explicitement taillé pour un domaine, et sa documentation indique elle-même que les résultats varient avec la qualité de la source. Avant d'investir du temps, vérifiez deux points concrets : le mode retenu dans la commande whisperjav (balanced par défaut, qwen ou anime-whisper selon le contenu) et le fait que les horodatages de ChronosJAV proviennent des trames VAD depuis la v1.9, ce qui change la façon de juger un décalage de timing.
Notes de la communauté