Windows環境での開発環境セットアップ手順 ～ SikuliX OpenCV ChatGPT gRPC+protobuf Whisper / Google Cloud Speech-to-Text ～

---
自動操作のための SikuliX / Python(OpenCV) / ChatGPT Vision / gRPC+protobuf + Whisper + Google Cloud Speech-to-Text のセットアップガイド

## はじめに

前回の記事では、**Raspberry Pi Zero 2 W** を使った USB HID エミュレーションによる別端末遠隔操作を紹介しました。  
もし余っている **Windows PC** があれば、**高い処理能力** と **豊富なツールチェーン** を活かして、より快適な自動操作構成を作ることができます。

- **Windows PC** で **HDMIキャプチャ → 画像解析 → AI処理** を行い  
- **操作指示**を **Raspberry Pi Zero 2 W (USB HID)** へ gRPC+protobuf 経由で送ることで  
- **別端末**（ゲーム機、STB、もう1台のPCなど）を**自動かつ遠隔で操作**できる仕組みを実現します。

本記事では、**Windows 側の開発環境セットアップ手順**を中心に解説し、  
**「OpenAI Whisper (GPU 使用)」** と **「Google Cloud Speech-to-Text (GPU 不要)」** の日本語音声認識手法も追加紹介しています。

> **注**: Raspberry Pi Zero 2 W での USB HID 設定やマウス座標キャリブレーション、ChatGPT Vision による高度な画像解析プロンプト例などは、**別記事**で詳述しています。

---

## 1. Windows環境の前提

- **Windows 10 / 11 (64bit)**  
- **管理者権限**を持つアカウント  
- **インターネット接続** (ライブラリDLやAPI利用に必要)  
- **ストレージ空き容量** 20GB 以上推奨  
- **メモリ** 4GB 以上（HDMIキャプチャやAI処理を行うなら 8GB 以上あると快適）

> 比較的古いPCでも動作は可能ですが、画像処理・映像処理をする都合上、CPU/GPU に多少の余力があるとよりスムーズです。

---

## 2. 本構成の概要 & メリット

1. **Windows PC**  
   - 高速な CPU & 十分なメモリを活かして画像解析 / AI処理を実行  
   - **SikuliX / OpenCV / ChatGPT Vision / gRPC** など **豊富なツールが使いやすい**  
2. **Raspberry Pi Zero 2 W**  
   - USB HID（マウス & キーボード）エミュレーションを担当  
   - **USBガジェットモード**は Pi Zero 側で実現するため、Windows での複雑な設定を回避  
3. **別端末**  
   - HDMI 出力をキャプチャデバイス経由で Windows PC に取り込み  
   - 物理的に Pi Zero 2 W が USB キーボード・マウスとして接続  
   - Windows から送られた操作指示で実際に自動入力される  

### 主なメリット

- **高い解析速度**: Windows の CPU/GPU パワーで OpenCV や AI をガンガン活用  
- **SikuliX の手軽さ**: 画像パターンマッチング + GUI 自動化を数行で記述可能  
- **拡張性**: Raspberry Pi Zero 2 W との通信部分に HTTP / gRPC / WebSocket などを自由に採用可能  
- **HDMIキャプチャ**のパススルー機能を使えばモニターにも同時出力されるため、手動操作やデバッグに便利

---

## 3. 主なツール一覧

本記事で解説する、**Windows PC 上で必要な主なツール**は以下のとおりです。

1. **Javaランタイム (Java 8 / Java 17 など)**  
   - SikuliX に必要  
2. **Python**  
   - OpenCV / ChatGPT Vision API / gRPC+protobuf クライアント 実装 用  
3. **SikuliX**  
   - 画像パターンマッチング & GUI 自動制御 フレームワーク  
4. **OpenCV**  
   - Python からの高度な画像解析ライブラリ  
5. **ChatGPT Vision**  
   - Python スクリプトから画像解析AIを呼び出す  
