>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
Python

Russische Spracherkennung mit GigaAM: Genauer als Whisper

Wer versucht hat, Whisper auf echte Callcenter-Aufnahmen oder kurze Sprachnachrichten auf Russisch anzusetzen, kennt dieses Problem. Das Modell halluziniert häufig, lässt Endungen weg oder beginnt, russische Sprache in gebrochenes Englisch zu übersetzen. Lange Zeit schien es, als müsste man damit leben – bis ein Open-Source-Projekt des SberDevices-Teams namens GigaAM auf den Markt kam.

plot

Das Repository salute-developers/GigaAM enthält eine Familie von Akustikmodellen basierend auf der Conformer-Architektur. Der Schwerpunkt liegt auf Russisch und Sprachen der GUS, obwohl neuere Releases Unterstützung für über 70 Sprachen hinzugefügt haben. Die Modelle werden unter der permissiven MIT-Lizenz vertrieben, was sie zu einer ausgezeichneten Wahl für kommerzielle Produkte ohne rechtliche Risiken macht.

Was diese Modellfamilie kann

Das Projekt deckt mehrere Kernaufgaben der Audioverarbeitung ab. Im Repository findest du Lösungen für verschiedene Szenarien:

  1. Klassisches ASR mit CTC- und RNN-T-Decodern. Die Modelle der Version 3 (v3) wurden mit 700.000 Stunden Audio trainiert. Sie bieten einen deutlichen Qualitätsschub in komplexen Bereichen: Rauschen, Hintergrundmusik, unflüssiges Sprechen und Tech-Support-Call-Aufnahmen.
  2. End-to-End-Transkription e2e. Die Versionen v3_e2e_ctc und v3_e2e_rnnt fügen automatisch Satzzeichen hinzu und führen eine Textnormalisierung durch, wobei Zahlen und Abkürzungen in lesbare Form umgewandelt werden. In Blindtests (Side-by-Side mit LLM als Richter) schlägt diese Kombination Whisper-large-v3 mit einem Ergebnis von 70:30.
  3. Emotionserkennung. Modell GigaAM-Emo ist darauf trainiert, den emotionalen Ton einer Äußerung zu bestimmen, und übertrifft beliebte Baselines beim Macro-F1-Metrik um etwa 15%.
  4. Wortgenaue Zeitstempel und lange Audiodateien. Du kannst präzise Zeitstempel für jedes Wort erhalten oder das pyannote-Segmentierungsmodul anschließen, um stundenlange Aufnahmen zu verarbeiten.
  5. Mehrsprachigkeit. Branch multilingual bietet Encoder mit 220M und 600M Parametern, die auf 2 Millionen Stunden Daten vortrainiert wurden, mit starker Qualität für Kasachisch, Kirgisisch und Usbekisch.

Schnellstart und Arbeitsbeispiele

Du brauchst Python 3.10+ und ffmpeg, um loszulegen.

Installation des Basispakets:

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

Die grundlegende Pipeline ist extrem einfach. Hier ein Beispiel, bei dem wir zuerst eine Audiodatei transkribieren, Wortzeitstempel erhalten und dann den emotionalen Ton des Sprechers prüfen:

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}")

Es gibt einen wichtigen Punkt, der explizit in der Dokumentation erwähnt wird: Die Basis-.transcribe-Methode ist für Segmente von bis zu 25 Sekunden ausgelegt. Wenn du dem Modell eine lange Meeting-Aufnahme oder einen Podcast füttern musst, musst du zusätzliche Abhängigkeiten pip install -e ".[longform]" installieren und ein Hugging-Face-Token konfigurieren, um den Segmentierer pyannote/segmentation-3.0 herunterzuladen:

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}")

So deployst du in die Produktion

Die Entwickler haben an den Production-Deployment gedacht. Die Modelle sind nicht eng an reines PyTorch gekoppelt:

  • ONNX-Export. Jedes Modell kann mit der Methode model.to_onnx() in wenigen Zeilen konvertiert werden. FP16 wird für GPU-Inferenz über onnxruntime-gpu unterstützt.
  • Integration mit Triton Inference Server und TensorRT. Der Ordner triton_scripts enthält fertige Rezepte für den Aufbau von Hochdurchsatz-Microservices.
  • Fine-Tuning. Das Repository enthält fertige Skripte basierend auf PyTorch Lightning. Wenn du einen eigenen annotierten Datensatz hast, können CTC- und RNN-T-Adapter an das spezifische Vokabular oder die Terminologie deines Unternehmens angepasst werden.

Beispiel für den Export nach ONNX:

import gigaam
import torch

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

Wem dieses Projekt jetzt nützt

Wenn du einen Sprachbot, ein Call-Transkriptionssystem, eine Sprecheranalytik für Operatoren oder einen Untertitelgenerator für russischsprachige Inhalte entwickelst, gibt es kaum noch einen praktischen Grund, sich Whisper anzusehen. GigaAM läuft schneller, hat bescheidene 220–600 Millionen Parameter, benötigt weniger VRAM und bewältigt komplexe russische Phonetik deutlich besser.

Der einfachste Einstieg ist das interaktive Google-Colab-Notebook, ein Link dazu befindet sich direkt im Header des offiziellen Repositories.

Ähnliche Projekte