OpenAI の Whisper を terminal から local で利用するためにインストールする方法をメモっておく。環境は、macOS Sonoma 14.6.1。
macOS Sonoma には、Python 3.13 がインストールされているが、2024/11/6 時点では、Whisper を利用するためには、Python 3.9 もしくは 3.10 が必要なので、そのインストールから始める。自分でビルドするのは面倒なので、Homebrew を利用する。
次のコマンドを Terminal.app で入力。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
インストールが完了すると、次の 2 行を実行するように促されるので、Terminal.app 上に表示されているものをコピペして実行する。ここで [YOUR HOME DIRECTORY] としてあるところは、自分のホームフォルダの名前になっているはず。この下ものものをコピペする場合は、[YOUR HOME DIRECTORY] のところを自分のフォームフォルダの名前に変更する。
'eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/[YOUR HOME DIRECTORY]/.zprofile
eval $(/opt/homebrew/bin/brew shellenv)
面倒な場合は、https://github.com/Homebrew/brew/releases から、.pkg ファイルがダウンロードできるので、ダウンロードしてインストールする。
次に、Homebrew で Python 3.9 もしくは 3.10 をインストールする。ここでは、Python 3.9 の例を示す。
brew install python@3.9
これで Python 3.9 がインストールされるので、次に、Whisper をインストールする。Whisper のサイトでは、pip となっているが、ここでは、Python 3.9 の物を使いたいので、pip3.9 とバージョンを指定する。
pip3.9 install git+https://github.com/openai/whisper.git
メディアファイルを読み込むためには、ffmpeg が必要になるので、Homebrew でインストールする。
brew install ffmpeg
これで、Terminal.app 上、もしくは Python から Whisper が使える。
次に、Whisper を Local で使うための環境整備をする。このページにある Step 2B: Whipser Install (Online Install for later Offline Use) の指示に従って、blobfile をインストールする。
pip3.9 install blobfile
インストールしたら Step 3: Download Other Required Files (for Offline Use) にある Language Model Files (必要なものだけ) をダウンロードして、Vocab.bpe と Encoder.json もダウンロードする。
これでダウンロードしたファイルを、標準では、次のフォルダにコピー (移動) する。
/Users/[YOUR HOME DIRECTORY]/.cache/whisper
これは、ホームフォルダにある隠しフォルダの中にあるので、Finder でホームフォルダに移動したら、⌘+Shift+G (もしくは Finder のメニューにある「移動」の「フォルダに移動」を選ぶ) で、.cache と入力し、その中にある whisper フォルダにコピー (移動) する。もし、この隠しフォルダが存在しない場合は、作る必要がある。一度でも、Whisper を使うと、初回使用時に指定したモデルファイルがダウンロードされるので、その際に作成されるはず。
次に、ここに入れた Vocab.bpe と Encoder.json を使うように設定する必要があるので、次のフォルダに移動して (⌘+Shift+G)、その中にある openai_public.py を開く。Python 3.10 をインストールした場合は、3.9 を 3.10 に変える。
/opt/homebrew/lib/python3.9/site-packages/tiktoken_ext
openai_public.py の 19–20 行目にある https://openaipublic.blob.core.windows.net/gpt-2/encodings/main/ の部分を、/Users/[YOUR HOME DIRECTORY]/.cache/whisper に変更する
def gpt2():
mergeable_ranks = data_gym_to_mergeable_bpe_ranks(
vocab_bpe_file="https://openaipublic.blob.core.windows.net/gpt-2/encodings/main/vocab.bpe",
encoder_json_file="https://openaipublic.blob.core.windows.net/gpt-2/encodings/main/encoder.json",
vocab_bpe_hash="1ce1664773c50f3e0cc8842619a93edc4624525b728b188a9e0be33b7726adc5",
encoder_json_hash="196139668be63f3b5d6574427317ae82f612a97c5d1cdaf36ed2256dbf636783",
)
ここでも [YOUR HOME DIRECTORY] は、ホームフォルダの名前 (使用している Mac のアカウント名) に変更する。
vocab_bpe_file="/Users/[YOUR HOME DIRECTORY]/.cache/whisper/vocab.bpe",
encoder_json_file="/Users/[YOUR HOME DIRECTORY]/.cache/whisper/encoder.json",
これで保存すると、ローカルで書き起こし作業を行うことができる (はず)。
次のようなコマンドを、Terminal.app に入力すると、音声ファイルの書き起こしを行って、結果がファイルとして保存される。ここでは、audio.m4a という音声ファイルを使って、英語なので英語を指定して、small モデルを利用して、デスクトップにある output という名前のフォルダにプレインテキストで書き出す。--verbose で False を指定すると、書き起こしの経過が Terminal.app 上に表示されない。逐一書き起こしの結果を確認したい場合は、True にするか、--verbose False 自体を削除する。
whisper audio.m4a --language English --model small --output_format txt --task transcribe --output_dir ~/Desktop/output --verbose False