Login

Implémentation optimisée de la reconnaissance vocale Whisper basée sur CTranslate2, 4 fois plus rapide et moins gourmande en mémoire que l'originale

MITPython 17.0kSYSTRANfaster-whisper Last Updated: 2025-06-02

Présentation Détaillée du Projet Faster-Whisper

Aperçu du Projet

Faster-Whisper est une réimplémentation du modèle OpenAI Whisper, utilisant CTranslate2 comme moteur d'inférence rapide. Par rapport à la version originale openai/whisper, il offre une accélération allant jusqu'à 4 fois tout en conservant la même précision et en réduisant l'empreinte mémoire. Grâce à la technique de quantification 8 bits, l'efficacité peut être encore améliorée sur les CPU et les GPU.

Caractéristiques Principales

🚀 Avantages en Termes de Performance

  • Accélération : Jusqu'à 4 fois plus rapide que la version originale de Whisper
  • Optimisation de la mémoire : Empreinte mémoire réduite
  • Prise en charge de la quantification : Supporte la quantification 8 bits pour des performances accrues
  • Traitement par lots : Prise en charge de la transcription par lots pour un débit amélioré

🛠️ Caractéristiques Techniques

  • Basé sur le moteur d'inférence CTranslate2
  • Prise en charge de l'exécution sur GPU et CPU
  • Compatible avec les modèles Whisper originaux
  • Supporte plusieurs modes de précision (FP16, FP32, INT8)
  • Décodage audio intégré (sans FFmpeg requis)

Comparaison des Performances

Benchmark GPU (NVIDIA RTX 3070 Ti 8GB)

Comparaison des performances pour la transcription d'un audio de 13 minutes :

Implémentation Précision Beam Size Temps Consommation VRAM
openai/whisper fp16 5 2m23s 4708MB
whisper.cpp (Flash Attention) fp16 5 1m05s 4127MB
faster-whisper fp16 5 1m47s 3244MB
faster-whisper int8 5 1m33s 2926MB

Benchmark CPU (Intel Core i7-12700K)

Implémentation Précision Beam Size Temps Consommation Mémoire
openai/whisper fp32 5 6m58s 2335MB
whisper.cpp fp32 5 2m05s 1049MB
faster-whisper fp32 5 2m37s 2257MB
faster-whisper int8 5 1m42s 1477MB

Instructions d'Installation

Prérequis Système

  • Python 3.9 ou version ultérieure
  • L'exécution sur GPU nécessite la prise en charge des bibliothèques NVIDIA CUDA

Installation de Base

pip install faster-whisper

Installation avec Support GPU

Nécessite l'installation des bibliothèques NVIDIA :

  • CUDA 12.x
  • cuDNN 9.x
  • cuBLAS
pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*
export LD_LIBRARY_PATH=`python3 -c 'import os; import nvidia.cublas.lib; import nvidia.cudnn.lib; print(os.path.dirname(nvidia.cublas.lib.__file__) + ":" + os.path.dirname(nvidia.cudnn.lib.__file__))'`

Via Docker

# Utiliser l'image officielle NVIDIA CUDA
docker run --gpus all -it nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04

Guide d'Utilisation

Transcription de Base

from faster_whisper import WhisperModel

model_size = "large-v3"

# Exécution GPU (FP16)
model = WhisperModel(model_size, device="cuda", compute_type="float16")

# Ou exécution GPU (INT8)
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")

# Ou exécution CPU (INT8)
# model = WhisperModel(model_size, device="cpu", compute_type="int8")

segments, info = model.transcribe("audio.mp3", beam_size=5)

print("Langue détectée '%s', probabilité %f" % (info.language, info.language_probability))

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

Transcription par Lots

from faster_whisper import WhisperModel, BatchedInferencePipeline

model = WhisperModel("turbo", device="cuda", compute_type="float16")
batched_model = BatchedInferencePipeline(model=model)

segments, info = batched_model.transcribe("audio.mp3", batch_size=16)

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

Horodatage au Niveau du Mot

segments, _ = model.transcribe("audio.mp3", word_timestamps=True)

for segment in segments:
    for word in segment.words:
        print("[%.2fs -> %.2fs] %s" % (word.start, word.end, word.word))

Détection d'Activité Vocale (VAD)

# Activer le filtre VAD
segments, _ = model.transcribe("audio.mp3", vad_filter=True)

# Paramètres VAD personnalisés
segments, _ = model.transcribe(
    "audio.mp3",
    vad_filter=True,
    vad_parameters=dict(min_silence_duration_ms=500),
)

Prise en Charge de Distil-Whisper

from faster_whisper import WhisperModel

model_size = "distil-large-v3"
model = WhisperModel(model_size, device="cuda", compute_type="float16")

segments, info = model.transcribe(
    "audio.mp3", 
    beam_size=5, 
    language="en", 
    condition_on_previous_text=False
)

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

Conversion de Modèle

Conversion depuis Transformers

pip install transformers[torch]>=4.23

ct2-transformers-converter \
    --model openai/whisper-large-v3 \
    --output_dir whisper-large-v3-ct2 \
    --copy_files tokenizer.json preprocessor_config.json \
    --quantization float16

Chargement de Modèles Personnalisés

# Chargement depuis un répertoire local
model = WhisperModel("whisper-large-v3-ct2")

# Chargement depuis Hugging Face Hub
model = WhisperModel("username/whisper-large-v3-ct2")

Cas d'Utilisation

  • Reconnaissance vocale (Speech-to-Text)
  • Transcription en temps réel
  • Génération de sous-titres
  • Traduction multilingue
  • Analyse vocale
  • Indexation de contenu audio

Configuration et Optimisation

Configuration de la Journalisation

import logging

logging.basicConfig()
logging.getLogger("faster_whisper").setLevel(logging.DEBUG)

Conseils d'Optimisation des Performances

  • Utiliser l'accélération GPU pour des performances optimales
  • Choisir le mode de précision adapté à votre matériel
  • Le traitement par lots pour augmenter le débit
  • Activer le filtre VAD pour réduire le temps de traitement
  • Définir de manière appropriée la taille du faisceau (beam size) et la taille du lot (batch size)

Configuration des Threads

# Définir le nombre de threads CPU
OMP_NUM_THREADS=4 python3 my_script.py

Architecture Technique

Composants Clés

  • CTranslate2 : Moteur d'inférence rapide
  • PyAV : Bibliothèque de décodage audio
  • Silero VAD : Détection d'activité vocale
  • Transformers : Support de conversion de modèle

Modèles Pris en Charge

  • Série OpenAI Whisper (tiny, base, small, medium, large-v1/v2/v3)
  • Série Distil-Whisper
  • Modèles personnalisés affinés

Communauté et Support

Conclusion

Faster-Whisper est une solution de reconnaissance vocale haute performance qui, grâce à l'optimisation de son moteur d'inférence, offre une accélération significative tout en maintenant la même précision que la version originale de Whisper. Ses fonctionnalités riches, son excellent support écosystémique et son API facile à utiliser en font un choix idéal pour les applications de reconnaissance vocale. Que ce soit pour les développeurs ou les chercheurs, Faster-Whisper permet de construire rapidement des applications de traitement vocal efficaces.

Star History Chart