見出し画像

邦画か日本語非対応ゲームの字幕をリアルタイム翻訳するソフトを作ってみました

はじめに

 今回作ってみたソフトは、スクリーンの範囲を指定して、その範囲内の内容を自動的にOCR(文字認識)して、指定の翻訳機に入れて翻訳結果を表示するソフトです。かっこいい名前思いつかないからそのままRealtime-OCR-Translatorにしました。
 実際に使ったらこんな感じです。

 あくまで趣味で独学するnoobの試作なので、オープンリソースにしました。少しぐらい役に立てればと思います。

きっかけ

 このソフトを作りたいきっかけは、A Way Outというゲームを日本人の友達と一緒にプレイしたいからです。そのゲームは日本語化されてなくて(公式中国語対応もない)、中国では有志者が翻訳したけど、日本でこれを翻訳した有志者もいないです。
 しかもストーリーが重要なゲームなので、言うこと分からなかったら楽しめないと思うから、ストーリーを翻訳する手段が欲しいです。
 最初は自分で作るまで思ってなくて、このようなソフトを探してて、そこで今回作ったソフトと似てる機能のソフトいくつかの見つかったが、それぞれに足りない所があって、自分のニーズを満たせるソフトは見つからなかったです。そこで自分で作りたいと思うようになりました。

本ソフトの機能

 ここでまず似てる機能のソフト3つ紹介します。

PCOT(ヌルポインターストライク)
 
日本人が開発した日本語非対応のゲームを翻訳するソフトで、範囲を指定してその中の内容を表示できます。しかし、自動翻訳ができなくて、ホットキーを押せば範囲内の内容を翻訳する仕組みで、ターン制のストラテジーゲームなら使いやすいけど、アクションゲームとかならホットキーを押す余裕がないですね。それに、ソフトのサイズが大きくて翻訳欄だけを表示することができなくて、翻訳内容を表示するには、ゲーム画面をかなり縮める必要があります。

画像
PCOT(ヌルポインターストライク)

DangoTranslator
 中国人が開発した日本語の漫画やGalgameを読む為のソフトで、範囲を指定してその中の内容を表示できます。UIも文字も華やかで綺麗で、その範囲内の内容を一定の時間間隔で自動翻訳する機能もあります。しかし、海外の人に使ってもらう気がなくて、UIは中国語だけだし、翻訳機能についても、他の言語から中国語に翻訳することだけが使えます。そしてリソースが非公開なので、自分用だけにちょっと引数を変えて日本語出力にすることはできません。

画像
DangoTranslator

DeskTranslator
 
英語圏の人が日本語の漫画を読む為に作ったソフト(日本の漫画いいね)。けど、最初私がダウンロードした後全然効かないし、効かない原因についても提示がない。
 オープンソースなので、自分でコードをチャックしたら、コードにこれがあって、

pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

 つまりTesseract OCRというソフトが必要になるってことです。しかしなんの提示もなくて、ただ効かないだけなので、ソース分からない人ならこのソフト壊れてるとしか思えないし、3年前からアップデートがなくて、今一番評価されてるDeeplの翻訳にも対応してないし、ソフトの言語も英語だけです。

画像
DeskTranslator

 実はこのソフトのソースをいじって、DeeplのAPIをコードに入れて、自分のAPI(Key)も入れて、更新時間などもソースで変更して、もう自分のニーズを満たすようになりましたが、同じニーズの人もいるだろうと、これらの変更を他の人にも使えるようにしたいと思って、自分のソフトを作りました。

 この3つのソフトの不足を踏まえて自分のソフトに下記のデザインがあります。

  • 多言語対応(中国語・日本語・英語)

  • Tesseract OCRが必要だと明記し、ダウンロード方法も提供

  • Deepl翻訳を使用可能に、API(Key)の申請URLも提供

  • 範囲指定機能を改善し、細かく調整しやすいように

  • 自動翻訳のリフレッシュ時間を指定可能に

 他にも文字サイズ変更や、文字の色変更など、上記紹介したソフトにもある使いやすい機能も入れて、本ソフトの機能となりました。

