>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Python

Whisperよりも正確にロシア語音声を認識するGigaAMの活用法

実際のコールセンターの録音やクイック音声メッセージにWhisperを無理やり使おうとしたことがある人なら、この的痛苦を経験しているはずです。このモデルは幻觉を起こしたり、語尾を落としたり、ロシア語音声を中途半端な英語に翻訳し始めたりすることがよくあります。長い間、これは仕方ないと思っていた人も多いでしょう。しかし、SberDevicesチームのオープンソースプロジェクトであるGigaAMの登場により、状況は変わりました。

plot

salute-developers/GigaAMリポジトリには、Conformerアーキテクチャに基づいた音響モデルファミリーが含まれています。主にロシア語とCIS諸言語に焦点を当てていますが、最近のリリースでは70以上の言語サポートが追加されています。モデルはMITライセンスの下で配布されており、商用製品にも法的リスクなく使用できる優れた選択肢です。

このモデルファミリーでできること

このプロジェクトは、複数のコアな音声処理タスクをカバーしています。リポジトリには様々なシナリオ向けのソリューションが含まれています:

  1. CTCおよびRNN-Tデコーダーを使用したクラシックなASR。バージョン3(v3)のモデルは700,000時間の音声で訓練されています。ノイズ、バックグラウンド音楽、不自然なSpeech、テクニカルサポートのコール録音など、複雑なドメインで顕著な品質向上を提供します。
  2. エンドツーエンドの文字起こしe2e。バージョンv3_e2e_ctcおよびv3_e2e_rnntは自動的に句読点を追加し、テキスト正規化を実行して、数字や略語を読みやすい形式に変換します。盲検テスト(LLMをジャッジとしたSide-by-Side)では、この組み合わせがWhisper-large-v3を70:30のスコアで上回っています。
  3. 感情認識。モデルGigaAM-Emoはフレーズの感情トーンを判断するように訓練されており、Macro F1指標で人気のベースラインを約15%上回っています。
  4. 単語レベルのタイムスタンプと長時間音声。各単語の精密なタイムスタンプを取得したり、pyannoteセグメンテーションモジュールを接続して1時間分の录音を処理したりできます。
  5. 多言語対応。ブランチmultilingualは220Mおよび600Mパラメータのエンコーダーを提供し、200万時間のデータで事前訓練されており、カザフ語、キルギス語、ウズベク語で高品質な結果を出します。

クイックスタートと動作例

始めるには、システムにPython 3.10以上とffmpegがインストールされている必要があります。

ベースパッケージのインストール:

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

基本的なパイプラインは非常にシンプルです。以下の例では、まず音声ファイルを文字起こしし、単語のタイムスタンプを取得してから、話者の感情トーンを確認します:

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

ドキュメントに明示されている重要な詳細があります:ベースrecognizeメソッドは最大25秒のセグメント向けに設計されています。長い会議録音やポッドキャストをモデルに入力する必要がある場合は、追加の依存関係をインストールしpip install -e ".[longform]"、セグメンターをダウンロードするためにHugging Faceトークンを設定する必要があります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}")

本番環境へのデプロイ方法

開発者は本番デプロイに対応しています。モデルは純粋なPyTorchに密結合されていません:

  • ONNXエクスポート。任意のモデルを数行のコードで変換できます。FP16はonnxruntime-gpuによるGPU推論でサポートされています。
  • Triton Inference ServerとTensorRTとの統合。examplesフォルダには高スループットのマイクロサービスを構築するための готовыеレシピが含まれています。
  • ファインチューニング。リポジトリにはPyTorch Lightningベースの готовыеスクリプトが含まれており、独自のラベル付きデータセットがある場合、CTCおよびRNN-Tアダプターを会社の特定の語彙や用語に適応させることができます。

ONNXへのエクスポート例:

import gigaam
import torch

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

今すぐこのプロジェクトが役立つ人

音声ボット、コール文字起こしシステム、オペレーター音声分析、ロシア語コンテンツの字幕ジェネレーターを構築している場合、Whisperを検討する実質的な理由はもうありません。GigaAMはより高速に動作し、控えめな220〜600百万パラメータで、より少ないVRAMを必要とし、複雑なロシア語音声をより適切に処理します。

始める最も簡単な方法は、インタラクティブなGoogle Colabノートブックで、公式リポジトリのヘッダーにリンクがあります。

関連プロジェクト