Whisper Web est une application de reconnaissance vocale pour navigateur open source de Xenova. Il exécute les modèles de la famille Whisper via Transformers.js dans un Web Worker, accepte l'audio d'une URL, d'un fichier local ou d'un microphone et renvoie un texte horodaté qui peut être exporté sous TXT ou JSON. Le projet est utile en tant que démonstration compacte de la reconnaissance vocale automatique côté client, et non en tant que service de transcription complet et maintenu.
Le statut de maintenance est important. La branche principale a été validée pour la dernière fois le 10 juin 2024 et les épingles @xenova/transformateurs 2.7.0. Son README pointe vers une branche expérimentale distincte WebGPU ; l'application principale suit principalement l'ancien chemin Worker/WASM. La documentation actuelle de Transformers.js est passée à la génération v3 et prend en charge WebGPU plus directement, les développeurs doivent donc traiter ce référentiel comme une implémentation de référence lisible plutôt que comme un démarreur de framework actuel.

Qui devrait l'utiliser et qui ne devrait pas l'utiliser
| Utilisateur ou travail | Ajustement | Raison |
|---|---|---|
| Navigateur d'apprentissage pour développeurs frontend ou ML ASR | Fort | Le chemin React, Worker et Transformers.js est suffisamment compact pour inspecter de bout en bout |
| Transcription individuelle d'un enregistrement court et non sensible | Raisonnable | Aucune tâche de compte ou de serveur n'est requise, mais le téléchargement du modèle et la mémoire du navigateur sont toujours importants |
| Équipe produisant des sous-titres révisés | Limité | Il n'y a pas d'éditeur de transcription, d'exportation SRT/VTT, d'étiquetage des locuteurs ou de révision collaborative. |
| Service de transcription par lots de longue durée | Pauvre | L'onglet du navigateur possède la mémoire et l'exécution ; les files d'attente, les tentatives, la persistance et l'observabilité sont absentes |
| Audio médical, légal ou réglementé | Prototype uniquement | L'inférence locale peut contribuer à la confidentialité, mais le contrôle d'accès, la conservation, l'audit et la vérification humaine ne sont pas mis en œuvre |
Whisper Web est mieux jugé comme une surface éducative et de prototypage. Il montre comment le décodage audio, le chargement de modèles, les rappels de blocs, les horodatages et l'exportation peuvent fonctionner sans backend de transcription. Cela le rend utile pour les expériences privées, les démonstrations en conférence et un premier test de faisabilité sur le matériel cible. Il ne s'agit pas d'un remplacement immédiat d'un produit de transcription pris en charge : il n'a pas de comptes d'utilisateurs, de récupération de tâches, d'administration de modèles, de journal d'audit, de contrôles de rétention, d'interface de correction ou de garanties de niveau de service.
Pour un outil interne, décidez qui hébergera la page et les pondérations du modèle, quels navigateurs sont pris en charge et comment les utilisateurs se remettront d'un crash d'onglet ou d'une expulsion du cache. Pour un produit public, ajoutez le consentement concernant l'utilisation du microphone, les attentes en matière de téléchargement de modèles, le rapport d'erreurs et une déclaration claire sur la destination de l'audio et de la télémétrie. Ces détails opérationnels comptent plus que la capacité de la démo à transcrire un échantillon propre.
Ce que fait réellement l’application
| Zone | Mise en œuvre | Conséquence pratique |
|---|---|---|
| Inférence | Transformers.js pipeline de reconnaissance vocale automatique dans un Web Worker | L'interface utilisateur reste réactive pendant que le navigateur effectue une inférence |
| Préparation audio | Web Audio API, rééchantillonné à 16 kHz et mixé en mono | La prise en charge du codec du navigateur détermine quels fichiers sont décodés avec succès |
| Audio long | Morceaux de 30 secondes avec une foulée de 5 secondes ; Distil-Whisper utilise 20/3 secondes | Le chevauchement favorise la continuité mais peut introduire des phrases répétées ou fusionnées |
| Décodage | Décodage gourmand avec horodatages et rappels partiels | Simple et inspectable, mais il expose peu de contrôles de décodage |
| Exporter | Texte brut ou morceaux d'horodatage JSON | Pas de SRT/VTT natif, de diarisation du locuteur ou d'éditeur de transcription |
L'audio choisi à partir d'un fichier ou d'un microphone est décodé et transmis au modèle dans le navigateur. L'application télécharge toujours les poids des modèles à partir de Hugging Face lors de la première utilisation, et une entrée URL amène le navigateur à récupérer cet audio distant. « Inférence locale » signifie donc que le calcul de la parole en texte est côté client ; cela ne signifie pas que la page ne fait aucune requête réseau.
Entrées, modèles et tailles de téléchargement
| Choix dans l'interface utilisateur actuelle | Téléchargement affiché | Meilleur ajustement |
|---|---|---|
| murmure-minuscule, quantifié | 41 Mo | Premier test le plus rapide et appareils avec moins de mémoire |
| base murmurée, quantifiée | 77 Mo | Une étape de précision modeste sans un téléchargement important |
| murmure-petit, quantifié | 249 Mo | Transcription locale plus performante lorsque la mémoire le permet |
| médium, quantifié | 776 Mo | Expériences de plus grande capacité sur du matériel de bureau plus puissant |
| murmure-tiny.en, non quantifié | 152 Mo | Audio en anglais où la fidélité compte plus que la taille du téléchargement |
| murmur-base.en, non quantifié | 291 Mo | Travail en anglais uniquement avec mémoire de navigateur supplémentaire disponible |
| Options Distil-Whisper | 402 ou 767 Mo | Expériences en anglais uniquement avec les points de contrôle distillés du référentiel |
Le mode multilingue révèle un long sélecteur de langue et permet à l'utilisateur de choisir soit la transcription dans la langue source, soit la traduction en anglais. L'interface utilisateur n'expose pas la sélection automatique de la langue, la recherche de faisceaux, le repli de température, les astuces de vocabulaire ou la diarisation. La quantification réduit le poids et améliore souvent la faisabilité, mais la précision et la stabilité doivent être testées sur l'audio prévu.

