Russische spraak nauwkeuriger herkennen dan Whisper met GigaAM
Iedereen die ooit heeft geprobeerd Whisper te gebruiken voor echte callcenteropnames of snelle spraakberichten in het Russisch kent deze frustratie. Het model hallucineert vaak, laat eindes weg, of begint Russische spraak te vertalen naar gebroken Engels. Lange tijd leek het alsof je hier simpelweg mee moest leven, totdat een openbaar project van het SberDevices-team genaamd GigaAM verscheen.
De salute-developers/GigaAM repository bevat een familie van akoestische modellen gebaseerd op de Conformer-architectuur. De hoofdfocus ligt op Russisch en CIS-talen, hoewel recente releases ondersteuning hebben toegevoegd voor meer dan 70 talen. De modellen worden gedistribueerd onder de permissieve MIT-licentie, waardoor ze een uitstekende keuze zijn voor commerciële producten zonder juridische risico's.
Wat deze modellenfamilie kan doen
Het project dekt verschillende kerntaken voor audioverwerking. Binnen de repository vind je oplossingen voor verschillende scenario's:
- Klassieke ASR met CTC- en RNN-T-decoders. De versie 3 (v3)-modellen zijn getraind op 700.000 uur audio. Ze bieden een merkbare kwaliteitsverbetering in complexe domeinen: ruis, achtergrondmuziek, aarzelende spraak en technische ondersteuningsgesprekken.
- End-to-end transcriptie e2e. Versies
v3_e2e_ctcenv3_e2e_rnntvoegen automatisch interpunctie toe en voeren tekstnormalisatie uit, waarbij getallen en afkortingen worden omgezet naar leesbare vorm. In blinde tests (Side-by-Side met LLM als beoordelaar) verslaat deze combinatie Whisper-large-v3 met een score van 70:30. - Emotieherkenning. Model
GigaAM-Emois getraind om de emotionele toon van een zin te bepalen en presteert ongeveer 15% beter dan populaire baselines op de Macro F1-metriek. - Woordniveau-tijdstempels en lange audio. Je kunt nauwkeurige tijdstempels voor elk woord krijgen of de pyannote-segmentatiemodule aansluiten voor het verwerken van opnames van urenlang.
- Meertaligheid. Branch
multilingualbiedt encoders met 220M en 600M parameters, voorgetraind op 2 miljoen uur data, met sterke kwaliteit voor Kazachs, Kirgizisch en Oezbeeks.
Snel starten en werkende voorbeelden
Je hebt Python 3.10+ en ffmpeg geïnstalleerd nodig op je systeem om te beginnen.
De basispackage installeren:
git clone https://github.com/salute-developers/GigaAM.git
cd GigaAM
pip install -e .[torch]
De basis-pipeline is uiterst eenvoudig. Hier is een voorbeeld waarin we eerst een audiobestand transcriberen, woordtijdstempels ophalen en vervolgens de emotionele toon van de spreker controleren:
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}")
Er is een belangrijk detail dat expliciet in de documentatie wordt vermeld: de basis .transcribe-methode is ontworpen voor segmenten tot 25 seconden. Als je een lange vergaderopname of podcast aan het model moet voeren, moet je extra afhankelijkheden installeren pip install -e ".[longform]" en een Hugging Face-token configureren om de segmenter te downloaden 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}")
Hoe te deployen naar productie
De ontwikkelaars hebben rekening gehouden met productiedeployment. De modellen zijn niet gekoppeld aan pure PyTorch:
- ONNX-export. Elk model kan in een paar regels worden geconverteerd via de
model.to_onnx()-methode. FP16 wordt ondersteund voor GPU-inferentie via onnxruntime-gpu. - Integratie met Triton Inference Server en TensorRT. De
triton_scripts-map bevat kant-en-klare recepten voor het bouwen van microservices met hoge doorvoer. - Fine-tuning. De repository heeft kant-en-klare scripts gebaseerd op PyTorch Lightning, dus als je je eigen gelabelde dataset hebt, kunnen CTC- en RNN-T-adapters worden aangepast aan de specifieke woordenschat of terminologie van je bedrijf.
Voorbeeld van exporteren naar ONNX:
import gigaam
import torch
model = gigaam.load_model("v3_ctc")
model.to_onnx(dir_path="onnx_models", dtype=torch.float16)
Wie heeft dit project nu meteen nuttig
Als je een spraakbot, call-transcriptiesysteem, spraakanalytics voor operators of ondertitelgenerator voor Russische content bouwt, is er weinig praktisch nut meer om naar Whisper te kijken. GigaAM draait sneller, weegt een bescheiden 220–600 miljoen parameters, vereist minder VRAM en verwerkt complexe Russische fonetiek aanzienlijk beter.
De gemakkelijkste manier om te beginnen is met het interactieve Google Colab-notebook, waarvan de link right in de header van de officiële repository staat.
Gerelateerde projecten