whisper - 大規模微弱監視によるロバスト音声認識

(Robust Speech Recognition via Large-Scale Weak Supervision)

Created at: 2022-09-17 04:02:54
Language: Jupyter Notebook
License: MIT

囁く

【ブログ】 【】 【モデルカード【コラボ例】

ウィスパーは汎用音声認識モデルです。これは、多様なオーディオの大規模なデータセットでトレーニングされ、多言語の音声認識、音声翻訳、言語識別を実行できるマルチタスクモデルでもあります。

接近

接近

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

言語別のWER内訳

コマンドラインでの使用

次のコマンドは、モデルを使用してオーディオ ファイルの音声を文字起こしします。

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 🙌 and Tellカテゴリを使用して、Whisperやサードパーティの拡張機能(Webデモ、他のツールとの統合、さまざまなプラットフォーム用のポートなど)の使用例を共有してください。

ライセンス

Whisperのコードとモデルの重みは、MITライセンスの下でリリースされています。詳細については、ライセンスを参照してください。