Test pratique : vitesse versus stabilité de la transcription
Nous avons exécuté l'échantillon officiel en anglais de 60 secondes dans un navigateur de bureau basé sur Chromium le 20 août 2026. Il s'agit d'une vérification d'environnement unique et non d'un modèle de référence standardisé. Le cache réseau, le processeur, le navigateur, l'état thermique et le téléchargement du modèle peuvent modifier les horaires.
| Configuration | Achèvement observé | Résultat observé |
|---|---|---|
Multilingue quantifié Xenova/whisper-tiny (41 Mo) | Environ 27 secondes | Rapide, mais la seconde moitié a produit une phrase répétée visible et plusieurs erreurs de segmentation |
Anglais non quantifié Xenova/whisper-tiny.en (152 Mo) | Environ 36 secondes | Nettement plus cohérent et mieux segmenté, même s'il contenait toujours des erreurs de reconnaissance individuelles |
La conclusion utile n’est pas qu’un timing unique se reproduise partout. Le plus petit paramètre multilingue quantifié doit être traité comme une configuration d'aperçu. Pour le matériel en anglais, un point de contrôle en anglais uniquement peut valoir le téléchargement le plus important. Pour les enregistrements multilingues, bruyants ou spécifiques à un domaine, comparez au moins les clips minuscules, de base et petits sur des clips représentatifs avant de choisir une valeur par défaut.

