OpenAIが公開した音声認識モデル「Whisper」を使い、Mac環境で動画の文字起こしを試しました。

導入手順と初稿で実際に試した結果をまとめます。
2026年10月26日に、記事の参照先である公式リポジトリのコミット86098128を再照合しました。
以下のCLI仕様はこの参照版の説明で、導入される公開リリースと一致するとは限りません。
今回の更新ではWhisperのインストール・モデル取得・文字起こしの再実行は行っていないため、以下の旧画像や認識結果を現行版の再検証結果とは区別してください。
Whisperで動画から日本語の文字起こしをする手順
検証を行った作業環境は以下の通りです。
- M1 MacBook Air(初稿の検証環境)
公式READMEにはWindows向けの導入方法もありますが、この記事の実行記録は初稿のMac環境によるものです。
まずはPython3を実行できる環境を用意します。
以下のHomebrewとGitHubからの導入コマンドは、初稿で使った手順です。
公式READMEのPython互換性の目安は3.8〜3.11なので、現在のPython・PyTorch・依存パッケージの組み合わせは導入前に確認してください。
ターミナルを起動します。
以下は初稿のHomebrew導入例です。
すでに導入済みなら再導入せず、初めて使う場合はHomebrew公式の現行手順も確認してください。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"次のコマンドも初稿の記録です。
これで入るPythonの版は時期により変わるため、Whisperの互換性の目安に合うとは限りません。
brew install python3使用するPythonと依存パッケージの対応が確認できた環境で、次の手順へ進んでください。
ここからWhisper本体の環境を構築します。
以下の例では、ターミナルの現在の場所に「whisper」フォルダーを作成して移動します。
ホームフォルダー直下に作りたい場合は、先に cd ~ で移動してください。
ターミナルで以下のコマンドを実行します。
mkdir whisper
cd whisper新規導入では、先に仮想環境を作成し、その中へ公開リリース版を入れる方法があります。
既存のPython環境と分けたい場合は、Python公式の仮想環境を用意してから、公開リリースを導入する方法があります。
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U openai-whisper
whisper --helpこの追加例は公式手順に基づく記載で、今回このMacで実行したコマンドではありません。
インストールが完了したら、実際に導入された版とヘルプの表示で利用できるオプションを確認してください。
導入したパッケージの版はpython -m pip show openai-whisperで確認できます。
ターミナルを開き直したときは、作業フォルダーへ移動し、source .venv/bin/activateを再実行します。
仮想環境を有効にしても、Python本体のバージョンは変わりません。
作成前のpython3 --versionで、使用するPythonを確認してください。
次は初稿で使ったGitHub版の導入コマンドです。
上の公開リリース版を導入した場合は、次のGitHub版のコマンドは実行せず、ffmpegの導入へ進んでください。
GitHub版を選ぶ場合も、先に仮想環境を作成して有効にします。
ターミナルで下記のコマンドを実行します。
pip install git+https://github.com/openai/whisper.git動画や音声ファイルを処理するためにffmpegもインストールします。
brew install ffmpeg文字起こしを行いたい動画ファイルを、作成したWhisperフォルダー内に配置します。
初稿ではYouTubeの切り抜き動画素材を使って検証しました。
新しく試す場合は、自作の短い音声や、文字起こし・掲載の許可がある素材を使ってください。

フォルダーに動画を配置後、以下のコマンドを実行します。
whisper "動画名.mp4" --language Japaneseこのコマンドで日本語音声の文字起こしを開始します。
確認した公式CLIではモデルを省略した場合はturboが使われますが、旧版では既定値が異なる場合があります。
初回は必要なモデルを取得することがあるため、通信と保存容量も確保してください。
処理時間はモデル・音声の長さ・ハードウェアなどで変わり、この旧画像から現在のMacでの速度を判断することはできません。
旧検証では、処理が完了するとターミナルに以下の結果が出力されました。
画像にある「FP16 is not supported on CPU; using FP32 instead」は、確認した公式コードではCPU処理をFP32に切り替える警告で、それだけで文字起こしの失敗を意味するものではありません。

