GSM - ゲーム向けイマージョンツールキット
English | 日本語 | 简体中文
ゲームを使った言語学習を支援するために設計されたアプリケーションです。
ショートデモ(まずはこちらをご覧ください): https://www.youtube.com/watch?v=FeFBL7py6HY
インストール方法: https://www.youtube.com/watch?v=sVL9omRbGc4
Discord: https://discord.gg/yP8Qse6bb8
機能 - Ankiカードの強化 | OCR | オーバーレイ | 統計
Ankiカードの強化
GSMは、豊富なコンテキスト情報でAnkiカードを大幅に強化します。
-
音声の自動キャプチャ:テキストに対応するセリフの音声を自動的に録音します。
- 自動トリミング:テキストイベントが発生した時間に基づいた簡単な計算と、「音声区間検出」(VAD)ライブラリを組み合わせることで、音声をきれいに切り抜きます。
- 手動トリミング:音声の自動トリミングが完璧でない場合、外部プログラムで音声を開いて手動でトリミングすることが可能です。
-
スクリーンショット:セリフが話された瞬間のゲーム画面をキャプチャします。
-
複数行対応:GSM独自のTexthookerを使用することで、複数行のテキストとそれに付随する音声を一度にキャプチャできます。
-
AI翻訳:AIを統合し、キャプチャした文章の翻訳を素早く提供します。カスタムプロンプトにも対応しています。(オプション、ご自身のAPIキーが必要です)
ゲームでの使用例(音声あり)
ビジュアルノベルでの使用例(音声あり)
OCR
GSMはOwOCRのフォークを実行し、フックが利用できないゲームからでも正確なテキストキャプチャを提供します。以下は、GSMが標準のOwOCRに加えた改良点です。
-
簡単なセットアップ:GSMに管理されたPythonインストール機能により、数回ボタンをクリックするだけでセットアップが完了します。
-
除外領域の設定:OCRを実行する領域を選択する代わりに、OCRから除外する領域を選択できます。これは、ゲーム内に固定のUIがあり、テキストが画面の様々な場所にランダムに表示される場合に便利です。
-
2パスOCR:API呼び出しを減らし、出力をクリーンに保つため、GSMは「2パス」OCRシステムを搭載しています。ローカルOCRが常に実行され、画面上のテキストが安定した時点で、より高精度な2回目のスキャンが実行され、その結果がクリップボードやWebSocketに送信されます。
-
一貫した音声タイミング:2パスシステムにより、特殊なオフセットやハックを使わなくても、正確なタイミングで録音された音声をAnkiに取り込むことができます。
-
多言語対応:標準のOwOCRは日本語にハードコードされていますが、GSMでは様々な言語を使用できます。
オーバーレイ
GSMは、画面上でYomitanによる辞書検索を可能にするオーバーレイ機能も備えています。オーバーレイが有効になっている場合、GSMに任意のソースからテキストイベントが入ってくるたびに、画面を一度スキャンします。その後、ゲーム内の実際の文字にカーソルを合わせることで、Yomitanでの検索やマイニングが可能になります。
統計
GSMには、現在32種類のグラフを備えた統計ページがあり、充実したデータを視覚化できます。

この統計は、ただ見た目が良いだけではありません。
あなたの成長を助けるために設計されています。
目標を設定し、それを達成するために毎日必要なタスクを正確に確認できます:

読んだすべての漢字を、好きな順序で表示できます:

そして、それらをクリックすると、その漢字を含むすべての文章を見ることができます:

Ankiを使っていますか?よく読む漢字だけど、まだAnkiに入っていない漢字を見つけられます:

高度なツールで、好きな方法でデータをクリーンアップできます。

これらの統計は、ただ見た目を良くするためだけでなく、以下のような質問に答えるために設計されています:
- 楽しさと学習の両方を最大化できるゲームは何か?
- 夕方と朝、どちらの方が読解力が高いか?
- この言語で上達しているか?
- 目標を達成するために、どのくらいイマージョンすべきか?
必要なもの
-
ゲームからテキストを取得する方法:Agent、Textractor、LunaTranslator、GSMのOCR機能など。
-
ゲームソフト :)
ドキュメント
インストール、セットアップ、その他の情報については、プロジェクトのWikiをご覧ください。
よくある質問
どのような仕組みですか?
これはよくある質問ですが、このプロセスを理解することは、GSMを使用中に発生する可能性のある問題を解決するのに役立ちます。
-
セリフの開始は、テキストイベントによってマークされます。これは通常、Textractor、Agent、または他のtexthookerから送られてきます。GSMはクリップボードのコピーやWebSocketサーバーを監視することができます(GSM内で設定可能)。
-
セリフの終了は、ローカルで実行されている音声区間検出(VAD)ライブラリによって検出されます。(例)
要するに、GSMは正確なタイミングのテキストイベントに依存して、対応する音声をキャプチャしています。
GSMには、理想的とは言えないフックに対応するための設定が用意されています。しかし、音声に大幅なズレが生じる場合、その原因はGSM自体ではなく、タイミングの悪いフック、大きなBGM、またはその他の外部要因である可能性が高いです。中心となる音声トリミングのロジックは、多くのユーザーによって様々なゲームで安定して効果的に動作することが確認されています。
お問い合わせ
問題が発生した場合は、私のDiscordで質問するか、こちらにissueを作成してください。
謝辞
-
OwOCR - GSMに統合させていただいた、その優れたOCR実装に感謝します。
-
chaiNNer - Electronアプリ内にPythonをインストールするというアイデアに感謝します。
-
exSTATic - GSMの統計機能のインスピレーション
寄付
もしこのプロジェクトや他の私のプロジェクトが役に立ったと感じたら、GitHub SponsorsまたはKo-fiを通じて私の活動を支援していただけると幸いです。