Login

Implementação otimizada do reconhecimento de voz Whisper baseada em CTranslate2, 4 vezes mais rápida e com menor consumo de memória do que a original

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

Detalhes do Projeto Faster-Whisper

Visão Geral do Projeto

Faster-Whisper é uma reimplementação do modelo OpenAI Whisper, utilizando CTranslate2 como um mecanismo de inferência rápido. Em comparação com o openai/whisper original, ele oferece uma velocidade até 4 vezes maior, mantendo a mesma precisão, e com menor consumo de memória. Através da tecnologia de quantização de 8 bits, a eficiência pode ser ainda mais aprimorada em CPUs e GPUs.

Recursos Principais

🚀 Vantagens de Desempenho

  • Aumento de Velocidade: Até 4 vezes mais rápido que o Whisper original
  • Otimização de Memória: Menor consumo de memória
  • Suporte a Quantização: Suporta quantização de 8 bits para maior desempenho
  • Processamento em Lote: Suporta transcrição em lote para aumentar o rendimento

🛠️ Características Técnicas

  • Baseado no mecanismo de inferência CTranslate2
  • Suporta execução em GPU e CPU
  • Compatível com os modelos Whisper originais
  • Suporta múltiplos modos de precisão (FP16, FP32, INT8)
  • Decodificação de áudio integrada (não requer FFmpeg)

Comparação de Desempenho

Teste de Referência de GPU (NVIDIA RTX 3070 Ti 8GB)

Comparação de desempenho para transcrever 13 minutos de áudio:

Implementação Precisão Beam Size Tempo Uso 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

Teste de Referência de CPU (Intel Core i7-12700K)

Implementação Precisão Beam Size Tempo Uso de Memória
openai/whisper fp32 5 6m58s 2335MB
whisper.cpp fp32 5 2m05s 1049MB
faster-whisper fp32 5 2m37s 2257MB
faster-whisper int8 5 1m42s 1477MB

Instruções de Instalação

Requisitos do Sistema

  • Python 3.9 ou superior
  • A execução em GPU requer suporte à biblioteca NVIDIA CUDA

Instalação Básica

pip install faster-whisper

Instalação com Suporte a GPU

É necessário instalar as 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 a imagem oficial NVIDIA CUDA
docker run --gpus all -it nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04

Guia de Uso

Transcrições Básicas

from faster_whisper import WhisperModel

model_size = "large-v3"

# Execução em GPU (FP16)
model = WhisperModel(model_size, device="cuda", compute_type="float16")

# Ou execução em GPU (INT8)
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")

# Ou execução em CPU (INT8)
# model = WhisperModel(model_size, device="cpu", compute_type="int8")

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

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

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

Transcrições em Lote

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 Tempo Nível Palavra

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

Detecção de Atividade de Voz (VAD)

# Habilitar 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),
)

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

Conversão de Modelo

A partir de 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

Carregando Modelos Personalizados

# Carregamento de diretório local
model = WhisperModel("whisper-large-v3-ct2")

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

Cenários de Aplicação

  • Voz para Texto
  • Transcrições em Tempo Real
  • Geração de Legendas
  • Tradução Multilíngue
  • Análise de Voz
  • Indexação de Conteúdo de Áudio

Configuração e Otimização

Configuração de Log

import logging

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

Sugestões de Otimização de Desempenho

  • Use aceleração de GPU para obter o melhor desempenho
  • Escolha o modo de precisão apropriado de acordo com o hardware
  • Processamento em lote para aumentar o rendimento
  • Habilite o filtro VAD para reduzir o tempo de processamento
  • Defina adequadamente o beam size e o batch size

Configuração de Threads

# Definir o número de threads da CPU
OMP_NUM_THREADS=4 python3 my_script.py

Arquitetura Técnica

Componentes Principais

  • CTranslate2: Mecanismo de inferência rápido
  • PyAV: Biblioteca de decodificação de áudio
  • Silero VAD: Detecção de Atividade de Voz
  • Transformers: Suporte à conversão de modelos

Modelos Suportados

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

Comunidade e Suporte

Resumo

Faster-Whisper é uma solução de reconhecimento de voz de alto desempenho que alcança um aumento significativo de velocidade através da otimização do mecanismo de inferência, mantendo a mesma precisão do Whisper original. Seus recursos ricos, bom suporte de ecossistema e API fácil de usar o tornam a escolha ideal para aplicações de processamento de voz. Tanto desenvolvedores quanto pesquisadores podem usar Faster-Whisper para construir rapidamente aplicações eficientes de processamento de voz.

Star History Chart