>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Python

Como Reconhecer Fala Russa com Mais Precisão do que o Whisper Usando GigaAM

Qualquer pessoa que tentou forçar o Whisper em gravações reais de centrais de atendimento ou mensagens de voz rápidas em russo conhece essa dor. O modelo frequentemente alucina, omite terminações ou começa a traduzir fala russa para um inglês quebrado. Por muito tempo pareceu que você simplesmente tinha que conviver com isso, até que surgiu um projeto aberto da equipe SberDevices chamado GigaAM.

plot

O repositório salute-developers/GigaAM contém uma família de modelos acústicos baseados na arquitetura Conformer. O foco principal aqui é o russo e os idiomas da CEI, embora lançamentos recentes tenham adicionado suporte para mais de 70 idiomas. Os modelos são distribuídos sob a licença MIT permissiva, tornando-os uma excelente escolha para produtos comerciais sem riscos legais.

O que esta família de modelos pode fazer

O projeto cobre várias tarefas principais de processamento de áudio. Dentro do repositório você encontrará soluções para diferentes cenários:

  1. ASR clássico com decodificadores CTC e RNN-T. Os modelos da terceira versão (v3) foram treinados em 700.000 horas de áudio. Eles fornecem um aumento perceptível na qualidade em domínios complexos: ruído, música de fundo, fala hesitante e gravações de chamadas de suporte técnico.
  2. Transcrição end-to-end e2e. As versões v3_e2e_ctc e v3_e2e_rnnt adicionam automaticamente pontuação e realizam normalização de texto, convertendo números e abreviações em forma legível. Em testes cegos (Side-by-Side com LLM como juiz) este combo supera o Whisper-large-v3 com uma pontuação de 70:30.
  3. Reconhecimento de emoção. O modelo GigaAM-Emo é treinado para determinar o tom emocional de uma frase e supera os baselines populares na métrica Macro F1 em aproximadamente 15%.
  4. Timestamps no nível de palavras e áudio longo. Você pode obter timestamps precisos para cada palavra ou conectar o módulo de segmentação do pyannote para processar gravações de uma hora.
  5. Multilinguismo. O branch multilingual oferece encoders com 220M e 600M parâmetros, pré-treinados em 2 milhões de horas de dados, com forte qualidade nos idiomas cazaque, quirguiz e usbeque.

Início rápido e exemplos de trabalho

Você precisará do Python 3.10+ e do ffmpeg instalados em seu sistema para começar.

Instalando o pacote base:

git clone https://github.com/salute-developers/GigaAM.git
cd GigaAM
pip install -e .[torch]

O pipeline básico é extremamente simples. Aqui está um exemplo onde primeiro transcrevemos um arquivo de áudio, obtemos timestamps das palavras e então verificamos o tom emocional do locutor:

import gigaam

# Скачиваем тестовый файл через встроенную утилиту
audio_path = gigaam.utils.download_short_audio()

# 1. Распознавание речи с пунктуацией
asr_model = gigaam.load_model("v3_e2e_rnnt")
text = asr_model.transcribe(audio_path)
print("Текст:", text)

# 2. Получение таймстемпов для каждого слова
timed_result = asr_model.transcribe(audio_path, word_timestamps=True)
for word in timed_result.words:
    print(f"[{word.start:.2f} - {word.end:.2f}] {word.text}")

# 3. Определение эмоций
emo_model = gigaam.load_model("emo")
emotions = emo_model.get_probs(audio_path)
for emotion, prob in emotions.items():
    print(f"{emotion}: {prob:.3f}")

Há um detalhe importante explicitamente declarado na documentação: o método base .transcribe é projetado para segmentos de até 25 segundos. Se você precisar alimentar o modelo com uma gravação longa de reunião ou podcast, precisa instalar dependências adicionais pip install -e ".[longform]" e configurar um token do Hugging Face para baixar o segmentador pyannote/segmentation-3.0:

import os
import gigaam

os.environ["HF_TOKEN"] = "ваш_токен_huggingface"
long_audio = gigaam.utils.download_long_audio()

model = gigaam.load_model("v3_e2e_rnnt")
segments = model.transcribe_longform(long_audio)

for seg in segments:
    print(f"[{gigaam.format_time(seg.start)} - {gigaam.format_time(seg.end)}]: {seg.text}")

Como fazer deploy em produção

Os desenvolvedores cuidaram do deploy em produção. Os modelos não são fortemente acoplados ao PyTorch puro:

  • Exportação para ONNX. Qualquer modelo pode ser convertido em algumas linhas via o método model.to_onnx(). FP16 é suportado para inferência em GPU via onnxruntime-gpu.
  • Integração com Triton Inference Server e TensorRT. A pasta triton_scripts contém receitas prontas para construir microsserviços de alta vazão.
  • Fine-tuning. O repositório possui scripts prontos baseados em PyTorch Lightning, então se você tem seu próprio dataset rotulado, adaptadores CTC e RNN-T podem ser adaptados ao vocabulário ou terminologia específica da sua empresa.

Exemplo de exportação para ONNX:

import gigaam
import torch

model = gigaam.load_model("v3_ctc")
model.to_onnx(dir_path="onnx_models", dtype=torch.float16)

Para quem este projeto será útil agora mesmo

Se você está construindo um voice bot, sistema de transcrição de chamadas, análise de fala de operadores ou gerador de legendas para conteúdo em russo, há pouco ponto prático em olhar para o Whisper. GigaAM roda mais rápido, pesa modestos 220–600 milhões de parâmetros, requer menos VRAM e lida significativamente melhor com fonética russa complexa.

A maneira mais fácil de começar é com o notebook interativo do Google Colab, cujo link está bem no cabeçalho do repositório oficial.

Projetos relacionados