[ブログ] [論文] [モデルカード] [Colab サンプル]
Whisper は汎用の音声認識モデルです。これは、多様な音声の大規模なデータセットでトレーニングされており、多言語音声認識、音声翻訳、言語識別を実行できるマルチタスク モデルでもあります。
Transformer のシーケンスツーシーケンス モデルは、多言語音声認識、音声翻訳、音声言語識別、音声アクティビティ検出などのさまざまな音声処理タスクでトレーニングされます。これらのタスクは、デコーダによって予測されるトークンのシーケンスとして結合して表現されるため、単一のモデルで従来の音声処理パイプラインの多くのステージを置き換えることができます。マルチタスク トレーニング形式では、タスク指定子または分類ターゲットとして機能する特別なトークンのセットが使用されます。
モデルのトレーニングとテストには Python 3.9.9 と PyTorch 1.10.1 を使用しましたが、コードベースは Python 3.8 ~ 3.11 および最新の PyTorch バージョンと互換性があることが期待されています。コードベースはいくつかの Python パッケージにも依存しており、最も注目すべきは高速トークナイザー実装のための OpenAI の tiktoken です。次のコマンドを使用して、Whisper の最新リリースをダウンロードしてインストール (または更新) できます。
pip install -U openai-whisper
あるいは、次のコマンドは、Python の依存関係とともに、このリポジトリから最新のコミットをプルしてインストールします。
pip install git+https://github.com/openai/whisper.git
パッケージをこのリポジトリの最新バージョンに更新するには、次を実行してください。
pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git
また、コマンドライン ツールffmpeg
システムにインストールする必要があります。このツールはほとんどのパッケージ マネージャーから入手できます。
# on Ubuntu or Debian
sudo apt update && sudo apt install ffmpeg
# on Arch Linux
sudo pacman -S ffmpeg
# on MacOS using Homebrew (https://brew.sh/)
brew install ffmpeg
# on Windows using Chocolatey (https://chocolatey.org/)
choco install ffmpeg
# on Windows using Scoop (https://scoop.sh/)
scoop install ffmpeg
tiktokenがプラットフォーム用の事前構築されたホイールを提供していない場合に備えて、 rust
のインストールも必要になる場合があります。上記のpip install
コマンド中にインストール エラーが発生した場合は、「はじめに」ページに従って Rust 開発環境をインストールしてください。さらに、 PATH
環境変数の設定が必要になる場合があります (例: export PATH="$HOME/.cargo/bin:$PATH"
。 No module named 'setuptools_rust'
でインストールが失敗した場合は、次のコマンドを実行するなどしてsetuptools_rust
をインストールする必要があります。
pip install setuptools-rust
6 つのモデル サイズがあり、そのうち 4 つは英語のみのバージョンがあり、速度と精度のトレードオフが提供されます。以下は、利用可能なモデルの名前と、大規模モデルと比較したおおよそのメモリ要件と推論速度です。以下の相対速度は、A100 で英語の音声を書き起こして測定したもので、実際の速度は、言語、話す速度、使用可能なハードウェアなどの多くの要因によって大きく異なる場合があります。
サイズ | パラメータ | 英語専用モデル | 多言語モデル | 必要なVRAM | 相対速度 |
---|---|---|---|---|---|
小さい | 39分 | tiny.en | tiny | ~1GB | ~10倍 |
ベース | 74分 | base.en | base | ~1GB | ~7倍 |
小さい | 244M | small.en | small | ~2GB | ~4x |
中くらい | 769メートル | medium.en | medium | ~5GB | ~2倍 |
大きい | 1550メートル | 該当なし | large | ~10GB | 1x |
ターボ | 809M | 該当なし | turbo | ~6GB | ~8倍 |
英語専用アプリケーションの.en
モデルは、特にtiny.en
モデルとbase.en
モデルでパフォーマンスが向上する傾向があります。 small.en
とmedium.en
モデルでは、その差がそれほど顕著ではないことが観察されました。さらに、 turbo
モデルは、精度の低下を最小限に抑えながら、より高速な転写速度を提供する、 large-v3
の最適化されたバージョンです。
Whisper のパフォーマンスは言語によって大きく異なります。以下の図は、Common Voice 15 および Fleurs データセットで評価された WER (単語エラー率) または CER (文字エラー率、斜体で表示) を使用して、言語ごとのlarge-v3
モデルとlarge-v2
モデルのパフォーマンスの内訳を示しています。他のモデルおよびデータセットに対応する追加の WER/CER メトリクスは、この論文の付録 D.1、D.2、および D.4 に記載されており、翻訳用の BLEU (Bilingual Evaluation Understudy) スコアも付録 D に記載されています。 3.
次のコマンドは、 turbo
モデルを使用して音声ファイルに音声を文字起こしします。
whisper audio.flac audio.mp3 audio.wav --model turbo
デフォルト設定 ( turbo
モデルを選択) は、英語の転写に適しています。英語以外の音声を含む音声ファイルを文字に起こすには、 --language
オプションを使用して言語を指定できます。
whisper japanese.wav --language Japanese
--task translate
追加すると、スピーチが英語に翻訳されます。
whisper japanese.wav --language Japanese --task translate
次のコマンドを実行して、利用可能なすべてのオプションを表示します。
whisper --help
利用可能なすべての言語のリストについては、tokenizer.py を参照してください。
文字起こしは Python 内で実行することもできます。
import whisper
model = whisper . load_model ( "turbo" )
result = model . transcribe ( "audio.mp3" )
print ( result [ "text" ])
内部的には、 transcribe()
メソッドはファイル全体を読み取り、30 秒のスライド ウィンドウでオーディオを処理し、各ウィンドウで自己回帰シーケンス間の予測を実行します。
以下は、モデルへの下位レベルのアクセスを提供するwhisper.detect_language()
とwhisper.decode()
の使用例です。
import whisper
model = whisper . load_model ( "turbo" )
# load audio and pad/trim it to fit 30 seconds
audio = whisper . load_audio ( "audio.mp3" )
audio = whisper . pad_or_trim ( audio )
# make log-Mel spectrogram and move to the same device as the model
mel = whisper . log_mel_spectrogram ( audio ). to ( model . device )
# detect the spoken language
_ , probs = model . detect_language ( mel )
print ( f"Detected language: { max ( probs , key = probs . get ) } " )
# decode the audio
options = whisper . DecodingOptions ()
result = whisper . decode ( model , mel , options )
# print the recognized text
print ( result . text )
?を使用してください。 Web デモ、他のツールとの統合、さまざまなプラットフォーム用のポートなど、Whisper およびサードパーティ拡張機能の使用例をさらに共有するために、ディスカッションの Show and Tell カテゴリを使用します。
Whisper のコードとモデルの重みは MIT ライセンスに基づいて公開されています。詳細については、「ライセンス」を参照してください。