Python
Meili
Meili (美丽) è un software che ti permette di tradurre il cinese dal vivo, con una sovrapposizione trasparente con pinyin e significato.
美丽 (Meili) significa "bello".

HUD STUDIO MANDARINO • TRADUZIONE LOCALE • TEXT-TO-SPEECH
Cos'è questo?
Meili (美丽) è un software che ti permette di tradurre il cinese dal vivo, con una sovrapposizione trasparente con pinyin e significato.
Funzionalità
1. Regione di visualizzazione
- All'avvio, scegli la finestra da condividere nella finestra di dialogo del sistema.
- Fai clic sulla sovrapposizione per aprire un fotogramma congelato dello stream, quindi disegna un riquadro su di esso per impostare la regione osservata (fare clic con il pulsante destro del mouse o Esc annulla).
- L'app continua a osservare quell'area della finestra condivisa: ogni 3 secondi legge il cinese presente e lo traduce solo quando appare una nuova riga.
- Fai clic con il pulsante destro del mouse sulla sovrapposizione per cancellare la regione.
2. Scheda di studio
- Ogni risultato mostra hanzi, pinyin (
pypinyin), una scomposizione di parole da CC-CEDICT e la traduzione (MarianMT locale,Helsinki-NLP/opus-mt-zh-en). - La scheda è centrata orizzontalmente in fondo alla sovrapposizione. L'app disegna il testo con un contorno in modo che rimanga leggibile sopra il video.
3. Traduzione della selezione
- Seleziona testo cinese ovunque sul desktop e l'app lo elabora attraverso la stessa pipeline: filtro CJK → scheda → traduzione.
4. Tasto di scelta rapida
- Premi
Ctrl+Alt+Sper acquisire lo schermo. L'app lo OCRizza e traduce qualsiasi cinese trovato.
5. Text-to-Speech
- NeuTTS (TTS neurale locale, opzionale, abilitato nella configurazione).
- Fallback gTTS.
- L'app pronuncia gli hanzi o la traduzione, rispettivamente in cinese o inglese.
6. Estensione del browser (Chromium)
- Seleziona testo cinese in una pagina e l'estensione mostra un tooltip di traduzione nella pagina.
- L'estensione comunica con il backend locale su
127.0.0.1:8263. - L'estensione mantiene il contesto della pagina solo in memoria. Non scrive nulla su disco.
Installazione
Prerequisiti
- Python 3.12+
- Node.js (ultima LTS, per l'estensione del browser)
- Tesseract OCR con traineddata
chi_simeeng(fornito indata/tessdata/) - PyGObject + GStreamer + il plugin GStreamer PipeWire (per la condivisione del portale su Wayland)
- Browser basato su Chromium (per l'estensione)
Configurazione
# Dipendenze di sistema (Arch Linux)
./scripts/install_dependencies.sh
# Dipendenze Python
make install-pip
# Opzionale: NeuTTS
make vendor
# Estensione del browser
make build-extension
# Configurazione
cp config/example_config.yaml config/config.yaml
Configurazione
Modifica config/config.yaml:
ocr:
engine: "pytesseract"
languages: ["en", "zh"] # chi_sim fa il lavoro degli hanzi
translation:
service: "helsinki-nlp"
model: "Helsinki-NLP/opus-mt-zh-en" # Cinese -> Inglese
target_language: "en"
performance:
use_gpu: false
neutts_enabled: false # richiede vendor/neutts e src/assets/voice_ref.wav
use_gpu: false esegue il modello di traduzione sulla CPU.
Esecuzione
make run
Carica Estensione
- Costruiscila:
make build-extension - Apri
chrome://extensions, abilita la Modalità sviluppatore - "Carica non pacchettizzata" e seleziona l'output di build dell'estensione (
src/extension/dist)
Struttura del Progetto
Meili/
├── src/
│ ├── mesly/ # Applicazione Python
│ │ ├── capture/ # Streaming finestra Portal/PipeWire, acquisizione schermo
│ │ ├── config/ # Impostazioni e specifiche di sistema
│ │ ├── dictionary/ # Ricerca CC-CEDICT, pinyin, segmentazione
│ │ ├── ocr/ # Tesseract OCR + filtraggio solo CJK
│ │ ├── server/ # Backend FastAPI (endpoint estensione)
│ │ ├── translation/ # Servizio MarianMT locale (opus-mt-zh-en)
│ │ ├── tts/ # Sintesi vocale NeuTTS / gTTS
│ │ ├── utils/ # Logging, tasti di scelta rapida
│ │ └── window/ # Sovrapposizione HUD PyQt5
│ └── extension/ # Estensione Chromium (selezione per tradurre)
├── data/ # Tessdata forniti + CC-CEDICT
├── config/ # Configurazione runtime
├── vendor/ # NeuTTS (opzionale)
├── scripts/ # Script di installazione
└── main.py # Punto di ingresso
Contribuzioni
Contributi benvenuti. Vedi AGENTS.md per le linee guida di sviluppo:
- Importa a livello principale
- Separa i moduli in cartelle
- Usa classi nelle estensioni