Whisperで文字起こしをローカル環境で動かす最大の利点は、音声データを外部に送らずに済むことと、時間あたりの従量課金がかからないことです。一方で、モデル選びと日本語向けの設定を間違えると、精度も速度も本来の実力から大きく外れます。この記事では、ローカル導入の具体的な手順、日本語の精度を上げる設定、実際につまずきやすいエラーの対処法、そしてAPIとどちらが得かのコスト分岐点までを整理します。
Whisperをローカルで使うか、APIを使うかの判断基準
Whisperは音声認識モデルそのものがMITライセンスで公開されているため、手元のPCで無料で動かせます。同時にOpenAIは従量課金のAPIも提供しており、まずはどちらが自分の用途に合うかを決めるのが先です。
コストの分岐点を試算する
API版の料金はOpenAIの公式料金ページで公開されており、whisper-1は音声1分あたり0.006ドルです。1ドル150円換算で計算すると、次のようになります。
| 月あたりの音声量 | API版の概算コスト | ローカル版のコスト |
|---|---|---|
| 5時間(300分) | 約270円 | 0円(電気代のみ) |
| 20時間(1,200分) | 約1,080円 | 0円(電気代のみ) |
| 100時間(6,000分) | 約5,400円 | 0円(電気代のみ) |
金額だけを見るとローカルが有利に見えますが、GPUを持っていない場合はCPUでの処理が現実的な速度に届かないため、単純比較はできません。判断基準は次の通りです。
- ローカルが向く:機密性の高い会議音声を扱う/すでにGPU搭載PCがある/月10時間以上を継続的に処理する
- APIが向く:処理量が月数時間程度/GPUがない/環境構築に時間をかけたくない
- 併用が向く:普段はローカル、急ぎの案件だけAPI、という使い分け
なお、ツール単位で比較検討したい場合はAI文字起こしツールの精度を実測比較した記事もあわせて参考にしてください。
ローカル導入の手順|3つの実装から選ぶ
「Whisperをローカルで動かす」と言っても実装は複数あり、ここでの選択が速度を大きく左右します。
実装ごとの向き不向き
| 実装 | 特徴 | 向いている人 |
|---|---|---|
| 公式版(openai/whisper) | リファレンス実装。動作は確実だが速度は控えめ | まず動かして仕組みを確認したい人 |
| faster-whisper | CTranslate2ベースで高速・省メモリ。実務の第一候補 | NVIDIA GPUがあるWindows/Linuxユーザー |
| whisper.cpp | C++実装。CPUでも比較的動く。軽量 | GPUがない、または省リソースで回したい人 |
faster-whisperでの導入手順
もっとも実用的なfaster-whisperを例に、最短の手順を示します。
- 1. ffmpegを入れる:音声の読み込みに必須。Windowsならwingetやchocolateyで導入し、PATHを通します
- 2. Python環境を用意する:仮想環境(venv)を作り、その中に隔離してインストールします
- 3. パッケージを入れる:
pip install faster-whisperを実行します - 4. モデルを指定して実行する:初回実行時にモデルが自動ダウンロードされます(large系は数GB)
モデルはlarge-v3-turboを起点にする
モデルはtiny/base/small/medium/largeとサイズが分かれ、さらにlarge-v3とlarge-v3-turboがあります。turboはlarge-v3のデコーダ層を削減した高速版で、日本語ではlarge-v3から大きく精度を落とさずに数倍速く動くため、最初に試すならlarge-v3-turboが妥当です。精度が足りないと感じた場合にlarge-v3へ切り替える、という順番で問題ありません。
日本語の文字起こし精度を上げる3つの設定
同じモデルでも、設定次第で日本語の結果は変わります。以下は導入直後に必ず見直したい項目です。
1. 言語を明示的に「ja」で指定する
Whisperには自動言語検出がありますが、冒頭に無音や英語のBGMが入っていると別言語と誤判定し、出力全体が英訳されてしまうことがあります。日本語音声だと分かっているなら、language=”ja” を必ず明示するのが確実です。これだけで「なぜか英語で出力される」トラブルの大半は防げます。
2. 初期プロンプトで固有名詞を渡す
initial_prompt(初期プロンプト)に、その音声で登場する社名・製品名・人名をあらかじめ書いておくと、表記ゆれが減ります。社内会議のように固有名詞が多い音声では、この一手間の効果が大きく出ます。
3. 出力形式を用途に合わせる
字幕用途ならSRT/VTT、議事録用途ならタイムスタンプ付きのテキストと、後工程に合わせて出力形式を決めておくと変換の手間が省けます。
独自採点:モデル別の実用度
日本語のビジネス音声(会議・インタビュー)を想定し、実務目線で採点しました(5点満点)。
| モデル | 日本語精度 | 速度 | 必要リソース | 総合 |
|---|---|---|---|---|
| large-v3 | 5 | 2 | 2(VRAM大) | 3.0 |
| large-v3-turbo | 4.5 | 5 | 3 | 4.2 |
| medium | 3.5 | 4 | 4 | 3.8 |
| small | 2.5 | 5 | 5 | 3.5 |
| tiny/base | 1.5 | 5 | 5 | 2.5 |
結論として、実務で使うならlarge-v3-turboが最もバランスが良く、smallやtinyは「音声があるかどうかの確認」程度の用途に留めるのが現実的です。
ローカル導入でつまずくポイントと対処法
ffmpegが見つからないエラーが出る
もっとも多い初回エラーです。Pythonパッケージを入れただけではffmpegは入りません。ffmpeg本体を別途インストールし、PATHを通してから、ターミナルを開き直す必要があります。PATHを設定しても直らない場合、ターミナルの再起動漏れがほとんどです。
GPUが使われずCPUで極端に遅い
「動くが1時間の音声に何時間もかかる」場合、GPUが使われていない可能性が高いです。NVIDIA GPUを使うにはCUDA対応のライブラリが必要で、これが揃っていないと自動的にCPUにフォールバックします。実行時のログでデバイスがcudaになっているかを確認してください。GPUが使えない環境では、無理にlargeを使わずwhisper.cppとsmall〜mediumの組み合わせに切り替えるほうが現実的です。
同じ文が何度も繰り返される
無音区間や雑音の多い箇所で、同一フレーズがループ出力されることがあります。VAD(音声区間検出)を有効にして無音を除去する、長時間音声を分割して処理する、といった対処が有効です。faster-whisperにはVADフィルタが用意されており、まずこれを有効にするのが手軽です。
句読点がなく、読みにくい塊で出てくる
Whisperの出力は話し言葉そのままで、議事録としてはそのまま使えません。文字起こしはあくまで素材であり、要約・整形は別工程だと割り切ったほうが早く仕上がります。
実際にありがちな失敗例と、編集者としての判断
導入自体は成功しても、運用でつまずくパターンがあります。
- 最初からlarge-v3を選んで挫折する:VRAM不足で落ちる、あるいは処理が終わらない。まずturboかmediumで一連の流れを通すべきです
- 精度を上げようとモデルだけ大きくする:実際には録音品質の影響のほうが大きく、マイクを変えるほうが効果的なケースが少なくありません
- 文字起こしの後工程を設計していない:出力された生テキストの整形に時間を取られ、結局手作業と変わらない工数になる
編集的な判断としては、「Whisperのローカル導入は、機密性の要件があるか、処理量がまとまってあるときに初めて割に合う」というのが率直なところです。月に数本の会議を文字起こしする程度なら、環境構築にかける時間を考えるとAPIや既製ツールのほうが総コストは安く収まります。議事録用途で完成形まで一気に持っていきたい場合は、無料で使えるAI議事録ツールの比較も検討する価値があります。
まとめ:Whisperローカル導入の要点
Whisperで文字起こしをローカル環境で行う際のポイントを整理します。
- 実装はfaster-whisperを第一候補に。GPUがなければwhisper.cppを検討する
- モデルはlarge-v3-turboから始め、精度不足を感じたらlarge-v3へ
- language=”ja” の明示で、英語出力になる問題の大半は防げる
- 初期プロンプトに固有名詞を渡すと表記ゆれが減る
- ffmpeg未導入・GPU未使用・繰り返し出力が三大つまずきポイント
- コスト面での優位はまとまった処理量から。少量ならAPIや既製ツールが合理的
まずはturboモデルと短い音声で一度通し、自分の環境で実際にどれくらいの速度が出るかを測ってから、本格運用に進めるのが遠回りに見えて最短です。
