ウィスパーは汎用音声認識モデルです。これは、多様なオーディオの大規模なデータセットでトレーニングされ、多言語の音声認識、音声翻訳、言語識別を実行できるマルチタスクモデルでもあります。
Transformer のシーケンス間モデルは、多言語音声認識、音声翻訳、音声言語識別、音声アクティビティ検出など、さまざまな音声処理タスクでトレーニングされます。これらのタスクはすべて、デコーダーによって予測されるトークンのシーケンスとして共同で表されるため、1 つのモデルで従来の音声処理パイプラインのさまざまな段階を置き換えることができます。マルチタスクトレーニング形式では、タスク指定子または分類ターゲットとして機能する一連の特別なトークンを使用します。
モデルのトレーニングとテストには Python 3.9.9 と PyTorch 1.10.1 を使用しましたが、コードベースは Python 3.7 以降および最近の PyTorch バージョンと互換性があることが期待されています。コードベースはいくつかの Python パッケージにも依存しており、特に高速なトークナイザー実装のための HuggingFace Transformers とオーディオファイルの読み込みのための ffmpeg-python に依存しています。次のコマンドは、このリポジトリから最新のコミットとその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
トークナイザーがプラットフォーム用のビルド済みホイールを提供しない場合に備えて、錆
もインストールする必要があるかもしれません。上記のコマンドの実行中にインストールエラーが表示された場合は、はじめにページに従ってRust開発環境をインストールしてください。さらに、環境変数を構成する必要がある場合があります。でインストールが失敗した場合は、次のコマンドを実行して をインストールする必要があります。
pip install
PATH
export PATH="$HOME/.cargo/bin:$PATH"
No module named 'setuptools_rust'
setuptools_rust
pip install setuptools-rust
5つのモデルサイズがあり、そのうち4つは英語のみのバージョンで、速度と精度のトレードオフを提供します。以下は、使用可能なモデルの名前と、それらのおおよそのメモリ要件と相対速度です。
大きさ | パラメーター | 英語専用モデル | 多言語モデル | 必要なVRAM | 相対速度 |
---|---|---|---|---|---|
ちっぽけ | 39メートル | tiny.en |
tiny |
~1 GB | ~32倍 |
基 | 74メートル | base.en |
base |
~1 GB | ~16x |
小さい | 244メートル | small.en |
small |
~2 GB | ~6x |
中程度 | 769メートル | medium.en |
medium |
~5 GB | ~2倍 |
大きい | 1550メートル | 該当なし | large |
~10 ギガバイト | 1倍速 |
英語のみのアプリケーションの場合、モデルは、特に and モデルのパフォーマンスが向上する傾向があります。我々は、差がモデルとモデルでそれほど重要でなくなることを観察した。
.en
tiny.en
base.en
small.en
medium.en
ウィスパーのパフォーマンスは言語によって大きく異なります。次の図は、モデルを使用した Fleurs データセットの言語別の WER の内訳を示しています。他のモデルとデータセットに対応するより多くのWERおよびBLEUスコアは、論文の付録Dに記載されています。
large-v2
次のコマンドは、モデルを使用してオーディオ ファイルの音声を文字起こしします。
medium
whisper audio.flac audio.mp3 audio.wav --model medium
デフォルト設定(モデルを選択)は、英語の文字起こしに適しています。英語以外の音声を含むオーディオファイルを文字起こしするには、次のオプションを使用して言語を指定できます。
small
--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("base")
result = model.transcribe("audio.mp3")
print(result["text"])
内部的には、このメソッドはファイル全体を読み取り、30 秒のスライディング ウィンドウでオーディオを処理し、各ウィンドウで自己回帰的なシーケンス間の予測を実行します。
transcribe()
以下は、モデルへの下位レベルのアクセスを提供する and の使用例です。
whisper.detect_language()
whisper.decode()
import whisper
model = whisper.load_model("base")
# 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)
ディスカッションのShow
Whisperのコードとモデルの重みは、MITライセンスの下でリリースされています。詳細については、ライセンスを参照してください。