旧検証では、下の画像のとおり3種類の字幕・テキストファイルを確認しました。
参照コミットのCLIでは、出力形式の既定値はallで、TXT・VTT・SRT・TSV・JSON・JSONLの6形式を保存する実装になっています。
旧画像のファイル数や「動画名.mp4.vtt」という命名を、別バージョンの固定仕様として参照しないでください。
参照コミットの出力コードは入力拡張子を外した名前で保存し、例として「動画名.vtt」になります。
画面が狭い場合は、次の表を横にスクロールできます。
| 形式 | 保存される内容 |
|---|---|
| .txt | 認識した本文 |
| .vtt | WebVTT字幕 |
| .srt | SRT字幕 |
| .tsv | 開始・終了時刻と本文のタブ区切り |
| .json | 認識結果のJSON |
| .jsonl | 区間ごとのJSONを1行ずつ保存 |
VTTだけを指定する場合は、出力形式と保存先を明示できます。
同じ保存先・同じ出力名で再実行すると既存ファイルを上書きするため、比較時はモデルごとに別の出力フォルダーを指定してください。
whisper "動画名.mp4" --model turbo --language Japanese --output_format vtt --output_dir output既定値や対応形式は版によって変わるため、CLIの出力設定とファイル保存の実装も確認してください。

以下は、初稿で生成したVTTをテキストエディタで確認した旧認識結果です。
この一つの旧出力例から、日本語全般の精度や英語との優劣を評価することはできません。
旧出力には句読点や語句の修正が必要な箇所があるため、字幕を使う前に原音と時刻を照合してください。
モデルと音声の条件を比較する
モデルや前処理を比較する場合も、同じ短い音声で出力と処理時間を比べ、改善したかを確認します。
モデルを指定して結果を比較する
--model largeはモデルを指定する選択肢ですが、すべての音声で精度が大幅に上がることを保証するものではありません。
モデルには必要なメモリや速度の違いがあるため、公式モデル一覧と手元の条件を比較してください。
whisper "動画名.mp4" --model large --language Japanese --output_format vtt --output_dir output-large音声分離の前後で結果を確認する
Ultimate Vocal Removerなどの音声分離ソフトを使用し、BGMやノイズを除去して声の音声だけを抽出します。
入力音声の明瞭さによって文字起こし結果が大きく左右されるため、適切な抽出設定を選択します。
具体的な設定方法については下記の解説記事を参照してください。

前処理が常に認識を改善するとは限らないため、原音と処理後の音声を比べ、認識結果が改善したかを確認してください。
Whisperでの文字起こし時に注意が必要なケース
Whisperを使用する際、以下の2点については認識ミスが生じやすいため注意が必要です。
- 人名や地名の場合、スペルが不安定な場合が多い
- 複数人の重なった音声では欠落や誤認識が起こり得る
これらのケースでは、出力後に目視での確認および修正作業が必要となります。
公式モデルカードは、音声で話されていない内容が出力されたり、同じ文章が繰り返されたりする可能性を説明しています。
固有名詞、無音に近い区間、重なった発話、数字を原音と照合し、認識結果をそのまま発言の証拠にしないでください。
今回、認識精度や作業時間の改善率は測定していません。
用途と限界は、公式モデルカードで確認できます。
動画編集に関するそのほかの関連記事は、以下のリンクから確認できます。

文字起こしと字幕の記事は、ほかにもあります。

まとめ
本記事では、OpenAIの音声認識モデル「Whisper」を用いた動画の文字起こし手順を紹介しました。
動画の音声から時刻付きテキストを生成し、字幕の下書きに利用できます。
ただし、区間の切れ目が必ず発話単位に一致するわけではないため、本文と表示時刻を原音に合わせて修正してください。
動画のテロップ起こしだけでなく、会議の文字起こしや議事録作成の補助としても活用しやすい技術です。
短い素材で、認識結果の修正量と処理時間を確認してから長い音声に使ってください。
