Wav2Vec2 Transducer Modular - TAGARELA v2 Clean (16 kHz)
Este modelo é uma versão baseada na arquitetura RNN-Transducer (RNN-T) com encoder pré-treinado lgris/w2v_podcasts_base_400k_pt fine-tuned no dataset TAGARELA v2 em 16 kHz nativo (Full-band).
Diferente de modelos puramente CTC, este Transducer aprende as probabilidades condicionais dos caracteres anteriores via uma rede LSTM autoregressiva (Prediction Network), gerando transcrições em português do Brasil com pontuação completa (. , ? ! : -) e letras maiúsculas.
Descrição do Modelo
- Modelo Base (Encoder):
lgris/w2v_podcasts_base_400k_pt(Wav2Vec2 Clean (Congelado)) - Arquitetura Transducer:
- Encoder Acústico: Wav2Vec 2.0 Base (768 dimensões)
- Prediction Network: 2-Layer LSTM (512 dimensões, dropout 0.1)
- Joint Network: Projeção linear conjunta (512 dimensões) + Tanh -> 107 classes
- Função de Perda: RNN-T Loss
- Dataset de Treino: TAGARELA v2 (coluna
stt_parakeet, 100.000 steps de treinamento) - Idioma: Português Brasileiro (
pt-BR) - Amostragem de Áudio: 16 kHz mono (Full-band limpo, sem filtro telefônico)
- Vocabulário: 107 tokens (letras minúsculas, maiúsculas acentuadas, pontuação e tokens especiais)
Resultados de Avaliação (Benchmarks)
Resultados no conjunto de teste independente do TAGARELA v2:
| Modelo | WER (%) | CER (%) | Formato de Saída |
|---|---|---|---|
| wav2vec2-transducer-tagarela-v2-clean (este modelo) | 23.52% | 7.39% | Pontuação completa e Maiúsculas |
| wav2vec2-podcasts-tagarela-v2 (CTC) | 14.96% | 5.82% | Minúsculas sem pontuação |
| wav2vec2-podcasts-tagarela-combined (CTC) | 15.92% | 6.82% | Minúsculas sem pontuação |
Como Usar (Inferência)
Como a arquitetura RNN-Transducer não possui suporte nativo em pipeline simples do Hugging Face transformers.pipeline, este repositório inclui o script infer_transducer.py.
1. Instalação de Dependências
pip install torch torchaudio transformers librosa huggingface_hub
2. Inferência em Python (Arquivo Completo)
O helper load_transducer_pipeline baixa automaticamente os pesos e configurações deste repositório:
import torch
from infer_transducer import load_transducer_pipeline, transcribe
# Carrega o modelo diretamente do Hugging Face Hub
model, feature_extractor, id_to_token, device = load_transducer_pipeline(
"lgris/wav2vec2-transducer-tagarela-v2-clean",
device="cuda" if torch.cuda.is_available() else "cpu"
)
# Transcrever áudio (será convertido para 16 kHz mono automaticamente)
transcricao = transcribe(model, feature_extractor, id_to_token, device, "audio.wav")
print("Transcrição:", transcricao)
3. Inferência por Linha de Comando (CLI)
Você pode clonar ou baixar o script infer_transducer.py e executar:
python infer_transducer.py --model_dir lgris/wav2vec2-transducer-tagarela-v2-clean --audio meu_audio.wav --device cuda
Hiperparâmetros de Treinamento
- Passos Totais (Max Steps): 100.000
- Batch Size Efetivo: 128 (16 amostras por step $\times$ 8 accumulation steps)
- Otimizador: AdamW (Learning rate base: 5e-4 com warm-up linear de 5.000 steps)
- Duração dos Áudios: 0.5s a 15.0s
- Hardware: NVIDIA DGX B200 (1x GPU B200)