Comment évaluer correctement Whisper Web
| Métrique | Comment mesurer | Pourquoi c'est important |
|---|---|---|
| Taux d'erreur de mot ou de caractère | Comparez avec une transcription de référence vérifiée par un humain | Précision globale ; utiliser le taux d'erreur de caractère pour les langues sans espaces de mots |
| Entités et numéros nommés | Notez les noms, les produits, les dates, les prix et les unités séparément | De petites erreurs peuvent invalider les notes de réunion, juridiques ou de recherche |
| Taux d'hallucinations | Incluez des segments de silence, de musique, d'applaudissements et de voix basse | Les modèles Whisper peuvent émettre un texte plausible là où la parole est faible |
| Dérive de l'horodatage | Vérifiez les limites au début, au milieu et à la fin | Critique pour les sous-titres et les transcriptions consultables |
| Facteur temps réel | Secondes de traitement divisées par secondes audio | Sépare la vitesse du modèle du temps d'attente subjectif |
| Démarrage à froid ou à chaud | Enregistrer le téléchargement/chargement du modèle séparément de l'inférence | Les utilisateurs réguliers peuvent voir une expérience très différente |
| Mémoire et taux d'échec | Testez les navigateurs cibles et les fichiers longs | Un modèle qui plante n'est pas une amélioration de précision utilisable |
Ensemble de test recommandé
nettoyer un seul locuteur ── noms + numéros pièce bruyante ─────────── voix qui se chevauchent audio du téléphone ────────── compression + bande passante musique/applaudissements ─────── contrôle des hallucinations en silence enregistrement long ─────── jointures de morceaux + dérive d'horodatage clip multilingue ──── exactitude de la langue/tâche
- Créez des références vérifiées par l'homme pour 20 à 30 courts clips qui correspondent au cas d'utilisation réel.
- Exécutez tiny, base et small avec le même navigateur, le même état chaud/froid et le même paramètre de quantification.
- Enregistrez la précision, le temps de première exécution, le temps d'inférence à chaud, les symptômes et les pannes de mémoire maximale.
- Examinez les noms propres, les nombres, les répétitions et les segments muets séparément du taux d'erreur moyen.
- Testez les exportations TXT et JSON, puis décidez si la conversion des sous-titres en aval est acceptable.
Limites du navigateur, de la confidentialité et du déploiement
| Limite | Que vérifier avant l'adoption |
|---|---|
| Compatibilité du navigateur | Le README nécessite un indicateur Firefox Worker ; le gestionnaire d'erreurs de l'application met en garde contre Safari sur M1/M2 et recommande Chrome, Firefox ou Edge |
| Audio d'origine croisée | Le chargement d'URL à distance dépend du serveur source autorisant les requêtes du navigateur ; une URL de page Web normale n'est pas nécessairement une URL audio utilisable |
| Mise en cache du modèle | Confirmez les quotas de stockage, l'expulsion du cache et les téléchargements répétés sur les appareils de navigation gérés ou privés |
| Audio sensible | Examinez l'hébergement des pages, la livraison du modèle, la télémétrie et les extensions de navigateur, et pas seulement le code d'inférence. |
| Auto-hébergement | Épinglez les dépendances, servez intentionnellement les actifs du modèle, ajoutez des en-têtes de sécurité et testez le comportement hors ligne |
| Licence | Le code de l'application est sous licence MIT ; les points de contrôle des modèles et l'audio soumis ont toujours leurs propres conditions et droits |
Le référentiel définit env.allowLocalModels = faux, donc sa constitution de stock s'attend à une livraison de modèles à distance plutôt qu'à des poids groupés. Un déploiement privé ou hors ligne nécessite des modifications de code et d’hébergement. Ne prétendez jamais que le simple clonage de l’interface utilisateur crée un système de transcription isolé.
Whisper Web par rapport à des outils open source similaires
| Options | Choisissez-le quand | Principal compromis |
|---|---|---|
| Whisper Web par Xenova | Vous souhaitez une petite démonstration React/Transformers.js avec export d'URL, de fichier, de micro et d'horodatage | La branche principale est datée, a des contrôles limités et aucun flux de sous-titres ou de diarisation natif |
| whisper.cpp WebAssembly démo | Vous souhaitez un chemin de navigateur basé sur C/C++, un chargement de modèle local explicite et une prise en charge des fichiers/microphones | Son exemple documenté WASM est orienté CPU, limité aux modèles via small et plafonne l'audio à 120 secondes. |
| Whisper-WebUI | Vous avez besoin d'une interface de sous-titres auto-hébergée plus riche, faster-whisper, de modèles plus grands et d'options backend/API | Nécessite la configuration de Python/server et n'est pas une inférence purement côté client du navigateur |
| Application personnalisée Transformers.js actuelle | Vous créez un nouveau produit de navigateur et souhaitez les modèles d'intégration WebGPU, ONNX et framework actuels. | Vous possédez l'interface utilisateur complète, le pipeline audio, le cycle de vie du modèle, l'assurance qualité et la matrice de compatibilité. |
| Natif whisper.cpp ou faster-whisper | Les fichiers longs, le traitement par lots, l'automatisation ou le contrôle des performances des postes de travail/serveurs sont importants | L'installation et le déploiement sont plus lourds que l'ouverture d'une page Web |
Whisper Web reste précieux car la source est compacte et facile à inspecter. Il s’agit d’un meilleur artefact d’apprentissage qu’un choix de production clé en main. Pour une nouvelle application, réalisez un prototype par rapport à la démo en direct, puis comparez une implémentation actuelle de Transformers.js avec un moteur natif ou côté serveur utilisant le même ensemble d'évaluation privé.
Liste de contrôle de production
audio représentatif + texte de référence
↓
navigateur/modèle/matrice de quantification
↓
précision · hallucination · temps · mémoire
↓
navigateur local ── ou ── moteur natif/serveur
↓
conservation · consentement · exportation · examen humain
- Confirmez si l'objectif est une démo, un outil local privé ou un produit pris en charge.
- Épinglez le commit du référentiel, la version Transformers.js et la révision exacte du modèle.
- Comparez les langues cibles, les accents, le bruit, le silence et la durée des fichiers.
- Séparez le temps de téléchargement à froid de la vitesse de transcription à chaud.
- Ajoutez une progression claire, une annulation, des erreurs de mémoire et une gestion des navigateurs non pris en charge.
- Décidez si TXT/JSON est suffisant ou ajoutez SRT/VTT, édition et diarisation.
- Conservation audio des documents, hébergement du modèle, consentement et suppression.
- Exiger un examen humain lorsque les noms, les numéros, la signification juridique ou médicale sont importants.
FAQ
Whisper Web télécharge-t-il l'audio pour la transcription ?
Le pipeline d'inférence s'exécute dans le navigateur Worker. Cependant, la page télécharge les fichiers de modèle et l'entrée URL télécharge l'audio distant dans le navigateur. Examinez le comportement d'hébergement et du réseau du site déployé avant de le décrire comme étant entièrement hors ligne.
Est-ce qu'il prend en charge la transcription par microphone en direct ?
Il peut enregistrer depuis le microphone et transcrire l’enregistrement terminé. L’interface stock n’est pas un système de sous-titres en streaming continu à faible latence.
Par quel modèle dois-je commencer ?
Utilisez le minuscule quantifié uniquement pour une vérification rapide de la faisabilité. Comparez les formats minuscule, basique et petit sur un son représentatif. Les points de contrôle en anglais uniquement peuvent être plus stables pour la parole en anglais, tandis que des points de contrôle multilingues sont requis pour les autres langues et la traduction en anglais.
Peut-il exporter des sous-titres ?
Pas directement. L'interface utilisateur actuelle exporte TXT et est horodatée JSON. SRT ou VTT nécessite une étape de conversion et un examen de l'horodatage.
La version WebGPU est-elle la version par défaut ?
Non. Le référentiel README relie WebGPU en tant que branche expérimentale. La documentation actuelle de Transformers.js prend en charge WebGPU, mais cette branche principale reste sur l'ancienne dépendance 2.7.
Est-il activement entretenu ?
Le dernier engagement de la branche principale date du 10 juin 2024, lors de sa révision le 20 août 2026. La démo est toujours en cours d'exécution, mais l'écart de maintenance devrait être inclus dans les décisions d'adoption technique.
Sources examinées
- Référentiel Whisper Web GitHub
- Whisper Web README et WebGPU note de branche
- Entrées audio, modèles, tailles, langues et tâches
- Implémentation de l'inférence, du décodage et du décodage des travailleurs
- Affichage de l'horodatage et exportations TXT/JSON
- Espace officiel en direct Hugging Face
- Guide Transformers.js WebGPU actuel
- whisper.cpp WebAssembly exemple
- Dépôt Whisper-WebUI
Examen indépendant et test pratique : 20 août 2026. L'état du référentiel, la prise en charge du navigateur, les fichiers de modèle et la disponibilité de la démo peuvent changer ; Vérifiez les appareils source et cible actuels avant le déploiement.



