Skip to content

ifritJP/game-message-tts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What’s game-message-tts

このツールは、 「PC のゲーム画面のメッセージを Text To Speech(TTS) で読み上げる」というものです。

ただし、対応は英語のみで、日本語等は非対応です。

何故こんなツールを作ったかというと、 現在、英語学習用に海外のゲームをプレイしているんですが、 その海外のゲームに音声が付いておらずリスニング力向上に使えないため、 どうにかして音声を付けようと思ったのが動機です。

また、Windows の標準機能で、Window 内のラベル等を読み上げる機能がありますが、 あれは Windows の標準 GUI 部品を対象にしていて、 標準 GUI 部品ではないゲーム画面のメッセージなどは非対応になっているため、 ゲーム画面のメッセージの読み上げには使えなかった事も、理由の一つです。

その他、詳しい事情はこっち。

https://ifritjp.github.io/blog/site/index.html

機能

このツールは次の機能を提供します。

  • ゲーム画面を OCR して、抽出したメッセージを Text To Speech で読み上げ
  • 読み上げスピードの調整、リピート再生
  • メッセージの日本語翻訳 (Google 翻訳)
  • メッセージの保存
  • ゲーム毎の設定切り替え

使用方法

このツールの使用方法について説明します。

環境

このツールは、 Windows 上で動作します。

インストール

次のソフトのインストールが必要です。

  • Python
    • 幾つかの Python 用パッケージ
    • win32com
  • Tesseract OCR
    • PATH の設定
  • このツール

インストールには、Windows と Python の多少の知識があることが前提です。

Python

次の URL から Python をダウンロードします。

https://www.python.org/downloads/

なお、 Cygwin 版の python だと、 後のインストール処理が正常に動作しなかったためオススメしません。

Python をインストール後、次の python のモジュールをインストールします。

$ python -m pip install --upgrade pip
$ python -m pip install pywin32
$ python -m pip install Pillow
$ python -m pip install pyscreenshot
$ python -m pip install opencv-python
$ python -m pip install pyocr
$ python -m pip install marshmallow_dataclass

win32com

Windows の TTS を制御するため win32com をインストールします。

https://github.com/mhammond/pywin32/releases から、 python のバージョンに合う win32com モジュールのインストーラをダウンロードし、 インストールしてください。

Tesseract OCR

次の URL からバイナリをダウンロードしてインストールします。

https://github.com/UB-Mannheim/tesseract/wiki

インストール後、 環境変数の PATH に追加すること を忘れないでください。

このツール

次のコマンドで、このツールを落してください。

git clone https://github.com/ifritJP/game-message-tts.git

起動方法

このツールの run.pyw をダブルクリックします。

起動すると、コンボボックスとボタンを持つウィンドウが表示されます。

ここでは OK を押します。

次に、いくつかのボタンを持つウィンドウが表示されます。 ここでは、まず game tile の箇所にゲームタイトルを入力します。 デフォルトでは notepad と入力されているので、 ここをクリアしてタイトルを入力してください。

設定

このツールは、ゲーム毎に次の設定をする必要があります。

  • ゲーム画面を認識するための ゲーム Window 情報
    • タイトル名
    • クラス名
  • メッセージ領域認識方法
  • メッセージ抽出用の閾値

設定は adjust parameter ボタンを押して表示されるウィンドウで行ないます。

以降で各設定値について説明します。

ゲーム画面を認識するための ゲーム Window 情報

このツールは、 「PC のゲーム画面のメッセージを Text To Speech で読み上げる」ツールです。

これを実現するには、まずどこにゲーム画面があるのかを認識する必要があります。

その手段として、ゲーム Window 情報を利用します。

Window には、必ずタイトルバーに表示するタイトル名と、 その Window の機能を識別するクラス名があります。

両方あるいは、どちらかを指定します。

指定の方法は簡単で、 window list の combobox の中から、ゲームの Window を選択するだけです。

もし、ゲームの Window が window list に無い場合、 ゲームを起動してからこのツールを起動しなおします。

