Whisperで音声の文字起こしをVPSで動かす

※本ページには広告(アフィリエイトプログラム等)が含まれます。

※本ページには広告(アフィリエイトプログラム等)が含まれます。モデルの数値は 2026年8月16日時点の whisper.cpp 公式リポジトリの記載、サーバーの出力は同日に運用中の VPS(Debian 12・メモリ 958MB)から採取した実測値です。

🎯 結論:メモリ 1GB の VPS で載るのは tiny と base だけ

結論から書きます。文字起こしは画像生成と違って CPU だけでも動きます。GPU が無い一般的な VPS でも成立する数少ない用途です。

ただしモデルサイズがメモリで決まります。公式に必要メモリが明記されていて、手元の環境(空きメモリ 468MB)と突き合わせると、現実的に選べるのは tiny と base の 2 つだけでした。small 以上は載りません。

  • tiny(必要メモリ 約 273MB) → 1GB の VPS でも余裕をもって動く
  • base(約 388MB) → 実用ラインはここから
  • small(約 852MB) → メモリ 958MB の箱では**ほぼ全部を占める**
  • medium(約 2.1GB)/ large(約 3.9GB) → 物理的に不可能
  • 🔑 量子化で下げられる → whisper.cpp は整数量子化に対応

Whisper と whisper.cpp

依存が無いのが強み

whisper.cpp は公式に 「Plain C/C++ implementation without dependencies」と書かれているとおり、依存関係がありません。Python の環境構築が要らないので、Debian 12 の pip 事情に巻き込まれずに済みます

Debian 12 の Python 事情を避けられる

参考までに、同じ環境で Python 版を使おうとするとここで止まります。

$ python3 -m pip --version
/usr/bin/python3: No module named pip

pip が未導入で、システムの Python も PEP 668 でロックされています。C/C++ 実装ならこの回り道が丸ごと不要です。

GPU が無くても動く

手元の VPS に GPU は載っていません。

$ nvidia-smi
bash: nvidia-smi: command not found

それでも文字起こしは成立します。画像生成との決定的な違いがここです。

モデルサイズと必要メモリ

公式の数値

モデル ディスク 必要メモリ
tiny 75 MiB 約 273 MB
base 142 MiB 約 388 MB
small 466 MiB 約 852 MB
medium 1.5 GiB 約 2.1 GB
large 2.9 GiB 約 3.9 GB

手元の環境と突き合わせる

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           958Mi       489Mi       123Mi        58Mi       573Mi       468Mi

使えるのは 468MB。この数字を上の表に当てるとこうなります。

モデル 1GB の VPS(空き 468MB)
tiny(273MB) 余裕あり
base(388MB) 載る(他を止める余裕は無い)
small(852MB) ⛔ 空きを大きく超える
medium(2.1GB) ⛔ 物理メモリを超える
large(3.9GB) ⛔ 論外

⚠️ スワップがあれば「動く」ことはありますが、モデルの重みをディスクに退避しながら推論することになるので、実用的な速度にはなりません。手元の環境には 4GB のスワップがありますが、これは落ちないための保険であって、足りないメモリを補う手段ではありません

量子化という手

whisper.cpp は整数量子化に対応しています(Q5_0 などの例が公式に記載)。必要メモリを下げられるので、small を 1GB の箱に載せたいなら最初に検討する手です。精度とのトレードオフになるので、自分の音源で比較してください。

前処理は 16bit WAV / 16kHz

入力の要件

公式には 16-bit WAV files のみ対応と明記されています。MP3 や M4A をそのまま渡しても通りません。

$ ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav

-ar 16000(サンプリングレート 16kHz)、-ac 1(モノラル)、-c:a pcm_s16le(16bit PCM)。この 3 つを揃えるのが定番です。

ffmpeg のメモリにも注意

長時間の音源を変換するとき、ffmpeg 自体もメモリを使います。推論と変換を同時に走らせないようにしてください。1GB の環境では、順番に実行するだけで安定します。

長い音源は分割する

数時間の音源を 1 ファイルで投げると、途中で落ちたときに全部やり直しになります。10 分程度に切ってから順に処理するほうが、失敗したときの被害が小さく済みます。

CPU で足りないときの選択肢

3 つの方向

方法 コスト構造 向く場面
上位プランに変更 月額(例:4GB なら月 3,520 円) 常時使う
GPU を秒課金で借りる 時間単位(V100 で 1 時間 57.6 円 まとめて処理する
文字起こし API を使う 音声の長さ単位 件数が少ない

まとめて処理するなら GPU が合理的

文字起こしは溜めてから一気に処理できるタイプの仕事です。秒課金の GPU とは相性がよく、さくらの高火力 DOK なら V100 が 1 時間 57.6 円(2026年8月16日時点・税込)。処理が終わったら止めれば、そこで課金も止まります。

⚠️ 止め忘れが最大のリスクです。V100 を常時起動すると月 41,472 円になります。GPU の価格感はこちらの記事にまとめています。

常時使うなら上位プラン

毎日決まった量を処理するなら、VPS のメモリを増やすほうが管理は簡単です。さくらの VPS なら 4GB プランが月 3,520 円(税込・2026年8月16日時点)。medium(約 2.1GB)が載る最小の構成になります。

よくある質問

Q1. GPU が無い VPS でも文字起こしできますか?

結論:できます。whisper.cpp は依存関係のない C/C++ 実装で、CPU だけで動きます。手元の環境にも GPU は載っていませんが(nvidia-smi 未インストール)、文字起こしは成立します。画像生成との決定的な違いです。

Q2. メモリ 1GB でどのモデルまで使えますか?

結論:tiny(約 273MB)と base(約 388MB)です。手元の環境の空きメモリは 468MB でした。small は約 852MB 必要なので、物理メモリ 958MB の箱ではほぼ全部を占めることになり現実的ではありません。

Q3. スワップがあれば大きいモデルも動きますか?

結論:動くことはありますが、実用的な速度になりません。モデルの重みをディスクに退避しながら推論することになります。スワップは落ちないための保険であって、足りないメモリを補う手段ではありません。

Q4. MP3 をそのまま渡せますか?

結論:渡せません。16bit の WAV のみ対応です。ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav で、16kHz・モノラル・16bit PCM に変換してから渡してください。

Q5. 精度を上げたいのですが

結論:量子化した大きいモデルを試してください。whisper.cpp は整数量子化に対応しているので、small クラスを 1GB の箱に載せられる可能性があります。精度とのトレードオフになるので、自分の音源で比較するのが確実です。

Q6. まとめて大量に処理したいときは?

結論:秒課金の GPU が合理的です。文字起こしは溜めてから一気に処理できるので、さくらの高火力 DOK なら V100 が 1 時間 57.6 円(2026年8月16日時点・税込)。処理が終われば課金も止まります。止め忘れると常時稼働で月 41,472 円になる点だけ注意してください。

まとめ

文字起こしは、GPU が無い VPS でも成立する数少ない用途です。判断の軸はメモリだけと言っていいくらい、はっきりしています。

  • 🎯 1GB の VPS → tiny(273MB)と base(388MB)。small 以上は載らない
  • 🎯 前処理 → 16bit WAV / 16kHz / モノラル に変換してから渡す
  • 🎯 大量処理 → 秒課金の GPU(V100 で 1 時間 57.6 円)。⛔ 止め忘れ厳禁

数値は 2026年8月16日時点の公式記載と、同日に運用中の VPS から採取した実測値です。メモリが足りないときの対処はスワップの追加、GPU の価格感は画像生成を VPS でやる話、常駐化はsystemd のユニットファイルにまとめています。

読んで頂いて有り難うございます!