Login

Implementación optimizada de reconocimiento de voz Whisper basada en CTranslate2, 4 veces más rápida y con menor uso de memoria que la original.

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

Descripción detallada del proyecto Faster-Whisper

Resumen del proyecto

Faster-Whisper es una reimplementación del modelo Whisper de OpenAI que utiliza CTranslate2 como motor de inferencia rápida. En comparación con la versión original de openai/whisper, Faster-Whisper logra una velocidad hasta 4 veces mayor manteniendo la misma precisión, y con un menor consumo de memoria. Mediante la técnica de cuantificación de 8 bits, la eficiencia puede mejorarse aún más tanto en CPU como en GPU.

Características principales

🚀 Ventajas de rendimiento

  • Aumento de velocidad: Hasta 4 veces más rápido que el Whisper original
  • Optimización de memoria: Menor consumo de memoria
  • Soporte de cuantificación: Soporte para cuantificación de 8 bits para un mayor rendimiento
  • Procesamiento por lotes: Soporte para transcripción por lotes para aumentar el rendimiento

🛠️ Características técnicas

  • Basado en el motor de inferencia CTranslate2
  • Soporte para ejecución en GPU y CPU
  • Compatible con los modelos originales de Whisper
  • Soporte para múltiples modos de precisión (FP16, FP32, INT8)
  • Decodificación de audio integrada (no requiere FFmpeg)

Comparación de rendimiento

Pruebas de rendimiento en GPU (NVIDIA RTX 3070 Ti 8GB)

Comparación de rendimiento al transcribir 13 minutos de audio:

Implementación Precisión Beam Size Tiempo Consumo de 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

Pruebas de rendimiento en CPU (Intel Core i7-12700K)

Implementación Precisión Beam Size Tiempo Consumo de RAM
openai/whisper fp32 5 6m58s 2335MB
whisper.cpp fp32 5 2m05s 1049MB
faster-whisper fp32 5 2m37s 2257MB
faster-whisper int8 5 1m42s 1477MB

Instrucciones de instalación

Requisitos del sistema

  • Python 3.9 o superior
  • La ejecución en GPU requiere soporte de las bibliotecas NVIDIA CUDA

Instalación básica

pip install faster-whisper

Instalación con soporte para GPU

Requiere la instalación de las bibliotecas 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__))'`

Método Docker

# Usar la imagen oficial de NVIDIA CUDA
docker run --gpus all -it nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04

Guía de uso

Transcripción básica

from faster_whisper import WhisperModel

model_size = "large-v3"

# Ejecución en GPU (FP16)
model = WhisperModel(model_size, device="cuda", compute_type="float16")

# O ejecución en GPU (INT8)
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")

# O ejecución en CPU (INT8)
# model = WhisperModel(model_size, device="cpu", compute_type="int8")

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

print("Idioma detectado '%s', probabilidad %f" % (info.language, info.language_probability))

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

Transcripción por lotes

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))

Marcas de tiempo a nivel de palabra

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))

Detección de actividad de voz (VAD)

# Habilitar el filtro VAD
segments, _ = model.transcribe("audio.mp3", vad_filter=True)

# Parámetros VAD personalizados
segments, _ = model.transcribe(
    "audio.mp3",
    vad_filter=True,
    vad_parameters=dict(min_silence_duration_ms=500),
)

Soporte para 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))

Conversión de modelos

Conversión desde 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

Carga de modelos personalizados

# Carga desde un directorio local
model = WhisperModel("whisper-large-v3-ct2")

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

Casos de uso

  • Voz a texto
  • Transcripción en tiempo real
  • Generación de subtítulos
  • Traducción multilingüe
  • Análisis de voz
  • Indexación de contenido de audio

Configuración y optimización

Configuración de registro

import logging

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

Sugerencias de optimización de rendimiento

  • Usar aceleración por GPU para obtener el mejor rendimiento
  • Seleccionar el modo de precisión adecuado según el hardware
  • Procesamiento por lotes para aumentar el rendimiento
  • Habilitar el filtro VAD para reducir el tiempo de procesamiento
  • Configurar adecuadamente el tamaño del haz (beam size) y el tamaño del lote (batch size)

Configuración de hilos

# Establecer el número de hilos de la CPU
OMP_NUM_THREADS=4 python3 my_script.py

Arquitectura técnica

Componentes principales

  • CTranslate2: Motor de inferencia rápida
  • PyAV: Biblioteca de decodificación de audio
  • Silero VAD: Detección de actividad de voz
  • Transformers: Soporte para conversión de modelos

Modelos compatibles

  • Serie OpenAI Whisper (tiny, base, small, medium, large-v1/v2/v3)
  • Serie Distil-Whisper
  • Modelos personalizados ajustados

Comunidad y soporte

Conclusión

Faster-Whisper es una solución de reconocimiento de voz de alto rendimiento que logra una mejora significativa en la velocidad mediante la optimización del motor de inferencia, manteniendo la misma precisión que el Whisper original. Sus ricas características, buen soporte de ecosistema y API fácil de usar lo convierten en una opción ideal para aplicaciones de reconocimiento de voz. Tanto desarrolladores como investigadores pueden construir rápidamente aplicaciones eficientes de procesamiento de voz con Faster-Whisper.

Star History Chart