Meili
Python

Meili

Meili (美丽) to oprogramowanie, które pozwala tłumaczyć chiński na żywo, z przezroczystą nakładką z pinyin i znaczeniem.

GitHub|

美丽 (Meili) oznacza "piękny".


image

HUD DO NAUKI MANDARYŃSKIEGO • LOKALNE TŁUMACZENIE • TEKST NA MOWĘ


Co to jest?

Meili (美丽) to oprogramowanie, które pozwala tłumaczyć chiński na żywo, z przezroczystą nakładką zawierającą pinyin i znaczenie.

Funkcje

1. Region obserwacji

  • Po uruchomieniu wybierasz okno do udostępnienia w oknie dialogowym systemu.
  • Kliknij nakładkę, aby otworzyć zamrożoną klatkę strumienia, a następnie narysuj na niej prostokąt, aby ustawić region obserwacji (prawy przycisk myszy lub Esc anuluje).
  • Aplikacja nadal obserwuje ten obszar udostępnionego okna: co 3 sekundy odczytuje tam chiński tekst i tłumaczy go tylko wtedy, gdy pojawi się nowa linia.
  • Kliknij prawym przyciskiem myszy na nakładce, aby wyczyścić region.

2. Karta nauki

  • Każdy wynik pokazuje hanzi, pinyin (pypinyin), podział słów z CC-CEDICT i tłumaczenie (lokalny MarianMT, Helsinki-NLP/opus-mt-zh-en).
  • Karta jest wyśrodkowana poziomo na dole nakładki. Aplikacja rysuje tekst z obrysem, aby pozostał czytelny na wideo.

3. Tłumaczenie zaznaczenia

  • Zaznacz chiński tekst w dowolnym miejscu na pulpicie, a aplikacja przetworzy go przez ten sam potok: filtr CJK → karta → tłumaczenie.

4. Klawisz skrótu

  • Naciśnij Ctrl+Alt+S, aby przechwycić ekran. Aplikacja wykonuje na nim OCR i tłumaczy znaleziony chiński tekst.

5. Tekst na mowę

  • NeuTTS (lokalny neuronowy TTS, opcjonalny, włączony w konfiguracji).
  • gTTS jako zapasowy.
  • Aplikacja odczytuje hanzi lub tłumaczenie, odpowiednio po chińsku lub angielsku.

6. Rozszerzenie przeglądarki (Chromium)

  • Zaznacz chiński tekst na stronie, a rozszerzenie wyświetli podpowiedź z tłumaczeniem na stronie.
  • Rozszerzenie komunikuje się z lokalnym backendem pod adresem 127.0.0.1:8263.
  • Rozszerzenie przechowuje kontekst strony tylko w pamięci. Nic nie zapisuje na dysku.

Instalacja

Wymagania wstępne

  • Python 3.12+
  • Node.js (najnowsza wersja LTS, dla rozszerzenia przeglądarki)
  • Tesseract OCR z wytrenowanymi danymi chi_sim i eng (dołączone w data/tessdata/)
  • PyGObject + GStreamer + wtyczka GStreamer PipeWire (dla udostępniania portalu w Wayland)
  • Przeglądarka oparta na Chromium (dla rozszerzenia)

Konfiguracja

# Zależności systemowe (Arch Linux)
./scripts/install_dependencies.sh

# Zależności Pythona
make install-pip

# Opcjonalnie: NeuTTS
make vendor

# Rozszerzenie przeglądarki
make build-extension

# Konfiguracja
cp config/example_config.yaml config/config.yaml

Konfiguracja

Edytuj config/config.yaml:

ocr:
  engine: "pytesseract"
  languages: ["en", "zh"]     # chi_sim wykonuje pracę z hanzi

translation:
  service: "helsinki-nlp"
  model: "Helsinki-NLP/opus-mt-zh-en"   # Chiński -> Angielski
  target_language: "en"

performance:
  use_gpu: false
  neutts_enabled: false   # wymaga vendor/neutts i src/assets/voice_ref.wav

use_gpu: false uruchamia model tłumaczenia na CPU.

Uruchomienie

make run

Załadowanie rozszerzenia

  1. Zbuduj je: make build-extension
  2. Otwórz chrome://extensions, włącz tryb deweloperski
  3. Wybierz "Załaduj rozpakowane" i wskaż wyjście kompilacji rozszerzenia (src/extension/dist)

Struktura projektu

Meili/
├── src/
│   ├── mesly/              # Aplikacja Pythona
│   │   ├── capture/        # Strumieniowanie okien Portal/PipeWire, przechwytywanie ekranu
│   │   ├── config/         # Ustawienia i specyfikacje systemu
│   │   ├── dictionary/     # Wyszukiwanie w CC-CEDICT, pinyin, segmentacja
│   │   ├── ocr/            # Tesseract OCR + filtrowanie tylko CJK
│   │   ├── server/         # Backend FastAPI (endpoint rozszerzenia)
│   │   ├── translation/    # Lokalna usługa MarianMT (opus-mt-zh-en)
│   │   ├── tts/            # Synteza mowy NeuTTS / gTTS
│   │   ├── utils/          # Logowanie, klawisze skrótu
│   │   └── window/         # Nakładka HUD PyQt5
│   └── extension/           # Rozszerzenie Chromium (tłumaczenie po zaznaczeniu)
├── data/                    # Dołączone tessdata + CC-CEDICT
├── config/                  # Konfiguracja czasu wykonania
├── vendor/                  # NeuTTS (opcjonalnie)
├── scripts/                 # Skrypty instalacyjne
└── main.py                  # Punkt wejścia

Współpraca

Mile widziane są propozycje współpracy. Szczegółowe wytyczne dotyczące rozwoju znajdują się w pliku AGENTS.md:

  • Importuj na najwyższym poziomie
  • Dziel moduły na foldery
  • Używaj klas w rozszerzeniach