通常は、これで問題ありません。

しかし、一部のゲームではタイトル名が随時更新されるものがあります。 そのような場合、 window title は空にし、 window class だけ指定してください。 window title が空の場合、 タイトル名は無視して window class だけでゲームの window を検索します。

メッセージ領域認識方法

ゲームのメッセージを認識するには、 メッセージがどこに表示されているのかを認識する必要があります。

メッセージの領域を認識する方法として、次の 2 つの方法を用意しています。

  • ゲーム内の固定領域を指定する
  • 領域を指定せずに自動で領域を認識する

ここでは「固定領域を指定する」方法について説明します。

「固定領域を指定する」方法

まず「メッセージボックスの領域を指定する」にチェックを入れます。

次に、領域を指定するためにゲーム window を前面に表示します。

この時、他の window とゲーム画面が被らないように window を移動してください。 ゲームは FullScreen ではなく、 window 表示にしてください。 なお、マルチディスプレイのセカンダリーでは正常に動作しないことがあるようです。

次に、 「set region」ボタンを押します。 すると、ゲーム画面の上に半透明の window が表示されるので、 ゲームのメッセージ領域をマウスで指定します。

指定が終わると、半透明の window は消えます。

なお、「自動で領域を認識する」方法は実験中の機能です。 使用しないでください。

メッセージ抽出用の閾値

ここまでで、メッセージ領域の特定が出来るようになりました。

次は、メッセージ領域からメッセージを抽出するための閾値を指定します。

メッセージ領域には、さまざまなデザインが施されていることがあります。

そのようなデザインは OCR にはノイズとなり、 正確な結果を得るには取り除く必要があります。

そのため、ここではデザインと文字とを区別するための、 メッセージ領域の明度の閾値を指定します。

threshold と示されているスライドバーを適宜調整します。

Test ボタンを押すことで、実際にゲーム画面をキャプチャして OCR まで行ないます。 このとき、処理途中段階の画像が表示されるので、 その画像の window を選択し何かキーを押すか、 画像の Window を閉じることで処理が先に進みます。

OCR 結果は、 Test ボタンの下のテキストボックスに出力されます。

この OCR 結果が、ゲーム画面に表示されているメッセージと等しくなるように、 スライドバーを調整してください。

このスライドバーの調整値によって、OCR の結果が変化します。 理由は不明ですが、処理途中段階の画像の見た目には大きな変化がないような場合でも、 OCR の結果が著しく変化することがあります。

以上で OCR のための設定は終了です。

OCR から読み上げまで

OCR の設定後、 ゲームのメッセージが更新される毎に OCR ボタンを押します。

OCR ボタンを押すと、 OCR でメッセージを抽出し、 Text To Speech でメッセージを読み上げます。

OCR されたメッセージは、 OCR ボタン上方のテキストエリアに出力されます。 もし、OCR 結果に間違いなどあれば、 このテキストエリアを修正することで、 TTS での読み上げを修正できます。

OCR 済みのメッセージを読み上げする場合は play ボタンを押します。

translate ボタンは、 google 翻訳を使用して日本語編訳します。

なお、TTS のボリューム、スピードは、 ツール下部の volume, speed で調整できます。

ゲームによっては、 メッセージ領域にアイコンが表示されていることがあります。

このアイコンによって、 OCR 結果にゴミが載ることがあります。 そのようなゴミを除去するのが exclude re-pattern です。

これは、 OCR 結果のメッセージから文字を削除するための パターンを指定するものです。

パターンは python の正規表現を使用します。

履歴

このツールの OCR の出力結果は、履歴として記録します。

履歴は history.json に保存します。

いまのところ記録するだけで、グラフ表示等の機能はありません。

ゲーム毎の設定切り替え

ツール起動時の画面で <new config> を選択することで、 新しい設定を作成します。

このとき、ゲームのタイトルをダミーで作成するので、 任意に設定してください。

最後に

英語力が少しでも向上するように、お互い頑張りましょう。

以上です。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages