Meili
Python

Meili

Meili (美丽) ist eine Software, mit der Sie Chinesisch live übersetzen können, mit einer transparenten Überlagerung mit Pinyin und Bedeutung.

GitHub|

美丽 (Meili) bedeutet "schön".


image

MANDARIN STUDY HUD • LOKALE ÜBERSETZUNG • TEXT-TO-SPEECH


Was ist das?

Meili (美丽) ist eine Software, mit der Sie Chinesisch live übersetzen können, mit einer transparenten Überlagerung mit Pinyin und Bedeutung.

Funktionen

1. Beobachtungsbereich

  • Beim Start wählen Sie das zu teilende Fenster im Systemdialog aus.
  • Klicken Sie auf die Überlagerung, um einen eingefrorenen Frame des Streams zu öffnen, und ziehen Sie dann ein Feld darüber, um den Beobachtungsbereich festzulegen (Rechtsklick oder Esc bricht ab).
  • Die App beobachtet diesen Bereich des geteilten Fensters weiter: Alle 3 Sekunden liest sie das Chinesisch dort und übersetzt es nur, wenn eine neue Zeile erscheint.
  • Rechtsklicken Sie auf die Überlagerung, um den Bereich zu löschen.

2. Lernkarte

  • Jedes Ergebnis zeigt Hanzi, Pinyin (pypinyin), eine Wortaufschlüsselung von CC-CEDICT und die Übersetzung (lokales MarianMT, Helsinki-NLP/opus-mt-zh-en).
  • Die Karte befindet sich horizontal zentriert am unteren Rand der Überlagerung. Die App zeichnet den Text mit einer Umrandung, damit er über dem Video lesbar bleibt.

3. Auswahlübersetzung

  • Wählen Sie chinesischen Text irgendwo auf dem Desktop aus, und die App verarbeitet ihn durch dieselbe Pipeline: CJK-Filter → Karte → Übersetzung.

4. Hotkey

  • Drücken Sie Ctrl+Alt+S, um den Bildschirm zu erfassen. Die App OCRt ihn und übersetzt jedes gefundene Chinesisch.

5. Text-to-Speech

  • NeuTTS (lokales neuronales TTS, optional, in der Konfiguration aktiviert).
  • gTTS Fallback.
  • Die App spricht die Hanzi oder die Übersetzung, entsprechend auf Chinesisch oder Englisch.

6. Browser-Erweiterung (Chromium)

  • Wählen Sie chinesischen Text auf einer Seite aus, und die Erweiterung zeigt einen In-Page-Übersetzungs-Tooltip an.
  • Die Erweiterung kommuniziert mit dem lokalen Backend unter 127.0.0.1:8263.
  • Die Erweiterung behält den Seitenkontext nur im Speicher. Sie schreibt nichts auf die Festplatte.

Installation

Voraussetzungen

  • Python 3.12+
  • Node.js (neueste LTS, für die Browser-Erweiterung)
  • Tesseract OCR mit chi_sim und eng traineddata (vendored in data/tessdata/)
  • PyGObject + GStreamer + das PipeWire GStreamer-Plugin (für die Portal-Freigabe auf Wayland)
  • Chromium-basierter Browser (für die Erweiterung)

Einrichtung

# Systemabhängigkeiten (Arch Linux)
./scripts/install_dependencies.sh

# Python-Abhängigkeiten
make install-pip

# Optional: NeuTTS
make vendor

# Browser-Erweiterung
make build-extension

# Konfiguration
cp config/example_config.yaml config/config.yaml

Konfiguration

Bearbeiten Sie config/config.yaml:

ocr:
  engine: "pytesseract"
  languages: ["en", "zh"]     # chi_sim erledigt die Hanzi-Arbeit

translation:
  service: "helsinki-nlp"
  model: "Helsinki-NLP/opus-mt-zh-en"   # Chinesisch -> Englisch
  target_language: "en"

performance:
  use_gpu: false
  neutts_enabled: false   # benötigt vendor/neutts und src/assets/voice_ref.wav

use_gpu: false führt das Übersetzungsmodell auf der CPU aus.

Ausführen

make run

Erweiterung laden

  1. Erstellen Sie sie: make build-extension
  2. Öffnen Sie chrome://extensions, aktivieren Sie den Entwicklermodus
  3. Wählen Sie "Entpackte Erweiterung laden" und wählen Sie das Ausgabe-Verzeichnis der Erweiterung (src/extension/dist)

Projektstruktur

Meili/
├── src/
│   ├── mesly/              # Python-Anwendung
│   │   ├── capture/        # Portal/PipeWire Fenster-Streaming, Bildschirmaufnahme
│   │   ├── config/         # Einstellungen und Systeminformationen
│   │   ├── dictionary/     # CC-CEDICT-Suche, Pinyin, Segmentierung
│   │   ├── ocr/            # Tesseract OCR + nur CJK-Filterung
│   │   ├── server/         # FastAPI-Backend (Erweiterungs-Endpunkt)
│   │   ├── translation/    # Lokaler MarianMT (opus-mt-zh-en) Dienst
│   │   ├── tts/            # NeuTTS / gTTS Sprachsynthese
│   │   ├── utils/          # Protokollierung, Hotkeys
│   │   └── window/         # PyQt5 HUD-Überlagerung
│   └── extension/           # Chromium-Erweiterung (Auswahl zum Übersetzen)
├── data/                    # Vendored tessdata + CC-CEDICT
├── config/                  # Laufzeitkonfiguration
├── vendor/                  # NeuTTS (optional)
├── scripts/                 # Installationsskripte
└── main.py                  # Einstiegspunkt

Mitwirkung

Beiträge sind willkommen. Siehe AGENTS.md für Entwicklungsrichtlinien:

  • Import auf oberster Ebene
  • Module in Ordner aufteilen
  • Klassen in Erweiterungen verwenden