6. **gRPC + protobuf**  
   - Windows PC → Pi Zero 2 W 間で操作コマンドをやり取り  
7. **OBS Studio** (任意)  
   - HDMIキャプチャのプレビューソフトとして便利  
8. **Git Bash** (任意)  
   - Windows で Bash シェルを使いたい場合に導入  
   - Git 操作にも便利  
9. **OpenAI Whisper (GPU対応, オフライン)**  
   - 日本語の音声認識を高精度でオフライン実行可能  
10. **Google Cloud Speech-to-Text (クラウド, GPU不要)**  
   - インターネット経由で高精度日本語音声認識

> 必要に応じて **Git** や **VSCode** といったエディタ / IDE も入れると開発効率が上がります。

---

## 4. Javaランタイム (SikuliX 用)

### 4-1. バージョンの選択
- **Java 8** または **Java 17** (OpenJDK など)  
- こだわりがなければ **OpenJDK 17 (Temurin)** が安定

### 4-2. インストール例 (Adoptium Temurin)
1. [Adoptium 公式サイト](https://adoptium.net/) にアクセス  
2. 「**Temurin 17 (LTS)**」の Windows x64 Installer をダウンロード  
3. インストーラを実行  
4. `java -version` でバージョン確認

---

## 5. Python のインストール

### 5-1. バージョン
- **Python 3.9 以上** 推奨（3.10, 3.11 も可）  
- Windows 公式インストーラ or Microsoft Store 版で導入可能

### 5-2. インストール手順 (公式インストーラ例)
1. [Python公式サイト](https://www.python.org/downloads/) へアクセス  
2. **Download Python 3.x.x** を入手  
3. インストーラを実行  
   - 「**Add Python 3.x to PATH**」にチェックを入れるのを忘れずに

### 5-3. 仮想環境 (venv) の利用推奨

```bash
python -m venv venv
.\venv\Scripts\activate
```

> プロジェクトごとに仮想環境を作ると、パッケージの衝突やバージョン管理が容易。

---

## 6. SikuliX のインストール

### 6-1. ダウンロード
- [SikuliX 公式サイト](https://sikulix.com/) または  
  [GitHub (RaiMan/SikuliX1)](https://github.com/RaiMan/SikuliX1/releases)  
- `sikulixide-2.x.x.jar` をダウンロード

### 6-2. 実行
```plaintext
sikulixide-2.x.x.jar をダブルクリック。
初回起動時に関連ファイルのダウンロードが行われる場合あり。
```
- **Pythonモード**を使う場合は、SikuliX IDE → `Preferences` → `Scripting` → `Python` などで設定

### 6-3. 動作テスト

```python
# --- sikuli_test.sikuli / sikuli_test.py (Pythonモード想定) ---
from sikuli import *

# 画面上に "icon.png" と似たアイコンがあるか探してクリック
click("icon.png")
```

> `icon.png` はSikuliX プロジェクトフォルダに置いておき、IDE 上から参照できます。

---

## 7. OpenCV のインストール

### 7-1. pip でインストール

```bash
pip install opencv-python
```

> 追加機能が必要なら `opencv-contrib-python` を検討。

### 7-2. 動作確認

```python
import cv2

# 画像ファイルを読み込む
img = cv2.imread("sample.png")

if img is None:
    print("Error: sample.png の読み込みに失敗しました。")
else:
    cv2.imshow("test", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
```

> ウィンドウに画像が表示されれば OK。

---

## 8. ChatGPT Vision (OpenAI) 連携

### 8-1. Python の OpenAI ライブラリ

```bash
pip install openai
```

### 8-2. API 呼び出し例（イメージ）

```python
import openai
import base64

openai.api_key = "YOUR_API_KEY"

def send_image_to_chatgpt_vision(image_path, prompt):
    """
    ChatGPT Vision に画像 + プロンプトを送って応答を取得するサンプル。
    model="gpt-4-vision" はあくまで仮の例。実際はOpenAIドキュメントを参照。
    """
    with open(image_path, "rb") as f:
        img_data = f.read()

    encoded_image = base64.b64encode(img_data).decode("utf-8")

    response = openai.ChatCompletion.create(
        model="gpt-4-vision",
        messages=[
            {"role": "system", "content": "You are ChatGPT Vision."},
            {"role": "user", "content": prompt + f"\n[image]{encoded_image}[/image]"}
        ]
    )
    return response["choices"][0]["message"]["content"]

if __name__ == "__main__":
    result = send_image_to_chatgpt_vision(
        "screen_capture.png",
        "この画面のエラー文を要約してください。"
    )
    print("ChatGPT Vision応答:", result)
```

> ベータ機能の場合、アカウントや APIキー、対応プランなどに注意。

---

## 9. gRPC + protobuf のセットアップ

### 9-1. protoc (protobuf compiler) のインストール

1. [protoc Releases](https://github.com/protocolbuffers/protobuf/releases) から **Windows 向け ZIP** をダウンロード  
2. ZIP を解凍 → `bin` フォルダ内の `protoc.exe` を PATH に追加

### 9-2. Python 向けパッケージのインストール

```bash
pip install grpcio
pip install grpcio-tools
pip install protobuf
```

### 9-3. サンプル .proto ファイル

```protobuf
syntax = "proto3";

package remote_control;

// HID操作の例: クリック
service HidService {
  rpc MouseClick(ClickRequest) returns (ClickResponse);
}

message ClickRequest {
  int32 x = 1;
  int32 y = 2;
}

message ClickResponse {
  bool success = 1;
}
```

### 9-4. Python コード生成コマンド例

```bash
python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. remote_control.proto
```
- `remote_control_pb2.py` と `remote_control_pb2_grpc.py` が生成される。

### 9-5. Windows 側(クライアント) 実装例

```python
import grpc
import remote_control_pb2
import remote_control_pb2_grpc

def click_via_grpc(x, y):
    """
    (x, y) 座標をRaspberry Pi Zero 2 W 側の gRPCサーバへ送信し、
    HIDマウスクリックを実行してもらうサンプル。
    """
    # Pi Zero 2 W 側で gRPCサーバ起動、ポート50051で待機している想定
    channel = grpc.insecure_channel("raspberrypi-zero2w.local:50051")
    stub = remote_control_pb2_grpc.HidServiceStub(channel)

    request = remote_control_pb2.ClickRequest(x=x, y=y)
    response = stub.MouseClick(request)
    return response.success

if __name__ == "__main__":
    # (100,200) の座標をクリック
    success = click_via_grpc(100, 200)
    print("クリック成功:", success)
```

> Pi Zero 2 W 側でマウス操作を行う実装は**別記事**を参照してください。

---

## 10. OBS Studio (HDMIキャプチャのプレビュー用)

1. [OBS公式サイト](https://obsproject.com/) からインストーラを入手  
2. 「**ソース** → **ビデオキャプチャデバイス** → **HDMIキャプチャボード**」を選択しプレビュー  
3. SikuliX などが OBS のプレビュー画面を認識対象にできる

---

## 11. Git Bash のインストール (任意)

### 11-1. なぜ Git Bash？
- Windows 上で **Bash (Unix系) シェル** を手軽に使える  
- `ls`, `grep`, `sed` などの Unixコマンドがそのまま利用可能  
- Git の操作もスムーズ

### 11-2. インストール手順
1. [Git for Windows公式サイト](https://git-scm.com/download/win) からインストーラを入手  
2. インストール途中、「**Git Bash** を含めるか？」の選択肢をチェック  
3. インストール後、スタートメニュー等に **Git Bash** が追加

### 11-3. 使い方
- Git Bash を起動 → `python your_script.py` / `pip install ...` など利用  
- Windows のパスは `/c/Users/yourname/...` の形式に変換される

---

## 12. Windows のコマンドライン（PowerShell / Git Bash / cmd.exe）

### 12-1. どれを使えばいいのか？
- **どれでも Python スクリプトや pip は同様に動作**します。  
- PowerShell が Windows との親和性が高く、Unix系に慣れていれば Git Bash も選択肢。

#### PowerShell
- Windows 管理に強い  
- Unix系コマンドとは一部書式が違う

#### Git Bash
- Bash シェルを扱える  
- `grep`, `sed` 等、Unix系ツールもそのまま利用可能

#### cmd.exe (コマンドプロンプト)
- シンプルだが拡張性は低め

### 12-2. Python や pip は共通
- どのシェルでも `python script.py` / `pip install some_package` などの使い方は一緒です。

---

## 13. 追加のポイント（Windows特有の注意点など）

1. **ディスプレイのスケーリング設定**  
   - Windows の設定 → ディスプレイ → スケールを 100% にしておくと、SikuliX や座標取得でズレを起こしにくい  
2. **管理者権限**  
   - USB ドライバやキャプチャデバイス利用時に管理者権限が必要な場合あり  
   - うまく認識されないときは管理者権限で起動してみる  
3. **Microsoft Visual C++ 再頒布可能パッケージ**  
   - OpenCV や他ライブラリが依存するケースあり。DLLエラーが出たら再頒布パッケージを導入  
4. **処理負荷対策**  
   - HDMIキャプチャの解像度が高いほど CPU/GPU 負荷が大きい  
   - OBS で解像度を落とす、フレームレートを下げるなどの最適化を検討

---

## 14. Whisper + Python で GPU を使い、日本語を高精度認識 (オフライン)

### 14-1. GPU 環境の前提

- NVIDIA GPU + 対応ドライバ + CUDA Toolkit + PyTorch(CUDA版) が必要  
- [PyTorch公式サイト](https://pytorch.org/get-started/locally/) で適切なインストールコマンドを確認

### 14-2. Whisper のインストール

```bash
pip install git+https://github.com/openai/whisper.git
```

> `pip install whisper` もあるが、公式リポジトリからが確実。

### 14-3. Whisper + GPU で日本語音声を認識する例

```python
import whisper

def transcribe_japanese_with_whisper(audio_file_path):
    """
    Whisperの"medium"モデルをGPUで使い、日本語音声を文字起こしする例。
    audio_file_path: .wav, .mp3, .m4a などFFmpegで扱える形式ならOK
    """
    # device="cuda" でGPUを使用
    model = whisper.load_model("medium", device="cuda")
    # language="ja" を指定すると精度が向上する場合あり
    result = model.transcribe(audio_file_path, language="ja")

    # 認識結果テキストを取得
    return result["text"]

if __name__ == "__main__":
    text = transcribe_japanese_with_whisper("sample_jp.wav")
    print("Whisper 認識結果:", text)
```

> モデルサイズに応じて精度/負荷が変わる。`medium` や `large` はGPUメモリを多く消費する点に注意。

---

## 15. Google Cloud Speech-to-Text (クラウド利用, GPU不要)

GPU がないPCでも、**Google Cloud Speech-to-Text** を使えば高精度の日本語音声認識が可能です。  
クラウド側で処理するので、**ローカル負荷が小さい** 反面、インターネット接続や課金設定が必要になります。

### 15-1. 前提

1. **Google Cloud Platform (GCP)** のアカウントを作成  
2. プロジェクトを作り、Speech-to-Text API を **有効化**  
3. **サービスアカウントキー（JSON）** をダウンロードし、PC で参照可能にする  
4. ある程度の無料枠はあるが、超過すると有料

### 15-2. インストール

```bash
pip install google-cloud-speech
```

### 15-3. 環境変数で認証情報を設定

```bash
set GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your-service-account.json"
```

> PowerShell なら `$env:GOOGLE_APPLICATION_CREDENTIALS = "..."` など。

### 15-4. サンプルコード（Google Cloud Speech-to-Text）

```python
import os
from google.cloud import speech

def google_cloud_speech_recognize_japanese(audio_file_path):
    """
    Google Cloud Speech-to-Text で日本語音声を文字起こしするサンプル。
    audio_file_path: wav, flac, linear16 等が推奨。
    """
    # 例: os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "C:/path/to/service-account.json"
    client = speech.SpeechClient()  # 環境変数から認証情報を自動読み込み

    # 音声ファイルをバイナリで読み込み
    with open(audio_file_path, "rb") as f:
        content = f.read()

    audio = speech.RecognitionAudio(content=content)

    config = speech.RecognitionConfig(
        encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,  # wav等であれば LINEAR16
        sample_rate_hertz=16000,  # サンプリングレートに合わせる
        language_code="ja-JP",    # 日本語
        enable_automatic_punctuation=True
    )

    # API呼び出し
    response = client.recognize(config=config, audio=audio)

    # 結果をまとめて返す
    result_text = ""
    for result in response.results:
        # 最高スコアのtranscriptを concatenation
        result_text += result.alternatives[0].transcript

    return result_text

if __name__ == "__main__":
    recognized_text = google_cloud_speech_recognize_japanese("sample_jp.wav")
    print("Google Cloud Speech 認識結果:", recognized_text)
```

> リアルタイム認識や長時間音声にはストリーミングAPI等を使用。

---

## 16. 全体のセットアップ手順まとめ

1. **Java (OpenJDK 17 等) のインストール**  
2. **Python 3.x** をインストール（`pip` を使えるように）  
3. **SikuliX** をダウンロード & 初回起動  
4. **OpenCV** を `pip install opencv-python` で導入  
5. **ChatGPT Vision** 用に `pip install openai`（必要なら）  
6. **gRPC + protobuf (grpcio, grpcio-tools, protobuf, protoc)** を導入  
7. **OBS Studio**（必要に応じて）で HDMIキャプチャのプレビューを確認  
8. **Git Bash** を導入（Bash シェルが使いたい場合）  
9. **Whisper (オフライン, GPU)** または **Google Cloud Speech-to-Text (クラウド, GPU不要)** 導入 ← **音声認識**  
10. **Windows のスケーリング設定** 等、細部を調整しながらテスト

> 各ステップでサンプルコードを試し、問題なく動作するか確認してから本格的な開発に入るとトラブルが減ります。

---

## 17. 実運用イメージ

1. **Raspberry Pi Zero 2 W (USB HID)**  
   - gRPC/HTTPサーバ起動 → USB ケーブルで別端末に接続 → 仮想マウス・キーボード入力を代行
2. **Windows PC**  
   - HDMIキャプチャデバイスで別端末の画面を取得  
   - **SikuliX / OpenCV** で画像解析、**ChatGPT Vision** で高度なOCRや文意解析  
   - 音声認識: **Whisper** (GPU) or **Google Cloud Speech** (クラウド)  
   - クリック座標や入力文字列を Pi Zero 2 W へ指示
3. **別端末**  
   - Pi Zero 2 W が物理マウス/キーボードとして入力 → 自動操作が実現

---

## 18. よくある質問（Q&A）

### Q1. Pythonスクリプトは必ず PowerShell から実行しないといけない？  
**A1.** いいえ。**PowerShell / Git Bash / cmd.exe など、お好みのターミナルでOK** です。  

### Q2. SikuliX を使わず、OpenCV だけでも実装できますか？  
**A2.** 可能ですが、**SikuliX は GUI 自動化**に特化しており、画像検索 + クリック操作などを数行で書けます。OpenCV だけだと自前実装が増えるでしょう。

### Q3. ChatGPT Vision は誰でも使えますか？  
**A3.** 2023年現在、ベータ機能のため OpenAI アカウントと対応プランが必要です。公式ドキュメントを参照してください。

### Q4. gRPC は必須？ 代わりに HTTP や WebSocket でもいい？  
**A4.** はい。**プロトコルに絶対の決まりはありません**。高速・型安全な gRPC を例示していますが、HTTP POST や WebSocket でもOKです。

### Q5. HDMIキャプチャの遅延が気になります。どう対処すれば？  
**A5.**  
- キャプチャデバイスの品質により 1～数フレーム（数十～百ms程度）遅延が発生  
- 解像度 / FPS を下げる、USB3.0 ポートを使う、OBS で最適化するなど対策可能  
- リアルタイム性がシビアな操作（高速ゲーム等）では注意

### Q6. Whisper はGPUがないと使えない？  
**A6.** CPU だけでも動作しますが、**処理速度が遅くなる**ことが多いです。リアルタイムに近い応答を求めるなら GPU (CUDA) 環境が望ましいです。

### Q7. Google Cloud Speech-to-Text は無料ですか？  
**A7.** 毎月60分の無料枠がありますが、それを超えると課金されます。詳細は [Google Cloud公式](https://cloud.google.com/speech-to-text/pricing?hl=ja) を確認してください。

### Q8. ボタン画像が微妙に変化（色合い・サイズ）していて認識が難しいです。  
**A8.**  
- OpenCV で前処理（閾値処理、グレースケール化）してから SikuliX に渡す  
- ChatGPT Vision で「ボタン箇所を返してもらう」など工夫  
- SikuliX の検索閾値を変更

---

## 19. まとめ

- **Windows PC** を活用した **SikuliX / Python (OpenCV) / ChatGPT Vision / gRPC+protobuf** のセットアップ手順を詳しく解説し、さらに **音声認識**として **Whisper (GPU対応, オフライン)** と **Google Cloud Speech-to-Text (クラウド, GPU不要)** の日本語活用法を追加しました。  
- 手順のポイント:
  1. **Java + Python** の導入  
  2. **SikuliX / OpenCV / gRPC+protobuf / ChatGPT Vision** のインストール  
  3. **HDMIキャプチャ + OBS Studio** で映像を取り込み  
  4. **Whisper or Google Cloud Speech** で日本語音声認識（用途や環境に応じて選択）  
  5. **Windows スケーリング設定や権限** に留意  
  6. **サンプルコードで動作確認** してから本番実装  
- この構成により、**Pi Zero 2 W** が USB HID を担当し、Windows PC が高度な画像解析・AI 処理・音声認識までを担う形で、強力かつ柔軟な GUI 自動化を実現できます。

> **HID エミュレーション** の詳細や **座標キャリブレーション**, **ChatGPT Vision / Whisper / Google Cloud Speech** の高度な活用例などは、**別記事**で紹介予定です。  

ぜひ、**余っている Windows マシン** を再利用し、強力な GUI 自動化・AI連携・音声認識連携をお試しください！

---

## 参考リンク

- [SikuliX公式サイト](https://sikulix.com/)  
- [OpenCV公式サイト](https://opencv.org/)  
- [OpenAI (ChatGPT Vision)](https://openai.com/blog/chatgpt-vision/)  
- [gRPC公式サイト](https://grpc.io/)  
- [Protocol Buffers (protobuf)](https://developers.google.com/protocol-buffers)  
- [OBS Studio](https://obsproject.com/)  
- [Git for Windows (Git Bash)](https://git-scm.com/download/win)  
- [PyTorch公式サイト](https://pytorch.org/)  
- [OpenAI Whisper (GitHub)](https://github.com/openai/whisper)  
- [Google Cloud Speech-to-Text (公式ドキュメント)](https://cloud.google.com/speech-to-text/docs?hl=ja)  
- **Raspberry Pi Zero 2 W の HID エミュレーション** ⇒ 別記事参照  

---

以上