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

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
Завантаження розширення
- Створіть його:
make build-extension - Відкрийте
chrome://extensions, увімкніть режим розробника - Виберіть "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 для керівництв з розробки:
- Імпорт на верхньому рівні
- Розділіть модулі на папки
- Використовуйте класи в розширеннях