openai/whisper

Robust Speech Recognition via Large-Scale Weak Supervision

Whisper – オープンソースの音声対テキストモデル

概要 – Whisperは、音声をテキストに変換できるTransformerベースのsequence-to-sequenceモデルです。OpenAIによって大規模な多言語音声データセットでトレーニングされており、単一のモデルで以下のことが可能です:

  • 多言語の音声文字起こし
  • 話されている言語の英語への翻訳
  • 話されている言語の識別
  • 音声活動検出(VAD)の実行

重要性 – 個別のコンポーネント(VAD → 言語識別 → ASR → 翻訳)のパイプラインの代わりに、Whisperはこれらすべてを一度のパスで行います。これにより、開発が簡素化され、幅広い言語や音声条件下でそのまま(out-of-the-box)優れた性能を発揮します。


モデルサイズ

サイズ パラメータ数 英語のみ 多言語 VRAM (目安) 相対速度*
tiny 39 M tiny.en tiny ~1 GB ~10× (vs large)
base 74 M base.en base ~1 GB ~7×
small 244 M small.en small ~2 GB ~4×
medium 769 M medium.en medium ~5 GB ~2×
large 1 550 M large ~10 GB
turbo 809 M turbo ~6 GB ~8×
*速度はA100で英語を文字起こしした際の測定値です。実際の速度は言語、ハードウェア、音声によって異なります。

ヒント: 英語のみ (*.en) モデルは、特にtinyとbaseバージョンにおいて、英語の精度が少し高くなります。turbo モデルは、わずかな精度のトレードオフで large-v3 を高速化したバージョンです。


クイックスタート (CLI)

# パッケージとffmpegをインストール (音声デコードに必要)
pip install -U openai-whisper
# Ubuntu/Debianではffmpegも必要です:
sudo apt update && sudo apt install ffmpeg

# 1つ以上のファイルを文字起こし (デフォルトは高速な "turbo" モデルを使用)
whisper audio.flac audio.mp3 audio.wav --model turbo

--language <Lang> を使用して言語を強制するか、多言語モデルで --task translate を使用して英語への翻訳を取得できます。


PythonからのWhisperの使用

import whisper
model = whisper.load_model("turbo")          # 任意のサイズ名が使用可能
result = model.transcribe("audio.mp3")
print(result["text"])

より低レベルな制御を行うには、以下が可能です:

  1. whisper.load_audio / whisper.pad_or_trim で音声をロードおよびパディング/トリミングする。
  2. whisper.log_mel_spectrogram でログMelスペクトログラムに変換する。
  3. model.detect_language(mel) で言語を検出する。
  4. whisper.decode(model, mel, whisper.DecodingOptions()) でデコードする。

インストールに関する注意

  • Python 3.8-3.11と最新のPyTorchが必要です。
  • このパッケージはOpenAIの高速なトークナイザー tiktoken に依存しています。一部のプラットフォームでは、ビルドにRustツールチェーン (rustc, cargo) と setuptools-rust が必要な場合があります。
  • CLIおよびPythonでの音声読み込みのために、ffmpeg がシステムパスに設定されている必要があります。

ライセンス

コードとモデルの重みは MIT License の下で公開されています。


詳細情報

関連

  • Dispatch
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • Dispatch