Meili
Python

Meili

Meili (美丽) це програмне забезпечення, яке дозволяє вам перекладати китайську в режимі реального часу, з прозорим накладним шаром з піньїним та значенням.

GitHub|

Meili (美丽) означає "красивий".


image

HUD ДЛЯ ВИВЧЕННЯ МАНДАРИНСЬКОЇ • ЛОКАЛЬНИЙ ПЕРЕКЛАД • ТЕКСТ-У-МОВЛЕННЯ


Що це таке?

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 та eng (включено в 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 запускає модель перекладу на ЦП.

Запуск

make run

Завантаження розширення

  1. Створіть його: make build-extension
  2. Відкрийте chrome://extensions, увімкніть режим розробника
  3. Виберіть "Load 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/         # Накладання HUD PyQt5
│   └── extension/           # Розширення Chromium (виділення для перекладу)
├── data/                    # Включені tessdata + CC-CEDICT
├── config/                  # Конфігурація виконання
├── vendor/                  # NeuTTS (необов'язково)
├── scripts/                 # Скрипти встановлення
└── main.py                  # Точка входу

Внесок

Внески вітаються. Дивіться AGENTS.md для керівництв з розробки:

  • Імпорт на верхньому рівні
  • Розділіть модулі на папки
  • Використовуйте класи в розширеннях