Meili
Python

Meili

Meili (美丽) — это программа, которая позволяет вам переводить китайский в реальном времени, с прозрачным наложением с пиньинь и значением.

GitHub|

Меили (Meili) означает "красивый".


image

HUD ДЛЯ ИЗУЧЕНИЯ КИТАЙСКОГО • ЛОКАЛЬНЫЙ ПЕРЕВОД • 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. Text-to-Speech

  • 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 + плагин GStreamer PipeWire (для совместного использования портала в 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. Выберите "Загрузить распакованное" и укажите выходной каталог сборки расширения (src/extension/dist)

Структура проекта

Meili/
├── src/
│   ├── mesly/              # Приложение Python
│   │   ├── capture/        # Потоковая передача окон Portal/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 для руководства по разработке:

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