美丽 (Meili) は「美しい」を意味します。

MANDARIN STUDY HUD • LOCAL TRANSLATION • TEXT-TO-SPEECH
これはなんですか?
Meili (美丽) は、中国語をリアルタイムで翻訳し、ピンインと意味を表示する透明なオーバーレイを備えたソフトウェアです。
機能
1. 監視領域
- 起動時に、システムダイアログで共有するウィンドウを選択します。
- オーバーレイをクリックするとストリームのフリーズフレームが開き、その上にボックスを描画して監視領域を設定します(右クリックまたはEscでキャンセル)。
- アプリケーションは共有ウィンドウのその領域を監視し続けます。3秒ごとにそこにある中国語を読み取り、新しい行が表示された場合にのみ翻訳します。
- オーバーレイを右クリックすると領域がクリアされます。
2. 学習カード
- 各結果には、漢字、ピンイン (
pypinyin)、CC-CEDICT からの単語の分解、および翻訳(ローカル MarianMT、Helsinki-NLP/opus-mt-zh-en)が表示されます。 - カードはオーバーレイの下部中央に水平に配置されます。アプリケーションは、ビデオ上で読みやすくするために、アウトライン付きでテキストを描画します。
3. 選択翻訳
- デスクトップ上のどこでも中国語テキストを選択すると、アプリケーションは同じパイプライン(CJKフィルター → カード → 翻訳)で処理します。
4. ホットキー
Ctrl+Alt+Sを押すと画面がキャプチャされます。アプリケーションはそれをOCR処理し、見つかった中国語を翻訳します。
5. テキスト読み上げ
- NeuTTS(ローカルニューラルTTS、オプション、設定で有効化)。
- gTTS フォールバック。
- アプリケーションは、漢字または翻訳を中国語または英語でそれぞれ読み上げます。
6. ブラウザ拡張機能 (Chromium)
- ページ上の中国語テキストを選択すると、拡張機能がページ内翻訳ツールチップを表示します。
- 拡張機能は
127.0.0.1:8263のローカルバックエンドと通信します。 - 拡張機能はページコンテキストをメモリ内のみに保持します。ディスクには何も書き込みません。
インストール
前提条件
- Python 3.12+
- Node.js (最新LTS、ブラウザ拡張機能用)
- Tesseract OCR (
chi_simおよびengtraineddata を含む) (data/tessdata/にバンドル) - PyGObject + GStreamer + PipeWire GStreamer プラグイン (Wayland でのポータル共有用)
- Chromiumベースのブラウザ (拡張機能用)
セットアップ
# システム依存関係 (Arch Linux)
./scripts/install_dependencies.sh
# Python依存関係
make install-pip
# オプション: NeuTTS
make vendor
# ブラウザ拡張機能
make build-extension
# 設定
cp config/example_config.yaml config/config.yaml
設定
config/config.yaml を編集します:
ocr:
engine: "pytesseract"
languages: ["en", "zh"] # chi_sim が漢字処理を行います
translation:
service: "helsinki-nlp"
model: "Helsinki-NLP/opus-mt-zh-en" # 中国語 -> 英語
target_language: "en"
performance:
use_gpu: false
neutts_enabled: false # vendor/neutts と src/assets/voice_ref.wav が必要です
use_gpu: false は、翻訳モデルをCPUで実行します。
実行
make run
拡張機能の読み込み
- ビルドします:
make build-extension chrome://extensionsを開き、開発者モードを有効にします。- 「 unpacked を読み込む」を選択し、拡張機能のビルド出力 (
src/extension/dist) を選択します。
プロジェクト構造
Meili/
├── src/
│ ├── mesly/ # Pythonアプリケーション
│ │ ├── capture/ # ポータル/PipeWireウィンドウストリーミング、画面キャプチャ
│ │ ├── config/ # 設定とシステム仕様
│ │ ├── dictionary/ # CC-CEDICT検索、ピンイン、セグメンテーション
│ │ ├── ocr/ # Tesseract OCR + CJKのみのフィルタリング
│ │ ├── server/ # FastAPIバックエンド (拡張機能エンドポイント)
│ │ ├── translation/ # ローカルMarianMT (opus-mt-zh-en) サービス
│ │ ├── tts/ # NeuTTS / gTTS音声合成
│ │ ├── utils/ # ロギング、ホットキー
│ │ └── window/ # PyQt5 HUDオーバーレイ
│ └── extension/ # Chromium拡張機能 (選択して翻訳)
├── data/ # バンドルされたtessdata + CC-CEDICT
├── config/ # ランタイム設定
├── vendor/ # NeuTTS (オプション)
├── scripts/ # インストールスクリプト
└── main.py # エントリポイント
貢献
貢献を歓迎します。開発ガイドラインについては AGENTS.md を参照してください:
- トップレベルでインポートする
- モジュールをフォルダに分割する
- 拡張機能でクラスを使用する