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

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