koide 8f2b0885f3
All checks were successful
Deploy Docusaurus Site / deploy (push) Successful in 28s
Add: Game Vision Companion バナー画像を生成・設定
2026-02-28 01:48:20 +00:00

8.2 KiB
Raw Permalink Blame History

sidebar_position, title, description, hide_table_of_contents, displayed_sidebar, image
sidebar_position title description hide_table_of_contents displayed_sidebar image
2 ゲーム画面をリアルタイム翻訳するAIアプリを作った話 ローカルVision LLMを使って、海外ゲームの画面をリアルタイムに翻訳するWindowsアプリを作った。 false null /img/game-vision-companion-banner.png

ゲーム画面をリアルタイム翻訳するAIアプリを作った話

きっかけ

海外ゲームやってると、シナリオやクエストのテキストが全部英語(あるいはそれ以外の言語)で、雰囲気で進めちゃうことない?自分もそうだったんだけど、ちゃんとストーリーを理解しながらプレイしたいなと思って、リアルタイム翻訳できるツールを作ることにした。

「リアルタイム翻訳ソフトなんてもうあるじゃん」って思うかもしれないけど、既存のものは自分が求めるレベルに達してなかった。具体的には:

  • リアルタイム性 — ゲームの進行を止めずに翻訳してほしい
  • ゲーム体験を損なわない — 翻訳UIがゲームの邪魔になるのは本末転倒
  • 精度 — OCR+翻訳がちゃんと使えるレベルであること

最近のVision LLM画像を理解できるAIはOCR+翻訳の精度がかなり上がってて、しかもVRAM 16GBあれば十分動く。ゲーム用とは別にGPUマシンもあったから、じゃあ作ってみるかと。

何ができるのか

Game Vision Companion — Windows PCの画面をリアルタイムにキャプチャして、ローカルのVision LLMで分析・翻訳するアプリ。

Game Vision Companionのスクリーンショット

メイン機能:リアルタイム翻訳

一番力を入れたのがこれ。

  • 翻訳エリアの自由指定 — 画面上の好きな場所をドラッグで範囲選択。会話ウィンドウだけ、とかクエストログだけ、みたいに自分で決められる
  • 半透明オーバーレイ — 翻訳結果がゲーム画面の上に半透明で表示される。別ウィンドウとして外に出すこともできる
  • テキストがない時は自動で薄くなる — 翻訳するテキストがない場面では、ウィンドウがさらに薄くなってゲームの邪魔にならない

この「テキストがない時はウィンドウを薄くする」ってのが地味に大事で、常時表示だとゲーム体験を損なうんだよね。必要な時だけ存在感を出して、不要な時は消える。これがやりたかった。

おまけ機能

翻訳がメインだけど、他にも2つのモードがある

  • 👥 友達モード — 一緒にゲーム見てる友達みたいにリアクションしてくれる
  • 🎙️ 実況モード — ゲーム実況風の解説をしてくれる

正直、この2つはまだまだ調整が必要。いつ喋らせるかのタイミングがうまくコントロールできてなくて、ずっと喋りかけてくるとちょっとうざい。ここは今後の課題。

その他の機能

  • 画像差分検出 — 画面に変化がない時は分析をスキップしてトークンを節約
  • VOICEVOX音声合成 — AIの応答を音声で読み上げオプション
  • フルスクリーン対応 — DXCamによるDirectXゲームキャプチャ
  • exe配布 — PyInstallerでビルドして配布可能

アーキテクチャ

┌─────────────────┐      LAN       ┌──────────────────┐
│  ゲーミングPC     │  ◄─────────►  │  AIサーバー        │
│  (Windows)       │    HTTP API    │  (5060ti 16GB)   │
│                  │               │                  │
│  Game Vision     │               │  Ollama          │
│  Companion       │               │  qwen3-vl:8b     │
│  ・画面キャプチャ  │               │  -instruct       │
│  ・オーバーレイ    │               │                  │
└─────────────────┘               └──────────────────┘