使い方

  1. 私のGitHub(https://github.com/zbhzbh979377524/Realtime-OCR-Translator)にアクセスして、画面の右側になるReleases(v1.2)にアクセスして、Realtime-OCR-Translator_1_2.zipをダウンロードします。(Noteでファイル名をクリックすることでダウンロードすることもできます)

  2. Realtime-OCR-Translator_1_2.zipを解凍して、解凍したフォルダーにあるmain.exeを実行します。

  3. メインページの一番上のJPをクリックすればソフトが再起動して日本語版になります。

  4. Tesseract OCR(https://github.com/UB-Mannheim/tesseract/wiki)のページにアクセスして、自分のOSに相応しいバージョンのをダウンロードしてインストールします。(本ソフトのメインページの下部から入ることもできます)ここで一番普及してるOS(Windows, 64bit)のバージョンのリンクを貼ります。(tesseract-ocr-w64-setup-5.5.0.20241111.exe (64 bit))

  5. Deeplの個人用翻訳API(Key)を申請します(https://www.deepl.com/ja/pro-api?cta=header-pro-api/)。ここでDeepl申請しなくても他のパブリックAPIを使えますが、Deeplの質が一番良いと思うからDeepl申請おすすめです。無料で一ヶ月50万文字まで翻訳できるからほとんど使い切れないです。

  6. 本ソフトの翻訳設定で翻訳メソッドとAPIを入力します。(Deepl以外ならAPI入力が不要、今後他のAPIを追加する予定、Deeplを選択してもAPI入力しなければ他のメソッドになる)

  7. 認識言語(OCRでどの言語として認識するか)や翻訳言語(どの言語に翻訳するか)を指定して、翻訳範囲指定で認識する範囲(字幕の範囲)を指定して、他の設定でリフレッシュ時間や文字の大きさと色を選択して、スタートをクリックすれば翻訳が開始します。

使い方の展示動画

2025年1月2日アップグレード

  • 各種エラーが出る時に、適切なエラーメッセージが出るようにしました。

画像
  • Tesseract OCRへのリンクを更新し、起動時Tesseract OCRがインストールされているかどうかを判断するようにしました。

画像
  • 翻訳文表示とapiから翻訳文取得を非同期にしました。これで翻訳文取得している間に文字表示欄が反応なしになる問題を修正しました。

  • apiは使いにくいのが多い為、現在deepl(api必要)とgoogle翻訳(api不要)だけにしました。

  • 文字表示ウィンドウのサイズ変更時の表示を改善しました。

2025年12月22日アップグレード

  • APIキーを記憶するようにしました。

  • 言語設定記憶とAPIキー記憶と一緒にjsonファイルに統合しました。

  • exe化ツールを「PyInstaller」から「Nuitka」に変更しました。これでウイルス検知されないようになる(らしい)です。

※Noteのコメントに「操作できません」とのご連絡もありましたが、自分のパソコンでは再現できないので原因特定できないです。良ければNoteプロフィールに紐づいたTwitter(X)で詳しく状況を教えていただければ解決してみます。

本Note上部使い方にあるリンクも更新しました。

ありがとうございました。




いいなと思ったら応援しよう!

ピックアップされています

動画編集

  • 2本

コメント

4
ひこ
ひこ

はじめまして。こちらは現在も使用できますでしょうか
使い方やyoutubeの動画を見て、ソフトを使用していますが翻訳されません。

ひこ
ひこ

すみません。使用できました。
Deepl proアカウントではAPIは使用できないことを理解していませんでした。

とし
とし

起動すると操作画面の外に言語選択のボタンが出てしまい、操作できません。対処の方法をご教授願います。

マキアート
マキアート

こちらダウンロードしようとしたところセキュリティソフトから「win64 trojanx-gen」の脅威により排除したとメッセージが出ました。トロイの木馬に感染している可能性が高いとのことです。インターネットに明るくないので対処できるものなのか存じませんが、申し訳ないですが確認よろしくお願いします。

コメントするには、 ログイン または 会員登録 をお願いします。
邦画か日本語非対応ゲームの字幕をリアルタイム翻訳するソフトを作ってみました|月影
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1