自動操作のための 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. 本構成の概要 & メリット
-
Windows PC
- 高速な CPU & 十分なメモリを活かして画像解析 / AI処理を実行
- SikuliX / OpenCV / ChatGPT Vision / gRPC など 豊富なツールが使いやすい
-
Raspberry Pi Zero 2 W
- USB HID(マウス & キーボード)エミュレーションを担当
- USBガジェットモードは Pi Zero 側で実現するため、Windows での複雑な設定を回避
-
別端末
- 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 上で必要な主なツールは以下のとおりです。
-
Javaランタイム (Java 8 / Java 17 など)
- SikuliX に必要
-
Python
- OpenCV / ChatGPT Vision API / gRPC+protobuf クライアント 実装 用
-
SikuliX
- 画像パターンマッチング & GUI 自動制御 フレームワーク
-
OpenCV
- Python からの高度な画像解析ライブラリ
-
ChatGPT Vision
- Python スクリプトから画像解析AIを呼び出す
-
gRPC + protobuf
- Windows PC → Pi Zero 2 W 間で操作コマンドをやり取り
-
OBS Studio (任意)
- HDMIキャプチャのプレビューソフトとして便利
-
Git Bash (任意)
- Windows で Bash シェルを使いたい場合に導入
- Git 操作にも便利
-
OpenAI Whisper (GPU対応, オフライン)
- 日本語の音声認識を高精度でオフライン実行可能
- 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)
- Adoptium 公式サイト にアクセス
- 「Temurin 17 (LTS)」の Windows x64 Installer をダウンロード
- インストーラを実行
-
java -version
でバージョン確認
5. Python のインストール
5-1. バージョン
- Python 3.9 以上 推奨(3.10, 3.11 も可)
- Windows 公式インストーラ or Microsoft Store 版で導入可能
5-2. インストール手順 (公式インストーラ例)
- Python公式サイト へアクセス
- Download Python 3.x.x を入手
- インストーラを実行
- 「Add Python 3.x to PATH」にチェックを入れるのを忘れずに
5-3. 仮想環境 (venv) の利用推奨
python -m venv venv
.\venv\Scripts\activate
プロジェクトごとに仮想環境を作ると、パッケージの衝突やバージョン管理が容易。
6. SikuliX のインストール
6-1. ダウンロード
-
SikuliX 公式サイト または
GitHub (RaiMan/SikuliX1) -
sikulixide-2.x.x.jar
をダウンロード
6-2. 実行
sikulixide-2.x.x.jar をダブルクリック。
初回起動時に関連ファイルのダウンロードが行われる場合あり。
-
Pythonモードを使う場合は、SikuliX IDE →
Preferences
→Scripting
→Python
などで設定
6-3. 動作テスト
# --- sikuli_test.sikuli / sikuli_test.py (Pythonモード想定) ---
from sikuli import *
# 画面上に "icon.png" と似たアイコンがあるか探してクリック
click("icon.png")
icon.png
はSikuliX プロジェクトフォルダに置いておき、IDE 上から参照できます。
7. OpenCV のインストール
7-1. pip でインストール
pip install opencv-python
追加機能が必要なら
opencv-contrib-python
を検討。
7-2. 動作確認
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 ライブラリ
pip install openai
8-2. API 呼び出し例(イメージ)
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) のインストール
- protoc Releases から Windows 向け ZIP をダウンロード
- ZIP を解凍 →
bin
フォルダ内のprotoc.exe
を PATH に追加
9-2. Python 向けパッケージのインストール
pip install grpcio
pip install grpcio-tools
pip install protobuf
9-3. サンプル .proto ファイル
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 コード生成コマンド例
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 側(クライアント) 実装例
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キャプチャのプレビュー用)
- OBS公式サイト からインストーラを入手
- 「ソース → ビデオキャプチャデバイス → HDMIキャプチャボード」を選択しプレビュー
- SikuliX などが OBS のプレビュー画面を認識対象にできる
11. Git Bash のインストール (任意)
11-1. なぜ Git Bash?
- Windows 上で Bash (Unix系) シェル を手軽に使える
-
ls
,grep
,sed
などの Unixコマンドがそのまま利用可能 - Git の操作もスムーズ
11-2. インストール手順
- Git for Windows公式サイト からインストーラを入手
- インストール途中、「Git Bash を含めるか?」の選択肢をチェック
- インストール後、スタートメニュー等に 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特有の注意点など)
-
ディスプレイのスケーリング設定
- Windows の設定 → ディスプレイ → スケールを 100% にしておくと、SikuliX や座標取得でズレを起こしにくい
-
管理者権限
- USB ドライバやキャプチャデバイス利用時に管理者権限が必要な場合あり
- うまく認識されないときは管理者権限で起動してみる
-
Microsoft Visual C++ 再頒布可能パッケージ
- OpenCV や他ライブラリが依存するケースあり。DLLエラーが出たら再頒布パッケージを導入
-
処理負荷対策
- HDMIキャプチャの解像度が高いほど CPU/GPU 負荷が大きい
- OBS で解像度を落とす、フレームレートを下げるなどの最適化を検討
14. Whisper + Python で GPU を使い、日本語を高精度認識 (オフライン)
14-1. GPU 環境の前提
- NVIDIA GPU + 対応ドライバ + CUDA Toolkit + PyTorch(CUDA版) が必要
- PyTorch公式サイト で適切なインストールコマンドを確認
14-2. Whisper のインストール
pip install git+https://github.com/openai/whisper.git
pip install whisper
もあるが、公式リポジトリからが確実。
14-3. Whisper + GPU で日本語音声を認識する例
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. 前提
- Google Cloud Platform (GCP) のアカウントを作成
- プロジェクトを作り、Speech-to-Text API を 有効化
- サービスアカウントキー(JSON) をダウンロードし、PC で参照可能にする
- ある程度の無料枠はあるが、超過すると有料
15-2. インストール
pip install google-cloud-speech
15-3. 環境変数で認証情報を設定
set GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your-service-account.json"
PowerShell なら
$env:GOOGLE_APPLICATION_CREDENTIALS = "..."
など。
15-4. サンプルコード(Google Cloud Speech-to-Text)
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. 全体のセットアップ手順まとめ
- Java (OpenJDK 17 等) のインストール
-
Python 3.x をインストール(
pip
を使えるように) - SikuliX をダウンロード & 初回起動
-
OpenCV を
pip install opencv-python
で導入 -
ChatGPT Vision 用に
pip install openai
(必要なら) - gRPC + protobuf (grpcio, grpcio-tools, protobuf, protoc) を導入
- OBS Studio(必要に応じて)で HDMIキャプチャのプレビューを確認
- Git Bash を導入(Bash シェルが使いたい場合)
- Whisper (オフライン, GPU) または Google Cloud Speech-to-Text (クラウド, GPU不要) 導入 ← 音声認識
- Windows のスケーリング設定 等、細部を調整しながらテスト
各ステップでサンプルコードを試し、問題なく動作するか確認してから本格的な開発に入るとトラブルが減ります。
17. 実運用イメージ
-
Raspberry Pi Zero 2 W (USB HID)
- gRPC/HTTPサーバ起動 → USB ケーブルで別端末に接続 → 仮想マウス・キーボード入力を代行
-
Windows PC
- HDMIキャプチャデバイスで別端末の画面を取得
- SikuliX / OpenCV で画像解析、ChatGPT Vision で高度なOCRや文意解析
- 音声認識: Whisper (GPU) or Google Cloud Speech (クラウド)
- クリック座標や入力文字列を Pi Zero 2 W へ指示
-
別端末
- 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公式 を確認してください。
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不要) の日本語活用法を追加しました。
- 手順のポイント:
- Java + Python の導入
- SikuliX / OpenCV / gRPC+protobuf / ChatGPT Vision のインストール
- HDMIキャプチャ + OBS Studio で映像を取り込み
- Whisper or Google Cloud Speech で日本語音声認識(用途や環境に応じて選択)
- Windows スケーリング設定や権限 に留意
- サンプルコードで動作確認 してから本番実装
- この構成により、Pi Zero 2 W が USB HID を担当し、Windows PC が高度な画像解析・AI 処理・音声認識までを担う形で、強力かつ柔軟な GUI 自動化を実現できます。
HID エミュレーション の詳細や 座標キャリブレーション, ChatGPT Vision / Whisper / Google Cloud Speech の高度な活用例などは、別記事で紹介予定です。
ぜひ、余っている Windows マシン を再利用し、強力な GUI 自動化・AI連携・音声認識連携をお試しください!
参考リンク
- SikuliX公式サイト
- OpenCV公式サイト
- OpenAI (ChatGPT Vision)
- gRPC公式サイト
- Protocol Buffers (protobuf)
- OBS Studio
- Git for Windows (Git Bash)
- PyTorch公式サイト
- OpenAI Whisper (GitHub)
- Google Cloud Speech-to-Text (公式ドキュメント)
- Raspberry Pi Zero 2 W の HID エミュレーション ⇒ 別記事参照
以上