Para que serve
Áudio operativo é um caso difícil para ASR de propósito geral: canal estreito e ruidoso,
sobreposição de fala, jargão técnico denso (equipamentos, instalações, manobras) e
protocolo de comunicação próprio. Um modelo generalista erra justamente nos termos que
importam para o registro operativo.
O ajuste corrige isso no vocabulário e no estilo de fala do domínio.
Uso
from transformers import pipeline
asr = pipeline(
"automatic-speech-recognition",
model="onsdevops/tiago-transcricao",
return_timestamps=True,
chunk_length_s=30,
)
resultado = asr("audio.wav", generate_kwargs={"language": "portuguese", "task": "transcribe"})
print(resultado["text"])
O repositório é autocontido: traz os pesos, as configurações e os arquivos de tokenizer,
então from_pretrained funciona sem depender do modelo base.
Modelo de segmentação
A subpasta segmentation/ traz o modelo de segmentação de falantes (PyanNet) ajustado
no mesmo domínio, usado pelo pipeline para diarização. Ele substitui o componente de
segmentação de um pipeline pyannote; não é um modelo de ASR e não funciona sozinho.
from huggingface_hub import snapshot_download
snapshot_download("onsdevops/tiago-transcricao", allow_patterns="segmentation/*")
Desempenho
Avaliação interna sobre um conjunto de 215 áudios de comunicação operativa real, com
transcrição de referência anotada à mão. Comparação com a solução comercial anterior
sobre os mesmos áudios, após a mesma normalização de texto (minúsculas, sem acentos nem
pontuação):
Table with columns: Métrica, Solução anterior, Este modelo| Métrica | Solução anterior | Este modelo |
|---|
| WER ↓ | 0,414 | 0,406 |
| MER ↓ | 0,404 | 0,354 |
| CER ↓ | 0,329 | 0,283 |
| WIL ↓ | 0,483 | 0,475 |
| WIP ↑ | 0,517 | 0,525 |
Leia com cuidado: o modelo fica à frente nas cinco métricas, mas a margem em WER é
estreita (0,406 contra 0,414, com desvios-padrão em torno de 0,2) e mais folgada em CER e
MER. O comparativo é de um experimento interno, num domínio estreito, e não sustenta
afirmação geral sobre nenhuma solução. Não há intervalo de confiança calculado, e os desvios são altos. Trate como ordem de
grandeza, não como superioridade estabelecida.
O WER absoluto de ~0,4 reflete a dificuldade do material: áudio de rádio comprimido, com
ruído de fundo e sobreposição de vozes.
Treino
- Base:
openai/whisper-medium (764M parâmetros)
- Dados: comunicação operativa real, em português, do Sistema Interligado Nacional
- Hiperparâmetros: batch 48, learning rate 1e-5, warmup 500 passos, 5000 passos no
total, fp16, seleção do melhor checkpoint por WER
- Precisão dos pesos publicados: float32
Nota de reprodutibilidade: 5000 passos com batch 48 correspondem a muitas épocas sobre o
conjunto de treino, bem acima do usual para ajuste de ASR, e os splits não fixam semente.
Quem for reproduzir deve revisar isso.
Limitações e riscos
- Domínio estreito. Ajustado para diálogo operativo do setor elétrico em português.
Fora desse domínio, tende a ter desempenho pior que o próprio
whisper-medium, porque o
ajuste especializa o vocabulário.
- Viés de vocabulário. Aprendeu nomes de instalações, equipamentos e o protocolo de
comunicação do SIN. Pode forçar esses termos em áudio que não os contém.
- Memorização. O modelo foi ajustado em gravações reais de operação. Como qualquer
modelo de sequência, pode reproduzir trechos memorizados do treino diante de entrada
ambígua ou ruidosa — inclusive nomes próprios e identificadores raros. Não use a saída
como evidência de que algo foi dito sem verificação contra o áudio.
- Não é um sistema de identificação. Não identifica quem fala, e não deve ser usado
para atribuir falas a pessoas específicas.
- Dados de treino não são distribuídos. As gravações e as transcrições de referência
são comunicação operativa real e não acompanham este modelo.
Licença e contato
Apache 2.0.
Mantido pela Comunidade de IA do ONS — cia@ons.org.br. Defeitos e sugestões: as
issues do repositório de código.