OSFRIA Découvrir les outils

OSIALab · Voix & transcription

faster-whisper — transcrire en Python, plus vite

faster-whisper réimplémente le modèle Whisper sur le moteur d'inférence CTranslate2. Résultat : jusqu'à 4× plus rapide et bien plus sobre en mémoire que l'implémentation d'origine, pour une qualité de transcription équivalente — le tout en local.

Page informative, sans valeur de conseil. Vérifiez la licence du logiciel et des modèles, et gardez en tête qu'une transcription automatique contient des erreurs : relisez avant d'exploiter le résultat.

À quoi ça sert

faster-whisper fait le même travail que whisper.cpp — convertir la parole en texte — mais s'intègre comme une bibliothèque Python. On lui passe un fichier audio, il renvoie des segments horodatés qu'on manipule directement dans son code. C'est le choix naturel quand la transcription n'est qu'une étape d'un programme plus large : indexation, sous-titrage automatisé, analyse de réunions, alimentation d'un RAG.

Ce qui fait sa force

  • Le moteur CTranslate2. Développé par OpenNMT, il optimise l'inférence des modèles Transformer (quantification int8/float16, fusion d'opérations, gestion fine du batch). C'est lui qui apporte le gain de vitesse et la baisse de consommation mémoire face au Whisper PyTorch d'origine.
  • CPU comme GPU. En int8 sur processeur ou en float16 sur GPU NVIDIA (CUDA), le même code s'adapte au matériel. On choisit le compromis vitesse/qualité via le type de calcul.
  • Segments structurés et horodatés. La sortie est une liste de segments avec début, fin et texte, et l'horodatage au mot est disponible — parfait pour générer des sous-titres ou aligner du texte sur de l'audio par programme.
  • Détection d'activité vocale intégrée. Un filtre VAD (Silero) saute les silences, ce qui accélère le traitement des longs enregistrements et réduit les transcriptions parasites.
  • Modèles prêts à l'emploi. Les poids Whisper convertis sont récupérés automatiquement depuis Hugging Face au premier appel, par taille (tiny à large-v3) et en variantes distil pour plus de rapidité.

Pour qui

Pour les développeurs Python qui veulent intégrer la transcription dans une application ou un script. Si vous cherchez plutôt un binaire autonome à lancer en ligne de commande, sans environnement Python à gérer, whisper.cpp sera plus direct.

Installation

Prérequis

Python 3.9+ et pip. Pour l'accélération GPU : une carte NVIDIA avec les bibliothèques CUDA et cuDNN installées. Sur CPU, aucun prérequis matériel particulier.

Installer via pip

pip install faster-whisper

Transcrire un fichier

from faster_whisper import WhisperModel

# « small » en int8 sur CPU ; passez device="cuda", compute_type="float16" sur GPU
model = WhisperModel("small", device="cpu", compute_type="int8")

segments, info = model.transcribe("mon_audio.mp3", language="fr")

print(f"Langue detectee : {info.language} (p={info.language_probability:.2f})")
for segment in segments:
    print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")

Activer le filtre de silences (VAD)

segments, info = model.transcribe(
    "longue_reunion.wav",
    language="fr",
    vad_filter=True,           # ignore les silences
    word_timestamps=True,      # horodatage au mot
)

Choisir le bon type de calcul

# CPU, le plus sobre
model = WhisperModel("small", device="cpu", compute_type="int8")

# GPU NVIDIA, rapide
model = WhisperModel("large-v3", device="cuda", compute_type="float16")

# Compromis GPU avec moindre empreinte mémoire
model = WhisperModel("medium", device="cuda", compute_type="int8_float16")

Bien choisir son modèle

Mêmes tailles que Whisper : de tiny à large-v3. Le paramètre compute_type arbitre vitesse et précision : int8 est le plus léger (idéal CPU), float16 tire parti du GPU, int8_float16 combine les deux. Les variantes distil-large-v3 offrent une vitesse accrue avec une qualité proche du modèle complet, surtout sur l'anglais.

Points de vigilance

Comme whisper.cpp, le traitement reste local et l'outil se contente de produire du texte. Les points réels concernent l'usage et l'environnement, pas l'outil lui-même.

Point d'attention Niveau Ce qu'il faut savoir
Enregistrer une personne sans son accord 🔴 selon le contexte Une voix est une donnée personnelle. Transcrire un échange privé sans information ni consentement des intéressés peut contrevenir au RGPD, même si le calcul est 100 % local.
Dépendances GPU (CUDA / cuDNN) 🟡 selon l'installation L'accélération GPU exige les bonnes versions de CUDA et cuDNN ; une incompatibilité est la cause d'erreur la plus fréquente. La mise en place de la pile CUDA peut être délicate (versions CUDA, cuDNN et CTranslate2 à aligner). Le mode CPU en int8 fonctionne sans aucun de ces prérequis, mais la vitesse est sensiblement plus basse : pour de longs enregistrements, un GPU fait une vraie différence.
Licence du logiciel et des modèles 🟢 permissive faster-whisper est sous MIT, son moteur CTranslate2 (OpenNMT) aussi, et les poids Whisper d'OpenAI sont sous MIT — usage commercial possible.

Sécurité

  • Installez depuis PyPI officiel et épinglez les versions dans votre projet pour des résultats reproductibles.
  • Les poids sont téléchargés au premier appel depuis Hugging Face : assurez-vous d'une source fiable lors de ce premier chargement, puis ils sont mis en cache localement.
  • Traitez les enregistrements comme des données sensibles ; chiffrez le stockage si l'audio contient des informations confidentielles.

Aller plus loin

  • whisper.cpp — la même famille Whisper en binaire C/C++ autonome.
  • FFmpeg — préparer, découper et convertir l'audio en amont.
  • Piper — synthèse vocale locale, le chemin inverse.
  • OSIALab — tous les outils voix et transcription.

Sources