字幕用Whisperモデル比較:tiny・small・turbo・large-v3の違い
字幕用Whisperモデルを徹底比較。tiny・small・turbo・large-v3のパラメータ数、実際のダウンロード容量、速度を検証し、字幕作業において大きいモデルが常に最良とは限らない理由をわかりやすく解説します。
Whisperには6つのサイズがあります。OpenAI自身の公表値では、tinyのパラメータ数は3,900万、baseは7,400万、smallは2億4,400万、mediumは7億6,900万、largeは15.5億、turboは8.09億で、前の4つには英語専用の.en版もあります。デスクトップアプリがダウンロードするfaster-whisperビルドでは、容量はtinyの約78 MBからlarge-v3の約3.1 GBまでです。
とはいえ、最大のモデルが自動的に字幕向けの最良の選択になるわけではありません。large-v3-turboのパラメータ数はlarge-v3のおよそ半分ですが、速度は約8倍で、通常の映像であれば仕上がった字幕ファイルの差はごく小さく、実質的に速度で選んで構わないレベルです。さらに、小さいモデルの方が大きいモデルより良い文字起こしを作る場面も実際にあります。
以下では、それぞれの数値が字幕作業にとって何を意味するのか、そしてモデルを実力以下に見せてしまう失敗パターンについて解説します。
各モデルを並べて比較する
パラメータ数と相対速度はOpenAIのWhisper READMEによるものです。一方、容量はHugging Face上のfaster-whisper(CTranslate2)ビルドの正確な合計値で、Sablateが各品質レベル用にダウンロードするのと同じビルドです。切り捨てた概算値ではありません。
| モデル | パラメータ数 | ダウンロード容量 | large-v3との速度比 | Sablateの品質レベル |
|---|---|---|---|---|
tiny | 39 M | 約78 MB | 約10× | Fast |
tiny.en | 39 M | 約78 MB | 約10× | — |
base | 74 M | 約148 MB | 約7× | — |
base.en | 74 M | 約148 MB | 約7× | — |
small | 244 M | 約486 MB | 約4× | Balanced |
small.en | 244 M | 約486 MB | 約4× | — |
medium | 769 M | 約1.53 GB | 約2× | turboに置き換え済み |
medium.en | 769 M | 約1.53 GB | 約2× | — |
large-v3-turbo | 809 M | 約1.62 GB | 約8× | Accurate |
large-v3 | 1550 M | 約3.09 GB | 1× | Best |
このパターンから外れているのがturbo行です。mediumより多くのパラメータを持ちながら、それでも約4倍速く動作します。これはパラメータ数だけからは予測できないことです。Sablateの4つの品質レベルは多言語モデルを使っており、baseと.en版は比較のために表に載せています。
英語専用の.enモデルを使うべきか
OpenAIはtiny・base・small・mediumの英語専用版を公開しています。READMEによると、これらは英語でより良い結果を出す傾向があり、特にtiny.enとbase.enで顕著で、small.enとmedium.enでは差が小さくなります。largeとturboには.en版がありません。
字幕に当てはめると、ルールは単純です。音声が英語で、小さいモデルしか使えない場合 — 古いノートパソコン、CPUのみ、手早い下書きなど — は、同じ容量・同じ速度なら.en版の方が良い選択です。音声のどこかに他の言語が含まれるなら、多言語モデルを使ってください。.enモデルは英語しか知らないからです。large-v3-turbo以上では、多言語版しか存在しないため、この問題自体がなくなります。
turboが推奨を変える理由
turboは、ゼロから学習し直した小型モデルではありません。large-v3のデコーダーを32層から4層に削減し、同じ多言語文字起こしデータでさらに2エポック分ファインチューニングしたものです。Whisperは処理時間の大半をデコーダーで消費するため、そこを大胆に削るだけで速度は大きく向上します。一方、実際に音声を「聴く」部分であるエンコーダーには手が加えられていません。
ここには2つの注意点があり、いずれも噂ではなくOpenAI自身が明記しているものです:
- 翻訳データを使わずにファインチューニングされている。 turboは文字起こし専用のモデルです。Whisperの音声→英語翻訳タスクを使いたい場合、turboは適した選択ではありません。元の言語で文字起こしをしてから、その後でテキストを翻訳してください — そもそもこちらの方が良いワークフローです。
- 言語によって精度の落ち方が異なる。 turboはほとんどの言語で
large-v2と同水準の精度を保ちますが、タイ語と広東語では目に見えて精度が落ちます。これらの言語を扱う場合は、採用前に必ず検証してください。
それ以外の場面では、turboが字幕作業の合理的な既定選択です — large-v3に近い品質を保ちながら、2時間の録音でも現実的な作業時間で処理できる速度があります。
一番大きいモデルが、一番良い字幕を作るのか
必ずしもそうではありません。その例外を知っておく価値があるのは、実際に遭遇するとバグに見えてしまうからです。
この検証は、101秒のトルコ語クリップを対象に、RTX 3060 Tiでfloat16を使い、アプリ自体の文字起こしパスを通して行いました。各モデルが実際にどれだけの発話を捉えられたかで順位をつけると、mediumが最も優れていました。large-v3はmediumが正しく文字起こしできていた発話を取り落としており、クリップ冒頭の言葉やいくつかの短い相づちがそのまま消えていました。よく使われる調整をひとつずつ試しましたが、いずれも効果はありませんでした:音声区間検出(VAD)フィルターの無効化、no-speech閾値の上昇、対数確率(log-probability)閾値の除外、temperatureの固定です。対数確率閾値を外すとむしろ大幅に悪化し、文字起こしはおよそ1,110文字から429文字まで減少しました。
さらに、large-v3の代わりにlarge-v2を使うべきだという、コミュニティでよく言われるアドバイスも検証しました。このクリップでは、large-v2が全モデル中最悪の結果でした:28.7秒から58.7秒までの30秒間の発話をまるごと欠落させ、mediumが178語を書き出したのに対し、わずか106語しか出力しませんでした。
1本のクリップはベンチマークにはなりません。しかも今回のクリップは短く、トルコ語で、雑談的な内容でした。ここから受け取るべきはランキングではなく手法です: 同じファイルを2つのモデルで文字起こしし、スペルミスよりも欠落を先に確認し、すべてを聞き取れていたモデルを選んでください。字幕においては、欠落の方が誤字よりもはるかにコストが高くつきます。視聴者は誤った単語なら読み飛ばせますが、そもそも存在しない行は読めないからです。
良いモデルが悪く見えてしまうとき
「大きいモデルの方が悪い」という不満の裏には、モデル自体とは関係のない3つの失敗パターンがあります。
1. 単語タイムスタンプの同着が行分割を壊す。 Whisperは単語ごとにタイムスタンプを出力しますが、隣り合う単語がまったく同じ境界を共有することが頻繁にあります — 検証したクリップでは、177個の単語間ギャップのうち172個がちょうど0.000秒でした。長いキューを最大のギャップで分割するスプリッターは、そのため候補がすべて同着になってしまい、最初の1つを選んでは再帰的に分割を続けます — 1語ずつ剥がしていくような形です。症状としては、文字起こしがすべて単語1つの字幕に切り刻まれてしまい、単語数の多いモデルほどこの症状はひどくなります。同着判定を時間的な中間点を優先する方式に修正したところ、あるクリップでは90キュー(そのうち78個が単語1つ)から、単語1つの行が1つだけ残る28キューまで改善しました。モデルの方は何も変えていません。
2. 選んだはずのモデルが、実際に動いたモデルではない。 モデルのリポジトリ名は、ダウンロード用のレジストリと推論ライブラリの間で一貫していません。あるリポジトリ名でディスク上にダウンロード済みのモデルがあっても、ローダーが別の名前で検索していると、サイレントフォールバックが起きるか、ネットワークの問題のように見えるエラーが返ってきます — しかも正しいモデルの1.6 GBは、すでにディスク上に存在しているのです。
3. 再文字起こしが失敗すると、古い文字起こしが画面に残り続ける。 再実行が失敗し、アプリがジョブをロールバックしても、要求したモデル名だけが表示され続けると、実際には前のモデルの出力を新しいモデルの結果として見ていることになります。この状態から行う比較はすべて誤りです。ベンチマークを行うなら、結論を出す前にテキストが実際に変わったことを確認してください — 異なる2つのモデルから同じ出力が返ってくるのは、発見ではなく警告サインです。
VRAM・ディスク容量と、自分のマシンで動くもの
OpenAIのREADMEには、同社のPyTorch実装におけるおおよそのVRAMが記載されています。tinyとbaseは約1 GB、smallは2 GB、mediumは5 GB、turboは6 GB、largeは10 GBです。faster-whisperビルドはそれより少なくて済み、上の表のダウンロード容量が、実際に目にするメモリ負荷のよい目安になります。実用的な指針は次のとおりです:
- VRAM 4 GB以下、または専用GPUなし —
smallが最適です。tinyは下書きやタイミング確認用で、納品には向きません。 - VRAM 6〜8 GB —
large-v3-turboを余裕をもって動かせます。多くの人にとって、ここが標準の構成になるはずです。 - VRAM 10 GB以上 — 音声が本当に必要としている場合に限り
large-v3を。強いアクセント、話者の重なり、質の悪いマイクなどが対象です。 - GPUなし、CPUのみ — 今日中に必要な作業には
smallを、放置しておける作業にはturboを。
ここでは精度もモデルサイズと同じくらい重要です。Whisperが動作するCTranslate2ビルドはfloat16とint8に対応しており、精度を落とすとメモリ使用量は大きく減ります。その代償は、int8ではわずかで、GPU上のfloat16ではほとんど気づかないレベルです。
GPUを使うと、同じマシンのCPU実行に比べておおよそ5〜10倍の高速化が見込めます。WindowsのSablateでは、NVIDIA CUDAランタイムはインストーラーに同梱されず、GPUでの実行が最初に行われたときにダウンロードされます。これにより、GPUを使わない人にとってはダウンロード容量が小さく保たれます。
結局、どのモデルを選ぶべきか
| 状況 | モデル | 理由 |
|---|---|---|
| タイミングの確認やキャプションスタイルを試すとき | tiny | 数秒で終わる。ここでは精度は関係ない |
| 明瞭な発話、話者1人、良いマイク | small | 高速。残りはエディタで直せる |
| 納品用字幕の既定モデル | large-v3-turbo | large-v3に近い精度を、約8倍の速度で |
| アクセント、ノイズ、話者の重なり | large-v3 | 余分なパラメータがここで生きてくる |
| タイ語または広東語 | large-v3 | turboの弱点として明記されている言語 |
| 他言語への翻訳の元になる文字起こし | 出せる中で最も高精度なモデル | すべての誤りが、すべての言語に伝わってしまう |
最後の行が、計算を変える行です。文字起こしが8言語への翻訳の入力になる場合、1つの誤りは1つの誤りではなく、8つの誤りになります。多言語ワークフローでは、元になる文字起こしにこそ、遅いモデルと丁寧な確認作業をかけるべき理由を解説しています。
Sablateでは、Fast と Balanced(tinyとsmall)は無料プランで使えます。Accurate と Best はProの機能で、$29の一度きりの支払いで使えるようになります — 詳細は料金ページをご覧ください。どのモデルを使っても、結果は同じエディタに届き、同じ形式で書き出されます — SRT・VTT・ASSです。つまりモデル選びが左右するのは、その後どれだけ修正作業をするかであって、何が作れるかではありません。
モデルを手動で管理したくない場合は、オフライン字幕生成ツールの比較で、モデルの選択とダウンロードを代わりに行ってくれるデスクトップアプリを紹介しています。Windows向けのMacWhisper代替とTurboScribeの代替も、同じ選択をアプリ側から見た記事です。
自分の映像でこれを検証する方法
5分の検証手順は、この記事を含むどんな公開ベンチマークよりも当てになります:
- 60〜120秒の、実際の条件を代表するクリップを用意する — 一番悪いマイク、いつものアクセント、実際に使っている部屋で。
- それを候補となる2つのモデルで文字起こしする。他の条件は何も変えない。
- まず欠落を、次にスペルミスを比較する。
- 単語1つだけのキューの数を数える。それが多ければ、原因はモデルではなく分割処理にある。
- そのあとで初めて実際の処理時間を比較し、その時間に対する価値を自分自身で判断する。
自分の素材のすべてを聞き取れるモデルこそが、自分にとって最良のモデルです。そしてそれは、必ずしも一番大きいモデルではありません。
よくある質問
Whisperのモデルサイズにはどんな種類がありますか?
OpenAIの公表値では6種類で、tiny(3,900万パラメータ)、base(7,400万)、small(2億4,400万)、medium(7億6,900万)、large(15.5億)、turbo(8.09億)です。tiny・base・small・mediumには英語専用の.en版もあります。faster-whisperとしてダウンロードされる容量は、順に約78 MB、148 MB、486 MB、1.53 GB、large-v3が3.09 GB、turboが1.62 GBです。
字幕に最適なWhisperモデルはどれですか?
ほとんどの映像ではlarge-v3-turboです。パラメータ数はlarge-v3の15.5億に対して8.09億ですが、デコーダーが32層から4層に削減されているためおよそ8倍速く動作し、精度の差はごくわずかなので速度で選んで問題ありません。難しい音声にはフルサイズのlarge-v3を、下書きにはsmallを使ってください。
large-v3は、mediumやturboより常に精度が高いのですか?
いいえ。ほとんどの素材ではそうですが、すべてではありません。実際に短いトルコ語のクリップで検証したところ、large-v3はmediumが正しく文字起こしできていた発話を取り落としており、相づちや冒頭の言葉も含まれていました。パラメータ数が多い方が常に勝つと決めつけず、自分の映像で実際に検証する価値があります。
各Whisperモデルには、どれくらいのディスク容量が必要ですか?
実際にダウンロードされるCTranslate2ビルドで計測すると、tinyは約78 MB、baseは約148 MB、smallは約486 MB、mediumは約1.53 GB、large-v3-turboは約1.62 GB、large-v3は約3.09 GBです。英語専用の.en版も同じ容量です。文字起こし中のVRAM使用量もおおむね同じ順序になり、float16やint8の精度を使うとかなり抑えられます。
large-v3とlarge-v3-turboの違いは何ですか?
turboは、デコード層を32層から4層に削減し、ファインチューニングを施したlarge-v3です。そのため文字起こしにおいては、同程度の品質を保ちながらはるかに高速です。注意点は2つあります: 翻訳データを使わずにファインチューニングされているため音声翻訳には向かないこと、そしてタイ語や広東語など一部の言語ではlarge-v3より精度が落ちることです。
GPUを使うと、Whisperは実際に速くなりますか?
はい、大きく速くなります — NVIDIAのGPUは、同じマシンのCPU実行に比べて通常5〜10倍速く文字起こしします。この差は、どのモデルが実用的かを変えてしまうほど大きく、長時間の録音にlarge-v3を使う場合、CPUでは一晩かかる作業が、中程度のGPUではコーヒー休憩の間に終わります。
文字起こしが、なぜ単語1つだけの字幕に分割されてしまうのですか?
多くの場合、原因はモデルではなく単語タイムスタンプにあります。Whisperは隣り合う単語の間隔がちょうど0秒になることがあり、最大のギャップを探す行分割処理は本当のギャップを見つけられず、毎回最初の位置で再帰的に分割してしまいます。モデル自体に問題はなく、分割ロジックに同着判定のルールが必要なだけです。