Introdução geral
O BetterWhisperX é uma versão otimizada do projeto WhisperX, com foco no fornecimento de serviços de reconhecimento automático de fala (ASR) eficientes e precisos. Como um desdobramento aprimorado do WhisperX, o projeto é mantido por Federico Torrielli, que tem o compromisso de manter o projeto continuamente atualizado e melhorar seu desempenho. O BetterWhisperX integra várias tecnologias avançadas, incluindo alinhamento forçado no nível do fonema, processamento em lote com base na atividade de fala e separação de locutores. A ferramenta não só oferece suporte à transcrição em alta velocidade (até 70 vezes a velocidade em tempo real ao usar o modelo large-v2), mas também fornece registro de data e hora preciso em nível de palavra e reconhecimento de vários locutores. O sistema usa o faster-whisper como backend, que requer menos memória de GPU para processar até mesmo modelos grandes, proporcionando uma relação desempenho/eficiência muito alta.
Lista de funções
- Conversão rápida de voz em textoUso do modelo grande large-v2, que suporta transcrição em tempo real de 70x.
- Carimbos de data e hora em nível de palavraTimestamps: fornece registros de data e hora precisos em nível de palavra por meio do alinhamento wav2vec2.
- reconhecimento de vários alto-falantesSeparação e rotulagem de alto-falantes com pyannote-audio.
- Detecção de atividade de vozIdentificação incorreta e processamento em lote reduzidos, sem aumento significativo da taxa de erro.
- inferência em loteSuporte ao processamento em lote para aumentar a eficiência do processamento.
- compatibilidadeSuporte para PyTorch 2.0 e Python 3.10 para uma ampla variedade de ambientes.
Usando a Ajuda
Procedimento de operação detalhado
- Preparação de arquivos de áudioVerifique se o formato do arquivo de áudio é WAV ou MP3 e se a qualidade do som é nítida.
- Modelos de carregamentoSelecione o modelo apropriado (por exemplo, large-v2) de acordo com os requisitos e carregue-o na memória.
- Realizar a transcriçãoTranscrição: chame a função de transcrição para executar o processamento de fala para texto e obter resultados preliminares de transcrição.
- carimbo de data/hora alinhadoAlinhamento de carimbo de data/hora em nível de palavra dos resultados da transcrição usando a função de alinhamento para garantir carimbos de data/hora precisos.
- separação de alto-falantesChamada da função diarize para reconhecimento de vários alto-falantes para obter o rótulo e o fragmento de fala correspondente para cada alto-falante.
- Saída de resultadosSalvar o resultado final como um arquivo de texto ou formato JSON para processamento e análise subsequentes.
1. preparação ambiental
- Requisitos do sistema:
- Ambiente Python 3.10 (recomenda-se usar o mamba ou o conda para criar um ambiente virtual)
- Suporte a CUDA e cuDNN (necessário para aceleração de GPU)
- Kit de ferramentas FFmpeg
- Etapas de instalação:
# Crie um ambiente Python
mamba create -n whisperx python=3.10
mamba activate whisperx
# Instale o CUDA e o cuDNN
mamba install cuda cudnn
# Instalar o BetterWhisperX
pip install git+https://github.com/federicotorrielli/BetterWhisperX.git
2. uso básico
- Uso da linha de comando:
# Transcrição básica (inglês)
whisperx audio.wav
# Usando modelos grandes e maior precisão
whisperx audio.wav --model large-v2 --align_model WAV2VEC2_ASR_LARGE_LV60K_960H --batch_size 4
# Ativar a separação dos alto-falantes
whisperx audio.wav --model large-v2 --diarise --highlight_words True
# Modo CPU (para Mac OS X)
whisperx audio.wav --compute_type int8
- Chamadas de código Python:
importar whisperx
importar gc
dispositivo = "cuda"
audio_file = "audio.mp3"
batch_size = 16 # A GPU pode ser reduzida se houver pouca memória
compute_type = "float16" # Use "int8" quando estiver sem memória.
# 1. Carregue o modelo e transcreva-o
model = whisperx.load_model("large-v2", device, compute_type=compute_type)
audio = whisperx.load_audio(audio_file)
result = model.transcribe(audio, batch_size=batch_size)
# 2. alinhamento de fonemas
model_a, metadata = whisperx.load_align_model(language_code=result["language"], device=device)
result = whisperx.align(result["segments"], model_a, metadata, audio, device)
# 3. separação de alto-falantes (requer o token Hugging Face)
diarize_model = whisperx.DiarisationPipeline(use_auth_token=YOUR_HF_TOKEN, device=device)
diarize_segments = diarize_model(audio)
result = whisperx.assign_word_speakers(diarize_segments, result)
3. recomendações de otimização de desempenho
- Otimização da memória da GPU:
- Reduzir o tamanho do lote (batch_size)
- Uso de modelos menores (por exemplo, base em vez de grande)
- Selecione o tipo de cálculo de peso leve (int8)
- Suporte multilíngue:
- Idiomas suportados por padrão: inglês, francês, alemão, espanhol, italiano, japonês, chinês, holandês, ucraniano, português
- Especifique o idioma a ser usado:
-idioma de
(Exemplo em alemão)
4. cuidados
- Os registros de data e hora podem não ser suficientemente precisos para caracteres especiais (por exemplo, números, símbolos de moeda)
- O reconhecimento de cenas em que várias pessoas estão falando ao mesmo tempo pode não ser eficaz
- A separação dos alto-falantes ainda está sendo otimizada
- Os tokens de acesso Hugging Face são necessários para usar o recurso de separação de alto-falantes
- Garantir a compatibilidade do driver da GPU e da versão CUDA