koide 26290e25af
All checks were successful
Deploy Docusaurus Site / deploy (push) Successful in 28s
Fix: スクリーンショットをstatic/imgに移動して表示修正
2026-02-28 01:41:26 +00:00

156 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
sidebar_position: 2
title: ゲーム画面をリアルタイム翻訳するAIアプリを作った話
description: ローカルVision LLMを使って、海外ゲームの画面をリアルタイムに翻訳するWindowsアプリを作った。
hide_table_of_contents: false
displayed_sidebar: null
---
# ゲーム画面をリアルタイム翻訳するAIアプリを作った話
## きっかけ
海外ゲームやってると、シナリオやクエストのテキストが全部英語(あるいはそれ以外の言語)で、雰囲気で進めちゃうことない?自分もそうだったんだけど、ちゃんとストーリーを理解しながらプレイしたいなと思って、リアルタイム翻訳できるツールを作ることにした。
「リアルタイム翻訳ソフトなんてもうあるじゃん」って思うかもしれないけど、既存のものは自分が求めるレベルに達してなかった。具体的には:
- **リアルタイム性** — ゲームの進行を止めずに翻訳してほしい
- **ゲーム体験を損なわない** — 翻訳UIがゲームの邪魔になるのは本末転倒
- **精度** — OCR+翻訳がちゃんと使えるレベルであること
最近のVision LLM画像を理解できるAIはOCR+翻訳の精度がかなり上がってて、しかもVRAM 16GBあれば十分動く。ゲーム用とは別にGPUマシンもあったから、じゃあ作ってみるかと。
## 何ができるのか
**Game Vision Companion** — Windows PCの画面をリアルタイムにキャプチャして、ローカルのVision LLMで分析・翻訳するアプリ。
![Game Vision Companionのスクリーンショット](pathname:///img/game-vision-companion-screenshot.png)
### メイン機能:リアルタイム翻訳
一番力を入れたのがこれ。
- **翻訳エリアの自由指定** — 画面上の好きな場所をドラッグで範囲選択。会話ウィンドウだけ、とかクエストログだけ、みたいに自分で決められる
- **半透明オーバーレイ** — 翻訳結果がゲーム画面の上に半透明で表示される。別ウィンドウとして外に出すこともできる
- **テキストがない時は自動で薄くなる** — 翻訳するテキストがない場面では、ウィンドウがさらに薄くなってゲームの邪魔にならない
この「テキストがない時はウィンドウを薄くする」ってのが地味に大事で、常時表示だとゲーム体験を損なうんだよね。必要な時だけ存在感を出して、不要な時は消える。これがやりたかった。
### おまけ機能
翻訳がメインだけど、他にも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
```bash
# 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月時点の情報です。*