Meili
Python

Meili

Meili (美丽) est un logiciel qui vous permet de traduire le chinois en direct, avec une superposition transparente contenant le pinyin et la signification.

GitHub|

美丽 (Meili) signifie "beau".


image

HUD D'ÉTUDE DU MANDARIN • TRADUCTION LOCALE • SYNTHÈSE VOCALE


Qu'est-ce que c'est ?

Meili (美丽) est un logiciel qui vous permet de traduire le chinois en direct, avec une superposition transparente affichant le pinyin et la signification.

Fonctionnalités

1. Zone de surveillance

  • Au démarrage, vous choisissez la fenêtre à partager dans la boîte de dialogue système.
  • Cliquez sur la superposition pour ouvrir une image figée du flux, puis dessinez une boîte dessus pour définir la zone surveillée (clic droit ou Échap annule).
  • L'application continue de surveiller cette zone de la fenêtre partagée : toutes les 3 secondes, elle lit le chinois présent et le traduit uniquement lorsqu'une nouvelle ligne apparaît.
  • Faites un clic droit sur la superposition pour effacer la zone.

2. Carte d'étude

  • Chaque résultat affiche les caractères chinois (hanzi), le pinyin (pypinyin), une décomposition des mots de CC-CEDICT, et la traduction (MarianMT local, Helsinki-NLP/opus-mt-zh-en).
  • La carte est centrée horizontalement en bas de la superposition. L'application dessine le texte avec un contour pour qu'il reste lisible sur la vidéo.

3. Traduction par sélection

  • Sélectionnez du texte chinois n'importe où sur le bureau et l'application le traite via le même pipeline : filtre CJK → carte → traduction.

4. Raccourci clavier

  • Appuyez sur Ctrl+Alt+S pour capturer l'écran. L'application effectue l'OCR et traduit tout chinois trouvé.

5. Synthèse vocale

  • NeuTTS (TTS neuronal local, facultatif, activé dans la configuration).
  • Solution de repli gTTS.
  • L'application prononce les caractères chinois (hanzi) ou la traduction, en chinois ou en anglais respectivement.

6. Extension de navigateur (Chromium)

  • Sélectionnez du texte chinois sur une page et l'extension affiche une bulle d'aide de traduction sur la page.
  • L'extension communique avec le backend local sur 127.0.0.1:8263.
  • L'extension conserve le contexte de la page en mémoire uniquement. Elle n'écrit rien sur le disque.

Installation

Prérequis

  • Python 3.12+
  • Node.js (dernière version LTS, pour l'extension de navigateur)
  • Tesseract OCR avec les fichiers entraînés chi_sim et eng (fournis dans data/tessdata/)
  • PyGObject + GStreamer + le plugin GStreamer PipeWire (pour le partage de portail sur Wayland)
  • Navigateur basé sur Chromium (pour l'extension)

Configuration

# Dépendances système (Arch Linux)
./scripts/install_dependencies.sh

# Dépendances Python
make install-pip

# Facultatif : NeuTTS
make vendor

# Extension de navigateur
make build-extension

# Configuration
cp config/example_config.yaml config/config.yaml

Configuration

Modifiez config/config.yaml :

ocr:
  engine: "pytesseract"
  languages: ["en", "zh"]     # chi_sim gère le travail sur les caractères chinois

translation:
  service: "helsinki-nlp"
  model: "Helsinki-NLP/opus-mt-zh-en"   # Chinois -> Anglais
  target_language: "en"

performance:
  use_gpu: false
  neutts_enabled: false   # nécessite vendor/neutts et src/assets/voice_ref.wav

use_gpu: false exécute le modèle de traduction sur le CPU.

Lancement

make run

Charger l'extension

  1. Compilez-la : make build-extension
  2. Ouvrez chrome://extensions, activez le Mode développeur
  3. Sélectionnez "Charger l'extension non empaquetée" et choisissez le répertoire de sortie de la compilation de l'extension (src/extension/dist)

Structure du projet

Meili/
├── src/
│   ├── mesly/              # Application Python
│   │   ├── capture/        # Streaming de fenêtre Portal/PipeWire, capture d'écran
│   │   ├── config/         # Paramètres et spécifications système
│   │   ├── dictionary/     # Recherche CC-CEDICT, pinyin, segmentation
│   │   ├── ocr/            # Tesseract OCR + filtrage CJK uniquement
│   │   ├── server/         # Backend FastAPI (point d'accès de l'extension)
│   │   ├── translation/    # Service MarianMT local (opus-mt-zh-en)
│   │   ├── tts/            # Synthèse vocale NeuTTS / gTTS
│   │   ├── utils/          # Journalisation, raccourcis clavier
│   │   └── window/         # Superposition HUD PyQt5
│   └── extension/           # Extension Chromium (sélectionner pour traduire)
├── data/                    # Tessdata et CC-CEDICT fournis
├── config/                  # Configuration d'exécution
├── vendor/                  # NeuTTS (facultatif)
├── scripts/                 # Scripts d'installation
└── main.py                  # Point d'entrée

Contributions

Les contributions sont les bienvenues. Voir AGENTS.md pour les directives de développement :

  • Importer au niveau supérieur
  • Séparer les modules en dossiers
  • Utiliser des classes dans les extensions