8.2 KiB
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で分析・翻訳するアプリ。
メイン機能:リアルタイム翻訳
一番力を入れたのがこれ。
- 翻訳エリアの自由指定 — 画面上の好きな場所をドラッグで範囲選択。会話ウィンドウだけ、とかクエストログだけ、みたいに自分で決められる
- 半透明オーバーレイ — 翻訳結果がゲーム画面の上に半透明で表示される。別ウィンドウとして外に出すこともできる
- テキストがない時は自動で薄くなる — 翻訳するテキストがない場面では、ウィンドウがさらに薄くなってゲームの邪魔にならない
この「テキストがない時はウィンドウを薄くする」ってのが地味に大事で、常時表示だとゲーム体験を損なうんだよね。必要な時だけ存在感を出して、不要な時は消える。これがやりたかった。
おまけ機能
翻訳がメインだけど、他にも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側
アプリを起動して:
- Ollama サーバーのアドレスを設定(例:
http://192.168.1.xxx:11434) - 翻訳エリアをドラッグで指定
- 開始ボタンを押す
あとはゲームするだけ。翻訳結果が半透明オーバーレイで表示される。
やってみて思ったこと
良かったところ
- Vision LLMの進化がすごい — ゲーム画面のフォントをちゃんとOCRして、文脈を理解した翻訳ができる。数年前じゃ考えられなかった
- ローカル推論の安心感 — クラウドAPIに画面を送らなくていい。プライバシー的にも、レイテンシ的にも
- ゲーム体験を損なわない — 半透明オーバーレイ + 自動フェードの組み合わせで、ゲームの邪魔にならない翻訳を実現できた
課題
- 友達・実況モードのタイミング制御 — いつ喋らせるかの塩梅が難しい。常時喋ると鬱陶しいし、黙りすぎると意味がない
- フォントによるOCR精度のブレ — ゲームによって使われるフォントが違うので、精度にバラつきがある
- GPUが余ってる前提 — 正直、AI推論用のGPUが別途必要ってのはハードルが高い
まとめ
「海外ゲームをちゃんと理解しながらプレイしたい」という個人的な欲求から作ったアプリだけど、Vision LLMの実用性を実感できるいいプロジェクトになった。
特にOllamaのおかげで、ローカルVision LLMのセットアップが ollama pull 一発で済むのが本当にありがたい。翻訳精度もリアルタイム性も、もう実用レベルに来てると思う。
GPUの余裕がある人は、ぜひ試してみてほしい。
この記事は2026年2月時点の情報です。
