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.
美丽 (Meili) signifie "beau".

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+Spour 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_simeteng(fournis dansdata/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
- Compilez-la :
make build-extension - Ouvrez
chrome://extensions, activez le Mode développeur - 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