ポイントは ゲーム用PCとAI推論を別マシンに分けてる こと。

ゲーム中にローカルでLLM推論も回すとGPU負荷がキツい。だから推論は別マシンRTX 5060ti 16GBのOllamaサーバーに任せて、ローカルネットワーク越しにAPIを叩く構成にしてる。LAN内だからレイテンシもほぼ気にならない。

なぜ qwen3-vl:8b-instruct なのか

Vision LLMのモデル選定はいくつか試した結果

モデル VRAM 速度 OCR精度 翻訳品質 総合
qwen3-vl:2b-instruct ~4 GB 実用的じゃない
qwen3-vl:8b-instruct ~8 GB ベストバランス

2bモデルは速度は速いけど、OCRの精度がゲームのフォントに対して不安定で、翻訳品質も微妙だった。8bモデルなら16GB VRAMで余裕を持って動くし、OCR精度と翻訳品質のバランスがちょうどいい。

技術スタック

要素 技術
言語 Python 3.11+
GUI PyQt6
画面キャプチャ MSS / DXCam
Vision LLM Ollama (qwen3-vl:8b-instruct)
音声合成 VOICEVOXオプション
配布 PyInstaller (exe)

必要なもの

  • ゲーミングPC — Windows 10/11
  • AIサーバー — VRAM 16GB以上のGPU搭載マシン + Ollama
    • 同一PCでもいけるけど、ゲーム中のGPU負荷を考えると別マシン推奨
  • ローカルネットワーク — ゲーミングPCとAIサーバーが同じLAN内

:::tip ゲーミングPCだけでやりたい場合 VRAMに余裕があるなら24GB以上、同一PC内のOllamaでも動く。ただしゲームのfpsに影響する可能性はある。 :::

使い方

1. AIサーバー側Ollama

# Ollamaインストール
curl -fsSL https://ollama.com/install.sh | sh

# Vision モデルをダウンロード
ollama pull qwen3-vl:8b-instruct

# 外部からアクセスできるように起動
OLLAMA_HOST=0.0.0.0:11434 ollama serve

2. ゲーミングPC側

アプリを起動して:

  1. Ollama サーバーのアドレスを設定(例: http://192.168.1.xxx:11434
  2. 翻訳エリアをドラッグで指定
  3. 開始ボタンを押す

あとはゲームするだけ。翻訳結果が半透明オーバーレイで表示される。

やってみて思ったこと

良かったところ

  • Vision LLMの進化がすごい — ゲーム画面のフォントをちゃんとOCRして、文脈を理解した翻訳ができる。数年前じゃ考えられなかった
  • ローカル推論の安心感 — クラウドAPIに画面を送らなくていい。プライバシー的にも、レイテンシ的にも
  • ゲーム体験を損なわない — 半透明オーバーレイ + 自動フェードの組み合わせで、ゲームの邪魔にならない翻訳を実現できた

課題

  • 友達・実況モードのタイミング制御 — いつ喋らせるかの塩梅が難しい。常時喋ると鬱陶しいし、黙りすぎると意味がない
  • フォントによるOCR精度のブレ — ゲームによって使われるフォントが違うので、精度にバラつきがある
  • GPUが余ってる前提 — 正直、AI推論用のGPUが別途必要ってのはハードルが高い

まとめ

「海外ゲームをちゃんと理解しながらプレイしたい」という個人的な欲求から作ったアプリだけど、Vision LLMの実用性を実感できるいいプロジェクトになった。

特にOllamaのおかげで、ローカルVision LLMのセットアップが ollama pull 一発で済むのが本当にありがたい。翻訳精度もリアルタイム性も、もう実用レベルに来てると思う。

GPUの余裕がある人は、ぜひ試してみてほしい。


この記事は2026年2月時点の情報です。